Ansible 简介
Ansible 使用 Python 语言开发, 巧妙的设计, 实现了简单易用, 功能强大的自动化管理工具. 目前它已经广泛应用于各种规模, 各个领域的企业.
Ansible 应用领域
Ansible 的编排引擎可以出色地完成配置管理, 流程控制, 资源部署等工作, 与其他 IT 自动化产品比较, Ansible 提供了一种不需要安装客户端软件, 管理简便, 功能强大的基础架构配置, 维护工具.
安装部署过程特别简单, 学习曲线很平坦;
管理主机便捷, 支持多台主机并行管理;
避免在被管理主机上安装客户代理, 打开额外端口, 采用无代理方式, 只是利用现在的 ssh 后台进程;
用于描述基础架构的语言无论对机器还是对人都是友好的;
关注安全, 很容易对执行的内容进行审计, 评估, 重写;
能够立即管理远程被管理主机, 不需要预先安装任何软件;
不仅仅支持 Python, 可运行使用任何动态语言开发的模块;
非 root 账号也可以使用;
成为最简单, 易用的 IT 自动化系统
Ansible 功能特性
从功能上实现了以下目标:
应用代码自动化部署
系统管理配置自动化
支持持续交付自动化
支持云计算, 大数据平台 (如 AWS,OpenStack,CloudStack,VMWare 等环境)
轻量级, 无需在客户端安装 agent, 更新时只需在控制机上进行一次更新
批量任务执行可以写成脚本, 不用分发到远程主机就可以执行
使用 Python 编写, 维护更简单
支持非 root 用户管理操作, 支持 sudo
系统环境
主机 | 操作系统 | IP 地址 |
---|---|---|
Ansible Server | Centos 7.3 X86_64 | 192.168.96.15 |
Client1 | Centos 7.3 X86_64 | 192.168.96.23 |
Client2 | Centos 7.3 X86_64 | 192.168.96.24 |
一, 安装 Ansible
1. 关闭防火墙及 Selinux
- setenforce 0
- systemctl stop firewalld
2. 安装 repo 源
yum -y install epel-release
3. 安装 rabbitmq-server 软件包
yum -y install ansible tree
4. 查看 ansible 目录结构
tree /etc/ansible/
5. 编辑主机及组的配置
- vim /etc/ansible/hosts
- # 新增主机
- [webserver]
- 192.168.96.23
- 192.168.96.24
- [mysql]
- 192.168.96.24
二, 配置 Linux 被控机 ssh 无密码访问
1. 生成一对密钥
- ssh-keygen -t rsa
- Generating public/private rsa key pair.
- Enter file in which to save the key (/root/.ssh/id_rsa):
- Enter passphrase (empty for no passphrase):
- Enter same passphrase again:
- Your identification has been saved in /root/.ssh/id_rsa.
- Your public key has been saved in /root/.ssh/id_rsa.pub.
- The key fingerprint is:
- SHA256:rkN0zcCPMUsNd/JcugxgF2z5DGCbQtMVCqDl4ZSg6rA root@client
- The key's randomart image is:
- +---[RSA 2048]----+
| ..=o+o**B+. . |
| . *.o =BB*= o |
|. . o ..+@.++ |
|. ..+ +oo. |
|o . .S o |
|o. .. |
|E. . . |
- | .. |
- | .. |
- +----[SHA256]-----+
2. 发送公钥至被控制机上
- cd /root/.ssh
- ssh-copy-id root@192.168.96.23
yes-----> 输入对方 root 密码 --->
ssh-copy-id root@192.168.96.24
yes-----> 输入对方 root 密码 --->
3. 启用 ssh 代理
- ssh-agent bash
- ssh-add
至此, ansible 管理端已经安装完毕了
三, 对被管节点批量执行操作
1. 对所有被管节点连通性进行测试
ansible all -m ping
2. 对 webserver 组所有主机执行 date 命令
ansible webserver -m command -a 'date'
3. 对 webserver 组所有主机执行添加计划性任务
ansible webserver -m cron -a 'minute="*/10"job="/bin/echo hello"name="test cron job"'
4. 对 webserver 组所有主机执行查询计划性任务
ansible webserver -a 'crontab -l'
来源: http://blog.51cto.com/10316297/2153100