ansible部署
## 一 ansible基本介绍
[TOC]
中文官网:<http://www.ansible.com.cn/>
英文官网:<https://docs.ansible.com/>
### 1、简介
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
- (1)、连接插件connection plugins:负责和被监控端实现通信;
- (2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
- (3)、各种模块核心模块、command模块、自定义模块;
- (4)、借助于插件完成记录日志邮件等功能;
- (5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务
### 2、特性
- (1)、no agents:不需要在被管控主机上安装任何客户端;
- (2)、no server:无服务器端,使用时直接运行命令即可;
- (3)、modules in any languages:基于模块工作,可使用任意语言开发模块;
- (4)、yaml,not code:使用yaml语言定制剧本playbook;
- (5)、ssh by default:基于SSH工作;
- (6)、strong multi-tier solution:可实现多级指挥。
### 3、优点
- (1)、轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
- (2)、批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
- (3)、使用python编写,维护更简单,ruby语法过于复杂;
- (4)、支持sudo。
### 4、任务执行流程
## 二 ansible部署
[TOC]
主机:centos 7
版本:python 2.7.5
### 1 yum源安装
vi /etc/yum.repos.d/epel.repo
```yaml
[epel]
name=epel
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-$releasever&arch=$basearch
enabled=1
gpgcheck=0
```
```yaml
yum clean all && yum update
yum -y install ansible
ansible --version
## 三 ansible配置
[TOC]
server:192.168.0.203
client:192.168.0.181
### 一 开始配置
#### 1、 使用ansible前需实现ansible服务器对另外1台机的ssh无密码访问
输入命令:一直按回车,直至完成操作;
```yaml
ssh-keygen -t rsa
```
写入信任文件(将/root/.ssh/id_rsa.pub分发到其他服务器,并在所有服务器上执行如下指令)
```yaml
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
```
```
#### 2、 添加ansible客户机组,在最后面添加如下内容:
vim /etc/ansible/hosts
```yaml
[test]
192.168.0.181
[test2]
192.168.0.56
```
### 三 使用ansible
- 1、 在另外1台机上执行ping命令:
ansible group1 -m ping
- 2、 复制本机文件到组group1:ansible group1 -m copy -a “src=/etc/hosts dest=/etc/”
- 3、 帮group1安装软件:ansible group1 -m shell -a “yum install wget -y”
## 四 ansible配置秘钥方式
[TOC]
server:192.168.0.203
client:192.168.0.181
### 一 开始配置
#### 1、 使用ansible前需实现ansible服务器对另外1台机的ssh无密码访问
输入命令:一直按回车,直至完成操作;
```yaml
ssh-keygen -t rsa
```
写入信任文件(将/root/.ssh/id_rsa.pub分发到其他服务器,并在所有服务器上执行如下指令)
```yaml
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
```
```
#### 2、 添加ansible客户机组,在最后面添加如下内容:
vim /etc/ansible/hosts
```yaml
[test]
192.168.0.181
[test2]
192.168.0.56
```
### 二、使用ansible
- 1、 在另外1台机上执行ping命令:
ansible group1 -m ping
- 2、 复制本机文件到组group1:ansible group1 -m copy -a “src=/etc/hosts dest=/etc/”
- 3、 帮group1安装软件:ansible group1 -m shell -a “yum install wget -y”
## 五 ansible配置密码方式
[TOC]
server:192.168.0.203
client:192.168.0.181
### 一 开始配置
#### 1、 设定用户名/密码
可以看到缺省的情况下SSH: EXEC ssh -C -o会被调用,根据ssh的设定选项,可以不必打通ssh通道,但是实际在执行的时候需要输入用户名和密码,而这两个信息,可以通过如下选项进行设定
| 设定项 | 说明 |
| ------------ | ------------ |
| test1 | 为别名 |
| ansible_host | 主机ip地址 |
| ansible_port | ssh的端口(默认端口可不写) |
| ansible_ssh_user | 用户名 |
| ansible_ssh_pass | 密码 |
#### 2、 添加ansible客户机组,在最后面添加如下内容:
vim /etc/ansible/hosts
```yaml
test1 ansible_host=192.168.0.181 ansible_port=22 ansible_ssh_user=root ansible_ssh_pass=liumiao
```
#### 3、 添加ansible客户机组,添加test组:
vim /etc/ansible/hosts
```yaml
[test]
192.168.0.181 ansible_ssh_user=root ansible_ssh_pass=liumiao
192.168.0.182 ansible_ssh_user=root ansible_ssh_pass=liumiao
192.168.0.183 ansible_ssh_user=root ansible_ssh_pass=liumiao
```
#### 4 、 如何添加到组有超过2个以上服务器操作,就需要修改修改配置文件
```yaml
vim /etc/ansible/ansible.cfg
host_key_checking = False
```
### 二、使用ansible test为组名
```yaml
ansible test -m ping
192.168.0.181 | SUCCESS => {
"changed": false,
"ping": "pong"
}
192.168.0.182 | SUCCESS => {
"changed": false,
"ping": "pong"
}
192.168.0.183 | SUCCESS => {
"changed": false,
"ping": "pong"
}
```
- 感谢你赐予我前进的力量