Ansible中常用的模块

1 ansible实现管理的方式

管理方式含义
Ad-Hoc利用ansible命令直接完成管理,主要用于临时命令使用场景
playbookansible脚本,主要用于大型项目场景,需要前期的规划

1)ansible命令管理方式:
在这里插入图片描述
2)ansible脚本管理方式,也就是playbook的方式,注意该脚本编写时有严格的格式缩进,下面playbook片段表示查看被控主机的主机名,然后运行playbook:
在这里插入图片描述
注意:上面的写ansible脚本的方式和下面的命令含义一样,这只是两种实现ansible的管理方式:
在这里插入图片描述

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

  • ansible-doc 显示模块帮助的指令
  • 语法格式: ansible-doc [参数] [模块]
  • 常用参数
    • -l 列出可用模块
    • -s 显示指定模块的playbook片段

1)下图表示列出ansible的可用模块:
在这里插入图片描述
2)如下,表示列出指定的file模块的常用参数:
在这里插入图片描述
注意:也可以输入“ansible-doc file | less”命令,表示查看该模块,进入该查看命令后,输入“/EXAMPLE”可以查看该模块的实例。

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)查看版本号:
在这里插入图片描述
2)-v查看命令运行详细过程:
在这里插入图片描述
-vv表示查看命令运行时,更详细的过程:
在这里插入图片描述
-vvv表示查看命令运行时,更更更加详细的过程:
在这里插入图片描述

3)如下命令中-m表示指定模块,-k参数表示指定输入ssh连接时输入的密码:
在这里插入图片描述
4)如下,-C 表示预执行检测,只检测命令运行的正确与否,但不会执行只做检测:
在这里插入图片描述
5)如下所示,-b表示指定sudo切换用户身份操作 ,- -become-user=USERNAME 表示指定sudo的用户:
在这里插入图片描述
6)如下所示,-K指定输入ssh连接密码,-u表示指定远程执行的用户:
在这里插入图片描述

4 ansible的基本颜色代表

运行结果的颜色含义
绿色执行成功但未对远程主机做出任何个改变
黄色执行成功并对远程主机做改变
红色执行失败

5 ansible中的常用模块

5.1 command

  • 功能:在远程主机执行命令,此模块为默认模块
  • 常用参数
参数含义
chdir执行命令前先进入到指定目标
cmd运行命令指定
creates如果文件存在将不运行
removes如果文件存在将运行
free_form在远程主机中执行的命令,此参数不需要加

1)查看command模块的常用参数:
在这里插入图片描述
2)chdir表示先进入指定目录,再执行命令。如下表示进入/etc目录下,执行查看passwd文件的命令:
在这里插入图片描述
3)removes表示如果文件存在,将运行。如下图所示,/mnt/file文件不存在,所以不运行后面的touch命令:
在这里插入图片描述
4)creats表示如果文件存在将不运行。creates后面的文件不存在,所以运行了后面的建立文件命令:
在这里插入图片描述
在受控主机中查看/mnt,该文件被建立出来:
在这里插入图片描述
如下,前面一步已经建立了文件,此时文件存在,所以不运行后面命令,也就是不查看/etc/passwd的内容:
在这里插入图片描述
注意:linux中的很多通配符在command模块中不支持

5.2 shell

  • 功能:和command功能类似,可以实现在远程主机执行命令
  • 常用参数
参数含义
chdir执行命令前先进入到指定目标
cmd运行命令指定
creates如果文件存在将不运行
removes如果文件存在将运行
free_form在远程主机中执行的命令,此参数不需要加
executable指定运行环境,默认为sh

1)查看那shell模块的常用参数:
在这里插入图片描述

2)shell模块使用过滤命令,可以看到默认使用的是/bin/sh:
在这里插入图片描述

指定执行环境,将默认的/bin/sh改为/bin/bash然后过滤查看:
在这里插入图片描述

5.3 script

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

1)查看script模块常用参数:
在这里插入图片描述
2)编写一个脚本,将在ansible主机中写好的脚本在受控主机中执行:
在这里插入图片描述在这里插入图片描述

5.4 copy

  • 功能:从ansible主机复制文件到受控主机
  • 常用参数
参数含义
src源文件
dest目的地文件
owner指定目的地文件所有人
group指定目的地文件的所有组
mode指定目的地文件权限
backup=yes当受控主机中存在文件时备份源文件
content指定文本内容直接在受控主机中生成文件

1)将本机的/mnt/test文件复制到受控机的 /mnt下:
在这里插入图片描述

进入被控主机查看:
在这里插入图片描述

2)将本机的/mnt/test文件复制到受控机的 /mnt下,同时修改文件权限:
在这里插入图片描述

进入被控主机查看:
在这里插入图片描述

3)不传文件,直接传一段文本,到受控机的/mnt/liu下,并设定文件拥有者和拥有组为qjw :
在这里插入图片描述

进入被控主机查看:
在这里插入图片描述

4)默认传到受控主机的文本内容是没有换行的,这里做一个换行:
在这里插入图片描述

进入被控主机查看:
在这里插入图片描述

5)修改test文件内容,传过去的时候备份源文件,然后再在文件中添加新添加的内容:
在这里插入图片描述

进入被控主机查看:
在这里插入图片描述

5.5 fetch

  • 功能:从受控主机把文件复制到Ansible主机,但不支持目录
  • 常用参数
参数含义
src受控主机的源文件
dest本机目录
flat基本名称功能

1)从受控主机把文件复制到ansible主机,但不支持目录复制:
在这里插入图片描述

2)可以看到在/mnt生成了两个以ip为名的目录:
在这里插入图片描述

3)将受控主机的/etc/hostname文件复制到ansible主机的/mnt/lhy文件中,加了flat参数,表示lhy是一个文件而不是目录:
在这里插入图片描述

查看/mnt:
在这里插入图片描述

注意:fetch在使用flat参数时,若有两台受控主机,第一台主机复制到ansible主机后,第二台主机再复制过来,复制完后,第二台主机的内容会覆盖第一台主机的内容。

4)将受控主机的/etc/hostname文件复制到ansible主机的/mnt/test文件中,没有flat参数,表示test是一个目录而不是文件:
在这里插入图片描述
查看/mnt:
在这里插入图片描述

5.6 file

  • 功能:设置文件的属性
  • 常用参数
参数含义
path指定文件名称
state 指定操作状态
touch建立
absent删除
directory建立目录
link建立链接
hard建立硬链接
mode设定权限
owner设定文件用户
group设定文件组
src源文件
dest目标文件
recurse=yes递归更改

1)清空被控主机/mnt里面的内容,方便观察实验效果:
在这里插入图片描述

2)path指定文件名称,state指定操作状态为建立,该命令表示建立/mnt/westos文件:
在这里插入图片描述

查看/mnt/westos文件被建立:
在这里插入图片描述

3)path指定文件名称,state指定操作状态为absent删除,该命令表示删除/mnt/westos文件:
在这里插入图片描述

删除后查看/mnt,没有文件:
在这里插入图片描述

4)path指定文件名称,state指定操作状态为directory,表示建立/mnt/westos目录:
在这里插入图片描述

westos目录建立成功:
在这里插入图片描述

5)建立文件westosfile,权限为777,拥有者和拥有组是qjw:
在这里插入图片描述

查看westosfile文件权限信息:
在这里插入图片描述

6)源文件为westosfile,目标文件为westosliu,建立软链接。注意,源文件是必须存在的,否则会报错:
在这里插入图片描述

软链接建立成功:
在这里插入图片描述

7)在westos目录下建立file文件:
在这里插入图片描述

lR递归查看,建立成功:
在这里插入图片描述

8)修改westos目录的权限:
在这里插入图片描述

查看修改后的权限,westos目录的权限修改成功,但westos目录下的file权限没有发生改变:
在这里插入图片描述

9)添加recurse=yes参数,表示进行递归更改:
在这里插入图片描述

lR递归查看:
在这里插入图片描述

10)以westosfile文件为源文件,建立硬链接,注意源文件要存在:
在这里插入图片描述

查看,该文件的节点号和westosfile一致,说明硬链接链接成功:
在这里插入图片描述

5.7 unarchive

  • 功能:解压缩
  • 常用参数
参数含义
copy默认为yes,从ansible主机复制文件到受控主机;设定为no表示从受控主机寻找src源文件
remote_src功能通copy相反,两个中选一个使用即可;设定为yes表示包在受控主机;设定为no表示包在ansible主机
src包路径,可以使用ansible主机也可以使用受控主机
dest受控主机目录
mode加压后文件权限

1)先在ansible主机上将/etc进行打包,打包为/mnt/westos.tar.gz:
在这里插入图片描述

打包完后,查看ansible主机的/mnt,生成了打包文件:
在这里插入图片描述

2)src表示ansible主机中包的路径,dest表示受控主机目录,以777权限解压到受控主机的/mnt下:
在这里插入图片描述

注意:解压时,当copy=no时,也就是说从受控主机寻找时,修改权限是无法成功的,只有当copy参数是yes(默认)时,才能在解压的时候修改权限

查看受控主机的/mnt,解压后的文件为777权限:
在这里插入图片描述

5.8 archive

  • 功能:压缩
  • 常用参数
参数含义
path打包目录名称
dest生成打包文件名称
format打包格式
owner指定文件所属人
mode指定文件权限

1)将受控主机的/mnt中的内容删除,也可以使用file模块删除,方便观察实验结果:
在这里插入图片描述

2)将ansible主机的/etc下的内容打包到受控主机的/mnt中:
在这里插入图片描述

查看受控机的/mnt,生成了压缩包:
在这里插入图片描述

5.9 cron

  • 功能:计划任务
  • 常用参数
参数含义
minute分钟
hour小时
day
month
weekday
name任务名称
job任务脚本或命令
disabledyes表示禁用计划任务;no表示启动计划任务
stateabsent删除计划任务

1)设定一个名为westostest的定时任务,任务内容为每两分钟显示一次date命令:
在这里插入图片描述

查看定时任务状态:
在这里插入图片描述

2)关闭该计划任务,job和name参数都要写上:
在这里插入图片描述

查看定时任务,可以在结果处看到任务前面加了一个#,表示任务被注释掉,也就是任务被关闭:
在这里插入图片描述

3)启动westostest计划任务:
在这里插入图片描述

查看定时任务状态:
在这里插入图片描述

4)删除westostest计划任务:
在这里插入图片描述

查看定时任务状态:
在这里插入图片描述

注意:关闭和开启该计划任务的区别就在于,是否把这个任务命令给注释掉

5.10 yum_repository

  • 功能:配置系统软件仓库文件
  • 常用参数
参数含义
name指定仓库名称
baseurl指定源路径
description指定仓库描述
file指定仓库文件名称
enabled仓库是否启用
gpgcheck仓库是否检测gpgkey
state默认值为present表示建立;absent表示删除

1)查看受控主机的软件仓库:
在这里插入图片描述

将软件仓库删除:
在这里插入图片描述

再次查看受控主机的软件仓库,只有默认的redhat仓库:
在这里插入图片描述

2)使用yum_repository模块建立AppStream软件仓库。注意file后面写的是软件仓库的文件名,不需要加上repo,默认是加上的 ;description相当于配置里面的name,而name实际上是仓库名称:
在这里插入图片描述

3)查看/etc/yum.repos.d目录下的内容:
在这里插入图片描述

查看搭建的软件仓库:
在这里插入图片描述

4)使用yum_repository模块建立BaseOs软件仓库:
在这里插入图片描述

查看软件仓库:
在这里插入图片描述

5)设置enabled=0参数,表示不启用BaseOs软件仓库:
在这里插入图片描述

查看软件仓库:
在这里插入图片描述

6)设置enabled=1参数,表示启用BaseOs软件仓库:
在这里插入图片描述

7)删除BaseOs软件仓库:
在这里插入图片描述

查看软件仓库:
在这里插入图片描述

5.11 hostname

  • 功能:管理主机名称
  • 常用参数
    • name 指定主机名称

1)查看受控列表的主机名:
在这里插入图片描述

2)使用hostname模块修改某个主机的主机名:
在这里插入图片描述

查看主机名修改情况:
在这里插入图片描述

再将主机名修改回来:
在这里插入图片描述

5.12 dnf

  • 功能:管理系统中的dnf仓库以及管理软件
  • 常用参数
参数含义
name指定包
state 指定动作
present安装
latest更新
absent删除
list列出指定信息
httpd
installed
all
available
disable_gpg_check禁止gpgkey检测
enablerepo指定安装包来源
disablerepo禁用安装包来源
autoremove是否卸载依赖性;no表示卸载依赖性,只卸载软件本身;yes表示卸载软件的同时卸载依赖性

1)更新vsftpd软件:
在这里插入图片描述

2)更新httpd和dhcp-server服务,且不检查gpgkey:
在这里插入图片描述

3)删除该服务,注意只使用state=absent参数表示只卸载了该软件,但是没卸载依赖:
在这里插入图片描述

使用autoremove参数,卸载软件的同时,卸载依赖:
在这里插入图片描述

4)安装Virtualization Tools组件:
在这里插入图片描述

注意,dnf模块也可以用于安装某个网络源上的软件。

5.13 service

  • 功能:管理系统服务状态
  • 常用参数
参数含义
name指定服务名称
state指定对服务的动作
started
stoped
restarted
reloaded
enabled设定服务开机是否启动,yes表示开机启动,no表示开机不启动

1)开启vsftpd服务:
在这里插入图片描述

2)查看服务状态。注意当服务重启后, Main PID会发生改变:
在这里插入图片描述

重启服务:
在这里插入图片描述

查看服务状态,看到Main PID发生改变,也就意味着服务重启过:
在这里插入图片描述

3)注意vsftpd服务默认没有reload,而httpd服务可以reload:
在这里插入图片描述在这里插入图片描述

5.14 user

  • 功能:帮助我们管理远程主机上的用户,比如创建、修改ia、删除用户以及为用户创建密钥等操作
  • 常用参数
参数含义
name必须参数,用户指定要操作的用户名称
group指定用户所在的基本组
groups指定用户所在的附加组
append指定添加附加组,默认值为no
shell指定用户的默认shell
uid指定用户的uid号
comment指定用户的注释信息
state用于指定用户是否存在于远程主机
present 建立
absent 删除
remove当删除用户时删除用户的家目录,默认值为no
password此参数用于指定用户的密码,但密码是明文的;可以使用 “openssl password -6 ‘密码’”生成加密字符
generate_ssh_key生成sshkey

1)建立监控方便观察实验结果,注意监控是再受控主机的其中某一台上建立的:
在这里插入图片描述

2)建立一个用户,然后去查看监控会看到用户建立成功:
在这里插入图片描述在这里插入图片描述

3)移除用户,查看监控:
在这里插入图片描述在这里插入图片描述

4)再建立用户,同时指定用户id:
在这里插入图片描述在这里插入图片描述

5)删除用户,注意不加remove参数删除用户,该用户的家目录依旧存在;建立用户,删除时加上remove参数,表示删除用户的同时删除家目录:
在这里插入图片描述在这里插入图片描述在这里插入图片描述

6)建立用户时,建立用户id和用户组和用户说明:
在这里插入图片描述在这里插入图片描述

7)建立用户时,建立用户id和用户组和用户说明,同时将用户的默认shell改为/bash/sh:
在这里插入图片描述

8)将用户加到apache组里:
在这里插入图片描述在这里插入图片描述

9)注意如果不加append参数,想再把用户加到另一个组,那么就会覆盖前面所加入的组,所以加上该参数表示该用户可以加入多个组:
在这里插入图片描述

10)使用openssl passwd -6命令生成一个密码;将该密码写入password参数,此时用户就有密码了:
在这里插入图片描述在这里插入图片描述

11)generate_ssh_key=yes参数表示在添加用户时,生成密钥:
在这里插入图片描述

12)设定建立用户时的家目录是/home/liu:
在这里插入图片描述
在这里插入图片描述

5.15 firewalld

  • 功能:管理火墙策略及状态
  • 常用参数
参数含义
zone火墙的域
service服务名称
permanent永久生效
state状态
ensbled 允许
disabled 拒绝
immediate立即生效

1)服务下载,开启后,需要添加在火墙策略中的,所以,还需要在火墙模块中设置。设置火墙策略允许http服务,immediate表示立即生效;重新加载firewall-cmd;列出火墙策略:
在这里插入图片描述

5.16 group

  • 功能:管理远程主机上的组
  • 常用参数
参数含义
name用于指定要操作的组名称
state用于指定组的状态
present 建立
absent 删除
gid用于指定组的gid

1)建立一个组:
在这里插入图片描述

2)建立组的时候,指定组的gid:
在这里插入图片描述

5.17 lineinfile

  • 功能:对文件进行行管理
  • 常用参数
参数含义
path指定遥操作的文件
line指定文本内容
regexp使用正则表达式匹配对应的行,当替换文本时如果有多行文本被匹配到了,则只有最后被匹配到那行文本才会被替换;当删除文本时如果有多行文本被匹配到,那么这些行都会被删除
state当想要删除对应的文本时需要将state参数的值设置为absent;state的默认值为present
backrefs当内容无匹配规则时,不对文件做任何更改,默认值为no;向后引用regexp变量信息
insertafter该参数可以将文本插入到“指定的行”之后;该参数的值可以设置为EOF或者正则表达式
insertbefore该参数可以将文本插入到“指定的行”之前;该参数的值可以设置为BOF或者正则表达式
backup是否在修改文件之前对文件进行备份
create当要操作的文件不存在时,是否创建对应的文件

1)在受控主机建立监控:
在这里插入图片描述

2)给/mnt/westos文件中添加内容,注意此时/mnt是不存在westos文件的,所以会报错,line表示再文件里添加的内容:
在这里插入图片描述

3)加上create参数,表示path里的文件不存在时,就建立出来:
在这里插入图片描述在这里插入图片描述

在文件中添加内容:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

5)加上regexp参数,表示使用匹配的方式替换文件内容,如果文件有多行时,只有文件中最后一个与匹配内容一致的才会被替换;但是当删除时,所有与匹配内容一致的,都会被删除;所以该命令表示将test换成test1:
在这里插入图片描述在这里插入图片描述

6)将含有test关键字的行换成test2,也就是之前的test1会被换成了test2:
在这里插入图片描述在这里插入图片描述

7)再添加一行test1:
在这里插入图片描述在这里插入图片描述

将含有test的替换成test3,查看监控,只替换了最后一行:
在这里插入图片描述在这里插入图片描述

8)删除含有test的行,那么test2、3都被删除:
在这里插入图片描述在这里插入图片描述

9)命令中(h.{4}) 表示,以h开始后面有四个字符, .* 表示中间任意是什么,后面w同理,\1表示匹配的第一个字符。此时文件内容中含有hello westos,hello westos 会直接被换成 \1:
在这里插入图片描述在这里插入图片描述在这里插入图片描述

加上backrefs=yes参数,结果是把符合条件的行的第一个字符采集出来然后将该行用第一个字符覆盖:
在这里插入图片描述在这里插入图片描述

10)再天添加一行“hello westos”。\2表示第二个字符,把第二个字符采集出来然后将原来那一行用该字符覆盖:
在这里插入图片描述在这里插入图片描述

11)使用insertafter参数,将hhhhh插入到hello之后:
在这里插入图片描述在这里插入图片描述

12)使用insertbefore参数,将ggggg插入到hello之前:
在这里插入图片描述在这里插入图片描述

13)将aaa插入最后一行。EOF 表示end of file:
在这里插入图片描述在这里插入图片描述

14)将bbbb插入第一行。BOF 表示before of file:
在这里插入图片描述在这里插入图片描述

15)删除文件中的hello,并将源文件备份:
在这里插入图片描述在这里插入图片描述

5.18 replace

  • 功能:该模块可以根据指定的正则表达式替换文件中的字符串,文件中所有被匹配到的字符串都会被替换
  • 常用参数
参数含义
path指定要操作的文件
regexp指定一个正则表达式,文件中与正则表达式匹配的字符串回被替换
replace指定最终要替换的字符串
backup是否在修改文件之前对文件进行备份,最好设置为yes

注意:lineinfile是替换一整行,而replace只替换某个字符

将/mnt/westos里的westos替换成hello,并对源文件做备份:
在这里插入图片描述
在这里插入图片描述

5.19 setup

  • 功能:该模块用于收集远程主机的一些基本信息
  • 常用参数
    • filter 用于进行条件过滤,如果设置该参数,则仅返回过滤条件信息

过滤受控主机的ip:
在这里插入图片描述

5.20 debug

  • 功能:调试模块,用于在调试中输出信息
  • 常用参数
参数含义
msg调试输出的消息
var将某个任务执行的输出作为变量传递给debug模块,debug会直接将其打印输出
verbositydebug的级别(默认是0级别,会显示全部信息。越往后,显示的信息越简便)

1)显示输出信息:
在这里插入图片描述

2)设定显示输出信息的级别:
在这里插入图片描述

3)编写一个yml文件,里面是playbook片段,该文件中var表示将某个任务执行的输出作为变量传递给debug模块,debug会直接将其打包输出:
在这里插入图片描述

执行yml文件,可以看到变量的输出结果:
在这里插入图片描述

4)将文件中的var替换成msg,就相当于echo直接输出字符串:
在这里插入图片描述在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值