誉天教育,武汉誉天,誉天ICT认证培训.png/

Datapass

数通
当前位置:首页 > 誉天学堂 > 运维 > 【誉天红帽学习指南】Ansible 基础常用模块

【誉天红帽学习指南】Ansible 基础常用模块

  • 2023/09/08

实验概述:本次实验采用3台虚拟机,分别为1台主控端YTeduRHEL8,和2台被控端node1、node2。


在本章我们将了解如何使用各个Ansible基础常用模块,例如:file模块、copy模块、yum_repository模块、yum模块、systemd模块、cron模块、user模块、group模块等。各模块将分为一大类。


1.png


file模块主要用于远程主机上的文件操作,file模块包含如下选项:


path:必选项,定义文件/目录的路径

state

  • file:查看文件状态,默认选项,若文件不存在,也不会被创建,会报错文件不存在

  • touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新时间戳

  • absent:删除目录、文件或者取消链接文件

  • directory:如果目录不存在,创建目录

  • link:创建软链接

  • hard:创建硬链接

  • owner:定义文件/目录的属主

  • group:定义文件/目录的属组

  • mode:定义文件/目录的权限

  • src:要被链接的源文件的路径,只应用于state=link的情况

  • dest:被链接到的路径,只应用于state=link的情况

  • force:需要在两种情况下强制创建软链接,一种是源文件不存在但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no


例1:在node1主机下创建/tmp/test.txt文件并设置拥有人与拥有组为root,文件权限为rw-r--r--。

640.jpg


例2:在node2主机下创建/tmp/test2/test3/aaa/bbb目录并设置拥有人与拥有组为root,目录权限为 rwxr-xr-x。


640 (1).jpg


2.png


copy模块主要用于复制文件到远程主机,copy模块包含如下选项:


  • src:要复制到远程主机的文件在本地的地址,可以是绝对路径,也可以是相对路径。如果路径是一个目录,它将递归复制。在这种情况下,如果路径使用"/"来结尾,则只复制目录里的内容,如果没有使用"/"来 结尾,则包含目录在内的整个内容全部复制,类似于rsync。 

  • dest:必选项。要将源文件复制到的远程主机的绝对路径。

  • force:如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yes

  • backup:在覆盖之前将原文件备份,备份文件包含时间信息。有两个选项:yes|no

  • content:用于替代“src”,可以直接设定指定文件的值

  • others:所有的file模块里的相关文件属性选项都可以在这里使用

  • remote_src:复制远程主机的文件


例1:把/etc/ansible/ansible.cfg文件复制到node1主机的/usr/local/src目录下并设置拥有人与拥有组为 root,权限为rw-r--r--。


640 (2).jpg


例2:使用copy模块将just a test!添加至node2主机内不存在的/usr/local/src/test.txt文本内。


640 (3).jpg


3.png


使用yum_repository管理yum仓库,其选项有:


  • file:配置文件的名字,不包含.repo

  • name:yum仓库的名字

  • description:仓库的描述信息

  • baseurl:yum源地址

  • enabled:是都开启yum仓库,yes/on

  • gpgcheck:是否检查软件包的完整性,yes/no

  • gpgcheck:公钥地址


例1:使用yum_repository模块给node1主机配置一个yum仓库。


640 (4).jpg


验证:


640 (5).jpg


4.png


yum模块是使用yum包管理器来管理软件包,其选项有:


  • name:要进行操作的软件包的名字,也可以传递一个url或者一个本地的rpm包的路径

  • state:状态(present安装,absent卸载,latest最新版本)


例1:使用yum模块在node1主机内安装httpd服务

640 (6).jpg


例2:使用yum模块在node1主机内卸载httpd服务


640 (7).jpg


5.png


systemd模块用于管理服务,该模块包含如下选项:


  • name:指定服务名称

  • state:管理服务状态,reloaded|restarted|started|stopped

  • enabled:是否设置开机自启


例1:使用systemd模块在node1主机上开启httpd服务并设置为开机自启

640 (9).jpg


6.png


cron模块用于管理计划任务,包含如下选项:


  • name:该任务的描述

  • state:确认该任务计划是创建还是删除,present创建,absent删除

  • user:以哪个用户的身份执行

  • day:日(1-31,,/2,……)

  • hour:小时(0-23,,/2,……)

  • minute:分钟(0-59,,/2,……)

  • month:月(1-12,,/2,……)

  • weekday:周(0-7,*,……)

  • job:要执行的任务,依赖于state=present

  • cron_file:指定配置文件,例如/etc/crontab,/etc/cron.d/*


例1:在node1主机内添加一个12小时候重启的任务


640 (10).jpg


验证1:


640 (11).jpg


例2:在node1主机内添加一个"每10分钟执行一次'echo test'到/tmp/test内的任务"


640 (12).jpg

验证2:


640 (13).jpg


7.png


user模块请求的是useradd,userdel,usermod 三个指令:


  • state:是创建还是删除

  • name:指定用户名

  • uid:指定用的uid

  • group:指定用户属组

  • groups:指定用户的附加组

  • comment:定义用户描述信息

  • create_home:是否创建家目录 yes|no

  • home:指定用户的家目录,需要与createhome配合使用

  • shell:指定用户的shell环境

  • password:指定用户的密码

  • remove:当state=absent时,remove=yes则表示连同家目录一起删除,等价于userdel -r


***重要:

#需要说明的是,在指定password参数时,不能使用明文密码,因为后面这一串密码会被直接传送到被管理主机的/etc/shadow文件中,所以需要先将密码字符串进行加密处理。然后将得到的字符串放到password中即可。


#使用下面的密码创建用户

# echo "yutian" | openssl passwd -1 -salt $(< /dev/urandom tr -dc '[:alnum:]' | head -c 32) -stdin

$1$munr3v2y$2.xs5g/WtTGnLFwyTDxhA/

ansible all -m user -a 'name=foo password="$1$munr3v2y$2.xs5g/WtTGnLFwyTDxhA/"'


例1:在node1主机上创建johnd用户,描述信息为:John Doe,uid为:1080,组为admin组。

640 (14).jpg


例2:给johnd设置密码,密码为:yutian


640 (15).jpg


8.png


group模块请求的是groupadd,groupdel,groupmod三个指令:


  • gid:指定组id

  • name:指定组名

  • state:创建还是删除组,选项:present|absent


例1:使用group模块在node1主机上创建一个名为it的组,gid为2023


640 (16).jpg


例2:使用group模块删除node1以存在的it组


640 (17).jpg


返回列表
上一篇:
红帽Linux安全——服务器安全配置
下一篇:
【誉天红帽学习指南】Linux应急响应技巧
免费试听
姓名
电话
城市
咨询课程