1. 程式人生 > >Ansible學習 ad-hoc命令

Ansible學習 ad-hoc命令

bsp nconf hang fin 後者 man 實例 mode 支持

  Ansible提供兩種方式去執行命令,一種是ad-hoc命令,一種是寫入Ansible playbook。類似於前者在命令行敲shell,後者是寫shell-script腳本,前者解決一些簡單的任務,後者執行較復雜的任務。

  ad-hoc命令格式:ansible <pattern_goes_here> -m <module_name> -a <arguments>

pattern_goes_here:被管理的目標主機

module_name:使用的模塊名,ansible中有多個模塊,默認為command模塊

arguments:模塊參數

1、command模塊為默認的模塊,可以執行一些命令來執行簡單的任務

現在執行如下命令,列出test組中所有主機的/etc/passwd文件,-f設置並行執行的客戶端個數,實例中每次並行執行2個主機,在ansible.cfg中對-f有默認配置個數

[root@client01 ansible]# ansible test -a "ls -l /etc/passwd" -f 2
192.168.144.129 | SUCCESS | rc=0 >>
-rw-r--r--. 1 root root 2238 Jan 7 2017 /etc/passwd
192.168.144.130 | SUCCESS | rc=0 >>
-rw-r--r--. 1 root root 2238 Jan 7 2017 /etc/passwd

command 模塊不支持 shell 變量,也不支持管道等 shell 相關的東西.如果你想使用 shell相關的這些東西, 要使用’shell’ 模塊

2、文件傳輸

Ansible 能夠以並行的方式同時 SCP 大量的文件到多臺機器,使用copy模塊

[root@client01 ansible]# ansible 192.168.144.130 -m copy -a "src=/etc/passwd dest=/tmp/"
192.168.144.130 | SUCCESS => {
"changed": true,
"checksum": "60f009c54c884e9e761ea571974eeea3b1182465",


"dest": "/tmp/passwd",
"failed": false,
"gid": 0,
"group": "root",
"md5sum": "82ef84d58047cb303e91d22a1ba4ed69",
"mode": "0644",
"owner": "root",
"secontext": "unconfined_u:object_r:admin_home_t:s0",
"size": 2238,
"src": "/root/.ansible/tmp/ansible-tmp-1515069024.7-268861670275734/source",
"state": "file",
"uid": 0
}
[root@client01 ansible]#
[root@client01 ansible]# ansible 192.168.144.130 -m command -a "ls -l /tmp/passwd"
192.168.144.130 | SUCCESS | rc=0 >>
-rw-r--r--. 1 root root 2238 Jan 4 20:30 /tmp/passwd
[root@client01 ansible]#

Ansible學習 ad-hoc命令