ansible模块command、shell、raw、script,ansibleraw


环境:

ansible端:    

    ip:192.168.100.129

    hostname:node1.lansgg.com

client端:

      ip:192.168.100.131

      hostname:v2.lansgg.com 

      ip:192.168.100.132

      hostname:v3.lansgg.com

1 2 3 4 5 6 7 [root@node1 ansible]# pwd /etc/ansible [root@node1 ansible]# cat hosts [testservers] 192.168.100.131 192.168.100.132 [root@node1 ansible]#

1、命令格式

1 2 SYNOPSIS        ansible <host-pattern> [-f forks] [-m module_name] [-a args]

模块命令详细信息查询

1 ansible-doc moduleName

如:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 [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 等此模块特有的参数

2、ansible模块之command

此模块为ansible默认执行的模块,也是常用模块之一

示例: 查看远程主机的passwd最后两行

1 2 3 4 5 6 7 8 [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

使用参数,修改当然工作目录

1 2 3 4 5 6 7 8 9 10 11 12 13 [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


关于ansbile工具的shell、command、script、raw模块的区别和使用场景

command模块 [执行远程命令]

1 [root@node1 ansible]# ansible testservers -m command -a 'uname -n'

script模块 [在远程主机执行主控端的shell/python脚本 ]  (使用相对路径)

1 [root@node1 ansible]# ansible testservers -m script -a '/etc/ansible/test.sh

shell模块 [执行远程主机的shell/python脚本]

1 [root@node1 ansible]# ansible testservers -m shell -a 'bash /root/test.sh'

raw模块 [类似于command模块、支持管道传递]

1 [root@node1 ansible]# ansible testservers -m raw -a "ifconfig eth0 |sed -n 2p |awk '{print \$2}' |awk -F: '{print \$2}'"


本文出自 “大風” 博客,请务必保留此出处http://lansgg.blog.51cto.com/5675165/1745009

相关内容

    暂无相关文章