上传文件至 /
This commit is contained in:
commit
dbf58adafa
180
ansible自动化运维工具.md
Normal file
180
ansible自动化运维工具.md
Normal file
@ -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自动化运维工具对比
|
||||
|
||||

|
||||
|
||||
### 1.2ansible介绍
|
||||
|
||||
什么是Ansible?
|
||||
|
||||
Ansible是一款自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
|
||||
Ansible基于模块工作,本身没有批量部署的能力。真正具有批量部署的是Ansible所运行的模块,Ansible只是提供一种框架,包括如下:
|
||||
连接插件connection plugins:负责和被监控端实现通信;
|
||||
主机清单host inventory:指定操作的主机,是一个配置文件里面定义监控的主机。
|
||||
各种模块核心模块、command模块、自定义模块。
|
||||
借助于插件完成记录日志邮件等功能;
|
||||
playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
|
||||
|
||||
**工作流程图**
|
||||
|
||||

|
||||
|
||||
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
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
## 三、清单文件
|
||||
|
||||
定义清单:
|
||||
|
||||
在清单文件里定义Ansible将要管理的一批主机,默认的清单文件是/etc/ansible/ansible.cfg。
|
||||
可以在清单文件里定义“组”,可以集中管理,组也可以包含子组,主机也可以是多个组的成员。
|
||||
清单还可以设置应用到它所定义的主机和组的变量。
|
||||
2种定义方式:
|
||||
|
||||
静态主机清单,通过文本文件定义,支持多种格式编写,包括INI样式或YAML。
|
||||
动态主机清单,使用外部信息提供程序通过脚本或其他程序来生成。
|
||||
|
||||
/etc/ansible/hosts 默认配置主机清单位置
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
### 3.1自定义主机清单
|
||||
|
||||
/etc/ansible/hosts是默认清单文件,现实中不使用,应该自定义一个新的清单文件,并在配置文件里指定新清单文件位置。
|
||||
|
||||
1.生成一个新静态清单文件inventory.ini,其里面定义一个组为mq,管理192.168.17.130主机。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
2.修改配置文件,将清单文件改成新定义的这个
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
3.查看清单文件里所有主机,忽略组的概念。
|
||||
|
||||

|
Loading…
x
Reference in New Issue
Block a user