Ansible常用模块之命令模块

  • 2019-09-02
  • 0
  • 0

Ansible官方手册

常用命令模块有

  • ping模块
  • command模块
  • shell模块
  • script模块
  • get_url模块

一、ping模块

作用:Ansible最基础的模块是ping模块,主要用于判断远程客户端是否在线。

用法示例

[root@ljc ansible]# ansible web -m ping  
192.168.1.7 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}

二、command模块

作用:帮助我们在远程主机上执行命令

注意:在使用command模块时,是不支持含有重定向、管道符等操作。比如"<""|"";""&",如果要使用,请用shell模块。

一些参数:

chdir:在执行某个命令前,先切换目录
creates:判断一个文件是否存在,如果已经存在了,后面的命令就不会执行
removes:判断一个文件是否存在,如果不存在,后面的命令就不会执行
free_form:必须要有,表示执行command模块时,必须要有linux合法命令信息

用法示例

#在执行某个命令前,先切换目录
[root@ljc ansible]# ansible web -m command -a "chdir=/etc/ pwd"
    192.168.1.31 | SUCCESS | rc=0 >>
    /etc
#判断一个文件是否存在,如果已经存在了,后面的命令就不会执行
[root@ljc ansible]# ansible web -m command -a "creates=/etc/rsyncd.conf.bak hostname"
    192.168.1.41 | SUCCESS | rc=0 >>
    skipped, since /etc/rsyncd.conf.bak exists

[root@ljc ansible]# ansible web -m command -a "creates=/etc/rsyncd.123456 hostname"
    192.168.1.41 | SUCCESS | rc=0 >>
    backup
#判断一个文件是否存在,如果不存在,后面的命令就不会执行
[root@ljc ansible]# ansible 192.168.1.41 -m command -a "removes=/etc/rsyncd.conf hostname"
    192.168.1.41 | SUCCESS | rc=0 >>
    backup

[root@ljc ansible]# ansible 192.168.1.41 -m command -a "removes=/etc/rsyncd.123 hostname"
    192.168.1.41 | SUCCESS | rc=0 >>
    skipped, since /etc/rsyncd.123 does not exist
#free_form---表示执行command模块时,必须要有linux合法命令信息
[root@ljc ansible]# ansible 192.168.1.41 -m command -a "ls"
    192.168.1.41 | SUCCESS | rc=0 >>
    1
    anaconda-ks.cfg
    dead.letter

三、shell模块

一些参数:

chdir:在执行某个命令前,先切换目录
creates:判断一个文件是否存在,如果已经存在了,后面的命令就不会执行
removes:判断一个文件是否存在,如果不存在,后面的命令就不会执行
free_form:必须要有,表示执行command模块时,必须要有linux合法命令信息

#说明:shell模块可以满足command模块所有功能,并且可以支持识别特殊字符信息 < > | ; 
#示例一、
[root@ljc ansible]# ansible web -m shell -a "ls;pwd"
    192.168.1.4 | SUCCESS | rc=0 >>
    1
    anaconda-ks.cfg
    dead.letter
    /root
 #示例二、
 [root@ljc ansible]# ansible web -m shell -a "chdir=/tmp echo 123test > test.txt" 
192.168.1.4 | CHANGED | rc=0 >>

四、script模块

作用:专门运行脚本的模块

一些参数:

chdir:在执行某个命令前,先切换目录
creates:判断一个文件是否存在,如果已经存在了,后面的命令就不会执行
removes:判断一个文件是否存在,如果不存在,后面的命令就不会执行
free_form:必须要有,表示执行command模块时,必须要有linux合法命令信息
#示例一、执行脚本前,先切换到/tmp/目录下
[root@ljc project1]# ansible web -m script -a "chdir=/tmp /script/t.sh"  
192.168.1.7 | CHANGED => {
    "changed": true, 
    "rc": 0, 
    "stderr": "Shared connection to 192.168.1.7 closed.\r\n", 
    "stderr_lines": [
        "Shared connection to 192.168.1.7 closed."
    ], 
    "stdout": "en_US.UTF-8\r\n", 
    "stdout_lines": [
        "en_US.UTF-8"
    ]
}

五、get_url模块

作用:下载指定文件到指定目录

#示例、
[root@ljc ansible]# ansible web -m get_url -a 'url=https://openresty.org/download/openresty-1.13.6.2.tar.gz dest=/opt/soft' 
192.168.1.7 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "checksum_dest": null, 
    "checksum_src": "870055f4698168f1f045de92c467a33361dee5d7", 
    "dest": "/opt/soft", 
    "elapsed": 0, 
    "gid": 0, 
    "group": "root", 
    "md5sum": "d95bc4bbe15e4b045a0593b4ecc0db38", 
    "mode": "0644", 
    "msg": "OK (4635916 bytes)", 
    "owner": "root", 
    "size": 4635916, 
    "src": "/root/.ansible/tmp/ansible-tmp-1560429865.26-29125096341382/tmpevKZJH", 
    "state": "file", 
    "status_code": 200, 
    "uid": 0, 
    "url": "https://openresty.org/download/openresty-1.13.6.2.tar.gz"
}

点我查看所有:Ansible系列所有文章

 Ansible常用模块之YUM模块           Ansible常用模块之解包模块

Ansible常用模块之系统管理模块     Ansible常用模块之用户管理模块

Ansible常用模块之文件操作模块

评论

还没有任何评论,你来说两句吧

提供支持 - 友情链接 - 衫小寨