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 可能更爲簡單。
下一步: