ansible笔记(5):常用模块之命令类模块
1.command模块
它的作用是帮助我们在远程主机上执行命令。
【注意】使用command模块在远程主机中执行命令时,不会经过远程主机的shell处理,在使用command模块时,如果需要执行的命令中含有重定向、管道符等操作时,这些符号也会失效,比如"<",">","|",";"和"&"这些符号,如果你需要这些功能,可以参考后面介绍的shell模块,还有一点需要注意,如果远程节点是windows操作系统,则需要使用win_command模块。
参数解析:
free_form:必须参数,指定需要远程执行的命令,需要说明一点,free_form参数与其他参数并不相同,在之前的模块示例中,如果想要使用一个参数,那么则需要为这个参数赋值,举个例子,之前的示例模块中,大多都有path参数,当我们需要指定要操作的文件时,通常需要对path参数赋值,比如,path=/test/testdir,表示我们想要操作/test/testdir文件,但是free_form参数则不同free_form并不是一个实际存在的参数名,比如,当我们想要在远程主机上执行ls命令时,我们并不需要写成free_form=ls,这样写反而是错误的,因为并没有任何参数的名字是free_form,当我们想要在远程主机中执行ls命令时,直接写成ls即可,这就是free_form参数的含义,因为command模块的作用是执行命令,所以,任何一个可以在远程主机上执行的命令都可以被称为free_form,如果你还是不明白,看下面的小示例就行了。
chdir:此参数的作用就是指定一个目录,在执行对应的命令之前,会先进入到chdir参数指定的目录中。
creates:看到creates,你可能会从字面上理解这个参数,但是使用这个参数并不会帮助我们创建文件,它的作用是当指定的文件存在时,就不执行对应命令,比如,如果/test/testdir文件存在,就不执行我们指定的命令。
removes:与creates参数的作用正好相反,它的作用是当指定的文件不存在时,就不执行对应命令,比如,如果/test/testdir文件不存在,就不执行我们指定的命令,此参数并不会帮助我们删除文件
(1)使用command命令查看远程主机上的文件夹(/test)内容:
[root@ansible-control /]# ansible 192.168.10.6 -m command -a "ls /test"

(2)chdir参数表示执行命令之前,会先进入到指定的目录中,所以如下命令表示查看远程主机上/test目录中的文件列表
[root@ansible-control /]# ansible 192.168.10.6 -m command -a "chdir=/test ls" 等效于 [root@ansible-control /]# ansible 192.168.10.6 -m command -a "ls /test"

(3)creates:如下命令表示/test/testdir文件如果存在于远程主机中,则不执行对应命令,如果不存在,才执行echo test命令
[root@ansible-control /]# ansible 192.168.10.6 -m command -a "creates=/test/test echo test" #不存在的情况,执行后面的指令

[root@ansible-control /]# ansible 192.168.10.6 -m command -a "creates=/test/testdir echo test" #存在的情况,不执行后面的指令

(4)removes:如下命令表示/test/testdir文件如果不存在于远程主机中,则不执行对应命令,如果存在,才执行echo test命令
[root@ansible-control /]# ansible 192.168.10.6 -m command -a "removes=/test/testdir echo test" #文件存在的情况,存在就执行后面的指令

[root@ansible-control /]# ansible 192.168.10.6 -m command -a "removes=/test/wcds echo test" #文件不存在的情况,不执行后面的指令

2.shell模块
shell模块可以帮助我们在远程主机上执行命令,与command模块不同的是,shell模块在远程主机中执行命令时,会经过远程主机上的/bin/sh程序处理。
参数解析:
free_form:必须参数,指定需要远程执行的命令,但是并没有具体的一个参数名叫free_form,具体解释参考command模块。
chdir:此参数的作用就是指定一个目录,在执行对应的命令之前,会先进入到chdir参数指定的目录中。
creates:使用此参数指定一个文件,当指定的文件存在时,就不执行对应命令,可参考command模块中的解释。
removes:使用此参数指定一个文件,当指定的文件不存在时,就不执行对应命令,可参考command模块中的解释。
executable:默认情况下,shell模块会调用远程主机中的/bin/sh去执行对应的命令,通常情况下,远程主机中的默认shell都是bash,如果你想要使用其他类型的shell执行命令,则可以使用此参数指定某种类型的shell去执行对应的命令,指定shell文件时,需要使用绝对路径。
【注意】shell模块中的chdir、creates、removes参数用法和command模块中的用法一致。
(1)使用shell模块可以在远程服务器上执行命令,它支持管道与重定向等符号。
[root@ansible-control /]# ansible 192.168.10.6 -m shell -a "chdir=/test/ echo test > linetest" #文件夹中事先存在文件linetest

[root@ansible-control /]# ansible 192.168.10.6 -m shell -a "chdir=/test/ echo test > abc" #如果发现目标文件夹中没有abc文件,则会新建abc文件,再将内容写入该文件


(2)如果你想要执行的命令需要csh解析,那么可以指定使用csh在远程主机上执行对应的命令,比如在如下示例中,我们使用csh的语法定义了一个数字类型的变量TestNum,然后将TestNum变量的值重定向到了/testdir/TestNumFile,在bash中,@符号不能用于定义变量,所以,可以使用executable指定需要的shell类型。
[root@ansible-control /]# ansible 192.168.10.6 -m shell -a 'executable=/bin/csh @ TestNum=666;echo $TestNum > /test/test2'

3.script模块
script模块可以帮助我们在远程主机上执行ansible主机上的脚本,也就是说,脚本一直存在于ansible主机本地,不需要手动拷贝到远程主机后再执行。
参数解析:
free_form:必须参数,指定需要执行的脚本,脚本位于ansible主机本地,并没有具体的一个参数名叫free_form,具体解释参考command模块。
chdir: 此参数的作用就是指定一个远程主机中的目录,在执行对应的脚本之前,会先进入到chdir参数指定的目录中。
creates:使用此参数指定一个远程主机中的文件,当指定的文件存在时,就不执行对应脚本,可参考command模块中的解释。
removes:使用此参数指定一个远程主机中的文件,当指定的文件不存在时,就不执行对应脚本,可参考command模块中的解释。
(1)如下命令表示ansible主机中的/test/pingtest.sh脚本将在远程主机中执行,执行此脚本之前,会先进入到远程主机中的/test目录
先在ansible主机上新建一个shell脚本(pingtest.sh):

[root@ansible-control test]# ansible 192.168.10.6 -m script -a "chdir=/test /test/pingtest.sh"

(2)creates:如下命令表示,如果远程主机中的/test/pingtest文件已经存在,ansible主机中的/testdir/pingtest.sh脚本将不会在远程主机中执行,反之则执行。
[root@ansible-control test]# ansible 192.168.10.6 -m script -a "creates=/test/pingtxt /test/pingtest.sh" #此时由于是第一次执行命令,远程主机中并没有/test/pingtxt文件,所以执行脚本!

[root@ansible-control test]# ansible 192.168.10.6 -m script -a "creates=/test/pingtxt /test/pingtest.sh" #此时由于是第二次执行命令,远程主机已经存在pingtxt文件,根据creates参数要求,所以不执行脚本!

(3)removes:如下命令表示,如果远程主机中的/test/pingtxt文件不存在,ansible主机中的/test/pingtest.sh脚本将不会在远程主机中执行,反之则执行。
[root@ansible-control test]# ansible 192.168.10.6 -m script -a "removes=/test/pingtxt /test/pingtest.sh" #第一次执行命令,远程主机上还没有pingtxt文件,所以不执行脚本

[root@ansible-control test]# ansible 192.168.10.6 -m script -a "removes=/test/pingtxt /test/pingtest.sh" #现在我们在远程主机上新建一个pingtxt文件,此时再次执行命令即可成功执行脚本

ansible笔记(5):常用模块之命令类模块的更多相关文章
- ansible笔记(6):常用模块之命令类模块
ansible笔记():常用模块之命令类模块 command模块 command模块可以帮助我们在远程主机上执行命令 注意:使用command模块在远程主机中执行命令时,不会经过远程主机的shell处 ...
- Ansible常用模块之命令类模块
Command模块 在远程节点上执行命令 [root@tiandong ~]# ansible all -m command -a "ls" 在远程主机上执行ls命令. [root ...
- ansible笔记(7):常用模块之系统类模块
ansible笔记():常用模块之系统类模块 cron模块 cron模块可以帮助我们管理远程主机中的计划任务,功能相当于crontab命令. 在了解cron模块的参数之前,先写出一些计划任务的示例,示 ...
- ansible笔记(8):常用模块之系统类模块(二)
ansible笔记():常用模块之系统类模块(二) user模块 user模块可以帮助我们管理远程主机上的用户,比如创建用户.修改用户.删除用户.为用户创建密钥对等操作. 此处我们介绍一些user模块 ...
- Ansible笔记(7)---常用模块之系统类模块(cron、service)
一.cron模块 1.1作用: cron 模块可以帮助我们管理远程主机中的计划任务,功能相当于 crontab 命令. 在了解cron模块的参数之前,先写出一些计划任务的示例: # 示例1,每天的1点 ...
- Ansible常用模块之系统类模块
cron模块 管理远程主机上的计划任务 [root@tiandong ansible]# ansible all -m cron -a "name='cron test' minute=5 ...
- Linux学习笔记:常用100条命令(三)
linux常用命令 1.查看当前yum源 yum list 2.查看电脑以及操作系统的相关信息 uname -a 3.查看当前版本信息 cat /proc/version 4.查看发行版本信息 cat ...
- Linux学习笔记:常用100条命令(二)
linux常用命令 1.vi中复制快捷键 yy --复制 p --粘贴 2.vi中保存退出 ZZ 3.linux解压zip unzip 4.查看软件组包 yum grouplist 5.安装组包 yu ...
- Linux学习笔记:常用100条命令(一)
linux常用命令 1.关机 shutdown -h now 立刻关机 poweroff shutdown -r now 立刻重启 reboot logout 注销 2.进入图形界面 startx 3 ...
随机推荐
- http中长连接和websocket的长连接的区别
一.什么是http协议 HTTP是一个应用层协议,无状态的,端口号为80.主要的版本有1.0/1.1/2.0. HTTP/1.* 一次请求-响应,建立一个连接,用完关闭: HTTP/1.1 串行化 ...
- 记录 Docker 的学习过程 (自建私有仓库)
私有仓库的创建 node1#wget http://harbor.orientsoft.cn/harbor-v1.4.0/harbor-offline-installer-v1.4.0.tgz nod ...
- elasitic search fresh flush segment merge
new document首先在in memory buffer 中 (1)fresh 触发条件:默认one second 执行一次 执行过程:将memory buffer中documents 写入至f ...
- unity踩坑2020-01-21
这几天一直在测试一个类似于传奇的2d界面游戏,目前做的测试为: 人物动作响应,主要是8方向的判断和资源文件精灵的刷新. 学到的知识点: 1,Enum.GetHashCode() 可以得到这个枚举的索引 ...
- sql已经在视图展示的语句如何显示别的表中的内容而不改变原有的值
1.这个功能是我在公司的时候的一个需求,我师傅和我说你不可能就是说你可以添加的时候是数字但是展现给客户看的时候是数字最好是名称因为客户不知道这是什么意思 2.于是我陷入了漫长的实现这个功能中一开始只是 ...
- JavaScript 13 Ajax技术(未完)
<body> <!-- 添加文档主体内容 --> <header> <nav>JavaScript - Ajax - 读取XML文件</nav&g ...
- java - 锁的种类及详解
锁类型 锁根据其特性能够划分出各种各样的锁类型,该文主要介绍以下锁的作用及特性 乐观锁/悲观锁 独享锁/共享锁 互斥锁/读写锁 可重入锁 公平锁/非公平锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁 ...
- 遇到的基础php函数、方法
0x01 PHP file() 函数 file() 函数把整个文件读入一个数组中. 数组中的每个元素都是文件中相应的一行,包括换行符在内. 实例: <?php print_r(file(&quo ...
- ubuntu set up 3 - cuda
https://www.pugetsystems.com/labs/hpc/How-to-install-CUDA-9-2-on-Ubuntu-18-04-1184/ How to install C ...
- (转)git rebase 命令
转自:http://blog.csdn.net/hudashi/article/details/7664631/ 原文: http://gitbook.liuhui998.com/4_2.html 一 ...