ansible常用模块简介

授人与,不如授人与渔,有些信息还是要看官网

1,【command】:在远程节点上执行命令(不支持shell中的<>|&等符号)

  • https://docs.ansible.com/ansible/latest/modules/command_module.html#command-module
  • 如果不使用 -m 指定模块,默认使用command模块。

2 ,【shell】:在节点中执行命令 (shell()运行命令)

  • https://docs.ansible.com/ansible/latest/modules/shell_module.html#shell-module

3,【ping】 :测试主机是否可以连接 (pong则通)

  • 到这里不由发现,官网链接都是有规律的,所以,每个模块都可以很快的找到对应连接,方便查阅。
    [root@master ~ 19:55:31]#ansible ceshi -m ping
    10.0.0.129 | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    10.0.0.11 | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    
  • 参数说明,详见官网:ping-module

4,【setup】:主要用于获取主机信息

  • 4.1,ansible ceshi -m setup:获取主机的所有信息(太多了,有些不需要)

    ansible常用模块简介_第1张图片
    setup结果概览.png

    结果里面有太多内容,但是都在ansible_facts的值里,而且每一个结果都以ansible_的形式命名,所有结果都可以使用filter进行过滤。
    ansible常用模块简介_第2张图片
    setup结果总览.png

  • 4.2,ansible ceshi -m setup -a 'filter=ansible_*_mb'(通配符,模糊过滤)
           (filter=ansible_memory_mb 过滤更彻底):获取主机的内存信息

    [root@master ~ 20:10:19]#ansible ceshi -m setup -a 'filter=ansible_*_mb'
    10.0.0.129 | SUCCESS => {
        "ansible_facts": {
            "ansible_memfree_mb": 1377, 
            "ansible_memory_mb": {
                "nocache": {
                    "free": 1724, 
                    "used": 259
                }, 
                "real": {
                    "free": 1377, 
                    "total": 1983, 
                    "used": 606
                }, 
                "swap": {
                    "cached": 0, 
                    "free": 2044, 
                    "total": 2044, 
                    "used": 0
                }
            }, 
    
            "ansible_memtotal_mb": 1983, 
            "ansible_swapfree_mb": 2044, 
            "ansible_swaptotal_mb": 2044
        }, 
        "changed": false
    }
    10.0.0.11 | SUCCESS => {
        "ansible_facts": {
            "ansible_memfree_mb": 664, 
            "ansible_memory_mb": {
                "nocache": {
                    "free": 779, 
                    "used": 193
                }, 
                "real": {
                    "free": 664, 
                    "total": 972, 
                    "used": 308
                }, 
                "swap": {
                    "cached": 0, 
                    "free": 2047, 
                    "total": 2047, 
                    "used": 0
                }
            }, 
            "ansible_memtotal_mb": 972, 
            "ansible_swapfree_mb": 2047, 
            "ansible_swaptotal_mb": 2047
        }, 
        "changed": false
    }
    
  • 4.3,ansible ceshi -m setup -a 'filter=ansible_eth[0-2]':获取主机的网卡信息(以eth0-2命名的网卡)

  • 4.4,ansible ceshi -m setup -a 'filter=ansible_ens33' :获取主机的ens33网卡信息

    网卡信息:有的是ens命名(ens33),有的是eth命名(eth0),还有别的命名。
  • 4.5,ansible ceshi -m setup -a 'filter=ansible_all_ipv4_addresses':ipv4地址

    10.0.0.129 | SUCCESS => {
        "ansible_facts": {
            "ansible_all_ipv4_addresses": [
                "10.0.0.129"
            ]
        }, 
        "changed": false
    }
    10.0.0.11 | SUCCESS => {
        "ansible_facts": {
            "ansible_all_ipv4_addresses": [
                "10.0.0.11"
            ]
        }, 
        "changed": false
    }
    
  • 4.6,ansible ceshi -m setup -a 'filter=ansible_distribution':表示远程主机的系统发行版

    [root@master ~ 20:46:54]#ansible ceshi -m setup -a 'filter=ansible_distribution'
    10.0.0.11 | SUCCESS => {
        "ansible_facts": {
            "ansible_distribution": "CentOS"
        }, 
        "changed": false
    }
    10.0.0.129 | SUCCESS => {
        "ansible_facts": {
            "ansible_distribution": "Ubuntu"
        }, 
        "changed": false
    }
    
  • setup中常用信息

  • 参数说明,详见官网:setup-module

5,【files】:文件操作相关

  • 简单示例,创建软连接:
    ansible ceshi -m file -a "src=/etc/ dest=/tmp/ state=link"
    src:源文件目录(只适用于state=link) dest被链接到的目录(只适用于state=link) state:状态(link是软连接)具体信息,详见官网。
  • 参数说明,详见官网:file-module

6,【copy】:文件传输复制相关

  • 简单示例,向目标主机传输文件:
    ansible ceshi -m copy -a "src=/ dest=/ owner=root grout=root mode=644"
  • 参数说明,详见官网:copy-module

7,【fetch】:从远程节点获取文件

  • 此模块的工作方式与copy相同,但相反。它用于从远程计算机获取文件并将它们本地存储在由主机名组织的文件树中。
  • 参数说明,详见官网:fetch-module

8,【template】:将带有参数的模板配置文件传递到目标地址(常用于playbook,参数可使用vars定义)

  • 与copy不同之处在于,template支持渲染模板文件里面的变量,将渲染后的文件发送至目标主机,而copy是将文件复制到目标主机。
  • 示例(大概看个样式,无实际意义)
    $ vi hello_world.txt.j2
    Hello "{{ dynamic_word }}"
           ↑ ↑ ↑
    
    $ vi template_demo.yml
    ---
    
    - name: Play the template module
     hosts: localhost
     vars:
       dynamic_word: "World"
    
     tasks:
       - name: generation the hello_world.txt file
         template:
           src: hello_world.txt.j2
           dest: /tmp/hello_world.txt
    
    直接执行 playbook。
    $ ansible-playbook template_demo.yml
    
    通过 -e 参数将 dynamic_word 覆写成 ansible。
    $ ansible-playbook template_demo.yml -e "dynamic_word=ansible"
    
    通过 -e 参数将 dynamic_word 覆写成 Day14。
    $ ansible-playbook template_demo.yml -e "dynamic_word=Day14"
    
  • 参数说明,详见官网:template-module

9,【service】:控制远程主机上的服务(一般使用playbook形式)

  • 简单示例,重启nginx:
    ansible ceshi -m service -a "name=nginx state=restarted"
  • 参数说明,详见官网:service-module

10,【cron】:管理计划任务 (管理cron.d和crontab条目)

  • 简单示例,创一条计划任务:
    ansible ceshi -m cron -a "name='测试计划任务' weekday='2' minute='0' hour=12 job='cat /etc/test.py'"
  • 参数说明,详见官网:cron-module

11,【yum】:使用yum包管理器管理包(适用于python2)

  • 参数说明,详见官网:yum-module

12,【get_url】:将文件从HTTP,HTTPS或FTP下载到节点

  • 参数说明,详见官网:get_url-module

13,【user】: 管理用户帐户

  • 参数说明,详见官网:user-module

14,【group】: 添加或删除组

  • 参数说明,详见官网:group-module

15,【script】:传输后并且运行本地脚本

  • 参数说明,详见官网:script-module

16,【apt】:管理apt包(例如Ubuntu)

  • 参数说明,详见官网:apt-module

17,【pip】:管理Python库依赖项

  • 参数说明,详见官网:pip-module

18,【debug】:执行期间的打印语句

  • 参数说明,详见官网:debug-module

你可能感兴趣的:(ansible常用模块简介)