ansible的常用模块详解

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
posted @ 2025-07-27 02:40  阿峰博客站  阅读(42)  评论(0)    收藏  举报