什么是ansible?
Ansible是一款IT自动化和DevOps软件,是基于Python研发,实现了批量操作系统配置,批量程序部署,批量运行命令等功能
Ansible可以实现:
自动化部署APP
- 自动化管理配置项
- 自动化持续交付
- 自动化云服务管理
ansible的优点
- 自需ssh和Python即可使用
- 无客户端
- 功能强大,模块丰富
- 可基于python开发,做二次开发
- 上手容易,易掌握
ansible的特性
- 部署简单
- 支持自定义模块
- 支持playbook
- 支持多层部署
… …
… …
Ansible工作流程
读取配置->
抓取全量机器(主机集合)->
使用host-pattern过滤机器列表->
根据参数确定执行模块和配置(命令集合)->
runner执行返回->
输出结果
ansible的关键点在于:
1.主机的集合
2.命令的集合
3.每台机器需要做相同的操作,执行相同的命令(批量执行)
ansible软件部署
- 需要对管理主机默认通过ssh协议,允许免密登录
- 卸载托管主机上的SElinux,或是安装libselinux-python
- 托管主机需要安装python2.5或以上版本
- 需要安装依赖包如下:
paramiko
pyyaml
jinjia2
httplib2
six
安装ansible软件包:
yum install ansible
ansible --version //查看版本
ansible的配置文件默认是在/etc/ansible/ansible.cfg,但ansible的配置文件也可以自行创建,只要是ansible.cfg文件,ansible默认按如下顺序进行查找:
- ansible_config 变量定义的配置文件
- 当前目录下的./ansible.cfg文件
- 当前用户家目录下的./ansible.cfg文件
- /etc/ansible/ansible.cfg文件
主机的定义与分组
.cfg配置文件改动如下:
vim /etc/ansible/ansible.cfg
14行 去掉注释 inventory 定义托管主机地址配置文件路径名
inventory指定的配置文件,写入远程主机的地址 Inventory可以直接指定脚本(使用python语言)
61行 host_key_checking = False
/etc/ansible/hosts文件中:
vim /etc/ansible/hosts
[web]
web1
web2
[db]
db1
db2
[other]
Cache ansible_ssh_port=222
[all:vars]
ansible_ssh_private_key_file="/root/.ssh/key" //使用文件名为key的秘钥连接时不需要密码
ansible_ssh_port //通过此变量设置端口号
ansible_ssh_user //设置默认试试用户名