Ansible 中常用模块

  • 1. ansible 实现管理的方式
  • 2. Ad-Hoc 执行方式中如何获得帮助
  • 3. ansible 命令运行方式及常用参数
  • 4. ansible 的基本颜色代表信息
  • 5. ansible 中的常用模块
  • 5.1 command
  • 5.2 shell
  • 5.3 script
  • 5.4 copy
  • 5.5 fetch
  • 5.6 file
  • 5.7 archive
  • 5.8 unarchive
  • 5.9 hostname
  • 5.10 cron
  • 5.11 yum_repository
  • 5.12 dnf
  • 5.13 service
  • 5.14 firewalld
  • 5.15 user
  • 5.16 group
  • 5.17 lineinfile
  • 5.18 replace
  • 5.19 setup
  • 5.20 debug


test setting

  1. 免密认证
  2. sudo 权限设定
  3. 写入解析

1. ansible 实现管理的方式

管理方式

含义

Ad-Hoc

利用ansible命令直接完成管理,主要用于临时命令使用场景

playbook

ansible脚本,主要用于大型项目场景,需要前期的规划

  1. ansible 命令管理方式

ansible ping模块解释 ansible常用模块有哪些_hive

  1. ansible 剧本的方式(playbook的方式)
    :该脚本编写时有严格的格式缩进。

如图所示的 playbook 片段表示查看被控主机的主机名,然后运行 playbook;

ansible ping模块解释 ansible常用模块有哪些_运维_02


上面剧本的方式类似于下面这种命令的方式:

ansible ping模块解释 ansible常用模块有哪些_ansible ping模块解释_03

2. Ad-Hoc 执行方式中如何获得帮助

用命令 ansible-doc 显示模块帮助的指令;

  • 格式
    ansible-doc [参数] [模块…]
  • 常用参数
    -l ##列出可用模块
    -s ##显示指定模块的playbook片段

使用命令 ansible-doc -l 来列出所有的模块;目前有 3387 个模块;

ansible ping模块解释 ansible常用模块有哪些_ansible_04


查看模块的帮助,直接在 ansilbe-doc 后面加上模块参数即可;

ansible ping模块解释 ansible常用模块有哪些_运维_05

加入参数 -s 即可查看简短帮助:

ansible ping模块解释 ansible常用模块有哪些_hive_06

3. ansible 命令运行方式及常用参数

  • 格式:
    ansible 清单 -m 模块 -a 模块参数
  • 常用参数

常用参数

含义

–version

显示版本

-m module

指定模块,默认为command模块

-v

详细过程 -vv -vvv更详细过程

–list

显示主机列表,也可以用–list-hosts

-k

提示输入ssh连接密码,默认key认证

-C

预执行检测

-T

执行命令的超时时间,默认10s

-u

指定远程执行的用户

-b

执行sudo切换身份操作

-become-user=USERNAME

指定sudo的用户

-K

提示输入sudo密码

1)查看版本
ansible --version

ansible ping模块解释 ansible常用模块有哪些_hive_07

2)详细过程,当不加 v 时,只会有输出结果,没有过程,最多可以加三个 v ;

ansible ping模块解释 ansible常用模块有哪些_源文件_08

ansible ping模块解释 ansible常用模块有哪些_hive_09

ansible ping模块解释 ansible常用模块有哪些_运维_10

3)预执行检测,只会检测命令的结果是否正确,并不会执行该动作;

ansible ping模块解释 ansible常用模块有哪些_hive_11

4)-k 表示输入密码,之前 做了免密认证,此时加入 -k 可以输入密码;

ansible ping模块解释 ansible常用模块有哪些_源文件_12

5)-b表示指定sudo切换用户身份操作 ,- -become-user=zxk 表示指定 sudo 的用户;

ansible ping模块解释 ansible常用模块有哪些_hive_13

6)-u 表示指定远程执行的用户;

如图之前对于 zxk 用户做了免密认证,当用 -u 来指定用户时,会发现直接报错,加入 -k 输入密码之后,便可以。

ansible ping模块解释 ansible常用模块有哪些_ansible ping模块解释_14

4. ansible 的基本颜色代表信息

颜色

含义

绿色

执行成功但为对远程主机做任何改变

黄色

执行成功并对远程主机做改变

红色

执行失败

5. ansible 中的常用模块

5.1 command

  • 功能: 在远程主机执行命令,此模块为默认模块;
  • 常用参数

参数

含义

chdir

执行命令前先进入到指定目录

cmd

运行命令指定

creates

如果文件存在将不运行

removes

如果文件存在将运行

free_form

在远程主机中执行的命令,此参数不需要加

可以用命令 ansible-doc command -s 来查看其参数及含义;

ansible ping模块解释 ansible常用模块有哪些_源文件_15


测试

chdir表示先进入指定目录,再执行命令。如图表示进入 /etc 目录下,查看passwd文件的命令;

ansible ping模块解释 ansible常用模块有哪些_ansible_16


creates表示当文件存在时将不执行动作,如图,当文件 /mnt/zxk 不存在,便运行后面的显示动作;

removes 表示当文件不存在时便不执行动作,如图,当文件 /mnt/zxk 不存在,便没有运行后面的显示动作;

最后一条,由于文件 /mnt/zxk 不存在,便运行后面的显示动作;

ansible ping模块解释 ansible常用模块有哪些_hive_17


如图,当文件存在时,便不会执行后面的动作:

ansible ping模块解释 ansible常用模块有哪些_ansible ping模块解释_18

注意:Linux 中的很多通配符在 command 模块中不支持。

5.2 shell

  • 功能:和 command 功能类似
  • 常用参数

参数

含义

chdir

执行命令前先进入到指定目录

cmd

运行命令指定

creates

如果文件存在将不运行

removes

如果文件存在将运行

free_form

在远程主机中执行的命令,此参数不需要加

executable

指定执行环境,默认为sh

ansible ping模块解释 ansible常用模块有哪些_ansible_19

ansible ping模块解释 ansible常用模块有哪些_源文件_20

5.3 script

  • 功能:在 ansible 主机中写好的脚本在受控主机中执行

参数如图所示:

ansible ping模块解释 ansible常用模块有哪些_ansible ping模块解释_21

编写一个脚本,在 ansible 主机中写好的脚本在受控主机中执行;

ansible ping模块解释 ansible常用模块有哪些_运维_22

5.4 copy

  • 功能:从 ansible 主机复制文件到受控主机
  • 常用参数

参数

含义

src

源文件

dest

目的地文件

owner

指定目的地文件所有人

group

指定目的地文件所有组

mode

指定目的地文件权限

backup=yes

当受控主机中存在文件时备份原文件

content

指定文本内容直接在受控主机中生成文件

复制文件到受控主机中;

ansible ping模块解释 ansible常用模块有哪些_hive_23

在受控主机中查看:

ansible ping模块解释 ansible常用模块有哪些_ansible_24


可以从上面看到,复制时权限会被保留,那么加上参数 mode 来指定目的地文件的权限来复制:

ansible ping模块解释 ansible常用模块有哪些_ansible_25


查看效果:

ansible ping模块解释 ansible常用模块有哪些_运维_26

指定参数来指定目的地文件的所有人和所有组:

ansible ping模块解释 ansible常用模块有哪些_运维_27

查看效果:

ansible ping模块解释 ansible常用模块有哪些_hive_28


指定文本内容直接在受控主机中生成文件:

ansible ping模块解释 ansible常用模块有哪些_源文件_29


查看效果:

ansible ping模块解释 ansible常用模块有哪些_源文件_30

默认复制到目的地文件时,当文件已经存在时会被覆盖,加入参数 backup 来生成备份文件:

ansible ping模块解释 ansible常用模块有哪些_ansible ping模块解释_31

结果如图所示:

ansible ping模块解释 ansible常用模块有哪些_运维_32

5.5 fetch

  • 功能:从受控主机把文件复制到 ansible 主机,但不支持目录
  • 常用参数

参数

含义

src

受控主机的源文件

dest

本机目录

flat

基本名称功能

(1)从受控主机把文件复制到ansible主机,但不支持目录复制:

ansible ping模块解释 ansible常用模块有哪些_源文件_33


查看:可以看到在 /mnt 生成了两个以 ip 为名的目录

ansible ping模块解释 ansible常用模块有哪些_ansible_34


(2)将受控主机的 /etc/hostname 文件复制到 ansible 主机的 /mnt/lzxk 文件中,加了flat 参数,表示 zxk 是一个文件而不是目录:

ansible ping模块解释 ansible常用模块有哪些_ansible ping模块解释_35


此时在 /mnt/ 中生成一个文件,而文件中只有一台主机名,这是因为在执行的过程中先访问的是 100主机,随后访问的是 200 主机,200 主机的主机名会覆盖100主机名;

ansible ping模块解释 ansible常用模块有哪些_ansible ping模块解释_36

5.6 file

  • 功能:设置文件的属性
  • 常用参数

参数

含义

path

指定文件名称

state

指定操作状态

touch

建立

absent

删除

directory

递归

link

建立链接

hard

mode

设定权限

owner

设定文件用户

group

设定文件组

src

源文件

dest

目标文件

recurse=yes

递归更改

清空被控主机 /mnt 中的素有文件,来观察实验效果:

ansible ping模块解释 ansible常用模块有哪些_ansible_37

(1)新建文件
用命令 ansible westos -m file -a 'path=/mnt/westos state=touch'在被控主机的 /mnt 下新建文件:

ansible ping模块解释 ansible常用模块有哪些_ansible_38

建立之后用命令 ansible westos -m shell -a 'ls -l /mnt'来查看文件

ansible ping模块解释 ansible常用模块有哪些_源文件_39


(2) 删除

用命令 ansible westos -m file -a 'path=/mnt/westos state=absent'在被控主机的 /mnt 下删除文件:

ansible ping模块解释 ansible常用模块有哪些_源文件_40

(3)新建目录
用命令 ansible westos -m file -a 'path=/mnt/westos state=directory'在被控主机的 /mnt 下新建目录:

ansible ping模块解释 ansible常用模块有哪些_hive_41


查看

ansible ping模块解释 ansible常用模块有哪些_hive_42


(4)建立链接

先建立一个文件,然后用命令 ansible westos -m file -a 'src=/mnt/zxk dest=/mnt/kkk state=link 来建立链接;

ansible ping模块解释 ansible常用模块有哪些_ansible_43

建立链接之后,查看的结果如图所示:

ansible ping模块解释 ansible常用模块有哪些_ansible_44

(5)硬链接
用命令 ansible westos -m file -a 'src=/mnt/zxk dest=/mnt/xxx state=hard' 来建立硬链接;

ansible ping模块解释 ansible常用模块有哪些_运维_45


如图所示,硬链接的 id 和链接来源的 id 一致;

ansible ping模块解释 ansible常用模块有哪些_hive_46

(6)递归
在前面生成的目录中新建一个文件,来更改其权限;
更改之前的目录以及目录中文件的权限如图所示:

ansible ping模块解释 ansible常用模块有哪些_ansible ping模块解释_47


用命令 ansible westos -m file -a 'path=/mnt/westos mode=777 recurse=yes'来递归更改权限;

ansible ping模块解释 ansible常用模块有哪些_hive_48

更改之后的效果如下图所示:

ansible ping模块解释 ansible常用模块有哪些_源文件_49

5.7 archive

  • 作用:压缩
  • 常用参数

参数

含义

path

打包目录名称

dest

声称打包文件名称

format

打包格式

owner

指定文件所属人

mode

指定文件权限

输入命令 ansible westos -m archive -a 'path=/etc dest=/mnt/etc.tar.gz owner=zxk mode=755' 来打包;

ansible ping模块解释 ansible常用模块有哪些_运维_50


查看效果:

ansible ping模块解释 ansible常用模块有哪些_运维_51

5.8 unarchive

  • 功能:解压缩
  • 常用参数

参数

含义

copy

默认为 yes 从 ansible 主机复制文件到受控主机,设定为 no 从受控主机中寻找 src 源文件

remote_src

功能同 copy 且相反,设定为 yes 表示包在受控主机,设定为 no表示包在ansible主机

src

包路径,可以使ansible主机也可以使受控主机

dest

受控主机目录

mode

加压后文件权限,copy 必须是 yes ,否则改不了权限

用命令ansible westos -m unarchive -a 'src=/mnt/etc.tar.gz dest=/mnt copy=no' 来解压受控主机的文件;

ansible ping模块解释 ansible常用模块有哪些_运维_52

查看效果:

ansible ping模块解释 ansible常用模块有哪些_源文件_53


在默认情况下当 copy=no 时,也就是从被控主机中寻找 src 源文件时,不能指定解压之后文件的权限;当 src 源文件来自 ansible 主机时,可以指定权限;

先生成一个压缩包,然后用命令 ansible westos -m unarchive -a 'src=/mnt/westos.tar.gz dest=/mnt mode=777 owner=zxk' 来解压;

ansible ping模块解释 ansible常用模块有哪些_源文件_54


ansible ping模块解释 ansible常用模块有哪些_源文件_55

效果查看:

ansible ping模块解释 ansible常用模块有哪些_hive_56

5.9 hostname

  • 作用:管理主机名称
  • 常用参数

参数

含义

name

指定主机名称

修改主即名用命令 ansible 172.25.254.100 -m hostname -a 'name=westos.zxk' 来修改,用命令 ansible 172.25.254.100 -m shell -a 'hostname' 来查看;

ansible ping模块解释 ansible常用模块有哪些_hive_57

5.10 cron

  • 作用:计划任务
  • 常用参数

参数

含义

minute 分钟

hour

小时

day


month


weekday


name

任务名称

job

任务脚本或命令

disabled

yes 禁用计划任务,no 启动计划任务

state

absent 删除计划任务

用命令 ansible westos -m cron -a "job=data name=westostest minute=*/2" 来设定定时任务;其中 job 表示到时间后执行的命令,name 表示此次任务的名称,minute 表示设定的分钟,不写则默认是 * ;

ansible ping模块解释 ansible常用模块有哪些_源文件_58

关闭任务:
用命令 ansible westos -m cron -a "job=data name=westostest disabled=yes" 来关闭任务,可以看到关闭之后在查看时,前面是用 # 注释掉的;

ansible ping模块解释 ansible常用模块有哪些_源文件_59


开启任务:

用命令 ansible westos -m cron -a "job=data name=westostest disabled=no" 来开启任务;开启之后前面的#就被去掉了;

ansible ping模块解释 ansible常用模块有哪些_ansible ping模块解释_60

删除任务:
用命令 ansible westos -m cron -a "job=data name=westostest state=absent"来删除任务;

ansible ping模块解释 ansible常用模块有哪些_ansible_61

5.11 yum_repository

  • 作用:配置系统软件仓库源文件
  • 常用参数

参数

含义

name

指定仓库名称

baseurl

指定源路径

description

指定仓库描述

file

指定仓库文件名称

enabled

仓库是否启用

gpgcheck

仓库是否检测gpgkey

state

默认值 present 建立,absent 为删除

用命令 ansible westos -m shell -a 'ls /etc/yum.repos.d/' 来查看软件仓库是否已经有编写的文件;
用命令 ansible westos -m yum_repository -a 'name=AppStream baseurl=http://172.25.254.39/RHEL8/AppStream description=westosAppStream gpgcheck=no file=westos' 来写入软件仓库的内容;

ansible ping模块解释 ansible常用模块有哪些_ansible_62


用命令 ansible westos -m shell -a 'cat /etc/yum.repos.d/westos.repo' 来查看写入文件的内容;

ansible ping模块解释 ansible常用模块有哪些_ansible_63


用命令 ansible westos -m yum_repository -a 'name=BaseOS baseurl=http://172.25.254.39/RHEL8/BaseOS descriptinotallow=westosBaseOS gpgcheck=no file=westos' 在写入一个仓库信息;

ansible ping模块解释 ansible常用模块有哪些_ansible ping模块解释_64


设置enabled=0 参数,表示不启用 BaseOs软件仓库;

ansible ping模块解释 ansible常用模块有哪些_ansible ping模块解释_65


设置 enabled=1 参数,表示启用BaseOs软件仓库;

ansible ping模块解释 ansible常用模块有哪些_hive_66

用命令 ansible westos -m yum_repository -a 'name=BaseOS baseurl=http://172.25.254.39/RHEL8/BaseOS description=westosBaseOS gpgcheck=no file=westos state=absent' 删除 BaseOs 软件仓库;

ansible ping模块解释 ansible常用模块有哪些_运维_67

5.12 dnf

  • 作用:管理系统中的dnf仓库及管理软件
  • 常用参数

参数

含义

name

指定包

state

指定动作

present 安装

latest 更新

absent 删除

list

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

disable_gpg_check

禁用gpgkey检测

enablerepo

指定安装包来源

disablerepo

禁用安装包来源

用命令 ansible westos -m dnf -a 'name=vsftpd state=latest' 来安装 vsftpd 单个软件;

ansible ping模块解释 ansible常用模块有哪些_源文件_68

用命令ansible westos -m dnf -a 'name="httpd,dhcp-server" state=latest disable_gpg_check=yes' 来安装多个软件;
如图所示,当被控机的软件仓库搭建的有问题时,此时在安装软件时,会出现找不到可用的安装包的状况;

ansible ping模块解释 ansible常用模块有哪些_源文件_69

用命令 ansible westos -m dnf -a 'name="httpd,dhcp-server" state=absent' 来卸载已经安装的软件包;
从下图可知,当被控机中没有安装软件包时,在卸载时会提示什么都没有做;对于已经安装过对应软件包的被控机,会执行卸载动作,但是从安装和卸载的软件包中明显的可以发现没有卸载相关依赖性的软件包

ansible ping模块解释 ansible常用模块有哪些_源文件_70

用命令

先为 100 主机安装 httpd 软件,再次卸载用命令 ansible 172.25.254.100 -m dnf -a 'name="httpd" state=absent autoremove=yes 来卸载软件包并同时卸载依赖性;

ansible ping模块解释 ansible常用模块有哪些_源文件_71


ansible ping模块解释 ansible常用模块有哪些_ansible_72


用命令 ansible 172.25.254.100 -m dnf -a 'name="@Virtualization Tools" state=latest' 来为被控主机100安装组件;

ansible ping模块解释 ansible常用模块有哪些_ansible ping模块解释_73


也可以用网络源的方式来安装软件;

对于本地软件仓库的禁用,通常用于不同仓库中存在不同版本的情况下。

5.13 service

  • 作用:管理系统服务状态
  • 常用参数

参数

含义

name

指定服务名称

state

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

enabled

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

用命令 ansible 172.25.254.100 -m service -a 'name="vsftpd" state=started' 来开启服务;

用命令 ansible 172.25.254.100 -m service -a 'name="vsftpd" state=restarted' 来重启服务;

用命令shell 的方式来查看服务的状态ansible 172.25.254.100 -m shell -a 'systemctl status vsftpd'
可以发现其已经开启,但是默认开启的服务没有设定开机自启;

ansible ping模块解释 ansible常用模块有哪些_hive_74

用命令 ansible 172.25.254.100 -m service -a 'name="httpd" state=started enabled=yes' 来开启服务并设定开机自启;

ansible ping模块解释 ansible常用模块有哪些_运维_75

有的服务不支持 reloaded

5.14 firewalld

以上服务在开启之后不一定可以直接使用,需要设定火墙策略才可以访问。

  • 常用参数

参数

含义

zone

火墙的域

service

服务名称

permanent

永久生效

state

状态

enbaled 允许

disabled 拒绝

immediate

立即生效

查看模块的帮助:

ansible ping模块解释 ansible常用模块有哪些_ansible_76

用命令 ansible 172.25.254.100 -m firewalld -a 'zone=public service=http permanent=yes state=enabled immediate=yes' 为刚才安装的 http服务设定火墙策略;

ansible ping模块解释 ansible常用模块有哪些_hive_77

5.15 user

  • 作用:模块可以帮助我们管理远程主机上的用户,比如创建用户、修改用户、删除用户、为用户创建密钥对等操作;
  • 常用参数

参数

含义

name

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

group

指定用户所在的基本组

gourps

指定用户所在的附加组

append

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

shell

指定用户的默认 shell

uid

指定用户的 uid 号

comment

指定用户的注释信息

state

用于指定用户是否存在于远程主机

present 建立

absent 删除

remove

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

password

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

generate_ssh_key

生成sshkey

用命令 ansible westos -m user -a 'name=gzz state=present' 来新建用户 ;

用命令 ansible westos -m user -a 'name=gzz state=absent' 来删除用户 ;

ansible ping模块解释 ansible常用模块有哪些_运维_78


用户虽然已经删除,但是并不会删除新建用户时所建立的用户家目录;

ansible ping模块解释 ansible常用模块有哪些_源文件_79

用命令 ansible westos -m user -a 'name=gzz state=present uid=6666' 来新建用户,并指定用户 id ;

ansible ping模块解释 ansible常用模块有哪些_ansible_80

用命令 ansible westos -m user -a 'name=gzz state=absent remove=yes' 来删除用户并删除用户的家目录 ;

ansible ping模块解释 ansible常用模块有哪些_运维_81

用命令 ansible 172.25.254.100 -m user -a 'name=gzz state=present uid=6666 group=1001 comment="gzz user"' 来新建用户,并指定用户的组身份和用户说明;

ansible ping模块解释 ansible常用模块有哪些_源文件_82

ansible ping模块解释 ansible常用模块有哪些_ansible_83

用命令 ansible 172.25.254.100 -m user -a 'name=gzz state=present uid=6666 group=1001 comment="gzz user" shell=/bin/sh groups=dhcpd' 来更改用户所用 shell 和附加组的身份;

ansible ping模块解释 ansible常用模块有哪些_运维_84

ansible ping模块解释 ansible常用模块有哪些_hive_85

用命令 ansible 172.25.254.100 -m user -a 'name=gzz groups=apache append=yes' 来为用户添加附加组 ;

ansible ping模块解释 ansible常用模块有哪些_hive_86


ansible ping模块解释 ansible常用模块有哪些_hive_87

用命令 ansible 172.25.254.100 -m user -a 'name=gzz password=$6$S8p5vUiYhNxRnStf$H6RzQOm.T73evAQ7wcx9SY9bGV3wnRZs0BOx5Ph7gfiizr7hoxPlGhtYsEieWfl2ctHXiQvlaHTSQQ71gIARR.' 来修改用户的密码;
先用命令 openssl passwd -6 生成密码;

ansible ping模块解释 ansible常用模块有哪些_hive_88


ansible ping模块解释 ansible常用模块有哪些_hive_89


用命令 ansible westos -m user -a 'name=zzz generate_ssh_key=yes home=/home/www' 表示在新建用户时,生成密钥并指定用户的家目录为 www ;

ansible ping模块解释 ansible常用模块有哪些_hive_90


ansible ping模块解释 ansible常用模块有哪些_运维_91

5.16 group

  • 作用:group 模块可以帮助我们管理远程主机上的组。
  • 常用参数

参数

含义

name

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

state

用于指定组的状态

present 建立

absent 删除

gid

用于指定组的gid

用命令 ansible westos -m group -a 'name=wang state=present' 来创建组;

ansible ping模块解释 ansible常用模块有哪些_运维_92


ansible ping模块解释 ansible常用模块有哪些_ansible ping模块解释_93

用命令 ansible westos -m group -a 'name=wang state=absentt' 来删除组;
用命令 ansible westos -m group -a 'name=wang state=present gid=7777' 指定组的 id 来建立组,当组已经存在时就是更改组的id 不存在时就是指定 id 建立组;

ansible ping模块解释 ansible常用模块有哪些_运维_94

ansible ping模块解释 ansible常用模块有哪些_源文件_95

5.17 lineinfile

参数

参数

含义

path

指定要操作的文件

line

指定文本内容

regexp

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

state

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

backrefs

当内容无匹配规则时不对文件做任何更改,默认值为no,向后引用regexp变量信息

insertafter

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

insertbefore

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

backup

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

create

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

用命令 ansible westos -m lineinfile -a 'path=/mnt/westos line="hello zxk" create=yes' 在被控主机中新建一个文件,并且指定文件名称;

ansible ping模块解释 ansible常用模块有哪些_ansible_96


在已经存在的文件中加入内容,用命令 ansible westos -m lineinfile -a 'path=/mnt/westos line="hello westos"' 来添加;

ansible ping模块解释 ansible常用模块有哪些_ansible ping模块解释_97

ansible ping模块解释 ansible常用模块有哪些_ansible ping模块解释_98

加上 regexp 参数,表示使用匹配的方式替换文件内容,如果文件有多行时,只有文件中最后一个与匹配内容一致的才会被替换;但是当删除时,所有与匹配内容一致的,都会被删除;
用命令 ansible westos -m lineinfile -a 'path=/mnt/westos line="hello test1" regexp="test"' 来修改文件内容;
当只匹配到一行时会直接修改;

ansible ping模块解释 ansible常用模块有哪些_源文件_99


当匹配多余一行时,也就是重复匹配时;会默认更改最后匹配到的行内容;

ansible ping模块解释 ansible常用模块有哪些_运维_100

删除时,用命令 ansible westos -m lineinfile -a 'path=/mnt/westos state=absent regexp="test"' ,如果匹配的多行的内容都会被删除;

ansible ping模块解释 ansible常用模块有哪些_源文件_101


加上 backrefs 参数,当内容无匹配规则时不对文件做任何更改,默认值为no;还可以向后引用 regexp 变量信息;

用命令 ansible westos -m lineinfile -a 'path=/mnt/westos line="hello kkk" regexp="test" 来测试当没有匹配规则时的情况;

可以看到当没有匹配规则时会默认添加内容;

ansible ping模块解释 ansible常用模块有哪些_ansible_102

当加上 backrefs 参数之后,此时没有匹配到内容不再做修改;

ansible ping模块解释 ansible常用模块有哪些_ansible ping模块解释_103

向后索引 regexp 的值,当写入 'path=/mnt/westos regexp="(h.{4}).*(w.{5})" line="\1"' 表示regexp 的值是个变量,将匹配到的变量值第一个写入;
默认不会识别变量值;

ansible ping模块解释 ansible常用模块有哪些_ansible ping模块解释_104

加入 backrefs 参数之后,所有的变量值会向后延伸,便会采集到变量值;

ansible ping模块解释 ansible常用模块有哪些_ansible_105


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

在指定的关键字后面添加:

ansible ping模块解释 ansible常用模块有哪些_源文件_106


在最后一行添加:

ansible ping模块解释 ansible常用模块有哪些_运维_107

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

在指定的行之前添加:

ansible ping模块解释 ansible常用模块有哪些_运维_108

在在第一行添加:

ansible ping模块解释 ansible常用模块有哪些_运维_109

用参数 backup 在文件更改之前对文件进行备份;

ansible ping模块解释 ansible常用模块有哪些_hive_110

ansible ping模块解释 ansible常用模块有哪些_ansible ping模块解释_111

5.18 replace

  • 作用:replace 模块可以根据我们指定的正则表达式替换文件中的字符串,文件中所有被匹配到的字符串都会被替换;
  • 常用参数

参数

含义

path

指定要操作的文件

regexp

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

replace

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

backup

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

用命令 ansible westos -m replace -a 'path=/mnt/westos regexp="hello" replace="kkk" ' 来将单个字符做替换;

ansible ping模块解释 ansible常用模块有哪些_ansible ping模块解释_112

可以用参数 backup 来做备份替换;

ansible ping模块解释 ansible常用模块有哪些_源文件_113

ansible ping模块解释 ansible常用模块有哪些_运维_114

5.19 setup

  • 作用:setup模块用于收集远程主机的一些基本信息
  • 常用参数

参数

含义

filter

用于进行条件过滤。如果设置,仅返回匹配过滤条件的信息

用命令 ansible westos -m setup 来采集受控主机的信息;
用命令 ansible westos -m setup | less 来将采集的信息分页浏览,在分页浏览中搜索需要查看的信息;

ansible ping模块解释 ansible常用模块有哪些_ansible ping模块解释_115

从受控主机中采集需要的信息;

ansible ping模块解释 ansible常用模块有哪些_ansible_116

ansible ping模块解释 ansible常用模块有哪些_ansible ping模块解释_117

5.20 debug

  • 作用:调试模块,用于在调试中输出信息
  • 常用参数

参数

含义

msg

调试输出的消息

var:

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

verbosity:

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

用命令 ansible westos -m debug -a 'msg="hello world"' 调试输出的信息;

ansible ping模块解释 ansible常用模块有哪些_hive_118

用参数 verbosity 来控制显示的级别,数字越大,显示的信息越少;

ansible ping模块解释 ansible常用模块有哪些_运维_119

参数 var 用于做变量的输出,不能单独用 debug 来做,要结合其他的方式来实现其效果;

现将其结合 playbook 来观察效果;
编辑一个 playbook 的剧本;

ansible ping模块解释 ansible常用模块有哪些_ansible_120

playbook 在执行的时候默认会执行 setup;
当文件内容书写正确时,此时在执行时会获得到变量的信息,如下图所示:

ansible ping模块解释 ansible常用模块有哪些_运维_121


当书写的变量不能被识别时,会提示变量值不存在;

ansible ping模块解释 ansible常用模块有哪些_源文件_122


如果写入的是,msg 便会将其识别为字符串显示出来,效果如下图所示:

ansible ping模块解释 ansible常用模块有哪些_ansible_123