zoukankan      html  css  js  c++  java
  • Ansible 常用模块

      根据zs官方的分类,将模块按功能分类为:云模块、命令模块、数据库模块、文件模块、资产模块、消息模块、监控模块、网络模块、通知模块、包管理模块、源码控制模块、系统模块、单元模块、web设施模块、windows模块 ,具体可以参看官方页面

    一、ping 模块

      测试主机是否在线,在线返回pong

    [root@localhost ~]# ansible t3 -m ping 
    192.168.11.162 | SUCCESS => {
        "changed": false,
        "failed": false,
        "ping": "pong"
    }
    

    二、setup 模块

      主要用于获取主机信息 :架构信息,IP,时间,域名,网卡,MAC,主机名,CPU等信息。在playbooks里经常会用到的一个参数gather_facts就与该模块相关。setup模块下经常使用的一个参数是filter参数

    查看内存信息
    [root@localhost ~]# ansible t3 -m setup -a "filter=ansible_*_mb"
    192.168.11.162 | SUCCESS => {
        "ansible_facts": {
            "ansible_memfree_mb": 206,
            "ansible_memory_mb": {
                "nocache": {
                    "free": 1224,
                    "used": 615
                },
                "real": {
                    "free": 206,
                    "total": 1839,
                    "used": 1633
                },
                "swap": {
                    "cached": 0,
                    "free": 4095,
                    "total": 4095,
                    "used": 0
                }
            },
            "ansible_memtotal_mb": 1839,
            "ansible_swapfree_mb": 4095,
            "ansible_swaptotal_mb": 4095
        },
        "changed": false,
        "failed": false
    }
    

    查看内存信息并存到本地/tmp/facts/目录

    [root@localhost ~]# ansible t3 -m setup -a "filter=ansible_*_mb" --tree /tmp/facts
    [root@localhost ~]# cat /tmp/facts/192.168.11.162 
    {"ansible_facts": {
        "ansible_memfree_mb": 206,
        "ansible_memory_mb": {
            "nocache": {
                "free": 1224,
                "used": 615
            },
            "real": {
                "free": 206,
                "total": 1839,
                "used": 1633
            },
            "swap": {
                "cached": 0,
                "free": 4095,
                "total": 4095,
                "used": 0}
        },
        "ansible_memtotal_mb": 1839,
        "ansible_swapfree_mb": 4095,
        "ansible_swaptotal_mb": 4095
        },
    "changed": false,
    "failed": false
    }
    

    三、synchronize 模块

         使用rsync同步文件

       参数:
      archive: 归档,相当于同时开启recursive(递归)、links、perms、times、owner、group、-D选项都为yes ,默认该项为开启
      checksum: 跳过检测sum值,默认关闭
      compress:是否开启压缩
      copy_links:复制链接文件,默认为no ,注意后面还有一个links参数
       delete: 删除不存在的文件,默认no
      src: 源路径
      dest:目的路径
      dest_port:默认目录主机上的端口 ,默认是22,走的ssh协议
      dirs:传速目录不进行递归,默认为no,即进行目录递归
      rsync_opts:rsync参数部分
      set_remote_user:主要用于/etc/ansible/hosts中定义或默认使用的用户与rsync使用的用户不同的情况
      mode: push或pull 模块,push模的话,一般用于从本机向远程主机上传文件,pull 模式用于从远程主机上取文件
    ansible t3  -m synchronize -a   "src=/tmp/nginx-1.13.3 dest=/tmp/ 
    rsync_opts='--exclude=configure,--exclude=LICENSE'"
    ansible t3  -m synchronize -a   "src=/tmp/nginx-1.13.3 dest=/tmp/  checksum=yes 
    times=no links=yes  rsync_opts='--exclude=configure,--exclude=LICENSE'"
    

    四、command 模块和shell

      运行指定的命令

      shell 和command 区别:shell模块可以使用特殊字符,command 是不支持的

    [root@localhost ~]# ansible t3 -m command -a 'date'
    192.168.11.162 | SUCCESS | rc=0 >>
    2017年 12月 26日 星期二 15:54:22 CST
    
    [root@localhost ~]# ansible t3 -m command -a 'mkdir /tmp/test'
     [WARNING]: Consider using file module with state=directory rather than running mkdir
    
    192.168.11.162 | SUCCESS | rc=0 >>
    
    [root@localhost ~]# ansible t3 -m shell -a 'rm -rf /tmp/test'
     [WARNING]: Consider using file module with state=absent rather than running rm
    
    192.168.11.162 | SUCCESS | rc=0 >>
    

     五、script 模块 远程主机执行本地脚步

    [root@localhost tmp]# ansible t3 -m script -a "/tmp/a.sh"
    192.168.11.162 | SUCCESS => {
        "changed": true,
        "failed": false,
        "rc": 0,
        "stderr": "Shared connection to 192.168.11.162 closed.
    ",
        "stdout": "Hello
    ",
        "stdout_lines": [
            "Hello"
        ]
    }

     六、user模块:管理用户的模块

      模块参数详解:
        name:指定用户名
        password:设定用户密码,password参数需要接受md5加密后的值
        state:用户状态,默认为present
          present:表示添加用户
          absent:表示删除用户
        update_password:修改用户密码
          always:新密码和旧密码不同时进行修改
          on_create:为新创建的用户指定密码
        createhome:创建家目录
          yes:默认项,即创建用户默认是有家目录的
          no:创建用户时不创建家目录
        remove:
          yes:删除用户家目录,需要指定此参数
          no:默认项,删除用户时默认不删除用户的家目录
        system:
          yes:默认创建为普通用户,而非系统用户
        如果不指定默认生成的选项有:
          home:创建家目录
          shell:创建默认的shell为/bin/bash
          system:默认创建为普通用户,而非系统用户,指定是用yes

    [root@localhost tmp]# ansible-doc -s user              #查看帮助信息
    user模块中的password是需要经过md5加密的
    [root@localhost ~]# echo 123456 |openssl passwd -1 -stdin
    $1$XIaOAwgN$up3m2U5i6gIBl87P7iCh60
    #添加一个用户
    [root@localhost ~]# ansible t3 -m user -a 'name=simon system=yes 
    password=$1$XIaOAwgN$up3m2U5i6gIBl87P7iCh60 state=present'
    192.168.11.162 | SUCCESS => {
        "changed": true,
        "comment": "",
        "createhome": true,
        "failed": false,
        "group": 992,
        "home": "/home/simon",
        "name": "simon",
        "password": "NOT_LOGGING_PASSWORD",
        "shell": "/bin/bash",
        "state": "present",
        "system": true,
        "uid": 995
    }
    
    #删除一个用户
    [root@localhost ~]# ansible t3 -m user -a 'name=simon remove=yes state=absent'
    192.168.11.162 | SUCCESS => {
        "changed": true,
        "failed": false,
        "force": false,
        "name": "simon",
        "remove": true,
        "state": "absent",
        "stderr": "userdel: simon 邮件池 (/var/spool/mail/simon) 未找到
    ",
        "stderr_lines": [
            "userdel: simon 邮件池 (/var/spool/mail/simon) 未找到"
        ]
    }
    #更新密码
    [root@localhost ~]# echo 654321 | openssl passwd -1 
    -stdin $1$4IFTCb3k$Oq3i9sKTxU/IZ5HKAVCuO/
    [root@localhost ~]# ansible t3 -m user -a 'name=simon 
    update_password=always password=$1$4IFTCb3k$Oq3i9sKTxU/IZ5HKAVCuO/'
    192.168.11.162 | SUCCESS => {
        "append": false,
        "changed": true,
        "comment": "",
        "failed": false,
        "group": 992,
        "home": "/home/simon",
        "move_home": false,
        "name": "simon",
        "password": "NOT_LOGGING_PASSWORD",
        "shell": "/bin/bash",
        "state": "present",
        "uid": 995
    }

     七、yum模块:任务计划模块

      使用yum包管理器来管理软件包,其选项有:
        config_file:yum的配置文件
        disable_gpg_check:关闭gpg_check
        disablerepo:不启用某个源
        enablerepo:启用某个源
        name:要进行操作的软件包的名字,也可以传递一个url或者一个本地的rpm包的路径
        state:状态(present,absent,latest)

          present:默认的,表示为安装

          lastest:安装为最新的版本

                        absent:表示删除

    #安装最新版本的apache
    	[root@localhost ~]# ansible test -m yum -a 'name=httpd state=latest'
    	#移除apache
    	[root@localhost ~]# ansible test -m yum -a 'name=httpd state=absent'
    	#安装指定版本
    	[root@localhost ~]# ansible test -m yum -a 'name=httpd-2.2.29-1.4.amzn1 state=present'
    	
    	#安装整个Development tools相关的软件包
        [root@localhost ~]# ansible test -m yum -a 'name="@Development tools" state=present'
    	#从一个远程yum仓库安装nginx
        [root@localhost ~]# ansible test -m yum -a 'name=
    http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm 
    state=present'

        

     八、cron模块:任务计划模块

      获取帮助:ansibe-doc -s cron
      模块参数详解:
      state:
        present:创建任务
        absent:删除任务
      backup:对远程主机上的原任务计划内容修改之前做备份
      job:要执行的任务
      name:该任务的描述(必须项)
      user:以哪个用户的身份运行
      minute:分钟(0-59,*,*/2,……),默认为*
      hour:小时(0-23,*,*/2,……),默认为*
      day:日(1-31,*,*/2,……),默认为*
      month:月(1-12,*,*/2,……),默认为*
      weekday:周(0-7,*,……),默认为*

      

    [root@docker1 ~]# ansible t3 -m cron -a 'name="sync time from ntpserver" minute=*/10 
    job="/usr/sbin/ntpdate 3.cn.pool.ntp.org"'
    192.168.11.162 | SUCCESS => {
        "changed": false,
        "envs": [],
        "failed": false,
        "jobs": [
            "sync time from ntpserver"
        ]
    }

     九、service模块:管理服务

    管理服务

    options:

        arguments: 给命令行提供一些选项,aliases: args

        enabled:是否开机启动 yes|no

        name: 必须,服务名称

        pattern:定义一个模式,如果通过status指令来查看服务的状态时,没有响应,就会通过ps指令在进程中根据该模式进行查找,如果匹配到,则认为该服务依然在运行。

        runlevel:运行级别

        sleep:如果执行了restarted,在则stop和start之间沉睡几秒钟

        state:对当前服务执行启动,停止、重启、重新加载等操作(started,stopped,restarted,reloaded)

        use:服务模块实际上使用系统特定的模块,通常是自动检测,这个设置可以强制一个特定的模块。通常情况下,使用ansible_service_mgr 的值,并在找不到匹配的情况下推到旧的服务模块

    # 启动nginx服务,没有运行则启动
    [root@docker1 ~]# ansible t3 -m service -a "name=nginx state=started enabled=yes"
    # 停止nginx服务
    [root@docker1 ~]# ansible t3 -m service -a "name=nginx state=stopped"
    # 重启nginx 服务
    [root@docker1 ~]# ansible t3 -m service -a "name=nginx state=restarted"
    # 重新加载
    [root@docker1 ~]# ansible t3 -m service -a "name=nginx state=reloaded"
    # 启动服务foo
    [root@docker1 ~]# ansible t3 -m service -a "name=foo pattern=/usr/bin/foo state=started"
    # 重启eth0 网卡
    [root@docker1 ~]# ansible t3 -m service -a "name=network  state=restarted args=eth0"
    
    

     十、unarchive模块:用于解压文件

     options:

        copy: 在解压文件之前,是否先将文件复制到远程主机,默认为yes,no 则要求目标主机上压缩包必须存在。

        creates:指定一个文件名,当改文件存在时,则解压指令不执行。

        dest: 远程主机上的一个路径,即文件解压的路径

        grop:解压后的目录或文件的属组

        list_files: yes,则会列出压缩包里的文件,默认为no

        mode: 解压后文件的权限

        src:如果copy为yes ,则需要指定压缩文件的源路径。

        owner: 解压后文件或目录的属主

    - name: Extract foo.tgz into /var/lib/foo
      unarchive:
        src: foo.tgz
        dest: /var/lib/foo
    
    - name: Unarchive a file that is already on the remote machine
      unarchive:
        src: /tmp/foo.zip
        dest: /usr/local/bin
        remote_src: yes
    
    - name: Unarchive a file that needs to be downloaded (added in 2.0)
      unarchive:
        src: https://example.com/example.zip
        dest: /usr/local/bin
        remote_src: yes
    
    
  • 相关阅读:
    [原创] 分享一些linux教程
    [转] linux中pam模块
    [转] 虚拟机VMware3种网络模式(桥接、nat、Host-only)的工作原理
    [转] linux中常用的命令
    dede调用指定的多个栏目导航
    dede留言板BUG解决
    织梦如何实现二级栏目导航的仿制
    DEDE数据库修改
    任务管理器磁盘显示100%
    再次改版轮播图
  • 原文地址:https://www.cnblogs.com/lmx1002/p/8087014.html
Copyright © 2011-2022 走看看