ansible模块

查看模块帮助

ansible-doc -s module


copy模块

把本地文件copy到指定主机

1
ansible host_list -m copy -a 'src=/data/test.sh dest=/data/'

option:

  • backup: 在覆盖前,将源文件备份(yes|no)
  • dest: 目标路径
  • directory_mode: 设置目录权限
  • force: 如果目标主机包含该文件,是否强制覆盖(yes|no)
  • group: 指定属组
  • mode: 权限
  • owner: 属主
  • src: 源文件

fetch模块

从远程主机拉取文件

1
ansible host_list -m fetch -a 'src=/data/test.sh dest=/data/'

file模块

更改指定主机文件权限,属主,和数组

1
ansible host_list -m file -a 'dest=/data/test.sh mode=755 owner=root group=root'

option:

  • group: 属组
  • mode: 权限
  • owner: 属主
  • path: 路径
  • recurse: 递归设置文件属性,只实用state=link
  • src: 源文件
  • dest: 目标文件,只实用state=link
  • state: 状态
    • directory: 如果目录不存在,就创建
    • file: 文件不存在,也不创建
    • link: 创建软链接
    • hard: 创建硬链接
    • touch: 如果文件不存在,则新建
    • absent: 删除目录,文件或取消链接文件

cron模块

在指定节点定义计划任务

1
ansible host_list -m cron -a 'name="test" minute=*/3 hour=* day=* month=* weekday=* job="/usr/sbin/ntpdate 172.16.1.1"'

group模块

在指定节点上创建用户组

1
ansible host_list -m group -a 'gid=2000 name=group1'

user模块

在指定节点上创建用户

1
ansiblie host_list -m user -a 'name=user state={present(创建)|absent(删除)} force=(是否强制删除家目录) groups=group1 shell=bash'

yum模块

yum安装软件

1
ansible host_list -m yum -a 'state=present name=httpd'

option:

  • name:包名
  • state:
    • present: 安装(installed)
    • latest: 安装最新版
    • absent: 卸载

service模块

启动节点上某服务,并开机自启动

1
ansible host_list -m service -a 'name=nginx state=restarted enabled=yes'

script模块

在指定节点上执行脚本
注意:脚本是在ansible主机上不是在被执行主机上

1
ansible host_list -m script -a '/data/script/test.sh'

ping模块

检查节点是否正常通信

1
ansible host_list -m ping

command模块

在指定节点上执行命令

1
ansible host_list -m command -a 'hostname'

get_url模块

下载文件

1
ansible host_list -m get_url -a 'url=http://carey.akhack.com/ dest=/data'

synchronize模块

将某目录推送到指定节点某目录下

1
2
3
4
5
6
7
8
9
10
ansible host_list -m synchronize -a 'src=/data/src dest=/data compress=yes'
```
## setup模块
**返回指定主机相关信息**
```bash
ansible host_list -m setup

user模块

用户管理
首先通过openssl命令来生成一个密码,因为ansible userpassword参数需要通过接受机密后的值。

1
2
$ echo "ansible" | openssl passwd -1 -stdin
$1$PfV4LEdB$y.u791m56WQw9HpjGsDiD0

批量创建用户

1
2
3
$ ansible centos -m user -a 'name=carey password=$1$PfV4LEdB$y.u791m56WQw9HpjGsDiD0' -o
192.168.56.101 | SUCCESS => {"changed": true, "comment": "", "createhome": true, "group": 1000, "home": "/home/carey", "name": "carey", "password": "NOT_LOGGING_PASSWORD", "shell": "/bin/bash", "state": "present", "system": false, "uid": 1000}
192.168.56.102 | SUCCESS => {"changed": true, "comment": "", "createhome": true, "group": 1000, "home": "/home/carey", "name": "carey", "password": "NOT_LOGGING_PASSWORD", "shell": "/bin/bash", "state": "present", "system": false, "uid": 1000}

cron模块

计划任务管理

1
2
每隔10分钟同步一下时间
ansible centos -m cron -a 'name="sync time from ntpserver" minute=*/10 job="/usr/sbin/ntpdate 3.cn.pool.ntp.org"'

option:

  • 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,*,……),不写默认为*

lineinfile模块

文件编辑模块

替换存在的行:

1
ansible oms -m lineinfile -a 'path=/etc/sudoers regexp="SYSTEM,SOFTWARE" line="STAPLES_ADMIN ALL=(ROOT) NOPASSWD:NETWORKING,LOCATE,STORAGE,DELEGATING,DRIVERS,SYSTEM,SOFTWARE,SERVICES,PROCESSES,FILE" backrefs=no'

匹配到的行后增加一行:

1
ansible oms -m lineinfile -a 'dest=/etc/sudoers insertafter="Cmnd_Alias SYSTEM = /usr/sbin/reboot, /usr/sbin/halt, /usr/bin/ansible, /usr/bin/ssh" line="Cmnd_Alias FILE = /bin/mkdir,/bin/touch,/usr/bin/vim"'

删除匹配到的行:

1
ansible oms -m lineinfile -a 'path=/etc/sudoers state=absent regexp="PROCESSES,FILE"'

option:

  • path:指定要修改的配置文件
  • regexp:匹配要修改的内容
  • line:要增加或者修改的内容
  • state:
    • absent:表示删除,当匹配到时进行删除
    • present:表示增加,当匹配到时进行修改,当没有匹配到时在最后增加一行,默认为此项
  • backrefs:
    • no:表示如果没有匹配到,则增加line;如果匹配成功,则替换line;
    • yes:表示如果没有匹配到,则不变line;如果匹配成功,则替换line;
  • backup:
    • no:表示如果没有匹配到,则增加line;如果匹配成功,则替换line;不备份原文件
    • yes:表示如果没有匹配到,则增加line;如果匹配成功,则替换line;备份原文件
  • insertafter:
    在匹配到的行之后添加一行
  • insertbefore:
    在匹配到的行之前添加一行

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器