目录
- 一、认识Ansible
1、Ansible 是什么
2、为什么选择ansible
3、Ansible 是如何工作的
4、Ansible通信机制
5、Ansible应用场景
6、ansible执行流程
7、ansible生成的主要文件- 二、Ansible安装、配置及使用
1、 在server1上安装ansible
2、熟悉ansible配置文件使用
3、参数及ansible命令的使用
4、 创建普通用户,执行分发任务
5、Inventory文件配置
6、Ansible与正则
一、认识Ansible
1、Ansible 是什么?
Ansible 是一个能实现批量部署的自动化运维工具,
集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。帮助运维实现IT工作的自动化、降低人为操作失误、提高业务自动化率、提升运维工作效率。- 常用于软件部署自动化、配置自动化、管理自动化、系统化系统任务、持续继承、零宕机平滑升级。
- 常见的部署工具有Chef、Puppet、Ansible、SaltStack、Fabric
- ansible是基于 paramiko 开发的,并且基于模块化工作,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。
ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。
ansible目前已经已经被红帽官方收购,是自动化运维工具中大家认可度最高的,并且上手容易,学习简单。是每位运维工程师必须掌握的技能之一。
2、为什么选择ansible?
- Ansible完全基于Python开发,而DevOps在国内已然是一种 趋势,Python已逐步普及,运维人员自己开发工具的门槛逐步降低,得益于此,方便对Ansible二次开发。
- Ansible丰富的内置模块,甚至还有专门为商业平台开发的功能模块,完全可以满足日常功能所需。
- 在Ansible去中心化概念下,一个简单的复制操作即可完成管理配置中心的迁移。
- Agentless(无客户端),客户端无需任何配置,由管理端配置好后即可使用,更新时,只需在操作机上进行一次更新即可,这点非常诱人。
- 配置简单、功能强大、扩展性强,通过Playbooks来定制强大的配置、状态管理。
3、Ansible 是如何工作的?
上图对应的模块功能如下:
Ansible:Ansible核心程序。
HostInventory:记录由Ansible管理的主机信息,包括端口、密码、ip等。
Playbooks:“剧本”YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能。
CoreModules:核心模块,主要操作是通过调用核心模块来完成管理任务。
CustomModules:自定义模块,完成核心模块无法完成的功能,支持多种语言。
ConnectionPlugins:连接插件,Ansible和Host通信使用
补充:
(1)Ansible使用者来源于多种维度,分为以下几种方式:
- CMDB存储和管理着企业IT架构中的各项配置信息,运维人员可以组合CMDB和Ansible,通过CMDB直接下发指令调用Ansible工具集完成操作者所希望达成的目标。
- 基于PUBLIC(公有云)/PRIVATE(私有云),Ansible以API调用的方式运行,Ansible提供了丰富的API语言接口:PHP、Python等。
- 直接使用Ad-Hoc临时集调用Ansible工具集来完成任务执行。
- 通过执行Playbooks中预先编排好的任务集按序完成任务执行。
(2)Ansible工具集(ansible命令是Ansible的核心工具,总指挥)
- INVENTORY:命令执行的目标对象配置文件
- API:供第三方程序调用的应用程序编程接口
- MODULES:丰富的内置模块
- PLUGINS:内置和自定义的插件
(3)作用对象
Ansible的作用对象,不仅仅是Linux和非Linux操作系统的主机,同样也可以作用于各类公有云/私有云,商业和非商业设备的网络
4、Ansible通信机制
- Ansible主推的卖点是其无需任何Daemon维护进程即可实现相互间的通信,且通信方式是基于业内统一标准的安全可靠的SSH安全连接。
- 无客户端,只需安装SSH、Python即可。
- 基于OpenSSH通信,底层基于SSH协议(Windows基于PowerShell)。
- 支持密码和SSH认证,建议使用公私钥方式认证,因为密码认证方式的密码需明文写配置文件,虽然配置文件可加密,但会增加Ansible使用的复杂度。
5、Ansible应用场景
应用部署
- Ansible内置网络、应用、系统、第三方平台扩展等完善的功能模块,协助运维快速完成应用的安装、卸载、升级、启停、配置等部署类工作,即使对跨平台或知名的商业硬件也同样支持。
配置管理
- Ansible内置File、Template,结合Jinja、Lineinfile等内置模块,同时无缝结合GitHub、GitLab、Git、SVN、Jenkin等主流版本控制和CI持续集成工具,助力配置管理自动化。
任务流编排
- 有效保证Tasks任务流按即定规则和顺序完成事先制定的目标和计划,同时Roles编排方式又能在一定程度上从书写习惯和代码层编排上保证整体项目可架构性和规范性,协助控制项目维护成本不致过高。
适用于网络管理员、系统运维、应用运维、桌面运维、DevOps、基础架构运维等多领域运维行业,上手快,效率高。
6、ansible执行流程
7、ansible生成的主要文件
/etc/ansible
/etc/ansible/ansible.cfg #配置文件
/etc/ansible/hosts #主机库(host inventory)管理被监控的主机
/usr/bin/ansible #主程序
/usr/bin/ansible-doc #文档
/usr/bin/ansible-playbook #剧本
二、Ansible安装、配置及使用
实验环境:
虚拟机名称 | ip | 版本 | 角色 |
---|---|---|---|
server1 | 172.25.1.1 | 7.5 | ansible |
server2 | 172.25.1.2 | 7.5 | 远程主机hosts |
server3 | 172.25.1.3 | 7.5 | 远程主机hosts |
注:保证三台虚拟机能上网
1、 在server1上安装ansible
步骤一:配置EPEL源
vim /etc