3422 发表于 2016-2-26 11:02:41

ansible模块command、shell、raw、script

环境:

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
# pwd
/etc/ansible
# cat hosts

192.168.100.131
192.168.100.132
#




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
# 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 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 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.

- executable
      change the shell used to execute the command. Should be an
      absolute path to the executable.

= free_form
      the command module takes a free form command to run.There is
      no parameter actually named 'free form'. See the examples!
      

- removes
      a filename, when it does not exist, this step will *not* be
      run.

- warn
      if command warnings are on in ansible.cfg, do not warn about
      this particular line if set to no/false.

Notes:If you want to run a command through the shell (say you are using
      `<', `>', `|', etc), you actually want the module
      instead. The 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
# 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
# ansible testservers -m command -a 'pwd'
192.168.100.132 | success | rc=0 >>
/root

192.168.100.131 | success | rc=0 >>
/root

# 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
# ansible testservers -m command -a 'uname -n'




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

1
# ansible testservers -m script -a '/etc/ansible/test.sh




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

1
# ansible testservers -m shell -a 'bash /root/test.sh'




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

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






页: [1]
查看完整版本: ansible模块command、shell、raw、script