ansible系列(1)--ansible基础
1. ansible概述
Ansible
是一个 IT 自动化的“配置管理”工具,自动化主要体现在Ansible
集成了丰富模块,以及强大的功能组件,可以通过一个命令行完成一系列的操作。进而能减少我们重复性的工作,以提高工作的效率。- 创始人,
Michael DeHaan
(Cobbler
与Func
的作者)。 - 2015-10-17,
Red Hat
宣布收购。
1.1 ansible的功能
- 批量执行远程命令,可以对N多台主机同时进行命令的执行。
- 批量配置软件服务,可以进行自动化的方式配置和管理服务。
- 实现软件开发功能,
jumpserver
底层使用ansible
来实现的自动化管理。 - 编排高级的IT任务,
Ansible
的Playbook
是一门编程语言,可以用来描绘一套 IT 架构。
1.2 ansible的特性
- 容易学习:无代理,基于
SSH
实现,不像saltstack
既要学客户端与服务端,还需要学习客户端与服务端中间通讯协议; - 操作灵活:
Ansible
有较多的模块,提供了丰富的功能、playbook
则提供类似于编程语言的复杂功能; - 简单易用:体现在
Ansible
一个命令可以完成很多事情; - 安全可靠:因为
Ansible
使用了SSH
协议进行通讯,既稳定也安全; - 移植性高:可以将写好的
playbook
拷贝至任意机器进行执行; - 幂等性:一个任务执行1遍和执行n遍效果一样,不会因为重复执行带来意外情况;
1.3 ansible的架构
-
ANSIBLE PLAYBOOKS
:任务剧本(任务集),编排定义Ansible
任务集的配置文件,由Ansible
顺序依次执行,通常是JSON
格式的YAML
文件; -
INVENTORY
:Ansible
管理主机的清单/etc/anaible/hosts
; -
MODULES
:Ansible
执行命令的功能模块,多数为内置核心模块,也可自定义; -
PLUGINS
:模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不常用; -
API
:供第三方程序调用的应用程序编程接口; -
Ansible
主要操作对象:HOSTS
主机,主机组和NETWORKING
网络设备;
利用ansible实现管理的方式:
-
Ad-Hoc
即执行单条的ansible命令,主要用于临时命令使用场景;
-
Ansible-playbook
主要用于长期规划好的,大型项目的场景,需要有前提的规划;
执行过程:
将已有编排好的任务集写入
Ansible-Playbook
通过
ansible-playbook
命令分拆任务集至逐条ansible
命令,按预定规则逐条执行。
1.4 ansible注意事项
- 执行
ansible
的主机一般称为主控端,中控,master
或堡垒机; - 主控端
Python
版本需要2.6或以上; - 被控端
Python
版本小于2.4需要安装python-simplejson
; - 被控端如开启
SELinux
需要安装libselinux-python
; windows
不能做为主控端;- 建议使用
ssh
的秘钥验证方式管理被控主机;