ansible,一个由 Python 编写的强大的配置管理解决方案。尽管市面上已经有不少可供选择的配置管理解决方案,但他们各有优劣,而 ansible 的特色就在于它的简洁。让 ansible 在主流的配置管理系统中不同凡响的一点即是,它并不须要你在想要配置的每一个节点上安装本身的组件。同时提供的一个优势在于,若是须要的话,你能够在不止一个地方控制你的整个基础架构。最后一点是它的正确性,或许这里有些争议,可是我认为在大多数时候这仍然能够做为它的一个优势。说得足够多了,让咱们来着手在 RHEL/CentOS 和基于 Debian/Ubuntu 的系统中安装和配置 Ansible。html
Ansible 工具并不使用守护进程,它也不须要任何额外的自定义安全架构,所以它的部署能够说是十分容易。你须要的所有东西即是 SSH 客户端和服务器了。linux
+-----------------+ +---------------+ |安装了 Ansible 的| SSH | 文件服务器1 | |Linux/Unix 工做站|<------------------>| 数据库服务器2 | 在本地或远程 +-----------------+ 模块 | 代理服务器3 | 数据中心的 192.168.1.100 +---------------+ Unix/Linux 服务器
其中:git
ansible 的安装垂手可得,许多发行版的第三方软件仓库中都有现成的软件包,能够直接安装。其余简单的安装方法包括使用 pip 安装它,或者从 github 里获取最新的版本。若想使用你的软件包管理器安装,在基于 RHEL/CentOS Linux 的系统里你极可能须要 EPEL 仓库。github
输入以下 yum 命令:shell
$ sudo yum install ansible
输入以下 apt-get 命令:数据库
$ sudo apt-get install software-properties-common $ sudo apt-add-repository ppa:ansible/ansible $ sudo apt-get update $ sudo apt-get install ansible
pip 命令是一个安装和管理 Python 软件包的工具,好比它能管理 Python Package Index 中的那些软件包。ubuntu
以下方式在 Linux 和类 Unix 系统中通用:centos
$ sudo pip install ansible
你能够经过以下命令从 github 中安装最新版本:安全
$ cd ~ $ git clone git://github.com/ansible/ansible.git $ cd ./ansible $ source ./hacking/env-setup
当你从一个 git checkout 中运行 ansible 的时候,请记住你每次用它以前都须要设置你的环境,或者把这个设置过程加入你的 bash rc 文件中:bash
# 加入 BASH RC $ echo "export ANSIBLE_HOSTS=~/ansible_hosts" >> ~/.bashrc $ echo "source ~/ansible/hacking/env-setup" >> ~/.bashrc
ansible 的 hosts 文件包括了一系列它能操做的主机。默认状况下 ansible 经过路径 /etc/ansible/hosts 查找 hosts 文件,不过这个行为也是能够更改的,这样当你想操做不止一个 ansible 或者针对不一样的数据中心的不一样客户操做的时候也是很方便的。你能够经过命令行参数 -i 指定 hosts 文件:
$ ansible all -m shell -a "hostname" --ask-pass -i /etc/some/other/dir/ansible_hosts
不过我更倾向于使用一个环境变量,这能够在你想要经过 source 一个不一样的文件来切换工做目标的时候起到做用。这里的环境变量是 $ANSIBLE_HOSTS,能够这样设置:
$ export ANSIBLE_HOSTS=~/ansible_hosts
一旦全部须要的组件都已经安装完毕,并且你也准备好了你的 hosts 文件,你就能够来试一试它了。为了快速测试,这里我把 127.0.0.1 写到了 ansible 的 hosts 文件里:
$ echo "127.0.0.1" > ~/ansible_hosts
如今来测试一个简单的 ping:
$ ansible all -m ping
或者提示 ssh 密码:
$ ansible all -m ping --ask-pass
我在刚开始的设置中遇到过几回问题,所以这里强烈推荐为 ansible 设置 SSH 公钥认证。不过在刚刚的测试中咱们使用了 --ask-pass,在一些机器上你会须要安装 sshpass 或者像这样指定 -c paramiko:
$ ansible all -m ping --ask-pass -c paramiko
固然你也能够安装 sshpass,然而 sshpass 并不老是在标准的仓库中提供,所以 paramiko 可能更为简单。
下一步: