从小白到大神之路之学习运维第60天--------Ansible自动化运维工具(安装、操作、简单使用,模块的作用)

news2024/11/16 16:53:51

第三阶段基础

时  间:2023年7月13日

参加人:全班人员

内  容:

Ansible自动化运维工具

目录

一、Ansible概述

二、Ansible特点

三、Ansible应用

(一)使用者

(二)Ansible工具集合

(三)作用对象

四、Ansible的搭建

五、Ansible配置

六、Ansible命令

(一)ansible

(二)Ansible-doc

(三)ansible-playbook

(四)ansible-console

七、Ansible模块

(一)command模块

(二)shell模块

(三)raw模块

(四)copy模块

(五)hostname模块

(六)yum模块

(七)service模块


、Ansible概述

Ansible是最近非常火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误;

Ansible可以通过本身集成的非常丰富的模块实现各种管理任务,其自带模块数量已超过上千个,更为重要的是,它的操作非常简单,即使新手也比较容易上手;

Ansible提供的功能却非常丰富,在运维领域,几乎可以实现任何事情。目

前属于RedHat公司产品,官方地址:

Ansible is Simple IT Automation。

二、Ansible特点

Ansible自2012年发布以来,很快在全球流行!

其特点表现如下:

1、基于python开发,运维工程师对其二次开发相对容易;

2、拥有丰富的内置模块,基本可以满足一切要求;

3、管理模式非常简单,一条命令可以影响上千台机器;

4、无客户端模式设计,底层基于SSH通信;

5、Ansible发布后也陆续被AWS,Google,Cloud Platfrom,Microsoft Azure,Cisco,HP,VMware,Twitter等大公司接纳并投入使用。

三、Ansible应用

Ansible没有客户端,也不需要在被管理主机添加任何代理程序,通过SSH完成底层通信,而SSH在Linux的发型版本中默认已经安装并启用,而在Windows系统下则依赖于PowerShell。

Ansible要求管理端必须是Linux系统,在管理节点通过应用模块将指令发送到被管理主机上,并在执行完毕后自动删除产生的临时文件,根据Ansible使用过程中不同角色,可将其分为三个部分:

1、使用者如何使用Ansible实现自动化运维?

2、Ansible的工具集,Ansible可以实现的功能?

3、作用对象,Ansible可以影响哪些主机?

(一)使用者

如图所示:Ansible使用者可以采用多种方式和Ansible交互,图中我们展示了四种方式

CMDB:CMDB系统存储和管理着企业IT架构中的各种配置信息,是构建ITL项目核心工具,运维人员可以组合CMDB和Ansible,通过CMDB直接下发指令调用Ansible工具完成操作者所希望达到的目标。

PUBLIC/PRIVATE方式:Ansible除了丰富的内置模块外,同时提供丰富的API语言接口,如PHP,Pythone,PERL等多种流行语言,基于PUBLIC/PRIVATE,Ansible以API调用的方式运行。

Ad-Hoc命令集:Users直接通过Ad-Hoc命令集调用Ansible工具来完成工作。

Playbooks:Users预先编写好Ansible Playbooks,通过执行Playbooks中预先编排好的任务集按序执行命令。

(二)Ansible工具集合

Ansible工具集合了inventoryMoudles,Plugins和API。其中:

inventory用来管理设备列表,可以通过分组(不同的业务)实现,对组的调用直接影响组内所有的主机;Moudles是各种执行模块,几乎所有的管理任务都是通过模块来执行的;Plugins提供了各种附加功能;API为编程人员提供了一个调用接口,可以做Ansible的二次开发具体表现如下:

1、Ansible Playbook:任务脚本,编排定义Ansible任务集的配置文件,由Ansible按序依次执行,通常是JSON格式的YML/YAML文件;

2、inventory:Ansible管理主机清单;

3、Moudle:Ansible执行命令功能模块,多数为内置的核心模块也可以用户自定义;

4、Plugins:模块功能的补充,如连接类型插件,循环插件,变量插件,过滤插件等,该功能不常用;

5、API:提供第三方程序调用的应用程序编程接口;

Ansible:该部分图中表示的,组合inventory,API,Moudles,Plugins可以理解为Ansible命令工具其核心执行工具。

(三)作用对象

Ansible的作用对象不仅仅是Linux和非Linux操作系统的主机,也可以作用于各类PUBLIC/PRIVATE,商业和非商业设备的网络设施。

使用者使用Ansible或Ansible-playbooks时,在服务器终端输入Ansible的Ad-Hoc命令集或playbooks后,Ansible会遵循预先定义安排的规则将Playbooks逐步拆解为Play,再将Play组织成Ansible可以识别的任务,随后调用任务涉及的所有模板和插件,根据inventory中自定义的主机列表通过SSH将任务集以临时文件或命令的形式传输给远程客户端执行并返回执行结果,如果是临时文件则执行完毕后自动删除。

四、Ansible的搭建

接下来我们来学习Ansible的安装和部署。Ansible的安装部署非常简单,以RPM安装为例,配置好阿里云的yum源直接安装就可以了,Ansible的管理端只能是Linux,如Redhat,Debian,CentOS。下面介绍在CentOS7.x上安装部署Ansible:

实验环境:

服务器准备:

角色

ip地址

主机名

Ansible

192.168.59.137

huyang1

Client

192.168.59.138

huyang2

Client

192.168.59.140

huyang3

环境配置:【所有服务器操作】

1、关闭防火墙

systemctl stop firewalld

iptables -F

setenforce 0

2、配置免密登录

【huyang1】ssh-keygen

【huyang1】ssh-copy-id 192.168.59.138

【huyang1】ssh-copy-id 192.168.59.140

登录测试:

【huyang1】ssh 192.168.59.138

【huyang1】ssh 192.168.59.140

五、Ansible配置

步骤一:下载安装ansible软件

yum -y install ansible

步骤二:修改配置文件

vim /etc/ansible/hosts

修改配置如下:

步骤三:ping测试;批量显示hu组中的磁盘使用情况

ansible -i /etc/ansible/hosts hu -m ping

ansible hu -m command -a "df -hT" 不指定IP地址

ansible hu -m command -a "df -hT"  --limit 192.168.59.138   指定IP地址

也可以:不指定组、但指定ip地址(在组内)

ansible 192.168.59.138 -m command -a "df -hT"  

六、Ansible命令

Ansible的维护命令大多以ansible开头,在终端输入ansible后连续按两次tab键,会补全所有以ansible字母开头的命令,下面介绍Ansible的一些常用命令。

(一)ansible

Ansible是生产环境中使用非常频繁的命令之一,

主要在以下场景应用:

1、非固化需求;

2、临时一次性操作;

3、二次开发接口调用;

非固化需求指临时性的维护,如查看hu服务器组的磁盘使用情况,复制一个文件到其他机器等,类似这些没有规律的,临时需要做的任务,我们称为非固化需求,临时一次性操作。

语法:ansible <host-pattern> [options]

可用选项如下:

-v(--verbose):输出详细的执行过程信息,可以得到执行过程所有信息;

-i PATH(inventory=PATH):指定inventory信息,默认为/etc/ansible/hosts;

-f NUM(--forks=NUM):并发线程数,默认为5个线程

--private-key=PRIVATE_KEY_FILE:指定密钥文件

-m NAME,--moudle-name=NAME:指定执行时使用的模块

-M DIRECTORY(--module-path=DIRECTORY):指定模块存放路径,默认为/usr/share/ansible,也可以通过ANSIBLE_LIBRARY设定默认目录

-a ARGUMENTS(--args=ARGUMENTS):指定模块参数

-u USERNAME(--user=USERNAME):指定远程主机USERNAME运行命令

-l subset(--limit=SUBSET):限定运行主机

--list-hosts:列出符合条件的主机列表,不执行任何命令

实验:(当前组内只有2个服务器)

1.检查所有主机是否存活,ping服务器,同时ping!

ansible all -f 5 -m ping   

ansible all -m ping  两者效果一样,默认同时ping5个

2.列出hu组中所有主机列表

ansible hu --list-host

Ansible的返回结果非常友好,一般会用三种颜色执行结果:

红色,绿色和橘黄色,其中:

红色表示执行过程中有异常

橘黄色表示命令执行后目标有状态变化

绿色表示执行成功且没有对目标机器做修改

(二)Ansible-doc

ansible-doc用来查询ansible模块文档的说明,类似于man命令,针对每个模块都有详细的用法说明及应用案例介绍:

ansible-doc -l #查看总帮助

ansible-doc -s shell #查看shell模块的帮助

ansible-doc -s raw

语法:ansible-doc [options] [module……]

实验:

1.列出支持的模块

ansible-doc -l

2.查询ping模块的说明信息

ansible-doc ping   类似于ansible-doc -s ping 

(三)ansible-playbook

Ansible-playbook是日常应用中使用频率最高的命令,类似于Linux系统中的sh或source命令,用来执行系列任务,其工作机制是:

通过读取编写好的playbook文件实现集中处理任务,ansible-playbook命令后跟yml或者yaml格式playbook文件,playbook文件存放了要执行的任务代码,命令使用方式如下

语法:ansible-playbook playbook.yml

ansible-playbook需要之前编译好、建议写playbook.yml文件的绝对路径

此处为重点,将在明天的文章中体现!!!

(四)ansible-console

 ansible-console是ansible为用户提供的一款交互式工具,类似于Windows中的cmd以及Linux中的shell;

用户可以在ansible-console虚拟出来的终端上做像shell一样使用ansible内置的各种命令;

这为习惯于使用shell交互方式的用户提供了良好的体验,在终端输入ansible-console命令后显示如下:

所有操作与shell类似,而且支持Tab键补全,按快捷键Ctrl+D或Ctrl+C或exit即可退出当前的虚拟终端。

七、Ansible模块

(一)command模块

command模块在远程主机执行命令,但是不支持管道,重定向等shell的特征,常用参数如下(不支持管道,不建议使用):

chdir:在远程主机上运行命令前要提前进入的目录;

creates:在命令运行时创建一个文件,如果文件已经存在,则不会创建任务;

removes:在命令运行时移除一个文件,如果文件不存在,则不会执行移除任务;

executable:指明运行命令的shell程序。

实验:

新建文件,可以成功,但是在重定向和使用管道符统计信息时,command模块不支持!

(二)shell模块

shell模块在远程主机执行命令,相当于调用远程主机的shell进程,然后在该shell下打开一个子shell运行命令,和command模块的区别:

它支持shell特征,如管道,重定向等

实验

1、重定向(单个ip和一组)

ansible 192.168.59.138 -m shell -a "echo hello > 1.txt"

ansible hu -m shell -a "echo hello > 1.txt"

2、测试管道符

ansible Rich -m shell -a “ifconfig ens32 | awk ‘NR==2{print $2}’”

       通过上述实验可以得知,shell模块相比于command,在command的使用基础上,支持重定向和管道符;但是ansible在使用过程中也有一些短处,如上实验,在选择显示ip地址时,ansible只能显示当前行,却不能选择列。

(三)raw模块

最原始的方式运行命令(不依赖python,仅通过ssh实现)

实验:

清除yum缓存

ansible hu -m raw -a "yum clean all"

ansible hu -m shell -a "yum clean all"

相比与使用shell有一些区别

(四)copy模块

copy模块用于复制指定主机文件远程主机的指定位置,常见参数如下:

dest:指出复制文件的目标目录位置,使用绝对路径。如果源是目录,指目标也要是目录,如果目标文件已经存在会覆盖原有内容。

src:指出源文件的路径,可以使用相对路径或绝对路径,支持直接指定目录,如果源是目录则目标也要是目录

mode:指出复制时,目标文件的权限 可选

owner:指出复制时,目标文件的属主 可选

group:指出复制时,目标文件的属组 可选

content:指出复制到目标主机上的内容,不能与src一起使用,相当于复制content指明的数据到目标文件中

特别提示:

参数:backup=yes===>意思是,如果目标路径下,有与我同名但不同内容的文件时,在覆盖前,对目标文件先进行备份。

所有被管理端节点必须安装libselinux-python包

实 验:

hu组中主机的/root/a.txt文件拷贝到/root

指定权限为777 属主为root 属组为root

ansible hu -m copy -a "src=/root/a.txt dest=/root mode=777 owner=root group=root"

(五)hostname模块

hostname模块用于管理远程主机上的主机名,常用参数如下

name:指明主机名

实验:

更改huyang2(192.168.59.138)的主机名为hu

 ansible 192.168.59.138 -m hostname -a "name=hu"

(六)yum模块

yum模块基于yum机制,对远程主机管理程序包,常用参数如下:

name:程序包的名称,可以带上版本号,如不指定版本号默认安装为最新版本;

state=present | latest | absent:指明对程序包执行的操作,present表示安装程序包latest表示安装最新版本的程序包absent表示卸载程序包

disablerepo:在用yum安装时禁用某个仓库的ID;

enablerepo:在用yum安装时启用某个参考的ID;

conf_file:yum运行时的配置文件而不是使用默认的配置文件;

diable_gpg_check=yes | no:是否启用完整性校验功能。

实验

注意实验前要在服务器端配置yum仓库

管理员只是发送yum命令道被管理端,被管理端要存在可用的yum仓库才可以成功安装

1. client端yum安装httpd,安装需要时间

 ansible hu -m yum -a "name=httpd state=present"

(七)service模块

service模块为用来管理远程主机上的服务的模块,常见参数如下:

name:被管理的服务名称

state=started | stopped | restarted:动作包含启动关机或重启

enabled=yes | no:表示是否设置该服务开机自启动

runlevel:如果设定了enabled开机自启动,则要定义在哪些运行目标下自启动

实验

启动httpd服务并设置为开启自启动

服务器端准备操作 #如果没有需要进行安装

ansible hu -m service -a "name=httpd state=started enabled=yes"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/757343.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Cloud Alibaba 整合 Nacos 实战

Spring Cloud Alibaba 整合 Nacos 实战 一、Nacos的服务注册和发现机制1. Nacos 的服务注册和发现机制可以分为以下几个步骤&#xff1a;1.1. 服务注册&#xff1a;1.2. 服务发现&#xff1a;1.3. 心跳机制&#xff1a;1.4. 服务下线&#xff1a; 2. Nacos 的服务注册和发现机制…

【burpsuite安全练兵场-客户端15】基于DOM的漏洞-7个实验(全)

前言&#xff1a; 介绍&#xff1a; 博主&#xff1a;网络安全领域狂热爱好者&#xff08;承诺在CSDN永久无偿分享文章&#xff09;。 殊荣&#xff1a;CSDN网络安全领域优质创作者&#xff0c;2022年双十一业务安全保卫战-某厂第一名&#xff0c;某厂特邀数字业务安全研究员&…

python接口自动化(三十八)-python操作mysql数据库(详解)

简介 现在的招聘要求对QA人员的要求越来越高&#xff0c;测试的一些基础知识就不必说了&#xff0c;来说测试知识以外的&#xff0c;会不会一门或者多门开发与语言&#xff0c;能不能读懂代码&#xff0c;会不会Linux&#xff0c;会不会搭建测试系统&#xff0c;会不会常用的数…

STL容器 -- vector的模拟实现(配详细注释)

目录 一、vector容器是什么&#xff1f;二、vector的模拟实现2.1 vector的成员变量2.2 构造函数2.2.1 无参构造函数2.2.2 有参构造函数 2.3 拷贝构造函数2.4 赋值重载函数2.5 析构函数2.6 reserve函数2.7 resize函数2.8 insert函数2.9 erase函数2.10 push_back和pop_back函数2.…

数据结构05:树与二叉树[C++][线索二叉树:先序、后序]

图源&#xff1a;文心一言 本篇博文含{先序线索化的代码与后序线索化的代码}&#xff0c;由于模板字数限制&#xff0c;中序线索化的代码及线索化的原理简介在上一篇博文~&#x1f95d;&#x1f95d; 数据结构05&#xff1a;树与二叉树[C][线索二叉树&#xff1a;中序]_梅头脑…

Linux 系统编程-开发环境(一)

目录 1 shell 1.1 shell 家族 1.2 bash 1.3 命令和路径补齐 1.4 历史记录 1.5 主键盘快捷键 1.6 演示 2 目录和文件 2.1 类Unix系统目录结构 2.2 用户目录 2.2.1 相对路径和绝对路径 2.3 ls 2.4 cd 2.5 which 2.6 pwd 2.7 mkdir 2.8 rmdir 2.9 touch 2.10…

在AndroidStudio中开发系统APP

1.AndroidStudio项目中调用系统API AndroidStudio项目中调用系统API&#xff08;比如调用 UnsupportedAppUsage 的方法&#xff09;&#xff0c;需要引入系统framework.jar包。 第一步如下图&#xff0c;fremework.jar 放在app/systemjar/目录下 第二步&#xff0c;在app下的…

Win10点击任务栏搜索、日历无响应

现象描述 点击Win10任务搜索栏和日历均无响应 解决方法 1、无响应应该是程序发生了异常&#xff0c;通过Windows日志产看器发现是KERNELBASE.dll模块发生了0x88985004异常。 2&#xff0c;查看错误代码含义 3&#xff0c;在微软社区查看此类问题&#xff0c;重点关注与字…

RocketMQ快速使用基础

1. RocketMQ 介绍 RocketMQ作为一款纯java、分布式、队列模型的开源消息中间件&#xff0c;支持事务消息、顺序消息、批量消息、定时消息、消息回溯等 前身是MetaQ&#xff0c;是阿里研发的一个队列模型的消息中间件&#xff0c;后开源给apache基金会成为了apache的顶级开源项目…

基于SaaS模式的Java基层卫生健康云HIS系统源码【运维管理+运营管理+综合监管】

云HIS综合管理平台 一、模板管理 模板分为两种&#xff1a;病历模板和报表模板。模板管理是运营管理的核心组成部分&#xff0c;是基层卫生健康云中各医疗机构定制电子病历和报表的地方&#xff0c;各医疗机构可根据自身特点特色定制电子病历和报表&#xff0c;制作的电子病历…

【Kubernetes运维篇】RBAC之创建集群用户管理K8S

文章目录 一、创建zhangsan集群用户赋予uat名称空间管理员权限二、创建lisi集群用户赋予查看所有名称Pod权限 需求&#xff1a;公司新入职两位运维同事&#xff0c;分别是zhangsan、lisi&#xff0c;刚入职肯定不能给K8S管理员权限&#xff0c;所以需要创建两个系统账号&#x…

【电路原理学习笔记】第3章:欧姆定律:3.2 电流的计算

第3章&#xff1a;欧姆定律 3.2 电流的计算 电流相关欧姆定律公式&#xff1a; I V R I\frac{V}{R} IRV​ 【例3-3】图3-6所示电路中有多少安培的电流&#xff1f; 【解】 I V R 100 V 220 Ω 0.455 A I\frac{V}{R}\frac{100\rm V}{220\rm Ω}0.455\rm A IRV​220Ω100V…

常用API学习02(Java)

Object 在java中,Object是类层次中的根类&#xff0c;即Object是所有类的父类-任何类都是 object的子类。任何一个类的对象都可以使用object来声明。 类<?> getClass() 返回此object的运行 int hashCode() 返回对象的哈希码 protected Object clone() 创…

Day53| 1143.最长公共子序列、1035.不相交的线 、 53. 最大子序和 动态规划

1143.最长公共子序列 1.题目&#xff1a; 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 &#xff0c;返回 0 。 一个字符串的 子序列 是指这样一个新的字符串&#xff1a;它是由原字符串在不改变字符的相对顺…

SEED实验复现

SEED 项目由雪城大学教授杜文亮于 2002 年启动雪城大学。它由美国总共1万美元资助 美国国家科学基金会。现在&#xff0c;SEED 实验室正在被超过 全球数千个研究所。SEED 代表 &#xff08;SEcurity EDucaton&#xff09;。 https://github.com/seed-labs/seed-labs 该项目使用…

深度学习实战42-基于大模型开发MathGPT的原理介绍,让数学问题智能解答变为可能

大家好,我是微学AI,今天给大家介绍一下深度学习实战42-基于大模型开发MathGPT的原理介绍,让数学问题智能解答变为可能。在去年ChatGPT的发布后,各种国内外的大语言模型层出不穷涌现,但是大家都知道现在的模型的诟病的数学能力不足,就算是简单的数学题都可能算错,今天我就…

spring boot面向切面编程aop

一、什么是AOP AOP&#xff0c;Aspect Oriented Programming&#xff0c;面向切面编程 举个例子来理解 如果我们的业务需要额外做三件事情&#xff0c;判断是否已经登录&#xff0c;记录日志&#xff0c;统计业务执行时长 传统的做法是这样子的&#xff1a; 而apo的实现是这…

vue2的数据数据双向绑定

遍历data里面的属性&#xff0c;通过Object.defineProperty的set方法监听属性值的变化&#xff0c;最后通知视图更新 先问自己两个问题&#xff1a; 1.app.message修改数据的时候&#xff0c;Vue内部是如何监听message数据发生改变的 使用Object.defineProperty ->监听对…

概率论的学习和整理17:EXCEL里直接对应的分布公式计算概率(未完成)

1EXCEL计算这些特殊分布的方差 1.1 用原始的概率&#xff0c;期望和方差的方法 虽然计算概率&#xff0c;需要用对应分布的公式P(xn) 想了解的随机变量是总次数n&#xff0c;需要对应几何分布&#xff0c;负二项分布P(xk) 想了解的随机变量是成功次数k&#xff0c;需要对应超几…

算法竞赛,机器学习,深度学习ai学习方向如何规划,搭建环境等答疑

目录 1了解人工智能的背景知识 2 补充数学或编程知识 3 熟悉机器学习工具库 4 系统的学习人工智能 5 动手去做一些AI应用 1了解人工智能的背景知识 本文可以让你避免踩坑走弯路&#xff0c;一些虽然存在但是在研究或者工业上不常用的知识&#xff0c;为自己腾出更多的时间…