Ansible是一个简单高效的自动化运维管理工具,用Python开发,能大批量管理N多台机器,可以并发的在多台机器上部署应用、安装软件、执行命令、配置和编排任务。

 

一、Ansible工作机制

 

ansible playbook 安装模板 ansible安装配置_Ansible

从图中可以看出ansible分为以下几个部份:

1) Control Node:控制机器

2) Inventory:主机清单,配置管理主机列表

3) Playbooks:剧本、任务编排。根据规则定义多个任务,模块组织结构清晰,由ansible自动执行。

4) Modules(Core | Custom):模块,用于执行某个具体的任务

5) connection plugin(连接插件):Ansible通过不同的协议连接到远程主机上,执行指定的命令。默认采用ssh协议连接远程主机。

 

二、Ansible执行流程

 

ansible playbook 安装模板 ansible安装配置_vim_02

简单理解就是Ansible在运行时,首先读取ansible.cfg中的配置,根据规则获取Inventory中的管理主机列表,并行的在这些主机中执行配置的任务,最后等待执行返回的结果。

 

三、安装Ansible

一台控制主机:192.168.1.103
三台管理主机:
192.168.1.101
192.168.1.102
192.168.1.103
安装要求:Python2.6/2.7
 
yum安装(推荐)
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum install ansible

四、配置

控制主机:用于控制其它机器的主机

管理主机:被控制主机管理的主机

1、配置管理主机
vim /etc/ansible/hosts
在hosts文件中添加管理主机的IP地址列
192.168.1.101
192.168.1.102
192.168.1.103
2、配置控制主机SSH密钥
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.101
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.102
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.103
3、ansible配置
vim /etc/ansible/ansible.cfg
1)禁用每次执行ansbile命令检查ssh key host 
host_key_checking = False
2)开启日志记录
log_path = /var/log/ansible.log
3)ansible连接加速配置
[accelerate]
#accelerate_port = 5099
accelerate_port = 10000
#accelerate_timeout = 30
#accelerate_connect_timeout = 5.0
 
# If set to yes, accelerate_multi_key will allow multiple
# private keys to be uploaded to it, though each user must
# have access to the system via SSH to add a new key. The default
# is "no".
accelerate_multi_key = yes

 

五、测试

最后测试下在三台管理机器批量执行一个ping命令

ansible all -m ping
192.168.1.103 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
192.168.1.101 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
192.168.1.102 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
 
ansible程序结构
安装目录
通过使用rpm -ql ansible指令可以查看ansible安装的所有文件位置!
配置文件目录:/etc/ansible/
执行文件目录:/usr/bin/
Lib库依赖目录:/usr/lib/pythonX.X/site-packages/ansible/
Help文档目录:/usr/share/doc/ansible-X.X.X/
Man文档目录:/usr/share/man/man1/
 
ansible配置文件
设置/etc/ansible/ansible.cfg配置参数,ansible有许多参数,下面列出常用的参数:
inventory:#这个参数表示资源清单inventory文件的位置,资源清单就是一些ansible需要连接管理的主 机列表。这个参数的配置实例如下:
inventory = /etc/ansible/hosts
library: ansible的操作动作,无论是本地或远程,都使用一小段代码来执行,这小段代码称为模块,这个library参数就是指向存放ansible模块的目录。配置实例如下:
library = /usr/share/ansible
 
ansible命令集
/usr/bin/ansible    # Ansibe AD-Hoc 临时命令执行工具,常用于临时命令的执行
/usr/bin/ansible-doc    # ansible 模块功能查看工具
/usr/bin/ansible-galaxy     # 下载/上传优秀代码或Roles模块 的官网平台,基于网络的
/usr/bin/ansible-playbook   # ansible 定制自动化的任务集编排工具
/usr/bin/ansible-pull # ansible远程执行命令的工具,拉取配置而非推送配置(使用较少,海量机器时使用,对运维的架构能力要求较高)
/usr/bin/ansible-vault # ansible 文件加密工具
/usr/bin/ansible-console # ansible基于Linux Consoble界面可与用户交互的命令执行工具
 
ansible命令详解
###命令格式:
ansible <host-pattern> [-f forks] [-m module_name] [-a args]
ansible -h