Ansible 小記 - ping module 與 command module
接下來就開始介紹 Ansible Module
Ansible 的 Module 可以在官網找到所有的 Module, 這邊是按照分類的 Index http://docs.ansible.com/ansible/modules_by_category.html
今天先來介紹兩個 module
首先是 ping module
ping
- ping - Try to connect to host, veryify a usable python and return pong on success.
這大概是我在使用 Ansible 第一個會執行的 module, 測試與遠端主機是否有連線成功
使用 ansible 的指令語法就是
ansible 對象 -m module名稱
- -m 是 moudle 的意思
範例為對所有的主機執行 ping module, 成功就會回覆 pong
$ ansible all -m ping
cenic_slave | success >> {
"changed": false,
"ping": "pong"
}
接下來介紹 command module
command module 適合執行單一指令, 沒有做其他處理的狀況
command
- 執行 command, 但是如果是會用到 pipe | 這樣的方式就要透過 shell module 來執行
- 例如
- ansible testserver -m command -a 'uptime'
- 但是如果要執行指令進行二次處理
- ansible testserver -m command -a 'dpkg -l | grep nginx' 這樣是不行的, 要使用 shell module
範例
ansible 指令方式
ansible 對象 -m module名稱 -a “參數”
- -m 是 module 的意思
- -a 是 module arguments
所以這邊對機器執行 command module 去執行 uptime 指令
$ ansible cenic_master -m command -a 'uptime'
cenic_master | success | rc=0 >>
06:38:13 up 20 days, 2:08, 2 users, load average: 0.00, 0.01, 0.05
範例
ansible-playbook 方式
建立一個 yml 檔案, debug 的部分日後再講
$ vi 4_output_of_command.yml
- name: show return value of command module
hosts: testserver
tasks:
- name: capture output of id command
command: id -un
register: login
# 使用 變數 {{ xxx.stdout }} 將輸入導到螢幕前
# - debug 後面的 msg 也是有規定名稱, 不能用自定命名
- debug: msg="Logged in as user {{ login.stdout }}"
使用 ansible-playbook 指令執行
使用 ansible 的指令語法就是
ansible-playbook 指定的yml檔案
$ ansible-playbook 4_output_of_command.yml
PLAY [show return value of command module] ************************************
GATHERING FACTS ***************************************************************
ok: [cenic_master]
TASK: [capture output of id command] ******************************************
changed: [cenic_master]
TASK: [debug msg="Logged in as user {{ login.stdout }}"] **********************
ok: [cenic_master] => {
"msg": "Logged in as user maxhuang"
}
PLAY RECAP ********************************************************************
cenic_master : ok=3 changed=1 unreachable=0 failed=0
okay, 今天先到這邊
~ enjoy it
沒有留言:
張貼留言