commit dbf58adafa358d09c6fe221b2f59051bc10f8177 Author: yaml <17622739710@163.com> Date: Thu Jun 26 19:46:37 2025 +0800 上传文件至 / diff --git a/ansible自动化运维工具.md b/ansible自动化运维工具.md new file mode 100644 index 0000000..7cf8700 --- /dev/null +++ b/ansible自动化运维工具.md @@ -0,0 +1,180 @@ +# ansible自动化运维工具 + +## 一、发展起源 + +常见自动化运维工具: + +Puppet:较为早期的自动化运维工具,现在发展非常成熟,可以批量管理远程服务器,模块丰富,配置复杂,基于Ruby语言编写。是最典型的C/S结构,需要安装服务端和客户端 。相比ansible来说,使用上比较繁琐。 +SaltStack:也是C/S模式,需要安装服务端和客户端,基于Python编写,更适合大型企业使用。 +Chef:是配置管理的开源工具,它能使每个环境与基础设施中的相同配置保持一致。 +ansible的出现: + +自动化运维工具还有很多,比如Cfengine、Capistrano、Fabric、Function、Plain SSH,有各自的优缺点,而ansible就是集结了它们的优点于一身在2012年3月诞生,这也是它的创始人Michael DeHaan打造它的主要原因。 + +### 1.1自动化运维工具对比 + +![image-20240613204454736](C:\Users\33163\AppData\Roaming\Typora\typora-user-images\image-20240613204454736.png) + +### 1.2ansible介绍 + +什么是Ansible? + +Ansible是一款自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。 +Ansible基于模块工作,本身没有批量部署的能力。真正具有批量部署的是Ansible所运行的模块,Ansible只是提供一种框架,包括如下: +连接插件connection plugins:负责和被监控端实现通信; +主机清单host inventory:指定操作的主机,是一个配置文件里面定义监控的主机。 +各种模块核心模块、command模块、自定义模块。 +借助于插件完成记录日志邮件等功能; +playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。 + +**工作流程图** + +![image-20240613204615843](C:\Users\33163\AppData\Roaming\Typora\typora-user-images\image-20240613204615843.png) + +Ansible无需代理: + +1、Ansible围绕无代理架构构建,通过OpenSSH或WinRM连接它所管理的主机并且运行任务,方法通常是将称为Ansible模块的小程序推送至这些主机。这些程序用于将系统置于需要的特定状态。在Ansible运行完其任务后,推送的所有模块都会被删除。 +2、Ansible不需要批准使用任何特殊代理,然后再部署到受管主机上。由于没有代理,也不需要额外的定义安全基础架构, +优点∶ + +(1)跨平台支持:Ansible提供Linux、Windows、UNIX和网络设备的无代理支持,适用于物理、虚拟、云和容器环境。 + +(2)人类可读的自动化:Ansible Playbook采用YAML文本文件编写,易于阅读,有助于确保所有人都能理解它们的用途。 + +(3)完美描述应用:可以通过Ansible Playbook进行每种更改,并描述和记录应用环境的每一个方面。 + +(4)轻松管理版本控制:Ansible Playbook和项目是纯文本。它们可以视作源代码,放在现有版本控制系统中。 + +(5)支持动态清单:可以从外部来源动态更新Ansible管理的计算机列表,随时获取所有受管服务器的当前正确列表,不受基础架构或位置的影响。 + +(6)编排可与其他系统轻松集成:能够利用环境中现有的HP SA、Puppet、Jenkins、红帽卫星和其他系统,并且集成到Ansible工作流中。 + +特点: + +- Ansible的设计宗旨是工具易用,自动化易写易读。所以在创建自动化时我们应追求简单化。 +- Ansible自动化语言围绕简单易读的声明性文本文件来构建。正确编写的Ansible Playbook可以清楚地记录你的工作自动化。 +- Ansible是一种要求状态引擎。它通过表达你所希望系统处于何种状态来解决如何自动化IT部署的问题。 +- Ansible的目标是通过仅执行必要的更改,使系统处于所需的状态。试图将Ansible视为脚本语言并非正确的做法。 + + +## 二、安装流程 + +**基本了解:** + +- Ansible只需安装到控制节点上,受控机不需要安装Ansible。 +- 主控机对受控机需能ssh通信。 + + + +**对控制节点的要求:** + +1.控制节点应是Linux或UNIX系统。不支持将Windows用作控制节点,但Windows系统可以是受管主机。 + +2.控制节点需要安装Python3(版本3.5或以上)或Python2(版本2.7或以上)。 + +3.需要epel源。 + +4.关闭防火墙和selinux。 + +**对受控节点的要求:** + +1.受管主机可能要满足一些要求,具体取决于控制节点连接它们的方式以及它们要运行的模块。 + +2.Linux和UNIX受管主机需安装Python2(版本2.6或以上)或Python3(版本3.5或以上),确保可以运行大部分的ansible模块。 + +3,关闭防火墙和selinux。 + +**受控机类型:** + +​ 网络设备: + +- Ansible还可以配置受管网络设备,例如路由器和交换机,当收管设备为网络设备时需要用专门为此设计的模块。其中包括对Cisco IOS、IOS XR和NX-OS的支持;Juniper Junos;Arsta EOS;以及基于VyOS的网络设备等。 + +- 大多数网络设备无法运行Python,所以Ansible在控制节点上运行网络模块,而不是在受管主机上运行。特殊连接方法也用于与网络设备通信,通常使用SSH上的CLI、SSH上的XML或HTTP(S)上的API。 + + + +**基于Windows的受管主机:** + +大部分专门为Windows受管主机设计的模块需要在受管主机上安装PowerShell 3.0或更高版本,而不是安装Python。 +受管主机也需要配置PowerShell远程连接。Ansible还要求至少将.NET Framework4.0或更高版本安装在Windows受管主机上。 + +### 2.1 安装清单 + +主机 + +ansible 192.168.17.130 centos7.9 + +web1 192.168.17.131 centos7.9 + +web2 192.168.17.132 centos7.9 + + + +1. 配置yum源。ansible服务需要epel源来安装,大家根据各自的操作系统配置yum源和epel源,我这里配置的是阿里云的源。 + +wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo yum源 + +wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo epel源码 + + + +2.关闭防火墙和selinux + + systemctl stop firewalld + +systemctl enanle firewalld + +sed -i s#SELINUX=enforcing#SELINUX=disabled# /etc/selinux/config + + + +3.主机器上安装ansible + +yum -y install ansible + +![image-20240615154415998](C:\Users\33163\AppData\Roaming\Typora\typora-user-images\image-20240615154415998.png) + + + +## 三、清单文件 + +定义清单: + +在清单文件里定义Ansible将要管理的一批主机,默认的清单文件是/etc/ansible/ansible.cfg。 +可以在清单文件里定义“组”,可以集中管理,组也可以包含子组,主机也可以是多个组的成员。 +清单还可以设置应用到它所定义的主机和组的变量。 +2种定义方式: + +静态主机清单,通过文本文件定义,支持多种格式编写,包括INI样式或YAML。 +动态主机清单,使用外部信息提供程序通过脚本或其他程序来生成。 + +/etc/ansible/hosts 默认配置主机清单位置 + +![image-20240615155009067](C:\Users\33163\AppData\Roaming\Typora\typora-user-images\image-20240615155009067.png) + + + +### 3.1自定义主机清单 + +/etc/ansible/hosts是默认清单文件,现实中不使用,应该自定义一个新的清单文件,并在配置文件里指定新清单文件位置。 + +1.生成一个新静态清单文件inventory.ini,其里面定义一个组为mq,管理192.168.17.130主机。 + +![image-20240615155913498](C:\Users\33163\AppData\Roaming\Typora\typora-user-images\image-20240615155913498.png) + +![image-20240615155931920](C:\Users\33163\AppData\Roaming\Typora\typora-user-images\image-20240615155931920.png) + + + +2.修改配置文件,将清单文件改成新定义的这个 + +![image-20240615160114356](C:\Users\33163\AppData\Roaming\Typora\typora-user-images\image-20240615160114356.png) + +![image-20240615160242643](C:\Users\33163\AppData\Roaming\Typora\typora-user-images\image-20240615160242643.png) + + + +3.查看清单文件里所有主机,忽略组的概念。 + +![image-20240615160617835](C:\Users\33163\AppData\Roaming\Typora\typora-user-images\image-20240615160617835.png)