IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> ansible的常用模块 -> 正文阅读

[系统运维]ansible的常用模块

一、ansible Ad-Hoc命令集

1、ansible提供两种方式去完成任务,一是 Ad-Hoc 命令,一是写 ansible playbook。
2、Ad-Hoc更注重于解决一些简单或者平时工作中临时遇到的任务,相当于Linux系统命令行下的Shell命令,后者更适合于解决复杂或需固化下来的任务,相当于Linux系统的Shell Scripts。
3、Ad-Hoc 使用场景:
(1)关闭所有不必要的服务器
(2)临时更新Apache或Nginx的配置文件
4、ansible的并发特性
Ansible和Ansible-playbook默认会fork 5个线程并发执行命令,如果同时操作的主机数比较多的话,可以调整到一个更大的值,用-f指定线程数。

ansible webserver -m ping -f 6

5、ansible提供了类似于man功能的help说明工具ansible-doc,ansible-doc用法:

显示所有可用模块ansible-doc -l
列出指定模块ansible-doc 模块名称
简要列出指定模块ansible-doc -s 模块名称
ansible-doc -l | grep shell
ansible-doc -l | wc -l
ansible-doc ping
ansible-doc -s shell

在这里插入图片描述
在这里插入图片描述

二、ansible的命令参数

参数功能
-i指定hosts文件路径,默认在/etc/ansible/hosts
-m指定使用的module名称,默认command模块
-a指定模块参数
-k(小写)提示输入ssh密码,并非基于ssh密钥认证
-K(大写)提示输入sudo密码
-b使用sudo执行命令
-become-user=指定sudo的用户
-f,-forks=NUMNUM默认是整数5,指定fork开启同步进程的个数
-u指定远程主机的执行用户
-v详细模式,如果执行成功,输出详细结果,-vv -vvv更详细过程
-C预执行检测
-T执行命令的超时时间,默认10s
--list显示主机列表,也可以用--list-hosts
--version显示版本

ansible的基本颜色代表

绿色执行成功但未对远程主机做任何改变
黄色执行成功并对远程主机做改变
红色执行失败

三、ansible的常用模块

  • 以下实验的配置文件如下
    在这里插入图片描述

1、command模块

在远程主机执行命令,此模块为默认模块

常用参数功能
chdir执行命令前先进入到指定目录
cmd运行命令指定
creates如果文件存在将不运行
removes如果文件存在将运行
ansible demo -m command -a "useradd lee"
ansible demo -m command -a "chdir=/mnt touch file1 file2"
ansible demo -m command -a "chdir=/mnt creates=/mnt/file1 rm -fr file1"
ansible demo -m command -a "chdir=/mnt removes=/mnt/file2 rm -fr file2"

在这里插入图片描述file1未被删除,file2被删除
在这里插入图片描述Linux中的很多通配符在command模块中不支持

2、shell模块、script模块

(1)shell模块
shell模块与command模块类似

常用参数功能
chdir执行命令前先进入到指定目录
cmd运行命令指定
creates如果文件存在将不运行
removes如果文件存在将运行
executable指定执行环境,默认为sh
ansible demo -m shell -a "chdir=/mnt/ touch test{1..3}"
ansible demo -m shell -a "ps ax | grep $$"
ansible demo -m shell -a "executable=/bin/bash ps ax | grep $$"

shell模块支持通配符
在这里插入图片描述echo $$:输入当前会话的进程号
在这里插入图片描述 (2)script模块
在ansible主机中写好的脚本在受控主机中执行

vim test.sh
ansible demo -m script -a "test.sh"

在这里插入图片描述

3、copy模块、fetch模块

(1)copy模块
从ansible主机复制文件到受控主机

参数功能
src源文件
dest目的地文件
owner指定目的地文件所有人
group指定目的地文件所有组
mode指定目的地文件权限
backup=yes当受控主机中存在文件时备份原文件
content指定文本内容直接在受控主机中生成文件

1> 复制当前目录的test.sh到受控主机的/mnt下,文件所有人为lee,权限为755

ansible demo -m copy -a "src=test.sh dest=/mnt/ owner=lee mode=755"

在这里插入图片描述2> 在ansible主机上修改文件内容,开启备份,再次发送

ansible demo -m copy -a "src=test.sh dest=/mnt/ owner=lee mode=755 backup=yes"

在这里插入图片描述3> 直接输入文件内容,在受控主机上生成文件

ansible demo -m copy -a "content='hello linux\nhello lee\n' dest=/mnt/testfile owner=lee mode=600"

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

参数功能
src受控主机的源文件
dest本机目录
flat基本名称功能,单纯只要文件,不要路径的层层目录

查看受控主机的网卡配置文件

ansible demo -m fetch -a "src=/etc/sysconfig/network-scripts/ifcfg-eth0 dest=/home/skk/ansible/ flat=yes"

在这里插入图片描述

4、file模块

设置文件的属性

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

1> 建立递归目录和文件

ansible demo -m file -a "path=/mnt/westos/file state=directory"
ansible demo -m file -a "path=/mnt/westos/file/123456 state=touch"

在这里插入图片描述2> 递归更改

ansible demo -m file -a " path=/mnt/westos group=devops recurse=yes"

在这里插入图片描述3> 建立软连接

ansible demo -m file -a "src=/mnt/testfile dest=/mnt/link state=link"

在这里插入图片描述

5、archive模块、unarchive模块

(1)archive模块——压缩

参数功能
path打包目录名称
dest声称打包文件名称
format打包格式
owner指定文件所属人
mode指定文件权限
ansible demo -m archive -a "path=/mnt dest=/mnt/mnt.tar.gz format=gz owner=lee mode=700"

在这里插入图片描述
(2)unarchive模块——解压缩

copy默认为yes,从ansible主机复制文件到受控主机
设定为no,从受控主机中寻找src源文件
remote_src功能同copy且相反
设定为yes表示包在受控主机
设定为no表示包在ansible主机
src压缩文件的路径
dest受控主机目录
mode解压后文件的权限<copy=yes>

1> 压缩文件在ansible主机

tar zcf etc.tar.gz /etc/
ansible demo -m unarchive -a "src=etc.tar.gz dest=/mnt owner=devops copy=yes"

在这里插入图片描述2> 压缩文件在受控主机中

ansible demo -m unarchive -a "src=/mnt/mnt.tar.gz dest=/mnt/westos owner=lee remote_src=yes"

在这里插入图片描述

6、hostname模块、cron模块

(1)hostname模块
管理主机名称
常用参数:name:指定主机名称

ansible demo -m hostname -a "name=skk.linux.com"

在这里插入图片描述(2)cron模块
计划任务

minute分钟
hour小时
day
month
weekday
name任务名称
job任务脚本或命令
disabledyes禁用计划任务
no启动计划任务
stateabsent删除计划任务

1> 创建计划任务

ansible demo -m cron -a 'job="echo hello world" name=test minute=*/2'

在这里插入图片描述2> 取消计划任务

ansible demo -m cron -a 'job="echo hello world" name=test minute=*/2 disabled=yes'

在这里插入图片描述
3> 删除计划任务

ansible demo -m cron -a 'job="echo hello world" name=test minute=*/2 state=absent'

在这里插入图片描述

7、yum_repository模块、yum(dnf)模块

(1)yum_repository模块
配置系统软件仓库源文件

参数功能
name指定仓库名称
baseurl指定源路径
description指定仓库描述
file指定仓库文件名称
enabled仓库是否启用
gpgcheck仓库是否检测gpgkey
state默认值present: 建立
absent:删除

1> 删除原有网络仓库

ansible demo -m yum_repository -a "name=dvd state=absent"

在这里插入图片描述2> 创建网络仓库

ansible demo -m yum_repository -a "file=skk name=skk description=yum_repo baseurl=http://172.25.36.250/rhel7.6 enabled=yes gpgcheck=0"

在这里插入图片描述(2)yum(dnf)模块
管理系统中的yum(dnf)仓库及管理软件(rhrl7中为yum,rhel8中为dnf)

参数功能
name指定包
state指定动作
present:安装
latest:更新
absent:删除
list列出指定信息
httpdinstalledallavailable
disable_gpg_check禁用gpgkey检测
enablerepo指定安装包来源
disablerepo禁用安装包来源
autoremoveyes:移除依赖性
no:不移除依赖性

1> 安装软件

ansible demo -m yum -a 'name="httpd,gcc" state=present'

在这里插入图片描述2> 卸载时不移除依赖性

ansible demo -m yum -a 'name="httpd,gcc" state=absent autoremove=no'

在这里插入图片描述

8、service模块、firewalld模块

(1)service模块
管理系统服务状态

参数功能
name指定服务名称
state指定对服务的动作
startedstopedrestartedreloaded
enabled设定开机是否启动
yes开机启动;no开机不启动
ansible demo -m service -a "name=httpd state=started enabled=yes"

在这里插入图片描述但此时无法访问web页面,因为还有firewalld的限制
在这里插入图片描述
(2)firewalld模块

参数功能
zone火墙的域
service服务名称
permanent永久生效
stateenabled:允许
disabled:拒绝
immediate立即生效

先开启firewalld,再设定允许http服务

ansible demo -m service -a "name=firewalld state=started enabled=yes
ansible demo -m firewalld -a 'zone=public service=http permanent=yes state=enabled immediate=yes'

在这里插入图片描述在这里插入图片描述现在就可以访问
在这里插入图片描述

9、user模块、group模块

(1)group模块
管理远程主机上的组

name指定要操作的组名称
state指定组的状态
present:建立
absent:删除
gid指定组的gid

建立组

ansible demo -m group -a "name=linux gid=666 state=present"

在这里插入图片描述
(2)user模块
管理远程主机上的用户,比如创建用户、修改用户、删除用户、为用户创建密钥对等操作

name必须参数,指定要操作的用户名称
group指定用户所在基本组
groups指定用户所在附加组
append指定添加附加组默认组为no
shell指定用户的默认shell
uid指定用户的uid
comment指定用户的注释信息
state用于指定用户是否存在于远程主机
present:建立
absent:删除
remove当删除用户时删除用户家目录,默认值为no
password指定用户的密码,但密码为明文
openssl password -6 '密码'生成加密字符
generate_ssh_key生成sshkey

1> 建立用户,设定gid、group、groups、注释、shell方式

ansible demo -m user -a 'name=skk group=lee groups=apache append=yes comment="测试用户" shell=/bin/sh uid=581'

在这里插入图片描述
在这里插入图片描述2> 加密方式给予密码
openssl passwd -6只能在rhel8中使用

openssl passwd -6
ansible demo -m user -a 'name=skk uid=581 password="  "'

在这里插入图片描述
在这里插入图片描述

10、lineinfile模块、replace模块

(1)lineinfile模块
文件内容管理

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

1> 创建文件并书写内容

ansible demo -m lineinfile -a 'path=/mnt/testfile line="hello linux\nhello westos" create=yes'

在这里插入图片描述
2> 替换以hello开头的行,会替换最后匹配到的

ansible demo -m lineinfile -a 'path=/mnt/testfile regexp="^hello" line="1234 linux"'

在这里插入图片描述3> backrefs的使用

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

默认为no,没匹配到时会自动添加一行

ansible demo -m lineinfile -a 'path=/mnt/testfile regexp="westos" line="hello westos"'

在这里插入图片描述当设定为yes时,没有匹配到时不会添加

ansible demo -m lineinfile -a 'path=/mnt/testfile regexp="skk" line="4567890" backrefs=yes'

在这里插入图片描述
4> 匹配更换
/2:匹配第二个()匹配到的内容

ansible demo -m lineinfile -a 'path=/mnt/testfile regexp="(h.{4}).*(l.{4})" line="\2" backrefs=yes'

在这里插入图片描述5> 头尾插入

ansible demo -m lineinfile -a 'path=/mnt/testfile line="==begin==" insertbefore=BOF'
ansible demo -m lineinfile -a 'path=/mnt/testfile line="++end++" insertafter=EOF'

在这里插入图片描述在这里插入图片描述(2)replace模块
根据指定的正则表达式替换文件中的字符串,文件中所有被匹配到的字符串都会被替换

path指定要操作的文件
regexp指定一个正则表达式,文件中与正则匹配的字符串将会被替换
replace指定最终要替换成的字符串
backup是否在修改文件之前对文件进行备份

linux替换成LINUX,并将原文件备份

ansible demo -m replace -a 'path=/mnt/testfile regexp="westos" replace="WESTOS" backup=yes'

在这里插入图片描述

11、setup模块、debug模块

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

ansible demo -m setup  ##收集远程主机的所有信息
ansible demo -m setup -a "filter=ansible_all_ipv4_addresses"

在这里插入图片描述
在这里插入图片描述
(2)debug模块
调试模块,用于在调试中输出信息

msg调试输出的消息
var将某个任务执行的输出作为变量传递给debug模块,debug会直接将其打印输出
verbositydebug的级别(默认是0级,全部显示)

设定debug的级别

ansible demo -m debug -a 'msg="hello linux"'
ansible demo -m debug -a 'msg="hello linux" verbosity=0'

在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 20:02:38  更:2021-11-09 20:02:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:46:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码