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
[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}'"



本文转自 西索oO 51CTO博客,原文链接:http://blog.51cto.com/lansgg/1745009
相关文章
|
6月前
|
存储 Shell Linux
【Shell 命令集合 系统设置 】Linux 生成并更新内核模块的依赖 depmod命令 使用指南
【Shell 命令集合 系统设置 】Linux 生成并更新内核模块的依赖 depmod命令 使用指南
142 0
|
6月前
|
Shell Linux C语言
【Shell 命令集合 系统设置 】⭐Linux 卸载已加载的内核模块rmmod命令 使用指南
【Shell 命令集合 系统设置 】⭐Linux 卸载已加载的内核模块rmmod命令 使用指南
132 1
|
6月前
|
存储 Linux Shell
【Shell 命令集合 系统设置 】Linux 获取指定模块的元信息 minfo命令 使用指南
【Shell 命令集合 系统设置 】Linux 获取指定模块的元信息 minfo命令 使用指南
62 0
|
6月前
|
Linux Shell 文件存储
【Shell 命令集合 系统设置 】Linux 加载和卸载内核模块 modprobe命令 使用指南
【Shell 命令集合 系统设置 】Linux 加载和卸载内核模块 modprobe命令 使用指南
163 1
|
3月前
|
存储 Shell 应用服务中间件
[ansible]wget批量调用shell脚本
[ansible]wget批量调用shell脚本
|
3月前
|
缓存 Shell Linux
[ansible]常用内置模块
[ansible]常用内置模块
|
4月前
|
Shell 应用服务中间件 Linux
Ansible的常用模块
Ansible的常用模块
90 6
|
4月前
|
Shell 数据安全/隐私保护
Ansible Ad-hoc,命令执行模块
Ansible Ad-hoc,命令执行模块
39 1
|
4月前
|
运维 Linux 应用服务中间件
Linux之自动化运维工具ansible、ansible模块(2)
Linux之自动化运维工具ansible、ansible模块(2)
|
4月前
|
运维 Linux Shell
Linux之自动化运维工具ansible、ansible模块(1)
Linux之自动化运维工具ansible、ansible模块(1)
下一篇
无影云桌面