【Absible学习】Ansible常用模块---命令类模块
command模块可以在远程主机上执行命令,在远程主机中执行命令时,不会经过远程主机的shell处理,如果需要执行的命令中含有重定向、管道符等操作,这些符号也会失效,比如"<",">","|",";" 和 "&",如果远程节点是windows操作系统,则需要使用win_command模块。 模块参数
[root@Super ~]# ansible 10.15.43.15 -S -R root -m command -a "chdir=/app/ansible ls" 10.15.43.15 | SUCCESS | rc=0 >> chdir zabbix_discovery_port.sh zabbix_discovery_port.sh.3933.2018-06-27@06:39:26~ [root@Super ~]# ansible 10.15.43.15 -S -R root -m command -a "pwd" 10.15.43.15 | SUCCESS | rc=0 >> /home/ywbz [root@Super ~]# 默认进入的是资源清单中ansible_ssh_user指定的用户家目录,通过chdir参数在执行命令之前,会先进入到指定的目录中,再自行后面的命令 [root@Super ~]# ansible 10.15.43.15 -S -R root -m command -a "chdir=/app/ansible ls" 10.15.43.15 | SUCCESS | rc=0 >> chdir zabbix_discovery_port.sh zabbix_discovery_port.sh.3933.2018-06-27@06:39:26~ [root@Super ~]# ansible 10.15.43.15 -S -R root -m command -a "creates=/app/ansible/zabbix_discovery_port.sh pwd" 10.15.43.15 | SUCCESS | rc=0 >> skipped,since /app/ansible/zabbix_discovery_port.sh exists [root@Super ~]# ansible 10.15.43.15 -S -R root -m command -a "creates=/app/ansible/zabbix_discovery_port.sh1 pwd" 10.15.43.15 | SUCCESS | rc=0 >> /home/ywbz [root@Super ~]# ansible 10.15.43.15 -S -R root -m command -a "creates=/app/ansible/ pwd" 10.15.43.15 | SUCCESS | rc=0 >> skipped,since /app/ansible/ exists [root@Super ~]# ansible 10.15.43.15 -S -R root -m command -a "creates=/app/ansible1/ pwd" 10.15.43.15 | SUCCESS | rc=0 >> /home/ywbz [root@Super ~]# 从上面结果可知,当creates参数指定的文件(目录)存在时,就跳过后面的命令,文件(目录)不存在时就执行后面的命令 [root@Super ~]# ansible 10.15.43.15 -S -R root -m command -a "removes=/app/ansible/zabbix_discovery_port.sh pwd" 10.15.43.15 | SUCCESS | rc=0 >> /home/ywbz [root@Super ~]# ansible 10.15.43.15 -S -R root -m command -a "removes=/app/ansible/zabbix_discovery_port1.sh pwd" 10.15.43.15 | SUCCESS | rc=0 >> skipped,since /app/ansible/zabbix_discovery_port1.sh does not exist [root@Super ~]# ansible 10.15.43.15 -S -R root -m command -a "removes=/app/ansible/ pwd" 10.15.43.15 | SUCCESS | rc=0 >> /home/ywbz [root@Super ~]# ansible 10.15.43.15 -S -R root -m command -a "removes=/app/ansible1/ pwd" 10.15.43.15 | SUCCESS | rc=0 >> skipped,since /app/ansible1/ does not exist [root@Super ~]# removes参数和creates参数完全相反。
shell模块在远程主机上执行命令,与command模块不同的是,shell模块在远程主机中执行命令时,会经过远程主机上的/bin/sh程序处理。 模块参数
shell模块中chdir、creates、removes参数的作用与command模块中的作用都是相同的。 [root@Super ~]# ansible 10.15.43.15 -S -R root -m shell -a "chdir=/app/ansible ls -l >> test" 10.15.43.15 | SUCCESS | rc=0 >> [root@Super ~]# 使用shell模块可以在远程服务器上执行命令,它支持管道与重定向等符号,执行的命令都是在远程主机上
模块参数
[root@Super ~]# ansible 10.15.43.15 -S -R root -m script -a "chdir=/app/ansible /app/download/system-time.sh" 进入远程主机的/app/ansible目录后,再执行ansible主机上/app/download/system-time.sh脚本。 [root@Super ~]# ansible 10.15.43.15 -S -R root -m script -a "creates=/app/ansible /app/download/system-time.sh" 10.15.43.15 | SKIPPED [root@Super ~]# ansible 10.15.43.15 -S -R root -m script -a "removes=/app/ansible /app/download/system-time.sh" 10.15.43.15 | SUCCESS => { "changed": true, creates参数指定远程主机上存在/app/ansible目录就不执行/app/download/system-time.sh脚本,removes参数执行远程主机目录不存在就不执行脚本,存在就执行脚本。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |