環境:
node
ansible端:
python
ip:192.168.100.129redis
hostname:node1.lansgg.comshell
client端:bash
ip:192.168.100.131less
hostname:v2.lansgg.com
ssh
ip:192.168.100.132tcp
hostname:v3.lansgg.comide
[root@node1 ansible]# pwd /etc/ansible [root@node1 ansible]# cat hosts [testservers] 192.168.100.131 192.168.100.132 [root@node1 ansible]#
一、命令格式工具
SYNOPSIS ansible <host-pattern> [-f forks] [-m module_name] [-a args]
模塊命令詳細信息查詢
ansible-doc moduleName
如:
[root@node1 ansible]# ansible-doc command less 436 Copyright (C) 1984-2009 Mark Nudelman less comes with NO WARRANTY, to the extent permitted by law. For information about the terms of redistribution, see the file named README in the less distribution. Homepage: http://www.greenwoodsoftware.com/less > COMMAND The [command] module takes the command name followed by a list of space-delimited arguments. The given command will be executed on all selected nodes. It will not be processed through the shell, so variables like `$HOME' and operations like `"<"', `">"', `"|"', and `"&"' will not work (use the [shell] module if you need these features). Options (= is mandatory): - chdir cd into this directory before running the command [Default: None] - creates a filename, when it already exists, this step will *not* be run. [Default: None] - executable change the shell used to execute the command. Should be an absolute path to the executable. [Default: None] = free_form the command module takes a free form command to run. There is no parameter actually named 'free form'. See the examples! [Default: None] - removes a filename, when it does not exist, this step will *not* be run. [Default: None] - warn if command warnings are on in ansible.cfg, do not warn about this particular line if set to no/false. [Default: True] Notes: If you want to run a command through the shell (say you are using `<', `>', `|', etc), you actually want the [shell] module instead. The [command] module is much more secure as it's not affected by the user's environment. `creates', `removes', and `chdir' can be specified after the command. For instance, if you only want to run a command if a certain file does not exist, use this. EXAMPLES: # Example from Ansible Playbooks. - command: /sbin/shutdown -t now # Run the command if the specified file does not exist. - command: /usr/bin/make_database.sh arg1 arg2 creates=/path/to/database # You can also use the 'args' form to provide the options. This command # will change the working directory to somedir/ and will only run when # /path/to/database doesn't exist. - command: /usr/bin/make_database.sh arg1 arg2 args: chdir: somedir/ creates: /path/to/database
解釋:command爲模塊名, chdir、create 等此模塊特有的參數
二、ansible模塊之command
此模塊爲ansible默認執行的模塊,也是經常使用模塊之一
示例: 查看遠程主機的passwd最後兩行
[root@node1 ansible]# ansible testservers -m command -a 'tail -2 /etc/passwd' 192.168.100.131 | success | rc=0 >> postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin 192.168.100.132 | success | rc=0 >> sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin
使用參數,修改固然工做目錄
[root@node1 ansible]# ansible testservers -m command -a 'pwd' 192.168.100.132 | success | rc=0 >> /root 192.168.100.131 | success | rc=0 >> /root [root@node1 ansible]# ansible testservers -m command -a 'chdir=/tmp/ pwd' 192.168.100.131 | success | rc=0 >> /tmp 192.168.100.132 | success | rc=0 >> /tmp
command模塊 [執行遠程命令]
[root@node1 ansible]# ansible testservers -m command -a 'uname -n'
script模塊 [在遠程主機執行主控端的shell/python腳本 ] (使用相對路徑)
[root@node1 ansible]# ansible testservers -m script -a '/etc/ansible/test.sh
shell模塊 [執行遠程主機的shell/python腳本]
[root@node1 ansible]# ansible testservers -m shell -a 'bash /root/test.sh'
raw模塊 [相似於command模塊、支持管道傳遞]
[root@node1 ansible]# ansible testservers -m raw -a "ifconfig eth0 |sed -n 2p |awk '{print \$2}' |awk -F: '{print \$2}'"