ansible-doc -l:查看ansible系统的模块
ansible-doc 加模块名 :具体查看那个模块
ansible-doc -s 加模块名 :具体查看那个模块
ansible重要常用模块
5、copy模块功能说名
| 功能:主要用于将管理主机上的数据信息传送给多台远程主机上 |
| src: |
| 本地路径文件复制到远程服务器;可以是相对路径,也可以是绝对路径,如果路径是一个目录,将会递归复制,在这种情况下,路径如果“/”结束,只将在该目录下的内容复制到目的地,如果不以“/”结束,目录和目录下所有的内容都会被复制 |
| |
| dest: |
| 文件应该被拷贝到的远程绝对路径信息,如果src是一个目录,dest也必须是目录 |
| |
| owner: |
| 定义所拥有文件/目录的所属用户名称,类似chown命令功能 |
| |
| group: |
| 定义所拥有文件/目录的属组名称 |
| |
| mode: |
| 数据文件复制到远程主机,设置数据的权限,就像(0644) |
| |
| backup: |
| 创建备份文件并包含时间戳信息,以便能够还原回原文件信息,在某种情况下原 文件被覆盖错误时,默认配置为no,并且配置指定信息为yes|no |
| |
| content: |
| 在文件中添加指定的内容,如果原来文件中有内容,内容会被覆盖 |
| |
| force: |
| 默认yes,当远端文件内容和源文件内容不同时,将覆盖目标文件,如果为no,文件将只被传输,在目标主机不存在此文件时别名thirsty |
| |
| remote_src: |
| 如果设置为yes,表示将远程主机上的数据进行移动操作 |
| 如果设置为no,表示将管理主机上的数据进行移动操作 |
| 说明:copy模块是远端推送数据模块,只能将数据推送到远端主机上,不能实现拉取数据到本地管理主机 |
| |
格式:
| ansible 172.16.1.31 -m copy -a "src=/oldboy/ dest=/oldboy/ mode=0644" |
| 将管理端的/oldboy下的数据信息备份到主机ip为31的/oldboy下,并且权限修改为0644 |
| 说明:copy模块在复制数据时,如果数据为软连接文件,会将链接文件进行复制 |
6、file模块功能说明
| src: |
| 要链接文件的路径(只能应用state=link),创建链接文件时使用 |
| |
| path: |
| 文件路径管理 :别名方式:dest,name |
| owner: |
| 定义所拥有文件/目录的所属用户名称 |
| |
| group: |
| 定义所拥有文件/目录的所属组的名称, |
| |
| mode: |
| 定义文件或目录的权限信息 |
| |
| recurse: |
| 递归的设置文件的属性,只对目录有效 |
| |
| state: |
| 如果指定参数directory:所有不存在的子目录将会被创建;创建一个空目录 |
| 如果指定参数为file:如果文件不存在将不能被创建 |
| 如果指定参数为link:符号链接将会被创建或更改 |
| 如果指定参数为hard:便会创建出硬链接 |
| 如果指定参数为absent:目录将会被递归删除以及文件,而链接将被取消链接,如果指定参数为touch:如果路径不存在将创建一个空文件,如果文件或目录存在,将接收更新的文件访问和修改时间 |
| 说明:file模块主要用于创建文件或目录数据,以及多存在的文件或目录权限属性进行修改管理;利用recurse参数可以实现递归修改目录中数据权限,但是目录如果有链接文件,无法对链接文件进行递归修改 |
| |
| 语法格式: |
| ansible oldboy -m file -a "dest=/www state=absent |
| |
8、service:模块功能
参数:
| enabled(no yes) |
| 设置服务是否开机自启动,如果参数不指定,原有服务开机自启动状态进行保留 |
| name(required) |
| 设置要启动/停止服务名称 |
| |
| state reloaded 平滑重启 |
| restarted 重启 |
| started 启动 |
| stopped 停止 |
| 格式: ansible oldboy -m service -a "name=crond state=started” |
| |
10、group模块功能
| 功能:远程批量创建用户组信息 |
| 参数:gid 指定创建的组ID信息 |
| name:指定创建组名称信息 |
| state absent:删除指定的用户组 |
| present:创建指定的用户组 |
| |
| 格式:ansible oldboy -m group -a "name=oldboy_56 gid=1056" |
11、user模块功能
| 功能:远程批量创建用户信息 |
| 参数: name 指定用户名信息 |
| UID 指定用户UID信息 |
| group 指定用户主要属于哪个组 |
| groups 指定用户属于哪个附加组信息 |
| shell 指定使用的命令解释器 (/bin/bash /bin/nologin) |
| create_home 是否创建家目录信息 |
| home 指定家目录创建在什么路径 默认/home |
| password设置密码时不能使用明文方式,只能使用密文方式,可以给用户设置密 码,还可以给用户修改密码 |
| 设置密文方法:ansible all -m debug -a "msg={{ 'mypassword' | password_hash('sha512', 'mysecretsalt') }}" |
7、yum模块功能说明
参数
| name: |
| 需要安装的软件包名称信息,或包的版本标识信息 |
| |
| state: |
| 是否安装(install),或者移除一个包(absent or removed 将软件进行卸载) |
| present/installed 将软件进行安装3 |
| latest:安装最新的软件 yum update |
| |
格式:
| ansible oldboy -m yum -a "name=httpd-tools state=installed" |
10、cron模块功能
| 功能:定时任务模块 |
| 参数:job 和设置定时任务相关参数 |
| name 设置定时任务注释信息 |
| state absent删除指定定时任务 |
| disabled yes将指定定时任务进行注释 no:取消注释 |
| 分(minute) 时(hour) 日(day) 月(month) 周(weekday) |
| |
| 格式:ansible oldboy -m cron -a "name='cron-id03 ntpdate time' minute=*/5 job='/usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null'" |
14、unarchive 模块功能
用于解压文件
参数:
| copy:默认为yes,当copy=yes,那么拷贝的文件是从ansible主机复制到远程主机上的,如果设置为copy=no ,那么会在远程主机上寻址src源文件 |
| src:源路径,可以是ansible主机上的路径,也可以是远程主机上的路径,如果是远程主机上的路径,则需要设置copy=no |
| dest:远程主机上的目标路径 |
| mode:设置解压缩后的文件权限 |
| 格式:ansible pms -m unarchive -a 'src=/srv/tomcat8/apache-tomcat-8.0.29.tar.gz dest=/usr/local copy=no mode=0755' |
9、mount模块功能
| 功能:用于批量管理主机进行挂载操作 |
| 参数:fstype:指定挂载的文件系统类型 |
| opts:指定挂载的参数信息 |
| path:定义一个挂载点信息 |
| src:定义设备文件信息 |
| state absent 会进行卸载,也会修改fstab文件信息 |
| unmounted 会进行卸载,不会修改fstab文件 |
| present 不会挂载,只会修改fstab文件 |
| mounted 会进行挂载,会修改fstab文件 |
| 格式: ansible oldboy -m mount -a "src=172.16.1.31:/data/ path=/mnt fstype=nfs state=present" |
ping command shell scripts ping
1.ping模块
Ansible最基础的模块是ping模块,主要用于判断远程客户端是否在线,用于ping本身服务器,返回值是changed、ping
| 使用Ansible ping服务器状态,代码为ansible -k all -m ping |
因为我的ansible服务器已经做了免密登录,所以不用到-k参数,关于ansible的各个参数在ansible原理篇里详解
结果如下:

2、command模块功能
| 功能:执行一个命令在远程节点上 |
| |
| 作用:批量管理主机的模块 |
| |
| 参数说明 |
| |
| chdir: |
| 在执行命令之前,通过cd命令进入指定目录中 |
| |
| creates: |
| 定义一个文件是否存在,如果不存在,则运行相应命令;如果存在跳过此步骤 |
| |
| free_form: |
| 参数信息中可以输入任何系统命令信息,实现远程管理 |
| |
| removes: |
| 定义一个文件是否存在,如果存在运行相应的命令;如果不存在跳过此步骤 |
| 说明:command模块为基本命令模块,默认可以不用-m指定模块信息,并且需要注意在使用command模块执行远程命令时,命令中不能包含变量类似$HOME和参数类似“<”>“|”,“&”等信息,否则命令将不会被识别, |
| |
| command模块为基本命令模块,可以省略不用指定 |
| 格式: |
| ansible oldboy -m command -a "hostname" |
3、shell模块功能说明(类似command模块升级版)--万能模块
参数说明
| chdir: |
| 在执行命令前,通过cd命令进入指定目录中 |
| |
| creates: |
| 定义一个文件是否存在,如果不存在,则运行相应的命令;如果存在,跳过此步骤 |
| |
| free_from: |
| 参数信息中可以输入任何系统命令信息,实现远程管理 |
| |
| removes: |
| 定义一个文件是否存在,如果存在,运行相应的命令;不存在跳过此步骤 |
| 说明:shell模块视为基本命令模块,可以执行脚本信息,当相应脚本文件需要存在与远程主机节点上,并且shell模块不受变量和参数等影响,都有可以进行识别 |
| 格式: |
| ansible oldboy -m copy -a "src=/server/scripts/aa.sh dest=/server/scripts/ mode=ugo+x":将管理节点编写好的脚本批量推送到远程节点主机并修改权限为执行能力 |
| ansible oldboy -m shell -a "/server/scripts/aa.sh":远程运行脚本文件 |
| 补充:利用shell模块实现批量执行远程主机脚本时,脚本必须在远程主机上存在,并且授权为执行权限 |
| |
| shell模块详解: |
| |
| chdir:执行命令前,切换到该目录 |
| creates:当该文件存在时,不执行该步骤 |
| executable:使用shell环境执行脚本 |
| free_from:需要执行的脚本 |
| removes:当该文件不存在时,不执行该步骤 |
| warn:如果在ansible.cfg中存在告警,如果设定了false,不会告警此行 |
4、script模块功能说明
参数说明:
| creates: |
| 定义一个文件是否存在,如果不存在,则运行相应的命令;如果存在跳过此步骤 |
| |
| free_from: |
| 参数信息中可以输入任何系统命令信息,实现远程管理 |
| |
| removes: |
| 定义一个文件是否存在,如果存在,则运行相应的命令;如果不存在跳过此步骤 |
| |
格式:
| ansible oldboy -m script -a "/server/scripts/aa.sh" |
| 远程运行脚本文件 |
| 补充:利用script模块实现批量执行远程主机脚本时,脚本不用在远程主机上存在和授权 |
| |
12、fetch模块功能
功能:从远程主机拉取过来的文件保存在本地
| dest:将远程主机拉取过来的文件保存在本地的路径信息 |
| src:指定远程主机要拉取的文件信息,只能拉取文件 |
| flat:默认设置为no,如果设置为yes,将不显示远程主机的信息 |
13、template模块功能
功能:作为文件模块,进行文档内变量的替换的模块,它的每次使用都会被ansible标记为“changed”状态;解析文档内的变量信息
参数:
| backup:如果原目标文件存在,则先备份目标文件 |
| src:文件的路径,可以是绝对路径和相对路径 |
| dest:将模块渲染到远程主机上的位置 |
| force:是否强制覆盖,默认为yes |
| owner:目标文件属主 |
| group:目标文件属组 |
| mode:目标文件的权限模式 |
16、setup模块功能
| 功能:主要用于获取主机信息, |
| filter=ansible_hostname 查找主机名 |
| ansible test -m setup -a 'filter=ansible_*_mb' |
常见主机信息:
| ansible_all_ipv4_addresses: 仅显示ipv4的信息。 |
| ansible_devices: 仅显示磁盘设备信息。 |
| ansible_distribution: 显示是什么系统,例:centos,suse等。 |
| ansible_distribution_major_version: 显示是系统主版本。 |
| ansible_distribution_version: 仅显示系统版本。 |
| ansible_machine: 显示系统类型,例:32位,还是64位。 |
| ansible_eth0: 仅显示eth0的信息。 |
| ansible_hostname: 仅显示主机名。 |
| ansible_kernel: 仅显示内核版本。 |
| ansible_lvm: 显示lvm相关信息。 |
| ansible_memtotal_mb: 显示系统总内存。 |
| ansible_memfree_mb: 显示可用系统内存。 |
| ansible_memory_mb: 详细显示内存情况。 |
| ansible_swaptotal_mb: 显示总的swap内存。 |
| ansible_swapfree_mb: 显示swap内存的可用内存。 |
| ansible_mounts: 显示系统磁盘挂载情况。 |
| ansible_processor: 显示cpu个数(具体显示每个cpu的型号)。 |
| ansible_processor_vcpus: 显示cpu个数(只显示总的个数)。 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)