ansible批量管理(模块)

1.ansible-doc

  • 帮助手册,相当于shell的man
ansible-doc -l    #列出所有模块
ansible-doc 模块名   #查看该模块的帮助手册

2.ping模块

  • 测试网络连通性,没有参数
ansible web -m ping

3.command模块

  • 默认模块,远程执行命令
ansible web -m command -a 'uptime'    #对web组的主机执行uptime
  • 该模块通过-a跟上要执行的命令可以直接执行,若命 令里有如下字符则执行不成功
  • </>/|/&
  • command模块不能解析系统变量
  • 该模块不启动 shell直接在ssh进程中执行,所有使用到shell解释器的命令执行都会失败

4.shell模块

  • shell模块用法基本和 command一样,区别是shell模块是通过/bin/sh进行执行命令,可以执行任意命令
  • 不能执行交互式的命令,例如 vim top等
ansible all -m shell -a 'uptime'    #查看所有机器的负载
ansible all -m shell -a 'chdir=/tmp touch testfile'   #在tmp目录下创建文件,chdir:指定工作目录

变量解析

  • ansible 执行命令是二次解析
  • 第一次在本机解析,第二次在执行机器解析
  • 需要第二次解析的变量要转义

5.script模块

  • 在本地写脚本,然后使用script模块批量执行
ansible web -m script -a '路径/脚本名'
  • 注意:该脚本包含但不限于shell脚本,只要指定Sha-bang解释器的脚本都可运行

6.yum模块

  • 使用yum包管理器来管理软件包
  • name:要进行操作的软件包名字
  • state:动作( installed, removed)
ansible db -m yum -a 'name="mariadb-server" state=installed'   # 安装mariadb,多个软件时中间逗号隔开
ansible db -m yum -a 'name="lrzsz,mariadb" state=removed'   # 卸载lrzsz和Mariadb,多个软件时中间逗号隔开

7.service模块

  • name:必选项,服务名称
  • enabled:是否开机启动yes|no
  • sleep:执行restarted,会在stop和start之间沉睡几秒钟
  • state:对当前服务执行启动,停止、重启、重新加载等操作( started, stopped, restarted, reloaded)
ansible db -m service -a 'name="mariadb" state=started enabled=yes'  #启动mariadb服务,设置为开机自启

8.copy模块

  • 复制文件到远程主机
  • src:复制本地文件到远程主机,绝对路径和相对路径都可,路径为目录时会递归复制。若路径以"/“结尾,只复制目录里的内容,若不以”/"结尾,则复制包含目录在内的整个内容,类似于rsync
  • dest:必选项。远程主机的绝对路径,如果源文件是一个目录,那该路径必须是目录
  • backup:覆盖前先备份原文件,备份文件包含时间信息。有两个选项: yes|no
  • force:若目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,设为no,则只有当目标主机的目标位置不存在该文件时才复制。默认为yes
ansible db -m copy -a 'src=/etc/resolv.conf dest=/etc/'
ansible db -m copy -a 'src=/etcyum.repos.d/ dest=/etc/yum.repos.d/'

9.lineinfile模块(替换整行)

  • 类似sed的一种行编辑替换模块
  • path目标文件文件
  • regexp正则表达式,要修改的行
  • line最终修改的结果
ansible db -m lineinfile -a 'path="/etc/my.cnf"  regexp="^binlog-format"  line="binlog-format  =  row"' #修改my.cnf,中bin-log的格式  mixed --> row

10.replace(替换匹配的字符串)

  • 类似sed的一种行编辑替换模块
  • path目的文件
  • regexp正则表达式
  • replace替换后的结果
ansible db -m replace -a 'path="/etc/my.cnf"  regexp="row"  replace="mixed"'  #替换指定字符row-->mixed

11.setup模块

  • 主要用于获取主机信息,playbooks里经常会用的另一个参数gather_facts与该模块相关,setup模块下经常用的是filter参数
  • filter过滤所需信息
ansible cache -m setup -a 'filter=ansible_distribution'

你可能感兴趣的:(ansible)