ansible的常用模块
| 模块 |
作用 |
| command |
执行shell命令(不支持管道等特殊字符) 管道 |
| shell |
执行shell命令 支持特殊符号 |
| script |
执行shell脚本 |
| yum_repository |
配置yum仓库 yum源 |
| yum |
安装软件 |
| copy |
远程复制 |
| file |
创建目录或文件 |
| service |
启动与停止服务 设置开机自启动 |
| systemctl |
启动与停止服务 设置开机自启动 |
| mount |
挂载设备 磁盘 |
| cron |
定时任务 设置/删除定时任务 |
| firewalld |
设置防火墙 |
| iptables |
设置防火墙 |
| get_url |
下载软件 |
| wget |
下载 |
command模块
command模块是执行命令的模块,不支持特殊符号
ansible mysql -m command -a "df -h"
shell模块
shell模块是执行命令的模块,支持管道 特殊符号
ansible mysql -m shell -a "df -h|grep sda1"
script模块
script是执行脚本的模块,在本地运行模块,等同于在远程执行,不需要将脚本文件进行推送目标主机执行
cat install_iftop.sh
yum install -y iftop
ansible mysql -m script -a "~/install_iftop.sh"
yum模块
| 选项 |
作用 |
| name |
指定要安装软件的名字 |
| state |
状态,present或者installed安装软件,absent或者removed删除软件,latest更新软件 |
| download_only=true |
只下载不安装 |
| enablerepo |
指定epel源 |
| exclude |
排除 |
ansible mysql -m yum -a "name=nginx state=present"
ansible mysql -m yum -a "name=tree,nc state=present"
# 更新所有的软件包,但排除和kernel相关的
ansible mysql -m yum -a "name=* state=latest exclude=kernel"
file模块
文件,目录的创建与删除
| 选项 |
作用 |
| path |
指定路径 |
| state |
directory 创建目录,touch 创建文件,link 创建软连接,absent 删除 |
| mode |
设置文件或目录权限 |
| owner |
设置文件或目录属用户信息 |
| group |
设置文件或目录属组信息 |
| recurse |
递归授权 |
ansible mysql -m file -a "path=/data/mysql state=directory"
copy模块
从控制端copy文件到远程主机
| 选项 |
作用 |
| src |
源文件/目录 |
| dest |
远端路径 |
| backup |
对推送传输过去的文件,进行备份 |
| group |
将本地文件推送到远端,指定文件属组信息 |
| owner |
将本地文件推送到远端,指定文件属主信息 |
| mode |
将本地文件推送到远端,指定文件权限信息 |
| content |
直接批量在被管理端文件中添加内容,相当于echo > |
ansible mysql -m copy -a "src=/etc/hosts dest=/tmp/test.txt"
# 写入文件内容 并且会覆盖远端文件内原有数据信息
ansible mysql -m copy -a 'content="zqf" dest=/tmp/zqf.txt'
ansible mysql -m shell -a 'cat /tmp/zqf.txt'
fetch模块
从远程主机copy文件到控制端
| 选项 |
作用 |
| src |
远程主机上要拉取的文件路径 |
| dest |
控制节点上保存文件的目标路径 |
| flat |
如果为yes,则将所有文件都拉取到一个目录下,默认为no 当设置为 yes 时,所有文件将被放置在 dest 指定的目录下,而不是创建与远程主机目录结构相同的子目录。 |
| validate_checksum |
如果为yes则在文件传输完成后验证文件的校验和。默认值为no |
| remote_src |
如果为yes,则从远程主机的路径拉取文件,否则从本地主机拉取文件,默认值:yes |
| fail_on_missing |
如果为yes,则在源文件不存在时终止任务,默认值:yes |
src: "/home/{{ inventory_hostname }}.txt" #远程机器的文件位置
dest: "/home/{{ inventory_hostname }}.txt"
flat: yes
get_url模块
| 选项 |
作用 |
| url |
文件在网络上的具体位置 |
| dest |
下载到被控端的哪个目录下 |
| mode |
指定文件权限信息 |
ansible mysql -m get_url -a "url=http//***,https//*** dest=/opt mode=0777"
systemd模块
| 选项 |
作用 |
| name |
对应的服务名 |
| state |
started 开启,stopped 暂停, reloaded 加载配置, restarted 重启 |
| enabled |
yes or no |
| daemon_reload |
yes ,重载systemd配置 |
ansible mysql -m systemd -a 'name=nginx state=started'
service模块
| 选项 |
作用 |
| name |
定义要启动服务的名称 |
| state |
started 启动服务,stopped 停止服务,restarted 重启服务, reloaded 重载服务 |
| enabled |
开机自启 |
ansible mysql -m service -a 'name=nginx state=started enabled=yes'
user模块
| 选项 |
作用 |
| name |
用户名字 |
| uid |
指定用户的uid |
| shell |
指定用户登录shell |
| create_home |
是否创建家目录 |
| remove |
当设置为true时,ansible在删除用户时不仅会删除用户的账号记录,还会删除用户的主目录。 |
| state |
present 创建用户,absent 删除用户 |
| password |
给用户添加密码(记得单引号) |
| groups |
指定附加组名称 |
| group |
指定用户组名称 |
| generate_ssh_key=yes |
给新创建的用户生成ssh密钥对 |
ansible mysql -m user -a "name=zqf uid=1010 shell=/bin/bash create_home=yes state=present password='zxcvbnm'"
group组模块
| 选项 |
作用 |
| name |
组名字 |
| gid |
组id |
| state |
present 创建, absent 删除 |
ansible mysql -m group -a "name=zqf1 gid=888 state=present"
crond定时任务模块
| 选项 |
作用 |
| name |
注释 |
| minute |
分 |
| hour |
时 |
| day |
日 |
| month |
月 |
| weekday |
周 |
| job |
要执行的脚本 |
| state |
present 添加定时任务, absent 删除定时任务 |
| disabled |
是否注释这个定时任务 |
ansible mysql -m cron -a "name='bash test' minute=0 hour=11 day=* month=* weekday=* job='/bin/sh test.sh' state=present"
mount挂载模块
| 选项 |
作用 |
| fstype |
指定文件系统类型 |
| src |
源设备 |
| path |
要操作的目录 挂载点 |
| state |
present 仅修改配置 开机挂载,仅将挂载配置写入/etc/fstab; mounted 挂载,并写入/etc/fstab配置; unmounted 卸载,不会清除/etc/fstab写入的配置; absent 卸载,会清理/etc/fstab写入的配置; remounted 重新挂载 |
ansible mysql -m mount -a "src=172.16.1.7:/data path=/data fstype=nfs opts=defaults state=mounted"
# 参数opts通常用来指定挂载选项。当使用defaults作为opts值时,它意味着使用系统的默认挂载选项来进行挂载操作。一般默认即可
unarchive模块
将ansible控制端上的包传到被控制端后,解压到指定路径下
| 选项 |
作用 |
| copy |
copy=yes 从ansible端拷贝到被控端,并且解压; copy=no 不拷贝,直接在被控端解压 |
| src |
源路径 |
| dest |
远程主机上的目标路径 |
| mode |
设置解压之后的权限 |
ansible mysql -m unarchive -a "copy=yes src=~/ansible-2.9.5.tar.gz dest=~/"
archive模块
将ansible被控端上的文件或目录,按照指定的格式打包压缩
| 选项 |
作用 |
| path |
要将哪些目录打包 |
| dest |
打包后的路径以及包名 |
| format |
打包的格式 |
| mode |
权限 |
ansible mysql -m archive -a "path=/etc/* dest=~/etc.tar.gz format=gz"
selinux模块
对远程机器的selinux配置
| 选项 |
作用 |
| state |
disabled ;permissive ;enforcing |
ansible mysql -m selinux -a "state=disabled"
reboot模块
ansible mysql -m reboot