常用的 Ansible Module 有哪些?

12. 常用的 Ansible Module 有哪些?

在上一章「11. 怎麼看 Ansible Modules 文件?」學會怎麼看文件以後,接著凍仁將介紹自己較常用的 8 個模組 (Modules)。

automate_with_ansible_practice-17.jpg

(以下依英文字母排列)

apt

apt module 是給 Debian, Ubuntu 等作業系統 (OS) 使用的套件模組 (Packaging Modules),我們可以透過它管理 apt 套件。其類似的 Linux 指令有 apt, apt-get, aptitudedpkg

系統需求:需先安裝 python-apt (python 2) 或 python3-apt (python 3) 的 apt 套件。

  1. 更新套件索引 (快取),等同於 apt-get update 指令。

  2. 安裝 vim 套件。

  3. 移除 nano 套件。

command

command module 是個可以在遠端上執行指令的指令模組 (Commands Modules),剛入門 Ansible 會用 module 不多?只要 Linux Shell 會通的指令都可以透過它使用。但它不支援變數 (variables) 和 <, >, |, ;& 等運算,若有這類需求請改用 shell module。

  1. 重新開機。

  2. 當某個檔案不存在時才執行該指令。

  3. 先切換目錄再執行指令。

copy

copy module 是從本地複製檔案到遠端的檔案模組 (Files Modules),若有使用變數需求者,可改用 template module,這部份凍仁會在第 14 章提到。其類似的 Linux 指令為 scp

  1. 複製 ssh public key 到遠端 (chmod 644 /target/file)。

  2. 複製 ssh public key 到遠端 (chmod u=rw,g=r,o=r /target/file)。

  3. 複製 nginx vhost 設定檔到遠端,並備份原有的檔案。

file

file module 是在遠端建立和刪除檔案 (file)、目錄 (directory)、軟連結 (symlinks) 的檔案模組 (Files Modules)。其類似的 Linux 指令為 chown, chown, ln, mkdirtouch

  1. 建立檔案 (touch),並設定檔案權限為 644。

  2. 建立目錄 (mkdir),並設定檔案擁有者為 docker。

  3. 建立軟連結 (ln)。

lineinfile

lineinfile module 是個可用正規表示式對檔案進行插入或取代文字的檔案模組 (Files Modules)。其類似的 Linux 指令為 sed

  1. 移除 docker 使用者的 sudo 權限。

  2. /etc/hosts 檔案裡用 127.0.0.1 localhost 取代開頭為 127.0.0.1 的一行。

service

service module 是個用來管理遠端系統服務的系統模組 (System Modules)。其類似的 Linux 指令為 service

  1. 啟用 nginx。

  2. 停止 nginx。

  3. 重開網路服務。

shell

shell module 是可以在遠端用 /bin/sh 執行指令的指令模組 (Commands Modules),支援變數 (variables) 和 <, >, |, ;& 等運算。

  1. 藉由 lswc 檢查檔案數量。

  2. 把所有的 Python 行程給砍掉。

stat

stat module 是用來檢查檔案狀態的檔案模組 (Files Modules)。其類似的 Linux 指令為 stat

  1. 檢查檔案是否存在,若不存在則建立它。

  2. 取得某檔案的 md5sum。

後語

以上為凍仁較常用的 8 個 Modules,大家可以先從以上的 Modules 入門 Ansible 喔!

參賽第 12 天的凍仁,一早騎車上班時出了點小小的車禍,也很幸運的沒什麼大礙。各位鐵人們在參賽的同時也要多加留意自身安全喔!

相關連結

Last updated

Was this helpful?