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

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


相关推荐
xf8079891 小时前
cursor远程调试Ubuntu以及打开Ubuntu里面的项目
linux·运维·ubuntu
狄加山6752 小时前
Linux 基础1
linux·运维·服务器
测试冲鸭2 小时前
【可实战】Linux 系统扫盲、 Shell扫盲(如何写一个简单的shell脚本)
linux·运维·arm开发
wanhengidc4 小时前
服务器中的流量主要是指什么?
运维·服务器·流量
wit_@4 小时前
深入理解SSH:安全远程登录与高级应用
linux·运维·web安全·ssh·kail
头铁散人9 小时前
IMX6ull项目环境配置
linux·运维·服务器
半夏一11 小时前
中级运维工程师面试题汇总(含答案)
运维
怡步晓心l12 小时前
Linux下Ubuntun系统报错find_package(BLAS REQUIRED)找不到
linux·运维·服务器
金灰13 小时前
Linux文本处理三剑客:awk、sed、grep
linux·运维·服务器·chrome·安全
大秦王多鱼14 小时前
Kafka运维宝典 (四)- Kafka 常用命令介绍
运维·分布式·kafka