ansible自动化运维实战--fetch、cron和group模块(5)

文章目录

一、fetch 模块

1.1、功能

fetch 模块的主要功能是将远程主机上的文件复制到本地控制节点。此模块会保留文件的时间戳和权限信息,并且可以将不同远程主机的文件分别存储到以主机名命名的子目录中,以避免文件冲突。

1.2、常用参数

  • src:必选参数,指定远程主机上要复制的文件的路径。
  • dest:必选参数,指定本地控制节点上存储复制文件的目标目录。
  • flat:布尔类型参数,默认值为 false。若设为 true,文件会直接复制到 dest 指定的目录下;若为 false,文件会被复制到以远程主机名命名的子目录中。
  • validate_checksum:布尔类型参数,默认值为 true。若设为 true,复制文件时会校验文件的校验和,确保文件复制过程中没有损坏。

1.3、测试

bash 复制代码
#在host02主机中创建文件
vim /tmp/file23.txt
bash 复制代码
#使用ansible的fetch功能将host02中创建的文件copy到ansible主机中
ansible host02 -m fetch -a "src=/tmp/file23.txt dest=/root/"

1.4、注意事项

  • 权限问题:确保控制节点用户对 dest 目录有写入权限,同时远程主机用户对 src 文件有读取权限。
  • 文件冲突:若使用 flat 参数,要注意避免不同远程主机的文件因文件名相同而发生冲突。
  • 大文件处理:对于大文件,复制过程可能会耗费较多时间和网络带宽,要提前做好规划。

二、cron 模块

2.1、功能

cron 模块用于在远程主机上管理 cron 任务,cron 任务是一种在特定时间间隔自动执行命令或脚本的机制。

2.2、常用参数

  • name:cron 任务的名称,是可选参数,但建议使用,用于标识该任务,方便后续管理。
  • minute:指定任务执行的分钟,取值范围是 0 - 59,也可以使用特殊字符如 (表示任意值)、/2(表示每 2 分钟)等。
  • hour:指定任务执行的小时,取值范围是 0 - 23。
  • day:指定任务执行的日期,取值范围是 1 - 31。
  • month:指定任务执行的月份,取值范围是 1 - 12。
  • weekday:指定任务执行的星期几,取值范围是 0 - 7(0 和 7 都表示星期日)。
  • job:要执行的命令或脚本,是必需参数。
  • user:指定以哪个用户的身份执行 cron 任务,默认是 root。
  • state:指定任务的状态,取值为 present(默认值,表示创建或更新任务)或 absent(表示删除任务)。
bash 复制代码
#查询任务计划
crontab -l

显示没有任务。

  • 创建任务
bash 复制代码
ansible host03 -m cron -a 'name="sync time from ntpserver" minute="*/10" job="/sbin/ntpdate 192.168.162.101 &> /dev/null"'

查看主机host03上已经有定时任务了:

  • 删除任务
bash 复制代码
ansible host03 -m cron -a 'name="sync time from ntpserver" state=absent'

再次查看,已经没有任务了

2.3、注意事项

  • 命令路径:在 job 参数中使用的命令或脚本路径要确保在远程主机上是正确且可执行的。
  • 权限问题:如果使用 user 参数指定了非 root 用户,要保证该用户对执行的命令或脚本有足够的权限。
  • 任务冲突:避免创建时间和任务内容冲突的 cron 任务,以免出现不可预期的结果。

三、group模块

3.1、功能

Ansible 的 group 模块用于在远程主机上创建、修改或删除用户组。以下为你详细介绍该模块:

3.2、常用参数

  • name:必选参数,用于指定用户组的名称。
  • gid:可选参数,用于指定用户组的组 ID(GID)。若不指定,系统会自动分配一个可用的 GID。
  • state:指定用户组的状态,取值为 present(默认值,表示创建或更新用户组)或 absent(表示删除用户组)。
  • system:布尔类型参数,默认值为 false。若设为 true,则创建系统用户组,系统用户组的 GID 范围通常较低。

3.3、例子

bash 复制代码
ansible webserves -m group -a 'name=gl gid=1010 state=present'

上述操作是在 webserves 主机或主机组上创建或更新一个名为 gl、GID 为 1010 的用户组。

bash 复制代码
#过滤查看组的信息
grep gl /etc/group

3.4、注意事项

  • GID 冲突:手动指定 GID 时,要确保该 GID 在远程主机上未被其他用户组使用,避免出现冲突。
  • 权限问题:确保 Ansible 执行任务的用户具有足够的权限在远程主机上创建、修改或删除用户组,通常需要 root 权限。
  • 用户关联:删除用户组时,要注意该用户组是否关联了其他用户,避免影响系统正常运行。

生活可能不像你想象的那么好,但是也不会像你想象的那么糟。


相关推荐
梦游钓鱼40 分钟前
在window终端创建docker容器的问题
运维·docker·容器
孤寂大仙v1 小时前
【Linux笔记】理解文件系统(上)
linux·运维·笔记
沉默的八哥1 小时前
K8S高可用Web应用部署方案
运维
winyh51 小时前
Vite 打包后Nginx部署配置
运维·nginx
囚~徒~1 小时前
flask 接口文档自动化
python·flask·自动化
pyliumy2 小时前
在基于Arm架构的华为鲲鹏服务器上,针对openEuler 20.03 LTS操作系统, 安装Ansible 和MySQL
服务器·架构·ansible
运维小贺2 小时前
Nginx常用的模块
运维·nginx·正则表达式
努力学习的小廉2 小时前
深入了解Linux —— 调试程序
linux·运维·服务器
努力学习的小廉3 小时前
深入了解Linux —— git三板斧
linux·运维·git
AI学IT3 小时前
(安全防御)旁挂组网双机热备负载分担实验
运维·服务器·网络