欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > Ansible命令行模式常用模块使用案例(二)

Ansible命令行模式常用模块使用案例(二)

2025/3/15 6:53:53 来源:https://blog.csdn.net/qq_43715111/article/details/146213494  浏览:    关键词:Ansible命令行模式常用模块使用案例(二)

在Ansible中,命令行模式(Ad-Hoc 模式)是一种快速执行任务的方式,适合临时任务或简单操作。以下是 Ansible 命令行模式中常用模块的使用案例(第二部分):

1 file模块

功能特性:主要用于远程主机上的文件操作,包含如下选项:
关键参数:
  • path:定义目标文件或目录的路径(支持绝对路径或相对路径),必选参数
  • mode:设置文件或者目录权限(八进制或符号模式)
  • owner:设置文件或者目录属主
  • group:设置文件或者目录属组
  • recurse:递归设置目录及子目录属性(仅对state=directory有效,即只对目录有效)
  • src:需要被链接的源文件路径,只应用于state=link的情况
  • dest:被链接到的目标路径,仅在state=link时使用
  • state:定义操作类型,可选值:
directory:创建目录(递归创建父目录)
file:确保文件存在(默认值)
link:创建软链接(需配合src和dest)
hard:创建硬链接
touch:创建空文件或更新时间戳
absent:删除文件/目录或取消链接
示例:
创建目录:ansible web -m file -a "path=/tmp/test state=directory"
递归设置目录权限:ansible web -m file -a "path=/tmp/test owner=lianggj  group=lianggj mode=0644 recurse=yes"
设置文件权限:ansible web -m file -a "path=/tmp/tmp.txt owner=lianggj group=lianggj mode=0644"
修改文件权限为只读:ansible web -m file -a "path=/tmp/tmp.txt mode=0444"
创建软链接:ansible web -m file -a "src=/tmp/tmp.txt dest=/tmp/test/tmp.txt  owner=lianggj state=link"
删除文件:ansible web -m file -a "path=/tmp/test/test.txt state=absent" --check
创建空文件:ansible 172.16.213.233 -m file -a "path=/tmp/test/test1.txt state=touch creates=/tmp/test/test1.txt"

copy模块

功能特性:用于将控制机(管理端)的文件或目录 复制到远程主机,支持权限控制、备份、内容替换等高级功能
关键参数:
  • dest:定义远程主机的目标路径(必须为绝对路径)
  • src:本地文件或目录路径(相对或绝对路径,其中相对路径是相对于playbook所在目录)
  • content:直接设置文件内容(替代 src)
  • backup:覆盖前备份原文件(备份文件名含时间戳)
  • force:强制覆盖目标文件(默认yes)
  • mode/owner/group:设置文件权限及属主(继承file模块参数)
  • directory_mode:递归设置目录权限(默认系统默认权限)
示例1:复制单个文件
ansible web -m copy -a "src=/local/config.conf dest=/tmp/test/ mode=0644 backup=yes"示例2:直接生成文件内容
ansible web -m copy -a "content='export JAVA_HOME=/usr/java' dest=/etc/profile.d/java.sh mode=0755"示例3:递归复制目录
ansible web -m copy -a "src=/local/app/ dest=/tmp/test/ directory_mode=0755

3 service 模块

功能特性:用于管理远程主机上的服务,支持的操作包括:
  • 启动服务
  • 停止服务
  • 重启服务
  • 重新加载服务
  • 设置服务是否开机自启
常用选项:
  • name:必选项,指定服务的名称(如 httpd、nginx、sshd 等)
  • state:指定服务的状态,可选值:started、stopped、restarted、reloaded
  • enabled:是否设置服务开机自启,可选值:yes或no
  • pattern:如果服务状态无法通过status获取,则通过ps命令匹配进程
  • sleep:如果执行restarted,则在stop和start之间休眠指定的秒数
示例1:启动服务
ansible web -m service -a "name=httpd state=started" -a "when=service_status != 'running'"示例2:设置服务开机自启动
ansible web -m service -a "name=httpd enabled=yes"

 4 cron模块

功能特性:用于管理远程主机上的计划任务(Cron Jobs),支持创建、删除、修改定时任务,兼容cron.d文件配置
  • 创建/删除定时任务
  • 修改任务属性(执行时间、用户、命令等)
  • 兼容cron.d文件 ,实现集中化管理
核心参数:
  • job:要执行的命令(必填,需配合state=present)
  • name:任务描述(非cron表达式,用于标识任务)
  • user:执行任务的用户(默认root)
  • state:任务状态,present(创建/更新)、absent(删除)
  • backup:对远程主机上的原任务计划内容修改之前做备份
  • cron_file:用来指定一个计划任务文件,也就是将计划任务写到远程主机上/etc/cron.d目录下,创建一个文件对应的计划任务。
  • day:日期(1-31)
  • hour:小时(0-23)
  • minute:分钟(0-59,支持*,*/5,1-30)
  • month:月份(1-12或jan-dec)
  • weekday:周(0-7,*,……)
  • special_time:特殊的时间范围,包括reboot(重启时),annually(每年),monthly(每月),weekly(每周),daily(每天),hourly(每小时)
示例1:重启任务
ansible web -m cron -a 'name="job for reboot" special_time=reboot job="/tmp/shell/test.sh"' -b示例2:每周一Yum更新
ansible web -m cron -a 'name="yum autoupdate" weekday=1 minute=20 hour=1 user=root job="yum -y update" backup=yes' -b示例3:通过:cron_file管理HTTP检查
ansible web -m cron -a 'name="checkhttp" minute=30 hour=12 user=root job="/tmp/shell/http_check.sh" cron_file="check_http_for_ansible" backup=yes' -b示例4:删除任务:
ansible web -m cron -a 'name="yum autoupdate" state=absent user=root' -b

 5 yum模块

功能特性:用于在基于RPM的系统(如 CentOS/RHEL)上管理软件包,支持安装、更新、删除操作,并可配置仓库和gpg检查
关键参数:
  • name:软件包名称、URL或本地路径
  • state:定义操作类型
present/installed: 安装指定版本
latest: 安装最新版本
absent/removed: 删除软件包
disable_gpg_check:禁用gpg签名验证(慎用)
  • enablerepo/disablerepo:启用或禁用特定仓库
  • config_file:指定自定义的yum.conf配置文件
示例1:安装软件包
ansible web -m yum -a "name=httpd state=installed" -b示例2:安装最新版软件包
ansible db -m yum -a "name=mysql-server state=latest" -b示例3:本地rpm包安装软件包
ansible all -m yum -a "name=/tmp/nginx.rpm state=present" -b示例4:删除软件包
ansible web -m yum -a "name=vsftpd state=absent" -b

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词