實機練習

  1. 撰寫 linf1.yml,對主機 test 完成以下任務。
    1. 使用 shell 模組,cat /etc/os-release 覆蓋導向到 /etc/dyw-release。
    2. 修改 /etc/dyw-release 的 HOME_URL 為 "https://dywang.csie.cyut.edu.tw" (包含雙引號)。
    3. 確認 sudoers 沒有設定 wheel 群組。
    4. 如果檔案 /tmp/linf1 不存在,則產生檔案並新增一行 linf1_test
  2. 使用 setup 模組 查詢主機 test 的 ansible_facts 變數,並導向到目錄 /home/deyu1/ansible 下指定檔案。
    1. facts1.txt:沒有過濾。
    2. facts2.txt:filter 過濾 ansible_default_ipv4
    3. facts3.txt:管線命令,grep 過濾 ipv4 及其後 4 行的結果。
  3. 撰寫 report.yml,對 test 主機執行任務,要求如下:
    1. 下載變數格式檔 report.orig。
    2. 使用 copy 模組,將下載的 report.orig 複製到遠端的 /root/report.txt。
    3. 使用 lineinfile 模組,以正規表示法搜尋行首為指定開鍵字的行,等號 "=" 後的字串取代成指定的變數內容。
    4. 使用 loop 迴圈,針對檔案 /root/report.txt 中 "=" 左邊關鍵字為 item.key,找到正確的字串為 item.value。
  4. 修改 report.yml 為
    1. report.a.yml:目標檔案為 /root/report.a.txt,增加一 lineinfile 任務,在 /root/report.a.txt 的 HOST 前一行增加一項,key 為 DATE,value 為ansible_date_time.date
    2. report.b.yml:只保留 /etc/dyw-release 一項,並使用 loop 迴圈修改以下內容,value 都必須用雙引號括起來。
      1. key: HOME_URL,vaule: https://dywang.csie.cyut.edu.tw
      2. key: ID,vaule: 變數 ansible_distribution
      3. key: VERSION_ID,vaule: 變數 ansible_distribution_version
  5. 撰寫 report1.yml,對 test 主機執行任務,要求如下:
    1. 下載變數格式檔 report1.orig。
    2. 任務如 report.yml,修改 report1.orig 每項 key 的 value。
    3. value 由搜尋變數取得,當搜尋的變數不存在時,item.value 設定成預設值 'NONE'。
  6. 修改 report1.yml 為
    1. report1.a.yml:目標檔案為 /root/report1.a.txt,增加一 lineinfile 任務,在 /root/report1.a.txt 的 HOST 後一行增加一項,key 為 DATE,value 為 ansible_date_time.date
    2. report1.b.yml:執行主機改為 dev 及 test,目標檔案為 /root/report1.b.txt,增加一 lineinfile 任務,在 /root/report1.b.txt 的 OS 後一行增加一項,key 為 DATE,value 為 ansible_date_time.date