知识点:使用module command或者shell或者raw都能调用对象机器上的某条指令或者某个可执行文件。
使用方法
[root@host31 ~]# ansible localhost -m command -a "echo hello"
localhost | SUCCESS | rc=0 >>
hello
[root@host31 ~]# ansible localhost -m shell -a "echo hello"
localhost | SUCCESS | rc=0 >>
hello
[root@host31 ~]# ansible localhost -m raw -a "echo hello"
localhost | SUCCESS | rc=0 >>
hello
[root@host31 ~]#
是否支持管道
module | 是否支持管道 |
---|---|
command | 不支持管道 |
shell | 支持管道 |
raw | 支持管道 |
[root@host31 ~]# ansible localhost -m command -a "ps -ef |wc -l"
localhost | FAILED | rc=1 >>
error: garbage option
Usage:
ps [options]
Try 'ps --help <simple|list|output|threads|misc|all>'
or 'ps --help <s|l|o|t|m|a>'
for additional help text.
For more details see ps(1).
[root@host31 ~]# ansible localhost -m shell -a "ps -ef |wc -l"
localhost | SUCCESS | rc=0 >>
448
[root@host31 ~]# ansible localhost -m raw -a "ps -ef |wc -l"
localhost | SUCCESS | rc=0 >>
445
[root@host31 ~]#
直接执行某个文件
[root@host31 ~]# ansible host32 -m command -a "/tmp/ttt.sh"
host32 | SUCCESS | rc=0 >>
hello world
[root@host31 ~]# ansible host32 -m raw -a "/tmp/ttt.sh"
host32 | SUCCESS | rc=0 >>
hello world
[root@host31 ~]# ansible host32 -m shell -a "/tmp/ttt.sh"
host32 | SUCCESS | rc=0 >>
hello world
[root@host31 ~]#
都是支持的,但是需要注意/tmp/ttt.sh应该有执行权限
ansible-doc -s取得更详细信息
希望知道更加详细的module的信息,最好的方法是使用ansible自带的ansible-doc的-s选项
[root@host31 ~]# ansible-doc -s raw
- name: Executes a low-down and dirty SSH command
action: raw
executable # change the shell used to execute the command. Should be an absolute path to the executable.
free_form= # the raw module takes a free form command to run
[root@host31 ~]#
[root@host31 ~]# ansible-doc -s shell
- name: Execute commands in nodes.
action: shell
chdir # cd into this directory before running the command
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 shell module takes a free form command to run, as a string. There's not an actual option
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.
[root@host31 ~]#
[root@host31 ~]# ansible-doc -s command
- name: Executes a command on a remote node
action: command
chdir # cd into this directory before running the command
creates # a filename or (since 2.0) glob pattern, 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 or (since 2.0) glob pattern, 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.
[root@host31 ~]#