详细模块信息,请查看:官方文档
1、command
-
模块功能
在远程主机执行命令(有局限性),该模块为默认模块,可以省略 -m 选项
-
使用示例
ansible host_g1 -a 'whoami'
2、shell
-
模块功能
同
command
,只是使用 shell 执行命令 -
常用参数
- chdir:执行命令前,切换到指定目录
- creates:如果指定文件不存在,就执行后续命令,否则不执行
- removes:如果指定文件存在,就执行后续命令,否则不执行
-
修改为默认模块
将配置文件 /etc/ansible/ansible.cfg 中 module_name 选项修改为 module_name = shell
-
使用示例
# 普通使用 ansible host -a 'ls /root/test.txt' # 使用creates参数 ansible host -a 'chdir=/var/log creates=/root/test.txt cat /etc/centos-release' # 使用removes参数 ansible host -a 'chdir=/var/log removes=/root/test.txt cat /etc/centos-release'
3、script
-
模块功能
在目标主机上执行 ansible 控制主机上的 shell 脚本
-
使用示例
ansible host -m script -a 'test.sh'
4、copy
-
模块功能
将 ansible 管理主机上的文件复制到远程主机(支持复制目录)
-
常用参数
- src:源文件
- dest:目标文件
- backup:覆盖前先备份
- owner:属主
- mode:权限
-
使用示例
# 复制时先备份 # 若目标存在,默认会覆盖源文件 ansible host_g1 -m copy -a "src=/root/test.sh dest=/root/test.sh backup=yes" # 复制时,指定目标用户及权限 ansible host_g1 -m copy -a "src=/root/test.sh dest=/root/test.sh owner=user mode=600 backup=yes" # 根据指定内容,直接生成文件 ansible host_g1 -m copy -a "content='line1\nline2' dest=/root/test"
5、fetch
-
模块功能
将被管理端的文件复制到 ansible 控制主机中(不支持目录复制)
-
使用示例
ansible host_g1 -m fetch -a "src=/etc/centos-release dest=/root/tmp"
6、unarchive
-
模块功能
文件解压缩
-
实现方法
- 将 ansible 控制主机上的压缩包上传到远程主机,然后解压缩到指定目录,设置 copy=yes
- 将远程主机上的压缩包解压到指定目录,设置 copy=no
-
常用参数
- copy:设置为 yes 时,将 ansible 管理主机上的压缩包上传到远程主机;设置为 no 时,在远程主机上寻找 src 源文件
- src:源路径,可以在 ansible 主机,也可以在远程主机
- dest:远程主机上的目标路径
- mode:设置解压缩后的文件权限
-
使用示例
# 上传并解压缩 ansible host_g1 -m unarchive -a 'src=/root/test.tar dest=/root/tmp copy=yes'
7、hostname
-
模块功能
修改目标主机的 hostname
-
使用示例
ansible 192.168.137.11 -m hostname -a 'name=centos7_11'
8、cron
-
模块功能
计划任务
支持时间:minute、hour、day、mouth、weekday
-
常用参数
- name:任务名称
- job:任务文件
- disabled:是否禁用任务
- state:状态
- present:安装任务(默认值)
- absent:删除任务
-
使用示例
# 创建计划任务 ansible svr1 -m cron -a 'hour=23 minute=50 weekday=1-5 name="test cron job" job=/root/test.sh' # 禁用计划任务 ansible svr1 -m cron -a "hour=23 minute=50 weekday=1-5 name='test cron job' job=/root/test.sh disabled=yes" # 启用计划任务 ansible svr1 -m cron -a "hour=23 minute=50 weekday=1-5 name='test cron job' job=/root/test.sh disabled=no" # 删除计划任务 ansible svr1 -m cron -a "name='test cron job' state=absent"
9、yum
-
模块功能
管理软件包
-
使用示例
# 安装软件包 ansible svr1 -m yum -a "name=httpd state=present" # 卸载软件包 ansible svr1 -m yum -a "name=httpd state=absent"
10、service
-
模块功能
服务管理
-
使用示例
# 启动服务 ansible svr1 -m service -a 'name=httpd state=started' # 停止服务 ansible svr1 -m service -a 'name=httpd state=stopped' # 重启服务 ansible svr1 -m service -a 'name=httpd state=restarted' # 开机启动服务 ansible svr1 -m service -a 'name=httpd state=started enabled=yes'
11、lineinfile
ansible 在使用 sed 命令进行替换操作时,经常会遇到需要转义的问题,而且 ansible 在遇到特殊符号进行替换时,存在问题,无法正常进行替换,在 ansible 中可以使用 lineinfile 和 replace 两个模块进行替换操作
-
模块功能
同 sed 命令,用于修改文件内容
-
常用参数
- path:需要修改的文件
- regexp:表达式,定位需要修改的内容
- line:修改后的内容
- dest:需要修改的目标文件
-
使用示例
# 替换指定内容 ansible svr1 -m lineinfile -a 'path=/etc/selinux/config regexp=^SELINUX= line="SELINUX=disabled"' # 删除指定内容 ansible svr1 -m lineinfile -a 'dest=/etc/fstab state=absent regexp="^#"'
12、setup
-
模块功能
用来收集远程主机的详细系统信息,这些 facts 信息可以直接以变量形式使用,但是如果主机较多,会影响速度,可以在 playbook 中使用
gather_facts: no
来禁止 ansible 收集 facts 信息 -
使用语法
ansible [ip | group] -m setup
-
使用示例
# 获取指定主机的详细信息 ansible 192.168.137.11 -m setup # 获取系统名称 ansible svr1 -m setup -a 'filter=ansible_distribution' # 获取系统版本 ansible svr1 -m setup -a 'filter=ansible_distribution_version' # 获取系统内核版本 ansible svr1 -m setup -a 'filter=ansible_kernel' # 获取iSCSI iqn信息 ansible svr1 -m setup -a 'filter=ansible_iscsi_iqn' # 获取CPU数量 ansible svr1 -m setup -a 'filter=ansible_processor_vcpus' # 获取内存信息 ansible svr1 -m setup -a 'filter=ansible_memtotal_mb' # 获取主机架构信息 ansible svr1 -m setup -a 'filter=ansible_machine'
13、user
-
模块功能
用于管理用户帐户和用户属性,管理 Windows 用户使用 win_user 模块
-
常用参数
- name:用户名
- group:指定用户所属组
- groups:指定用户附加组,当该值设置为空时,用户将从除主组以外的所有组中删除
- home:设置用户主目录
- remove:删除与用户相关的目录
- shell:设置用户使用的shell
- state:执行状态,present(创建用户,默认值),absent(删除用户)
-
使用示例
# 创建用户 ansible svr1 -m user -a 'name=user01 home=/home/t_user shell=/usr/sbin/nologin state=present' # 删除用户 ansible svr1 -m user -a 'name=user01 remove=yes state=absent'