软件包管理模块
yum_repository
yum_repository 模块可以帮助我们管理远程主机上的 yum 仓库
- name参数:必须参数,用于指定要操作的唯一的仓库ID,也就是”.repo”配置文件中每个仓库对应的”中括号”内的仓库ID。
- baseurl参数:此参数用于设置 yum 仓库的 baseurl。
- description参数:此参数用于设置仓库的注释信息,也就是”.repo”配置文件中每个仓库对应的”name字段”对应的内容。
- file参数:此参数用于设置仓库的配置文件名称,即设置”.repo”配置文件的文件名前缀,在不使用此参数的情况下,默认以 name 参数的仓库ID作为”.repo”配置文件的文件名前缀,同一个”.repo” 配置文件中 可以存在多个 yum 源。
- enabled参数:此参数用于设置是否激活对应的 yum 源,此参数默认值为 yes,表示启用对应的 yum源,设置为 no 表示不启用对应的 yum 源。
- gpgcheck参数:此参数用于设置是否开启 rpm 包验证功能,默认值为 no,表示不启用包验证,设置为 yes 表示开启包验证功能。
- gpgkey参数:当 gpgcheck 参数设置为 yes 时,需要使用此参数指定验证包所需的公钥。 state参数:默认值为 present,当值设置为 absent 时,表示删除对应的 yum 源。
示例
注意环境默认的yum源http://content.example.com/rhel8.0/x86_64/dvd/AppStream
//为webservers的主机配置yum源,设置ID为AppStream
[student@workstation ansible]$ ansible web -m yum_repository -a 'name=AppStream description="AppStream" baseurl="http://classrom.example.com/rhel8/AppStream" gpgcheck=no file=rhel8'
[student@workstation ansible]$ ansible web -m yum_repository -a 'name=BaseOS description="BaseOS" baseurl="http://classrom.example.com/rhel8/BaseOS" gpgcheck=no file=rhel8'
[student@workstation ansible]$ ansible web -a "cat /etc/yum.repos.d/rhel8.repo"
yum/dnf模块
- name参数:必须参数,用于指定需要管理的软件包,比如 nginx。
- state参数:用于指定软件包的状态 ,默认值为。present,表示确保软件包已经安装,除了。present,其他可用值有 installed、latest、absent、removed,其中 installed 与present 等效,latest 表示安装 yum 中最新的版本,absent 和 removed 等效,表示删除对应的软件包。
- disable_gpg_check参数:用于禁用对 rpm 包的公钥 gpg 验证。默认值为 no,表示不禁用验证,设置为 yes 表示禁用验证,即不验证包,直接安装。在对应的 yum 源没有开启 gpg 验证的情况下,需要将此参数的值设置为 yes,否则会报错而无法进行安装。
- enablerepo参数:用于指定安装软件包时临时启用的 yum 源。假如你想要从A源中安装软件,但是你不确定A源是否启用了,你可以在安装软件包时将此参数的值设置为 yes,即使A源的设置是未启用,也可以在安装软件包时临时启用A源。
- disablerepo参数:用于指定安装软件包时临时禁用的 yum 源。某些场景下需要此参数,比如,当多个 yum 源中同时存在要安装的软件包时,你可以使用此参数临时禁用某个源,这样设置后,在安装软件包时则不会从对应的源中选择安装包。
- enablerepo参数和disablerepo参数可以同时使用。
示例
#ansible all -m yum -a "name=httpd disable_gpg_check=yes"
#ansible all -m yum -a "name=httpd disbale_gpg_check=yes state=present(/installed/latest)"
在 ansible-demo3 主机上安装 telnet 时,确定多个源中都有 telnet,但是不想从 local 源中安装,所以在安装时临时禁用 local 源。
#ansible all -m yum -a 'name=telnet disable_gpg_check=yes disablerepo=local'
在主机上安装 telnet 时不确定 local 源是否启用,使用 enablerepo=local确保临时启用 local 源。
#ansible all -m yum -a 'name=telnet disable_gpg_check=yes enablerepo=local'
Service/systemd模块
- name参数:此参数用于指定需要操作的服务名称,比如 nginx。
- state参数:此参数用于指定服务的状态,比如,我们想要启动远程主机中的 nginx,则可以将 state 的值设置为 started;如果想要停止远程主机中的服务,则可以将 state 的值设置为 stopped。此参数的可用值有 started、stopped、restarted、reloaded。
- enabled参数:此参数用于指定是否将服务设置为开机 启动项,设置为 yes 表示将对应服务设置为开机启动,设置为 no 表示不会开机启动
- arguments: 给命令提供一些选项
- runlevel : 运行等级
- sleep: 如果运行看restarted 则stop and start 之间沉睡几秒中
示例
pattern:定义一个模式,如果通过status指令来查看服务的状态时,没有响应,就会通过ps指令在进程中根据该模式进行查找,如果匹配到,则认为该服务依然在运行
#ansible all -m systemd -a "name=nginx state=stopped enabled=no "
#ansible all -m service -a "name=httpd state=started enabled=yes"
验证服务启动
[root@master ~]#ansible webservers -m shell -a 'systemctl is-active httpd'