引入
现在要在50台主机上都安装上nginx、php、mysql。
- 手工去装 效率太低
- 写一个shell脚本去自动安装
如果出了错误,需要自己手工去收集信息然后解决,脚本更新了以后又要重新下载一遍去执行,不方便效率低。
有没有一种工具,能把任务批量给主机去执行,然后还能收集执行过程中的具体信息?
Ansible
这个工具,就很方便了解决这些问题。
概述
Ansible是一个开源的自动化运维工具
基于 Python paramiko 开发,分布式,无需客户端,轻量级,配置语法使用 YMAL 及 Jinja2模板语言,更强的远程命令执行操作。
工作机制
ansible要把任务派发给谁来执行?
所以,得有一个配置清单,告诉ansible要在哪些主机上执行任务
ansible如何来执行任务?
ansible 模块通过 SSH 协议,发送命令到目的主机执行
1 | Ansible | ansible核心 |
---|---|---|
2 | Modules | 包括 Ansible 自带的核心模块及自定义模块 |
3 | Plugins | 完成模块功能的补充,包括连接插件、邮件插件等 |
4 | Playbooks | 剧本,定义 Ansible 多任务配置文件,由Ansible 自动执行 |
5 | Inventory | 定义 Ansible 管理主机的清单清单 |
6 | hosts | 被管理节点 |
安装
删除原来的源,直接使用阿里的源
代码语言:txt复制cd /etc/yum.repos.d/
#如果是红帽系统,需要把$releaseserve替换为7
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
安装Ansible,在安装ansible时不需要epel
代码语言:txt复制mv epel-6.repo epel-6.repo.bak
yum install -y ansible
安装好以后再还原回来
代码语言:txt复制mv epel-6.repo.bak epel-6.repo
查看版本信息
代码语言:txt复制[root@server ansible]#ansible --version
ansible 2.3.1.0
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides
python version = 2.7.5 (default, Aug 2 2016, 04:20:16) [GCC 4.8.5 20150623 (Red Hat 4.8.5-4)]