實機練習

  1. 撰寫 YAML 腳本 sh1.yml,對主機 dev 執行任務,要求如下:
    1. 使用 shell 模組,切換到 dir 目錄,dir 變數由 ansible-playbook 命令列外加參數決定。
    2. ansible-playbook 執行時變數 dir 用 /usr/local 測試看看。
    3. 執行 grep ID /etc/os-release,並導向到 os.txt,若 os.txt 存在,則覆蓋其內容。
  2. 修改腳本 sh1.yml 為 sh2.yml,對所有主機使用 shell 模組:
    1. 切換到 dir 目錄,dir 變數由 ansible-playbook 命令列外加參數決定。
    2. ansible-playbook 執行時變數 dir 用 /tmp 測試看看。
    3. 執行 grep ID /etc/os-release,並導向到 os.txt,若 os.txt 存在,則覆蓋其內容。
    4. 但只有 /dev/vda3 存在的主機才執行 shell 任務。
    5. 提示:使用變數 ansible_devices.vda......,變數名稱用 setup 模組查詢。
  3. 撰寫 shell1a.yml,對所有主機執行修改任務,要求如下:
    1. 使用 shell 模組,當主機為 dev 時才將其 /etc/issue 內容修改為 Development IPV4
    2. 其中 IPV4 以變數 ansible_default_ipv4..... 取得主機 ipv4 的 IP。
  4. 撰寫 shell2a.yml,對所有主機執行修改任務,要求如下:
    1. 使用 shell 模組在 test, prod 群組主機的 /etc/domain,寫入不同字串 XXXX YYYY
    2. 其中 XXXX 在 dev, test, prod 分別為 Development, Test, Production。
    3. YYYY 為網域名稱,使用變數 ansible_domain 取得。
  5. 修改腳本 sh2.yml 為 sh3.yml,對所有主機使用 shell 模組:
    1. 切換到 dir 目錄,dir 變數由 ansible-playbook 命令列外加參數決定。
    2. ansible-playbook 執行時變數 dir 用 /opt 測試看看。
    3. /dev/vda3 存在的主機,執行 shell 任務 grep ID /etc/os-release,並導向到 id.txt。若 id.txt 存在,則覆蓋其內容。
    4. /dev/vda3 不存在的主機,執行 shell 任務 grep ID /etc/profile,並導向到 id.txt。若 id.txt 存在,則覆蓋其內容。
    5. 提示:使用變數 ansible_devices.vda......,變數名稱用 setup 模組查詢。