簡介¶
模組(也被稱為 “task plugins” 或 “library plugins”)是在 Ansible 中實際在執行的.它們就 是在每個 playbook 任務中被執行的.你也可以僅僅通過 ‘ansible’ 命令來執行它們.
讓我們回顧一下我們是如何通過命令列來執行三個不同的模組:
ansible webservers -m service -a "name=httpd state=started"
ansible webservers -m ping
ansible webservers -m command -a "/sbin/reboot -t now"
每個模組都能接收參數. 幾乎所有的模組都接受鍵值對(key=value
)參數,空格分隔.一些模組
不接收參數,只需在命令列輸入相關的命令就能呼叫.
在 playbook 中, Ansible 模組以類似的方式執行:
- name: reboot the servers
action: command /sbin/reboot -t now
也可以簡寫成:
- name: reboot the servers
command: /sbin/reboot -t now
另一種給模組傳遞參數的方式是使用 ymal 語法,這也被稱為 ‘complex args’
- name: restart webserver
service:
name: httpd
state: restarted
無論你是使用命令列還是 playbooks 所有模組都會返回以 JSON 格式組織的資料.一般來說,對此你 無需知道太多.但如果你在編寫你自己的模組,那你需要在意,這意味著你不需要以特定的語言來編寫 你的模組 – 你可以自行選擇.
模組努力使自身冪等,這意味著它們會盡可能避免對系統做出改動除非那是必須的.當使用 Ansible playbooks 時,這些模組能夠觸發 ‘change events’,以這種形式通知 ‘handlers’ 去執行附加任務.
每個模組的文件能夠通過命令列的 ansible-doc 工具來獲取:
ansible-doc yum
列出所有已安裝的模組文件:
ansible-doc -l
See also
- Introduction To Ad-Hoc Commands
- Examples of using modules in /usr/bin/ansible
- Playbooks
- Examples of using modules with /usr/bin/ansible-playbook
- Developing Modules
- How to write your own modules
- Python API
- Examples of using modules with the Python API
- Mailing List
- Questions? Help? Ideas? Stop by the list on Google Groups
- irc.freenode.net
- #ansible IRC chat channel