## 一 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"

}

```