ansible-自动化工具

一、ansible概述

不是C/S架构,就是一种工具

1linux自动化运维

编写程序实现运维自动化:shell  python

工具模式自动化:

①OS Provisioning: RedHat satellite;PXE(可实现dhcp和tftp),cobbler

②OS config(命令批量运行,保持任务执行的状态):puppet   saltstack(灵活性不如ansible)

③:Task Excute(命令任务执行的工具,独立出来,效率比较高):fabric  func   saltstack

 ④:Deployment(实现应用程序部署):fabric (高版本ansible完全可以取代)

ansible可以实现OS configTask Excute  Deployment    是属于轻量级的自动化运维工具。

Ansible不可以实现pxe功能,因为他是操作系统功能,要自动化操作系统

基于管理节点和被管理节点模式,需要考虑安全因素。

运维工具的远程管理分类:服务端/客户端

无客户端,以SSH服务来操控(需要账户和相关管理员权限)  ansible属于此类

2ansible简介

2012年诞生的新兴的开源自动化运维工具,基于python语言开发,源代码托管在github上,是目前最受欢迎的自动化运维工具之一,排名前十。

ParamikoPyYAMLjinjia2三个关键模块来融合了众多功能。

三大核心组件:Paramiko实现核心功能、PyYAML实现剧本相关功能、jinjia2实现模版技术

3ansible功能

批量执行远程命令,可以对远程的多台主机同时进行命令的执行

批量安装和配置软件服务,可以对远程的多台主机进行自动化的方式配置和管理各种服务

编排高级的企业级复杂的IT架构任务,Ansible的Playbook和role可以轻松实现大型的IT复杂架构

提供自动化运维工具的开发API

4ansible的特性

①:minimal learning curve(最小学习曲线)  auditability(可认证的)  基于Python语言来实现

②:Modules in any language(支持多模块化,模块支持任意编程语言)

centos7有3378模块、rocky8有5000多模块,rocky9:72个模块

③:Paramiko(python对ssh的实现),PyYAML,jinja2(模板语言)三个关键模块

④:No bootstrapping(无需客户端引导,客户端只要支持ssh协议就行)

⑤:No DAG ordering,Fails Fast(无依赖关系)幂等性,一个任务执行1遍和执行N遍效果一样,不因重复执行带来意外情况(非绝对)

⑥:No agents(没有代理)

⑦:No server(没有服务器端)

⑧:安全,基于openssh,No additional PKI(无需依赖证书)

⑨:yaml,not code(简化的标签格式定义文档文本格式,学习简易)

⑩:strong multi-tier solution  (支持多角色)

最主要核心模块Paramiko(python对ssh的实现)本质:

管控机基于ssh协议控制受控机,做完参数之后,在受控机用户家目录会生成一个.ansible,会生成一个.py;受控完毕之后,就会把这个.py文件删除

幂等:相当于脚本可以重复执行,且不报错

TFTP:简单文件传输,走UDP

5:ansible核心组件(重点)

①:ansible core 

②:host iventory  主机池(主机清单就受控记的主机名或者ip地址,必须写到管控机inventory中)

③:core modules  核心模块

④:custom modules  自定义模块

⑤:playbook(yaml   jinjia2)  运行将多个主机的配置的任务写在yaml格式的配置文件中,支持python的jinjia2模板语言

⑥:connect plugin(连接每个管理主机的插件)

⑦:API(第三方应用程序调用的编程接口)

二、ansible的原理以及语法

1.流程:

①用户可以调用命令,先去找主机清单(找受控机)、其次去调用模块,任务模块去调用API(这时会涉及到一些第三方插件),去对Windows主机或者网络设备做控制。

②用户可以调用剧本,然后剧本调用主机清单和模块

ansible部署简单,无需客户端,使用ssh协议来实现管理。基于主从模式(非应用程序管理)

ansible以”模块”完成各种”任务”;支持自定义模块,支持各种编程语言

2.ansible命令语法

ansible 支持分类列表、支持主机ip, 支持正则表达式

ansible <host-pattern> [ -f forks ] [-m module_name] [-a args]

      host-pattern:表示对哪些主机生效

      -f forks:一次性处理多少主机(启动并发线程数)

      -m module_name:要使用的模块

      -a args:传输模块特有的参数

      -v:显示详细信息

      -C检测运行模式(测试执行)

       -i指明主机清单文件是谁(默认为/etc/ansible/hosts)

       -k:基于ssh密码传输(非基于Key认证)

       --list列出对执行的所有主机

       --syntax-check对playbook剧本实现语法检测

连接相关选项

-c CONNECTION:使用什么方式连接目标主机,默认为smart

-u REMOTE USER:指定目标主机连接的用户名,默认为None

权限升级方式选项

-s 普通用户提权(sudo)

简单操作:必须定义主机清单

支持通配符,逻辑与,逻辑或正则表达式

ansible-doc -l:列出所有模块      -s:查看模块用法

【注】:操作必须是幂等的

三、ansible常见模块

1.command  命令模块(默认模块,用于在远程执行命令,不能使用变量,也不支持幂等,不支持管道。)

ansible all -a ‘cat /etc/issue’

 2.shell运行命令管理模块  (用于管道等复杂命令,也不支持幂等)

  ansible all -m shell -a ‘echo $HOSTNAME’

3.user

                 name=:指明创建用户的名字

                 remove=yes/no   缺省值为no

  4.group

        ansible-doc group(空格往下翻)

        ansible all -m group -a ‘name=public gid=2500’

5.copy

              src=:定义本地源文件路径

              dest=:定义远程目标文件路径            以上都需要使用绝对路径

              content=:取代src=,表示自定义文本的内容直接取代拷贝的文本文件内容信息

              owner=:指定属主

              group=:指定属组

              mode=:指定权限

 例:把anaconda-ks.cfg复制到被控机/mnt,并且需要改名为a.cfg

ansible all -m copy -a ‘src=/root/anaconda-ks.cfg dest=/mnt/a.cfg mode=400’        

【注】:后面补/是目录,不补/是文件

在被控机进行检验:

6.fetch拉取远程主机文件到本地         

注意:不能拉取目录

                src=:远程主机路径下的源文件

                dest=:拉取到本地目标文件路径下的文件            以上都需要使用绝对路径

                ansible-doc  fetch   //fetch的帮助文档

例:将110的rocky环境拉倒本地(为了防止拉相同文件,弄混,自动创建了文件夹,方便管理)

ansible 192.168.10.110 -m fetch -a ‘src=/root/rocky9_huanjing.sh dest=/tmp/rocky9_huanjing.sh’

 7.file主要作用于文件管理

                path=:指定文件路径,可以使用name或dest来替换

                state=touch/directory/link/absent   创建文件/目录/软链接/删除

                创建链接:src=   path=:指明符号链接文件路径

  例:删掉/mnt/目录

8.hostname 更改主机名

       name=:新主机名

  9.Get_urlURL下载模块

             功能:用于将文件从http、https或者ftp下载到被管理节点

              url=:被下载文件的URL

              dest=:下载到目标路径(绝对路径)

              owner=:指定属主

              group=:指定属组

              mode=:指定权限

 force=:如果是yes,dest不是目录,将每次下载文件,如果内容改变,替换文件。如果否,则只有在目标不存在时才会下载该文件。

checksum=算法:对目标文件下载后计算摘要,以确保其数据的安全性和完整性

例:checksum=md5:xxxxxx

ansible all -m get_url -a 'url=http://nginx.org/download/nginx-1.18.0.tar.gz dest=/nginx.tar.gz checksum="md5:b2d33d24d89b8b1f87ff5d251aa27eb8"'

例:校验码如果比对不匹配,则会报错;

 10.archiveunarchive压缩和解压缩模块

                src=:源压缩文件(可以是从网上直接下载的url) 

                copy=no:不在我的主机上,yes在我的主机上

                dest=:目标解压缩文件路径

                format=:目标压缩文件格式

 【注】:归档压缩   path=   源被压缩文件或目录   dest=   压缩之后的归档文件以及所在的路径

 11.script运行本地脚本模块

 12.yum安装程序包模块(当然,需要事先配置好yum源)

              name=:指明要安装的程序包,可以接上版本号

              state=:present,latest表示安装(默认值--最新版本),absent表示卸载

例:ansible all -m yum -a ‘name=httpd state=latest’

                  在被控机上进行验证查看:

 13.cron

                name=”计划任务的名字”  分、时、日、月、周、用户名、指令

                job=    作业执行的程序内容

                State(状态)  present:安装  (默认)absent:移除

例:ansible all -m cron -a ‘name=”this is new job” job=”/usr/bin/touch /root/1.txt” minute=0 hour=1 day=1 month=3’

在被控机上进行验证查看:

  14.ping   网络连通性

     ansible  all -m ping

【注】:不接-m,等于调用command模块,command模块不支持幂等,严重不推荐

15.servicesystemd服务启停管理模块,不可以管unix单元

                 enabled=:是否开机自动启动  (true  false)

                 name=:服务名称

                 state=:状态,取值有started,stopped,restarted

例:首先安装nginx,然后设置开机自启

      ansible all -m yum -a ‘name=nginx state=present’   //安装nginx

      ansible all -m system -a ‘name=nginx state=started’  //启动nginx

      ansible all -m system -a ‘name=nginx state=stopped’  //停止nginx

   在被控机上测试查看:

  16.lineinfile支持某一行的字符转移替换

                 path=:

                 regexp=:正则表达式(如果不知道精确到哪一行,所以全部都修改)

                 line=:要修改的行

    例:ansible-doc lineinfile //查看lineinfile的帮助文档

    ansible 192.168.10.110 -m fetch -a ‘src=/etc/nginx/nginx.conf dest=/root/’

ansible 192.168.10.110 -m lineinfile -a “path=/etc/nginx/nginx.conf  regexp=’^[  ]+(root).*’  line=’   root/nginx/html;’”

ansible 192.168.10.110 -m lineinfile -a “path=/etc/nginx/nginx.conf  regexp=’^[  ]+(root).*’  line=’   \1 /nginx/html;’backrefs=yes”

被控机测试查看:

   

 17.replace:支持全文匹配的字符转移替换(需要写入完整的正则表达式)

        path=:

        regexp=:正则表达式

        replace=:要替换的行

 例:

ansible 192.168.10.110 -m lineinfile -a “path=/root/1.txt  regexp=’^i.*’  line=’liang nian ban’”

被控机查看:

全部替换

ansible 192.168.10.110 -m replace -a “path=/root/1.txt regexp=’(liang)(.*)’ replace=”san\2”

被控机查看:

 18.setup收集每个远程主机的fact 

每个被管理节点在接收并运行管理命令之前,会将自己的主机相关信息,如操作系统版本,IP地址等报告给ansbile主机

例如:ansible all -m setup      发送过来所有的远程主机的所有信息。

Ansible 192.168.10.110 -m setup

Yum -y install ansible --nobest

ansible –version

ansible-doc -l | wc -l

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

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

相关文章

PFC交流电压跌落测试实现方法与仿真

目录 前言 交流电压跌落测试 仿真验证 总结 前言 之前双向交错的图腾柱仿真到代码生成系统验证已经实现&#xff0c;最近在学习如何解决交流电压跌落的问题&#xff0c;目前根据需要通过仿真实现了该工况的模拟&#xff0c;这里简单记录一下。 双向交错CCM图腾柱无桥单相PF…

Linux提权!!!

上一篇文章讲了Windows的提权&#xff0c;那么这篇文章就来讲一下Linux的提权 1.SUID提权 suid权限 作用&#xff1a;让普通用户临时拥有该文件的属主的执行权限&#xff0c;suid权限只能应用在二进制可执行文件&#xff08;命令&#xff09;上&#xff0c;而且suid权限只能设置…

HR是怎么看待PMP证书的呢?

考PMP证书为什么值得&#xff1f;对管理人员有用么&#xff1f; 首先&#xff0c;在行业内部&#xff0c;一名项目经理&#xff0c;需要有PMP证书已经是行业内的共识了。而且面试的时候&#xff0c;如果是同样的年龄段&#xff0c;同样的背景&#xff0c;那有证书在手的人&…

瑞吉外卖实战学习--13、完善删除中的逻辑

完善删除中的逻辑 前言效果图逻辑介绍表结构根据mybatisPlus接口规范创建实体类和service和mapper文件1、实体类Dish和Setmeal2、Mapper接口DishMapper和SetealMapper3、Service接口DishService和setmealService4、Service实现类DishServiceImpl和setmealServicelmpl 编写删除函…

【御控物联】JSON结构数据转换在物流调度系统中的应用(场景案例三)

文章目录 一、前言二、场景概述三、解决方案四、在线转换工具五、技术资料 一、前言 物流调度是每个生产厂区必不可少的一个环节&#xff0c;主要包括线边物流和智能仓储。线边物流是指将物料定时、定点、定量配送到生产作业一线的环节&#xff0c;其包括从集中仓库到线边仓、…

【详解】Windows系统安装Nginx及简单使用

【详解】Windows系统安装Nginx及简单使用 一、Nginx是什么&#xff1f; “Nginx 是一款轻量级的 HTTP 服务器&#xff0c;采用事件驱动的异步非阻塞处理方式框架&#xff0c;这让其具有极好的 IO 性能&#xff0c;时常用于服务端的反向代理和负载均衡。”Nginx 是一款 http 服…

鸿蒙OS开发实例:【组件化模式】

组件化一直是移动端比较流行的开发方式&#xff0c;有着编译运行快&#xff0c;业务逻辑分明&#xff0c;任务划分清晰等优点&#xff0c;针对Android端的组件化&#xff1b;与Android端的组件化相比&#xff0c;HarmonyOS的组件化可以说实现起来就颇费一番周折&#xff0c;因为…

IoT数采平台4:测试

IoT数采平台1&#xff1a;开篇IoT数采平台2&#xff1a;文档IoT数采平台3&#xff1a;功能IoT数采平台4&#xff1a;测试 Modbus RTU串口测试 OPC测试 HTTP测试 MQTT透传测试 MQTT网关测试及数据上报 TCP / UDP 监听&#xff0c;客户端连上后发送信息&#xff0c;客户端上报数据…

pygame--坦克大战(一)

项目搭建 本游戏主要分为两个对象,分别是我方坦克和敌方坦克。用户可以通过控制我方的坦克来摧毁敌方的坦克保护自己的“家”,把所有的敌方坦克消灭完达到胜利。敌方的坦克在初始的时候是默认5个的(这可以自己设置),当然,如果我方坦克被敌方坦克的子弹打中,游戏结束。从…

Lambda表达式,Stream流

文章目录 Lambda表达式作用前提函数式接口特点 语法省略模式和匿名对象类的区别 Stream流思想作用三类方法获取方法单列集合(Collection[List,Set双列集合Map(不能直接获取)数组同一类型元素(Stream中的静态方法) 常见的中间方法终结方法收集方法 Optional类 Lambda表达式 作用…

数据结构(六)——图的存储及基本操作

6.2 图的存储及基本操作 6.2.1 邻接矩阵法 邻接矩阵存储无向图、有向图 #define MaxVertexNum 100 //顶点数目的最大值typedef struct{char Vex[MaxVertexNum]; //顶点表int Edge[MaxVertexNum][MaxVertexNum]; //邻接矩阵&#xff0c;边表int vexnum,arcnum; //图的当前…

华为ICT七力助推文化产业新质生产力发展

创新起主导作用的新质生产力由新劳动者、新劳动对象、新劳动工具、新基础设施等四大要素共同构成&#xff0c;符合新发展理念的先进生产力质态&#xff1b;具有高科技、高能效、高质量等三大突出特征。而通过壮大新产业、打造新模式、激发新动能&#xff0c;新质生产力能够摆脱…

阿里云数据库服务器价格表,2024年最新报价

阿里云数据库服务器价格表&#xff0c;优惠99元一年起&#xff0c;ECS云服务器2核2G、3M固定带宽、40G ESSD Entry云盘&#xff0c;优惠价格99元一年&#xff1b;阿里云数据库MySQL版2核2G基础系列经济版99元1年、2核4GB 227.99元1年&#xff0c;云数据库PostgreSQL、SQL Serve…

探索 ZKFair 的Dargon Slayer蓝图,解锁新阶段的潜力

在当前区块链技术的发展中&#xff0c;Layer 2&#xff08;L2&#xff09;解决方案已成为提高区块链扩容性、降低交易成本和提升交易速度的关键技术&#xff0c;但它仍面临一些关键问题和挑战&#xff0c;例如用户体验的改进、跨链互操作性、安全性以及去中心化程度。在这些背景…

西圣、飞利浦、万魔开放式耳机好用吗?热门产品硬核测评对比

在无线耳机市场中&#xff0c;开放式耳机因其独特的佩戴方式和出色的听音体验逐渐受到消费者的青睐&#xff0c;西圣、飞利浦、万魔作为业内知名品牌&#xff0c;都推出了各自的开放式耳机产品&#xff0c;备受关注&#xff0c;那么这些热门品牌的开放式耳机究竟好用吗&#xf…

【JVM】如何定位、解决内存泄漏和溢出

目录 1.概述 2.堆溢出、内存泄定位及解决办法 2.1.示例代码 2.2.抓堆快照 2.3.分析堆快照 1.概述 常见的几种JVM内存溢出的场景如下&#xff1a; Java堆溢出&#xff1a; 错误信息: java.lang.OutOfMemoryError: Java heap space 原因&#xff1a;Java对象实例在运行时持…

Open3D(C++) 基于随机抽样与特征值法的点云平面稳健拟合方法

目录 一、算法原理1、论文概述2、参考文献二、代码实现三、结果展示四、测试数据本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的GPT爬虫。 一、算法原理 1、论文概述 针对点云数据含有异常值且传统拟合方法拟合结果不理想的情…

【算法】字典序超详细解析(让你有一种相见恨晚的感觉!)

目录 一、前言 二、什么是字典序 &#xff1f; ✨字典序概念 ✨深度理解字典序 ✨字典序排序的重要性和应用场景 三、常考面试题 ✨ 下一个排列 ✨ 字典数排序 ✨ 字典序最小回文串 四、共勉 一、前言 经常刷算法题的朋友&#xff0c;肯定会经常看到题目中提到 字典序 这样…

6.java openCV4.x 入门-Mat之局部区域读写及Range和Rect介绍

专栏简介 &#x1f492;个人主页 &#x1f4f0;专栏目录 点击上方查看更多内容 &#x1f4d6;心灵鸡汤&#x1f4d6;我们唯一拥有的就是今天&#xff0c;唯一能把握的也是今天建议把本文当作笔记来看&#xff0c;据说专栏目录里面有相应视频&#x1f92b; &#x1f9ed;文…

小白水平理解面试经典题目1431. Kids With the Greatest Number of Candies【Array类】

1431. 拥有最多糖果的孩子 小白渣翻译 一群孩子手里拿 着不同数目的糖果。你打算额外给每个孩子一些糖果&#xff0c;然后再确定哪些孩子拥有最多的糖果。 给你一个数组 candies &#xff0c;其中 candies[i] 代表第 i 个孩子拥有的糖果数目。另给你一个整数 extraCandies &…