Ansible简介
Ansible的功能
Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
Ansible是基于模块工作的,它只是提供了一种运行框架,它本身没有完成任务的能力,真正执行操作的是Ansible的模块,比如copy模块用于拷贝文件到远程主机上,service模块用于管理服务的启动、停止、重启等。
Ansible系统架构

Ansible主要包含以下几个功能模块:
- Ansible:Ansible核心程序。
- HostInventory:主机清单,记录Ansible管理的主机信息,包括端口、密码、IP等。
- Playbooks:剧本,YAML格式的文本文件。定义主机需要调用哪些模块来完成相应的功能。
- CoreModules:核心模块,Ansible的所有操作都是通过调用核心模块来完成任务。
- CustomModules:自定义模块,完成核心模块无法完成的功能,支持多种语言。
- ConnectionPlugins:连接插件,用于Ansible和Host进行通信。
Ansible的安装
1、安装epel源。

2、安装Ansible。

主机清单的配置
主机清单记录了Ansible管理的主机信息,包括端口、密码、IP等。默认的主机清单配置文件为:/etc/ansible/hosts。
1、主机的配置有以下几种:
- IP地址,例如:192.168.0.1。
- 域名或主机名,例如:www.example.com。
- 域名或地址区间,例如:192.168.0.[1:10]表示192.168.0.1~192.168.0.10。
- 主机组,用于对主机进行分组,一个主机可以属于多个组。例如:[webservers]。

2、主机账号的配置包括:ansible_port(SSH端口)、ansible_user(登录用户)、ansible_password(登录密码)。账号的配置有以下三种:
2.1、主机IP或主机名称后直接定义,此种方式适合主机登录信息不一致的情况。

2.2、主机登录信息一致的情况下可以使用变量方式,变量的定义方式为:[主机组名:vars]。

2.3、在Ansible主机上生成SSH密钥,使用ssh−copy−id将公钥拷贝至目标主机,实现免密登录。

Ansible的使用
Ansible命令的格式为:ansible 组名/主机名 -m 模块名 -a 命令参数。若目标主机是所有主机,可使用关键字“all”:ansible all -m 模块名 -a 命令参数。
