运维自动化之——Ansible

news2024/11/23 20:27:45

一、自动化运维

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"

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

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

相关文章

TSINGSEE青犀视频AI方案:数据+算力+算法,人工智能的三大基石

背景分析 随着信息技术的迅猛发展&#xff0c;人工智能&#xff08;AI&#xff09;已经逐渐渗透到我们生活的各个领域&#xff0c;从智能家居到自动驾驶&#xff0c;从医疗诊断到金融风控&#xff0c;AI的应用正在改变着我们的生活方式。而数据、算法和算力&#xff0c;正是构成…

安装Android Studio遇到Unable to access Android SDK add-on list的错误

第一次安装android studio的时候&#xff0c;提示&#xff1a;unable to access Android sdk add-on list 解决办法 这个错误一般是android studoi代理没有设置导致的&#xff0c;需要在setting里面设置&#xff1a; 点击Android Studio - Preferences&#xff0c;在 Appeara…

开源导出html表格项目-easyHtml

开源导出html表格项目-easyHtml 背景介绍 背景 项目的由来&#xff0c;在面试的过程中&#xff0c;发现这个需求&#xff08;导出html表格&#xff09;比较常见&#xff0c;同时也引起我的兴趣&#xff0c;所以就有了开源项目easyHtml第一个版本 介绍 功能 支持自定义表格标…

算法-图的存储,图的转置,拓扑排序

1.图的存储 图用来对关系建模&#xff0e;图是节点和边构成的集合&#xff0e;节点反映图的元素集合&#xff0c;边反映图的元素集合中元素间的关系&#xff0e; 上述是由五个节点&#xff0c;三条边构成的结构&#xff0e;我们可以用图对其建模&#xff0e; 对由节点&#x…

TeXLive 2023+TeXstudio下载与安装

一. TeXLive 2023下载与安装 TeX Live 是一种 Tex 语言的发行版本,就是相当于 C 语言的编辑(VisualC++),但是这种编辑器的操作方式比较复杂,需要在 cmd 中输入命令操作,没有软件界面,而 Texstudio 正好解决了这个问题。清华大学镜像文件:https://mirrors.tuna.tsinghua…

Linux内核有什么之块设备驱动有什么第二回 —— 块设备驱动初始化流程 vs 字符设备驱动初始化流程

接前一篇文章&#xff1a;Linux内核有什么之块设备驱动有什么第一回 —— 概述及框架 本文内容参考&#xff1a; 34 | 块设备&#xff08;上&#xff09;&#xff1a;如何建立代理商销售模式&#xff1f;-趣谈Linux操作系统-极客时间 Linux内核——块设备总结_linux do_open-…

探索人工智能的现状与未来:机遇与挑战

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;日常聊聊 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 正文 人工智能的现状 人工智能的应用领域 人工智能的未来 人工智能面临的挑战 我的其他博客 正文 人工智能&#xff08;AI&#xff09…

空间计算综合指南

空间计算&#xff08;spatial computing&#xff09;是指使人类能够在三维空间中与计算机交互的一组技术。 该保护伞下的技术包括增强现实&#xff08;AR&#xff09;和虚拟现实&#xff08;VR&#xff09;。 这本综合指南将介绍有关空间计算所需了解的一切。 你将了解 AR、VR…

【yolov8和yolov5】用命令快速着手训练

文章目录 1.yolov81.1.创建conda环境1.2.下载代码和环境1.3.YOLOv8训练、自测和预测的代码及解释1.3.1. YOLOv8 训练代码&#xff1a;1.3.2.yolov8 自测代码&#xff1a;1.3.3.yolov8 推理代码&#xff1a;1.3.4.注意&#xff1a; 2.yolov52.1.创建conda环境2.2.下载代码和环境…

在项目管理中,如何更好地协同团队成员,提高团队合作效率?

在项目管理中&#xff0c;协同团队成员并提高团队合作效率是确保项目成功实施的关键。以下是一些建议&#xff0c;有助于更好地协同团队成员&#xff0c;提高团队合作效率&#xff1a; 一、明确角色与责任 为每个团队成员分配明确的角色和职责&#xff0c;通过制定详细的任务…

Kafka MQ 如何处理请求

Kafka MQ 如何处理请求 元数据请求 客户端怎么知道该往哪里发送请求呢? 客户端使用了另一种请求类型&#xff0c;也就是元数据 请求。这种请求包含了客户端感兴趣的主题列表。服务器端的响应消息里指明了这些主题 所包含的分区、每个分区都有哪些副本&#xff0c;以及哪个副…

基于java+springboot开发的计算机毕业设计网文论坛管理系统设计与实现【附源码】

基于javaspringboot开发的计算机毕业设计网文论坛管理系统设计与实现【附源码】 &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; &#x1f345; 查看下方微信号获取联…

HTML静态网页成品作业(HTML+CSS)——游戏战地介绍设计制作(4个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有4个页面。 二、作品演示 三、代…

视频AI方案:数据+算力+算法,人工智能的三大基石

背景分析 随着信息技术的迅猛发展&#xff0c;人工智能&#xff08;AI&#xff09;已经逐渐渗透到我们生活的各个领域&#xff0c;从智能家居到自动驾驶&#xff0c;从医疗诊断到金融风控&#xff0c;AI的应用正在改变着我们的生活方式。而数据、算法和算力&#xff0c;正是构…

Matplotlib中的子图:规划绘图的指南和工具

导 读 我最近从事一个项目&#xff0c;需要在 matplotlib 中进行一些微调的子图和叠加。虽然我对制作基本的可视化感到很舒服&#xff0c;但我很快发现我对子图系统的理解没有达到标准。于是回到基础知识&#xff0c;并花了一些时间阅读文档并在 Stack Overflow 上搜索相关示例…

算法-前缀和-562. 壁画

题目 思路 被毁掉的墙段一定只与一段还未被毁掉的墙面相邻只能从两头坏&#xff0c;因为如果从中间坏的话&#xff0c;毁掉的墙就和两段未被毁掉的墙面相邻了,画了的墙是坏不了的&#xff0c;只能坏没有画的墙结果为n/2 向上取整&#xff0c;求取总和最大值 代码 T int(inp…

一台GTX1080显卡的怪兽,我可不能错过这个机会!

标题&#xff1a;我花了30块钱买了一台电脑主机。 这个配置能赚钱吗&#xff1f; 1. 收购惊喜 那是一个阳光明媚的下午&#xff0c;我在水管修理店里闲逛。 突然&#xff0c;一位老顾客手里拿着一台旧电脑主机匆匆走了进来。 他说&#xff1a;“小王&#xff0c;你能帮我看看…

【Kimi帮我看论文(四)】TransE:Translating Embeddings for Modeling Multi-relational Data

一、论文信息 1 标题 Translating Embeddings for Modeling Multi-relational Data 2 作者 Antoine Bordes, Nicolas Usunier, Alberto Garcia-Durn, Jason Weston, Oksana Yakhnenko 3 研究机构 Universit de Technologie de Compigne – CNRS Heudiasyc UMR 7253 Compi…

绝地求生:PUBG官方公布2024工作计划

大家好&#xff0c;我是闲游盒。 首先今天官方公布了2024工作计划&#xff0c;下面我们一起来了解一下2024工作重点&#xff0c;官方提到的2点&#xff1a;一是通过对PUBG的维护和优化来改善线上服务的质量&#xff0c;二是为玩家们提供更加多姿多彩的游戏体验。我个人看完了全…

EMQX+InfluxDB+Grafana 构建物联网可视化平台

EMQXInfluxDBGrafana 构建物联网可视化平台 本文以常见物联网使用场景为例&#xff0c;介绍了如何利用 EMQ X MQTT 服务器 InfluxDB Grafana 构建物联网数据可视化平台&#xff0c;将物联网设备上传的时序数据便捷地展现出来。 在物联网项目中接入平台的设备数据和数据存储…