目录

  • ansible常用模块[2]
  • 11.yum_repository
  • 12.dnf
  • 13.service
  • 14.firewalld
  • 15.group
  • 16.user
  • 17.lineinfile
  • 18.replace
  • 19.setup
  • 20.debug


ansible常用模块[2]

11.yum_repository

参数

含义

name

指定仓库名称

baseurl

指定源路径

description

指定仓库描述

file

指定仓库文件名称

enabled

仓库是否启用

gpgcheck

仓库是否检测gpgkey

state

默认值present 建立,absent 为删除

首先删除node1受控主机的yum源

ansible dnf ansible dnf模块_linux


可以看到已经删除

ansible dnf ansible dnf模块_删除用户_02


ansible主机使用yum_repository模块,文件名为westos(自动添加后缀.repo),名字为AppStream,描述为AppStream,路径为http://172.25.254.70/rhel8.2/AppStream,开启使用,不检查gpgcheck,创建

ansible dnf ansible dnf模块_运维_03


查看受控主机的yum源文件

ansible dnf ansible dnf模块_linux_04


同样的,添加BaseOS

ansible dnf ansible dnf模块_删除用户_05


查看受控主机的yum源文件

ansible dnf ansible dnf模块_linux_06

12.dnf

作用:管理系统中的dnf仓库及管理软件

常用参数

含义

name

指定包

state

指定动作,present是安装,latest是更新,absent是删除

list

列出指定信息, httpd、installed、all、available

disable_gpg_check

禁用gpgkey检测

enablerepo

指定安装包来源

disablerepo

禁用安装包来源

autoremove

依赖性一起卸载

ansible主机使用dnf模块,安装httpd和php,会把依赖性都安装。(卸载只卸载本身的,不卸载依赖性)

ansible dnf ansible dnf模块_删除用户_07


ansible dnf ansible dnf模块_linux_08


再次安装上,卸载时添加了autoremove参数,依赖性一起卸载

ansible dnf ansible dnf模块_ansible dnf_09


加入故意把yum源的gpgcheck改为1,那么将无法安装软件;

有1和0两个选择,分别代表是否进行gpg(GNU Private Guard) 校验,以确定rpm 包的来源是有效和安全的

ansible dnf ansible dnf模块_ansible dnf_10


但是,禁用gpgkey检测就可以正常使用了

ansible dnf ansible dnf模块_运维_11


如果禁用AppStream这个源,显然无法安装

ansible dnf ansible dnf模块_ansible dnf_12


列出httpd的信息

ansible dnf ansible dnf模块_运维_13


列出可安装的信息

ansible dnf ansible dnf模块_删除用户_14


列出已安装的信息

ansible dnf ansible dnf模块_正则表达式_15

13.service

作用:管理系统服务状态

参数

含义

name

指定服务名称

state

指定对服务的动作,包括started,stoped,restarted,reloaded

enabled

设定服务开机是否启动,yes开启启动,no开机不启动

ansible主机使用dnf模块,为受控主机安装httpd

ansible dnf ansible dnf模块_正则表达式_16


查看,此时httpd服务还未启动

ansible dnf ansible dnf模块_linux_17


ansible主机使用service模块,开启httpd,并设置开机自启

ansible dnf ansible dnf模块_正则表达式_18


设定成功

ansible dnf ansible dnf模块_删除用户_19


但此时无法访问westosb的httpd服务,这是因为火墙的设定

ansible dnf ansible dnf模块_ansible dnf_20

14.firewalld

管理火墙

参数

含义

zone

火墙的域

service

服务名称

permanent

永久生效

state

动作,包括enabled允许,disabled拒绝

immediate

立即生效

ansible主机使用firewalld模块,设定public域,允许http服务,永久生效,立即生效

ansible dnf ansible dnf模块_ansible dnf_21


成功添加

ansible dnf ansible dnf模块_linux_22


此时apache也可以访问到了

ansible dnf ansible dnf模块_ansible dnf_23

15.group

管理远程主机上的组

参数

含义

name

用于指定要操作的组名称

state

用于指定组的状态,包括present建立,absent删除

gid

用于指定组的gid

ansible主机使用group模块,建立testgroup这个组,gid设定为666

ansible dnf ansible dnf模块_正则表达式_24


为了方便看效果,监控/etc/group

ansible dnf ansible dnf模块_linux_25


查看组信息

ansible dnf ansible dnf模块_运维_26


修改testgroup组的gid为888

ansible dnf ansible dnf模块_ansible dnf_27


查看组信息

ansible dnf ansible dnf模块_正则表达式_28


删除testgroup这个组

ansible dnf ansible dnf模块_删除用户_29


testgroup这个组已被删除

ansible dnf ansible dnf模块_运维_30

16.user

作用;管理远程主机上的用户,比如创建用户、修改用户、删除用户、为用户创建密钥对等操作

参数

含义

name

必须参数,用于指定要操作的用户名称

group

指定用户所在的基本组

groups

指定用户所在的附加组

append

指定添加附加组,默认值为no

shell

指定用户的默认 shell

uid

指定用户的 uid 号

comment

指定用户的注释信息

state

用户状态,包括present建立,absent删除

remove

当删除用户时删除用户家目录,默认值为no

password

此参数用于指定用户的密码。但密码为明文,可以用openssl password -6 '密码’生成加密字符

generate_ssh_key

生成sshkey

为了方便看效果,监控/etc/passwd、/etc/group和家目录

ansible dnf ansible dnf模块_ansible dnf_31


监控如下

ansible dnf ansible dnf模块_ansible dnf_32


ansible主机使用user模块,建立用户testuser

ansible dnf ansible dnf模块_linux_33


已建立用户testuser

ansible dnf ansible dnf模块_删除用户_34


删除用户testuser

ansible dnf ansible dnf模块_正则表达式_35


已删除用户testuser,但是家目录还在

ansible dnf ansible dnf模块_运维_36

再次建立用户testuser,这次删除时添加remove参数,当删除用户时删除用户家目录

ansible dnf ansible dnf模块_ansible dnf_37


可以看到用户和家目录都删除了

ansible dnf ansible dnf模块_运维_38


可以指定用户的组1002

ansible dnf ansible dnf模块_运维_39


ansible dnf ansible dnf模块_运维_40


可以指定用户的附加组48(apache)

ansible dnf ansible dnf模块_正则表达式_41


成功添加

ansible dnf ansible dnf模块_删除用户_42


再添加一个nginx附加祖

ansible dnf ansible dnf模块_删除用户_43


发现上一个附加组48没了,只有nginx附加组,因为被覆盖了,相当于(useradd -G)

ansible dnf ansible dnf模块_正则表达式_44


如果使用append参数,就可以真的添加一个附加组48,相当于(useradd -aG)

ansible dnf ansible dnf模块_删除用户_45


成功添加附加组

ansible dnf ansible dnf模块_删除用户_46


添加注释信息

ansible dnf ansible dnf模块_linux_47


ansible dnf ansible dnf模块_删除用户_48


添加注释信息,指定shell和uid

ansible dnf ansible dnf模块_正则表达式_49


成功设定

ansible dnf ansible dnf模块_删除用户_50


先通过openssl password -6 '密码’生成加密字符,再指定用户的密码

ansible dnf ansible dnf模块_ansible dnf_51


修改密码成功

ansible dnf ansible dnf模块_ansible dnf_52


node主机切换到testuser用户,发现其没有.ssh目录(存放该用户可以用来登录的 RSA 公钥)

ansible dnf ansible dnf模块_ansible dnf_53


generate_ssh_key:生成sshkey

ansible dnf ansible dnf模块_正则表达式_54


成功生成公私钥

ansible dnf ansible dnf模块_ansible dnf_55

17.lineinfile

作用:管理受控主机的文件中的行,比如匹配行,整行替换

参数

含义

path

指定要操作的文件

line

指定文本内容

regexp

使用正则表达式匹配对应的行。替换文本时如果有多行文本都能被匹配,则只有最后面被匹配到的那行文本才会被替换;当删除文本时,如果有多行文本都能被匹配,那么这些行都会被删除

state

state的默认值为present,当想要删除对应的文本时需要将state参数的值设置为absent

backrefs

默认值为no,如果该为yes,表示当内容无匹配规则时不对文件做任何更改,还有向后引用regexp变量信息的作用

insertafter

借助insertafter参数可以将文本插入到“指定的行”之后,insertafter参数的值可以设置为EOF或者正则表达式

insertbefore

借助insertbefore参数可以将文本插入到“指定的行”之前,insertbefore参数的值可以设置为BOF或者正则表达式

backup

否在修改文件之前对文件进行备份。

create

当要操作的文件并不存在时,是否创建对应的文件

ansible dnf ansible dnf模块_删除用户_56


监控node节点的/mnt/westosfile文件

ansible dnf ansible dnf模块_运维_57


ansible dnf ansible dnf模块_ansible dnf_58


ansible主机使用lineinfile模块,创建文件/mnt/westosfile,内容为hello westos;

create:当要操作的文件并不存在时,是否创建对应的文件

ansible dnf ansible dnf模块_ansible dnf_59


成功创建

ansible dnf ansible dnf模块_linux_60


/mnt/westosfile文件中有hello的行替换为hello linux

ansible dnf ansible dnf模块_删除用户_61


替换成功

ansible dnf ansible dnf模块_运维_62


删除/mnt/westosfile文件中有hello的行

ansible dnf ansible dnf模块_运维_63


成功删除

ansible dnf ansible dnf模块_正则表达式_64


/mnt/westosfile文件,创建两行内容

ansible dnf ansible dnf模块_运维_65


ansible dnf ansible dnf模块_ansible dnf_66


通过playbook的方式,编辑westosfile文件;

line:指定文本内容

ansible dnf ansible dnf模块_运维_67


成功追加

ansible dnf ansible dnf模块_正则表达式_68


按列排放

ansible dnf ansible dnf模块_删除用户_69


设定成功

ansible dnf ansible dnf模块_正则表达式_70


使用正则表达式匹配对应的行。删除有hello的行

ansible dnf ansible dnf模块_linux_71


ansible dnf ansible dnf模块_删除用户_72

backrefs:
当backrefs为no时(backrefs默认为no),如果regex没有匹配到行,则添加一行,如果Regexp匹配到行,则修改该行;
当backrefs为yes时,如果regex没有匹配到行,则保持原文件不变,如果regexp匹配到行,则修改该行

ansible dnf ansible dnf模块_删除用户_73


ansible dnf ansible dnf模块_正则表达式_74


未匹配到,添加一行

ansible dnf ansible dnf模块_linux_75


此时/mnt/westosfile文件内容如下

ansible dnf ansible dnf模块_运维_76


将/mnt/westosfile文件中有hello的行替换为linux redhat1;

backrefs 默认值为no,如果该为yes,表示当内容无匹配规则时不对文件做任何更改,还有向后引用regexp变量信息的作用;

ansible dnf ansible dnf模块_删除用户_77


regexp 使用正则表达式匹配对应的行。替换文本时如果有多行文本都能被匹配,则只有最后面被匹配到的那行文本才会被替换

ansible dnf ansible dnf模块_正则表达式_78


继续编辑文件如下

ansible dnf ansible dnf模块_运维_79


/mnt/westosfile文件中,打开向后引用变量信息,匹配h开头的后跟四个任意字符,再后跟一个任意字符,再后跟w,再后跟五个任意字符的格式,替换为第一个变量(即h开头的后跟四个任意字符)

ansible dnf ansible dnf模块_运维_80


只有第一行符合匹配条件,替换为hello

ansible dnf ansible dnf模块_ansible dnf_81


/mnt/westosfile文件中,给最后一行添加westos end

ansible dnf ansible dnf模块_正则表达式_82


成功添加

ansible dnf ansible dnf模块_运维_83


/mnt/westosfile文件中,给第一行添加westos begin

ansible dnf ansible dnf模块_运维_84


成功添加

ansible dnf ansible dnf模块_删除用户_85

18.replace

作用:根据我们指定的正则表达式替换文件中的字符串,文件中所有被匹配到的字符串都会被替换

参数

含义

path

指定要操作的文件

regexp

指定一个正则表达式,文件中与正则匹配的字符串将会被替换

replace

指定最终要替换成的字符串

backup

是否在修改文件之前对文件进行备份,最好设置为yes

ansible主机使用replace模块,对/mnt/westos文件,匹配westos,更换为WESTOS,并备份

ansible dnf ansible dnf模块_linux_86


备份成功

ansible dnf ansible dnf模块_linux_87


成功替换

ansible dnf ansible dnf模块_运维_88

19.setup

作用:setup模块用于收集远程主机的一些基本信息;
常用参数:
filter :用于进行条件过滤。如果设置,仅返回匹配过滤条件的信息。

ansible主机使用setup模块,可以看到受控主机的所有的信息

ansible dnf ansible dnf模块_ansible dnf_89


也可以指定查看某个信息

ansible dnf ansible dnf模块_ansible dnf_90

20.debug

作用:调试模块,用于在调试中输出信息

参数

含义

msg

调试输出的消息

var

将某个任务执行的输出作为变量传递给debug模块,debug会直接将其打印输出

verbosity

debug的级别(默认是0级,全部显示)

ansible主机使用debug模块,输出测试消息hello westos;

设定debug的级别

ansible dnf ansible dnf模块_运维_91