Ansible 就是一个配置管理系统,可以帮助我们完成一些批量性任务,或者一些重复的工作.
Ansible特性:
- 模块化:调用特定模块,完成特定任务
- 有Paramiko, PyYAML, Jinja2(模板语言)三种关键模块
- 支持自定义模块
- 支持python语言实现
- 部署简单,基于python和ssh(默认安装) agentless
- 安全, 基于openssh
- 支持playbook 编排任务
- 幂等性:一个任务执行1遍和n遍效果一样,不会因为重复执行带来意外结果
- 无需代理,不依赖PKI(无需ssl)
- 可以使用任何变成语言写模块
- YAML格式,编排任务,支持丰富的数据结构
- 强大的多层解决方案
Ansible 架构
工作原理
主要组成部分功能说明: - PLAYBOOK:任务集,编排定义ansible任务集的配置文件,由ansible依次执行,通常是json格式YML文件
- INVENTORY: ansible管理主机的名单 /etc/ansible/hosts
- MODULES:执行命令的功能模块,多数为内置的核心模块,也可以自定义 ansible -doc -l
- PLUGINS:模块功能的补充,各种插件,但是不常用
- API:供第三方程序调用的片成接口。
- ANSIBLE:组合INVENTORY、API、MODULE、PLUGIN的绿框, ansible命令工具,为核心执行工具
注意事项
- 执行ansible的主机,一般是主控端,中控,堡垒机
- 主控端python需要2.6以上
- 被控端python需要小于2.4 ,安装python-simplejson
- 被控端如开启SELinux,需要安装libselinux-python
- windows不能作为主控端