运维自动化之——Ansible

目录

一、自动化运维

1、通过xshell实现自动化运维

2、Ansible简介

3、Ansible特点及优势

4、Ansible核心程序

5、Ansible工作原理及流程

6、部署Ansible自动化运维工具

7、Ansible常用模块

①ansible命令模块

②command模块

③shell模块

④cron模块

⑤user模块

⑥grup模块

⑦copy模块

⑧file模块

⑨hostname模块

⑩ping模块

11、yum模块

12、service/system模块

13、script模块

14、setup模块

8、hostsinverntory主机清单

①inventory中的变量含义

②主机变量使用

③组变量的使用

④组嵌套的使用


一、自动化运维

1、通过xshell实现自动化运维

xshell提供会话窗口同步发送命令功能,但是必须将多台机器同时通过xshell窗口连接然后输入命令,如下点击xshell的工具---发送输入--到所有窗口或者指定窗口。

2、Ansible简介

Ansible是基于模块工作的,只是提供了一种运行框架,本身没有完成任务的能力,真正操作的是Ansible的模块。每个模块都是独立的,实现了批量系统配置,批量成熟部署,批量运行命令等功能。

3、Ansible特点及优势

优势:

①轻便性:无需在被控制服务器上安装客户端,Ansible基于ssh协议

②幂等性:大部分模块有幂等性,即如果输入systemctl stop firewalld当发现要停止的服务已经停止就不会做任何操作了,多次停止不会改变结果。systemctl restart是非幂等性的。

③判断性:大部分模块在执行时候都会判断目标节点是否要执行任务,所有重复执行某个任务大部分时间不会产生副作用。

④简洁性:一个窗口即可管理所有需要控制的机器,无需开启多个窗口。

特点:

①部署简单,只需要主控端部署Ansible环境,被控端无需做任何操作:

②默认使用SSH协议设备进行管理

③主从集中化管理

④配置简单,功能强大,扩展性强

⑤支持API及自定义模块,可以通过python轻松扩展

⑥通过playbooks来定制强大的配置,状态管理

⑦对云平台和大数据都有很好的支持

4、Ansible核心程序

①Hostlnventory:记录由Ansible管理的主机信息,端口,ip,密码等

②playbooks:剧本YAML格式文件,多任务定义在一个文件中,定义主机需要调用那些模块完成功能。

③core modeules:核心模块主要操作通过调用核心模块来完成管理任务

④customodules:自定义模块,完成核心模块无法完成的模块,支持多种语言编写

⑤connectiontugins:连接插件,ansible和主机通信使用

5、Ansible工作原理及流程

①加载自己的配置文件,默认/etc/ansible/ansible.cfg

②查找对应的主机的配置文件,找到要执行的主机或组/etc/ansible/hosts文件

③加载自己对应的模块文件,如command,yum,ping

④通过ansible将模块命令生成对应的临时py文件,并将该文件传输至管理端

⑤传输到在被控制端的对应用户的家目录下.ansible/tmp/xxx/xxx.py

⑥被控制端给传输过来的py文件加执行权限

⑦执行并返回结果,执行完成后删除py文件并sleep 0 退出

6、部署Ansible自动化运维工具

yum install  -y epel-release 
#安装epel-release
yum install -y  ansible
#安装ansible
#配置文件位置:/etc/ansible/ansible
#hosts文件位置:/etc/ansible/hosts
vim /etc/ansible/hosts
#编辑hosts文件添加被管理的机器,内容如下
[webservers]
192.168.170.113
192.168.170.114
#[webservers]为一个组,组内2个服务器,添加完毕保存退出
ssh-keygen
#生成公钥,输入命令输入4个回车即可
cd ~/.ssh
ssh-copy-id -i   192.168.170.113
ssh-copy-id -i   192.168.170.114
#进入生成的公钥路径将公钥传输给备管理的服务器,传输需要输入每台备管理服务的root密码
ansible ansible-doc  -l 
#安装完毕,此命令可以查看有哪些ansible模块,按q退出
ansible  webservers  -m command  -a 'pwd'
#安装完成尝试管理webservers组输入pwd命令
ansible  all   -a 'ls'
#安装完成尝试管理所有hosts中主机输入ls命令,不指定模块默认为command模块
ansible  192.168.170.113  -m -a 'ls'
#安装完成尝试管理192.168.30.12服务器输入pwd命令

7、Ansible常用模块

①ansible命令模块

命令格式:ansible <组名>/ip -m <模块> -a<参数列表>

ansible-doc -s 模块

#  -s列出指定模块的描述信息和操作动作

②command模块

此模块不能使用管道符和重定向,指定模块默认为commend模块

举例:ansible  webservers   -m   command   -a  'date'

#调用command模块在192.168.30.11服务器上执行ls命令,若不指定则默认为command模块

③shell模块

用远程主机的shell模块,打开一个子shell进行命令操作,支持管道符和重定向

举例:ansible webservers -m shell -a 'ifconfig ens33 |awk "NR==2{print \$2}"'
#提取webservers组中的所有ip地址,注意双引号不识别变量所以要加转义符\

④cron模块

远程主机定义计划任务,两种状态present(添加)和absent(移除),默认为present。

常用参数:minute/hour/day/month/weekday:分时日月周

job:任务计划要执行的命令

name:任务计划的名称

举例:

ansible  webservers -m cron  -a 'name=crontest hour="*/12"  day="*/1" job="/usr/bin/echo   cron test "   ' 

        ansible webservers -m cron -a "name=crontest  state=absent"

⑤user模块

用户管理模块

常用参数:name:用户名;shell:用户默认shell;uid:指定用户uid;group:指定用户基本组

                 state:账户状态present增加/absent删除;system:是否为系统用户yes/no;

                 move_home:yes/no若创建用户的家目录存在是否移动;

                remove:yes/no当state=absent时是否删除家目录;

                passwd:指定用户的密码;comment:用户的注释信息

举例:ansible webservers -m user -a 'name="crontest"  uid="10086"  group="root"'

           ansible webservers -m user -a 'name=crontest    state=absent  remove=yes

⑥grup模块

用户组模块

常用参数:name:组别名 gid:组gidsystem:是否为系统组

⑦copy模块

复制文件或输出内容到被控制器上

常用参数:

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

owner:指出复制时,目标文件的属主(对面无此组或此主会报错)

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

dest=‘路径’:目标文件路径

src=‘路径’:源文件路径

content=‘字符串内容’:将字符串内容复制到到目标文件中,等于重定向即覆盖,不能与src同用

举例:       ansible webservers -m copy   -a "src=/a.txt  dest=/opt/"

                  ansible webservers -m copy   -a 'content="123456"  dest=/opt/a.txt'

⑧file模块

文件属性管理模块

常用参数:owner:文件的属主;group:文件属组;mode:文件权限;path:文件路径

指定的属主和属组不存在会报错

举例:ansible  webservers  -m  file  -a  'ower=lhj group=lhj mode=777 path=/opt/a.txt' 

⑨hostname模块

修改被控制端的主机名

参数:name:指定被控端的主机名

举例:ansible  webservers -m hostname -a "name=ansible"

⑩ping模块

检测ansible与被控端的网络连通性

举例:ansible  webservers  -m ping 

11、yum模块

在远程主机上yum安装与卸载软件包

常用参数:name:指定要安装卸载的软件;state=present/absent,默认persent添加,absent卸载

举例:ansible   webservers  -m  yum  -a  "name=httpd"

12、service/system模块

管理远程被控制主机上的管理服务的运行状态

常用参数:name=名称:管理的服务名称

enable=true/false设置服务开机自启或者关闭

state=start/stop/restart设置服务的状态为开始/关闭/重启

enable=yes/no 设置是否开机自启:runlevel:若设置开机自启则要设置在那些系统等级使用

举例:ansible web -m service -a "enable=yes name=httpd state=started"

13、script模块

实现远程批量运行本地的shell脚本

ansible服务器:
vim  /test.sh
#编写/下的test.sh脚本内容如下
#!/bin/bash
echo  "this is test"
chmod +x /test.sh
ansible webservers -m script -a "/test.sh"

14、setup模块

setup模块可以获取这些信息facts组件收集d被管理节点信息

参数:filter过滤可配合正则表达式

ansible web -m setup -a “filter=ipvv

8、hostsinverntory主机清单

hosts配置文件位置:/etc/ansible/hosts:

lnventory支持对主机进行分组,每个组内可以定义多个主机,每个主机都可以定义任何一个或者多个主机组内。

①inventory中的变量含义

ansible_host            ansible连接节点时的IP地址
ansible_port            连接对方的端口号,ssh连接时默认为22
ansible_user           连接对方主机时使用的主机名。不指定时,将使用执行ansible或ansible-playbook命令的用户

ansible_password                           连接时的用户的ssh密码,仅在未使用密钥对验证的情况下有效
ansible_ssh_ private_key_file         指定密钥认证ssh连接时的私钥文件
ansible_ssh_common_args            提供给ssh、sftp、 scp命令的额外参数
ansible become                               允许进行权限提升
ansible become_ method                指定提升权限的方式,例如可使用sudo/ su/runas等方式
ansible become_user                      提升为哪个用户的权限,默认提升为root
ansible_become_password            提升为指定用户权限时的密码
 

②主机变量使用
写法1:
[webservers]
192.168.30.11 ansible_port=22 ansible_user=root ansible_password=abc123
192.168.30.12 ansible_port=22 ansible_user=root ansible_password=abc123
#webservers组中被控制端192.168.30.11的端口号为22登录时用户是root密码为abc123
写法2:
[webservers]
192.168.30.1[1:2] ansible_port=22 ansible_user=root ansible_password=abc123
#如果是名称类似的主机,可以使用列表的方式标识各个主机
写法3:
[webservers]
192.168.30.11:22
192.168.30.12:22
#默认ssh管理时的端口为22,若不是22则直接在被管理ip后加冒号和对应端口号
③组变量的使用
[webservers:vars]     
ansible_user=root
ansible_password=abc123
#表示webservers 组内所有主机定义变量控制时使用root账户密码为abc123
[all:vars]       
ansible_port=22
#表示为所有组的所有主机定义变量使用ssh远程管理时都是22端口
④组嵌套的使用
#nginx组
[nginx]
192.168.30.11
192.168.30.12
#httpd组
[httpd]
192.168.30.13
192.168.30.14
#组内嵌为web
[web:children]
nginx
httpd
#表示web组的成员即children的直译‘孩子’包括nginx和httpd组

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

idea配置自定义注释模版和其他模板

项目场景&#xff1a; idea配置自定义模版 自定义注释模版其他模板&#xff0c;包括syso快捷键&#xff0c;swith快捷键等 自定义注释模版 1、File and Code Templates 第一种类创建完后头部自动生成注释模板 打开idea&#xff0c;选择 Settings--> Editor--> File a…

性能测试-数据库

一、数据库事务机制 ACID描述 1、原子性Atomicity&#xff1a;事务通常由多个语句组成。原子性保证将每个事务视为一个“单元”&#xff0c;该事务要么完全成功&#xff0c;要么完全失败 2、一致性Consistency&#xff1a;“一致”是指数据库中的数据是正确的&#xff0c;不存…

数据结构之单链表及其实现!

目录 ​编辑 1. 顺序表的问题及思考 2.链表的概念结构和分类 2.1 概念及结构 2.2 分类 3. 单链表的实现 3.1 新节点的创建 3.2 打印单链表 3.3 头插 3.4 头删 3.5 尾插 3.6 尾删 3.7 查找元素X 3.8 在pos位置修改 3.9 在任意位置之前插入 3.10 在任意位置删除…

深入解析CAS的原理机制

一、基本概述 1.1 引入背景 例&#xff1a;i。假设由线程A和B需要对i进行加1的操作。线程A和线程B会分别从主内存中读取i值到自己的工作内存中。原本相加之后的值为3&#xff0c;但线程A和线程B分别加1后将值刷新到主内存&#xff0c;发现主内存的值为2&#xff0c;出现错误。…

学c还行,学Python很累,还有其他语言适合我吗?

学c还行&#xff0c;学Python很累&#xff0c;还有其他语言适合我吗&#xff1f; 在开始前我分享下我的经历&#xff0c;我刚入行时遇到一个好公司和师父&#xff0c;给了我机会&#xff0c;一年时间从3k薪资涨到18k的&#xff0c; 我师父给了一些 电气工程师学习方法和资料&a…

新建项目module,但想归到一个目录下面

1. 想建几个module, 例如 component-base-service,component-config-service, 但是module多了会在CloudAction下面显示很多目录, 所以想把它们归到components模块下面去, 类似于下图的效果 2. 创建过程 右击CloudAction 新建 module -> 选maven类型 输入components, 建成后删…

【目标检测经典算法】R-CNN、Fast R-CNN和Faster R-CNN详解系列二:Fast R-CNN图文详解

RCNN算法详解&#xff1a;【目标检测经典算法】R-CNN、Fast R-CNN和Faster R-CNN详解系列一&#xff1a;R-CNN图文详解 学习视频&#xff1a;Faster RCNN理论合集 Fast RCNN 概念辨析 1. RoI 在Fast R-CNN中&#xff0c;RoI&#xff08;Region of Interest&#xff0c;感兴…

Spring多线程事务处理

一、背景 本文主要介绍了spring多线程事务的解决方案&#xff0c;心急的小伙伴可以跳过上面的理论介绍分析部分直接看最终解决方案。 在我们日常的业务活动中&#xff0c;经常会出现大规模的修改插入操作&#xff0c;比如在3.0的活动赛事创建&#xff0c;涉及到十几张表的插入…

使用DateUtil工具类偏移日期

使用DateUtil工具类偏移日期 一、依赖二、源码三、示例代码 一、依赖 <!--工具依赖--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version></dependency>二、源码 …

Python常用图片数据方法

文章目录 1. 常用图片数据类型2. 图片的显示2.1 plt.imshow()2.2 使用 turtle 来绘制图片 3.图片ndarray数据的常用切片操作使用 cv2 来读取图片打印数据R G B 通道的获取BGR 转成 RGBcv2 不支持中文路径的解决方法 4 PIL.Image 转成 QImage 或 QPixmap 1. 常用图片数据类型 使…

Android基础开发-通讯录的添加和查询

案例&#xff1a;往手机通讯录添加信息&#xff0c;输入姓名和手机号。 保存的手机的表&#xff1a;一共有两个&#xff0c;一个是主表&#xff0c;提供一个联系人id&#xff0c;另外是辅表&#xff0c;提供id对应的手机号和姓名。 普通操作&#xff1a;一个表一个表的添加 …

【黑马程序员】python函数

文章目录 函数什么是函数为什么学习函数函数定义函数的传入参数函数的返回值返回值基础None返回值 函数说明文档函数的嵌套调用定义代码示例 全局变量和局部变量全局变量global变量局部变量 函数综合案例 函数 什么是函数 组织好的&#xff0c;可重复使用的、用来实现特定功能…

【每日八股】Java基础经典面试题2

前言&#xff1a;哈喽大家好&#xff0c;我是黑洞晓威&#xff0c;25届毕业生&#xff0c;正在为即将到来的秋招做准备。本篇将记录学习过程中经常出现的知识点以及自己学习薄弱的地方进行总结&#x1f970;。 本篇文章记录的Java基础面试题&#xff0c;适合在学Java基础的小白…

设计模式系列之-策略模式(优化过多代码if…else)

首先解释下什么策略模式 如下图&#xff1a; 简而言之&#xff1a;算法的使用与算法的实现分离开来 想象有一个开关按钮&#xff0c;每次按下去都可以切换不同的灯光模式&#xff08;例如&#xff1a;强光、柔光、闪烁&#xff09;&#xff0c;这里的每种灯光模式就是一个策略…

程序人生——Java中基本类型使用建议

目录 引出Java中基本类型使用建议建议21&#xff1a;用偶判断&#xff0c;不用奇判断建议22&#xff1a;用整数类型处理货币建议23&#xff1a;不要让类型默默转换建议24&#xff1a;边界、边界、还是边界建议25&#xff1a;不要让四舍五入亏了一方 建议26&#xff1a;提防包装…

Unity类银河恶魔城学习记录8-5 p81 Blackhole duration源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码、 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Blackhole_Skill_Controller.cs using System.Collections; using Syste…

UL1642标准_锂聚合物电池亚马逊测试报告

UL1642标准_锂聚合物电池亚马逊测试报告 什么是锂聚合物电池UL1642标准&#xff1f; UL1642 认证要求涵盖旨在用于技术人员可更换或用户可更换应用的锂离子电池。UL1642 认证要求是为了避免锂离子电池在产品中工作时发生火灾或爆炸的风险。 锂聚合物电池 UL是Underwriters L…

Devin:首位人工智能软件工程师的介绍

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

2024春招看了上百份程序员简历,这个工具写的简历最好!(附模板)

你们在制作简历时&#xff0c;是不是基本只关注两件事&#xff1a;简历模板&#xff0c;还有基本信息的填写。 当你再次坐下来更新你的简历时&#xff0c;可能会发现自己不自觉地选择了那个“看起来最好看的模板”&#xff0c;填写基本信息&#xff0c;却没有深入思考如何使简历…

DataWhale公开课笔记2:Diffusion Model和Transformer Diffusion

Stable Diffusion和AIGC AIGC是什么 AIGC的全称叫做AI generated content&#xff0c;AlGC (Al-Generated Content&#xff0c;人工智能生产内容)&#xff0c;是利用AI自动生产内容的生产方式。 在传统的内容创作领域中&#xff0c;专业生成内容&#xff08;PGC&#xff09;…