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 权限。
  • 用户关联:删除用户组时,要注意该用户组是否关联了其他用户,避免影响系统正常运行。

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


相关推荐
IT利刃出鞘42 分钟前
Docker--宿主机和容器相互拷贝文件
运维·docker·容器
云飞云共享云桌面1 小时前
工厂办公环境如何实现一台服务器多人共享办公
运维·服务器·网络·数据库·3d
路上阡陌1 小时前
ELK 部署
运维·elk·jenkins
zr5268554471 小时前
ModbusTCP 转 Profinet 主站网关
运维·服务器·网络
青岛佰优联创新科技有限公司1 小时前
服务器托管,服务器运维的选择
运维·服务器
NiKo_W2 小时前
Linux 初识
linux·运维·服务器
Sweety丶╮7946 小时前
【Ansible】的介绍
云原生·ansible
知白守黑2676 小时前
Ansible角色
运维·服务器·ansible
Jwest20216 小时前
工业显示器在地铁电力监控与运维中的应用
运维·计算机外设
明达智控技术11 小时前
MR30分布式I/O模块在化工行业的应用
物联网·自动化