ansible简介
什么是ansible
- ansible是2013年推出的一款IT自动化和DevOps软件,2015年被RedHat收购。是基于Python研发,糅合很多老运维工具的优点,实现了批量操作系统配置,批量程序部署,批量运行命令等功能
ansible可以实现:
- 自动化部署APP
- 自动化管理配置项
- 自动化持续交付
- 自动化(AWS)云服务管理
为什么选择ansible
选择一款配置管理软件,无外乎从以下几点来权衡利弊
- 活跃度(社区)
- 学习成本
- 使用成本
- 编码语言
- 性能
- 使用是否广泛
ansible优点
- 只需要SSH和Python即可使用
- 无客户端
- ansible功能强大,模块丰富
- 上手容易,门槛低
- 基于Python开发,做二次开发更容易
- 使用公司比较多,社区活跃
ansible特性
- 模块化设计,调用特定的模块完成特定任务
- 基于Python语言实现
- paramiko
- PyYAML (半结构化语言)
- Jinja2
- 其模块支持JSON等标准输出格式,可以采用任何编程语言重写
- 部署简单
- 主从模式工作
- 支持自定义模块
- 支持playbook
- 易于使用
- 支持多层部署
- 支持异构IT环境
ansible安装
软件依赖关系
对管理主机
- 要求Python 2.6 或Python 2.7
ansible 使用以下模块,都需要安装
- paramiko
- PyYAML
- Jinja2
- httplib2
- six
对于被托管主机
- ansible默认通过SSH协议管理机器
- 被管理主机要开启ssh服务,允许ansible主机登录
- 在托管节点上也需要安装Python2.5或以上的版本
- 如果托管节点上开启了SElinux,需要安装libselinux-python
启动6台虚拟机
2cpu,1.5G 以上内存,10G 以上硬盘,1块网卡
主机名 | Ip地址 | 角色 |
ansible | 192.168.1.40 | 管理主机 |
web1 | 192.168.1.41 | 托管主机 |
web2 | 192.168.1.42 | 托管主机 |
db1 | 192.168.1.43 | 托管主机 |
db2 | 192.168.1.44 | 托管主机 |
cache | 192.168.1.45 | 托管主机 |
ad-hoc主机管理
主机定义与分组
安装ansible之后可以做一些简单的任务
ansible配置文件查找顺序
- 首先检测ANSIBLE_CONFIG变量定义的配置文件
- 其次检查当前目录下的 ./ansible.cfg 文件
- 再次检查当前用户家目录下 ~/ansible.cfg 文件
- 最后检查/etc/ansible/ansible.cfg文件
- /etc/ansible/ansible.cfg是ansible的默认配置文件路径
ansible.cfg 配置文件
- inventory 定义托管主机地址配置文件路径名
- inventory 指定的配置文件,写入远程主机的地址。
格式
- # 表示注释
[组名称]
主机名称或ip地址,其他参数
ansible.cfg 配置文件
- ssh 主机 key 验证配置参数
- host_key_checking = False
- 如果为 False,不需要输入 yes
- 如果为 True,等待输入 yes
(1)修改配置文件
[root@ansible ~]# vim /etc/ansible/ansible.cfg
... ...
inventory = /etc/ansible/hosts
... ...
hos