Installation

從Github獲取Ansible

如果你有一個github賬戶,可以跟進Ansible在Github的項目: Github project 我們在這裡保持對bugs和feature ideas的跟蹤.

需要安裝些什麼

Ansible預設通過 SSH 協議管理機器.

安裝Ansible之後,不需要啟動或執行一個後臺程序,或是新增一個數據庫.只要在一臺電腦(可以是一臺筆記本)上安裝好,就可以通過這臺電腦管理一組遠端的機器.在遠端被管理的機器上,不需要安裝執行任何軟體,因此升級Ansible版本不會有太多問題.

選擇哪一個版本?

因為Ansible可以很簡單的從源碼執行,且不必在遠端被管理機器上安裝任何軟體,很多Ansible使用者會跟進使用開發版本.

Ansible一般每兩個月出一個發行版本.小bugs一般在下一個發行版本中修復,並在穩定分支中做backports.大bugs會在必要時出一個維護版本,不過這不是很頻繁.

若你希望使用Ansible的最新版本,並且你使用的作業系統是 Red Hat Enterprise Linux (TM), CentOS, Fedora, Debian, Ubuntu,我們建議使用系統的軟體包管理器.

另有一種選擇是通過”pip”工具安裝,”pip”是一個安裝和管理Python包的工具.

若你希望跟進開發版本,想使用和測試最新的功能特性,我們會分享如何從源碼執行Ansible的方法.從源碼執行程式不需要進行軟體安裝.

對管理主機的要求

目前,只要機器上安裝了 Python 2.6 或 Python 2.7 (windows系統不可以做控制主機),都可以執行Ansible.

主機的系統可以是 Red Hat, Debian, CentOS, OS X, BSD的各種版本,等等.

自2.0版本開始,ansible使用了更多控制代碼來管理它的子程序,對於OS X系統,你需要增加ulimit值才能使用15個以上子程序,方法 sudo launchctl limit maxfiles 1024 2048,否則你可能會看見”Too many open file”的錯誤提示.

對託管節點的要求

通常我們使用 ssh 與託管節點通訊,預設使用 sftp.如果 sftp 不可用,可在 ansible.cfg 配置檔案中配置成 scp 的方式. 在託管節點上也需要安裝 Python 2.4 或以上的版本.如果版本低於 Python 2.5 ,還需要額外安裝一個模組:

  • python-simplejson

Note

沒安裝python-simplejson,也可以使用Ansible的”raw”模組和script模組,因此從技術上講,你可以通過Ansible的”raw”模組安裝python-simplejson,之後就可以使用Ansible的所有功能了.

Note

如果託管節點上開啟了SElinux,你需要安裝libselinux-python,這樣才可使用Ansible中與copy/file/template相關的函數.你可以通過Ansible的yum模組在需要的託管節點上安裝libselinux-python.

Note

Python 3 與 Python 2 是稍有不同的語言,大多數Python程式還不能在 Python 3 中正確執行.一些Linux發行版(Gentoo, Arch)沒有預設安裝 Python 2.X 直譯器.在這些系統上,你需要安裝一個 Python 2.X 直譯器,並在 inventory (詳見 Inventory檔案) 中設定 ‘ansible_python_interpreter’ 變數指向你的 2.X Python.你可以使用 ‘raw’ 模組在託管節點上遠端安裝Python 2.X.
例如:ansible myhost --sudo -m raw -a "yum install -y python2 python-simplejson" 這條命令可以通過遠端方式在託管節點上安裝 Python 2.X 和 simplejson 模組.

Red Hat Enterprise Linux, CentOS, Fedora, and Ubuntu 等發行版都預設安裝了 2.X 的直譯器,包括幾乎所有的Unix系統也是如此.

安裝管理主機

從源碼執行

從項目的checkout中可以很容易執行Ansible,Ansible的執行不要求root許可權,也不依賴於其他軟體,不要求執行後臺程序,也不需要設定資料庫.因此我們社群的許多使用者一直使用Ansible的開發版本,這樣可以利用最新的功能特性,也方便對項目做貢獻.因為不需要安裝任何東西,跟進Ansible的開發版相對於其他開源項目要容易很多.

從源碼安裝的步驟

$ git clone git://github.com/ansible/ansible.git --recursive
$ cd ./ansible

使用 Bash:

$ source ./hacking/env-setup

使用 Fish:

$ . ./hacking/env-setup.fish

If you want to suppress spurious warnings/errors, use:

$ source ./hacking/env-setup -q

如果沒有安裝pip, 請先安裝對應於你的Python版本的pip:

$ sudo easy_install pip

以下的Python模組也需要安裝 [1]_:

$ sudo pip install paramiko PyYAML Jinja2 httplib2 six

注意,當更新ansible版本時,不只要更新git的源碼樹,也要更新git中指向Ansible自身模組的 “submodules” (不是同一種模組)

$ git pull --rebase
$ git submodule update --init --recursive

一旦執行env-setup指令碼,就意味著Ansible從源碼中執行起來了.預設的inventory檔案是 /etc/ansible/hosts.inventory檔案也可以另行指定 (詳見 Inventory檔案) :

$ echo "127.0.0.1" > ~/ansible_hosts
$ export ANSIBLE_HOSTS=~/ansible_hosts

你可以在手冊的後續章節閱讀更多關於 inventory 檔案的使用,現在讓我們測試一條ping命令:

$ ansible all -m ping --ask-pass

你也可以使用命令 “sudo make install”

通過Yum安裝最新發布版本

通過Yum安裝RPMs適用於 EPEL 6, 7, 以及仍在支援中的Fedora發行版.

託管節點的作業系統版本可以是更早的版本(如 EL5), 但必須安裝 Python 2.4 或更高版本的Python.

Fedora 使用者可直接安裝Ansible, 但RHEL或CentOS使用者,需要 配置 EPEL

# install the epel-release RPM if needed on CentOS, RHEL, or Scientific Linux
$ sudo yum install ansible

你也可以自己建立RPM軟體包.在Ansible項目的checkout的根目錄下,或是在一個tarball中,使用 make rpm 命令建立RPM軟體包. 然後可分發這個軟體包或是使用它來安裝Ansible.在建立之前,先確定你已安裝了 rpm-build, make, and python2-devel .

$ git clone git://github.com/ansible/ansible.git
$ cd ./ansible
$ make rpm
$ sudo rpm -Uvh ~/rpmbuild/ansible-*.noarch.rpm

通過Apt (Ubuntu)安裝最新發布版本

Ubuntu 編譯版可在PPA中獲得: ` <https://launchpad.net/~ansible/+archive/ansible>`_.

配置PPA及安裝ansible,執行如下命令:

$ sudo apt-get install software-properties-common
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt-get install ansible

Note

在早期Ubuntu發行版中, “software-properties-common” 名為 “python-software-properties”.

也可從源碼checkout中建立 Debian/Ubuntu 軟體包,執行:

$ make deb

你或許也想從源碼中執行最新發行版本,可看前面的說明.

通過 Portage (Gentoo)安裝最新發布版本

$ emerge -av app-admin/ansible

要安裝最新版本,你可能需要在執行 emerge 之前,先做如下操作(unmsk ansible)

$ echo 'app-admin/ansible' >> /etc/portage/package.accept_keywords

若在Gentoo託管節點中,已經安裝了 Python 3 並將之作為預設的 Python slot(這也是預設設定),則你必須在 組變數 或 inventory 變數中設定如下變數 ansible_python_interpreter = /usr/bin/python2

通過 pkg (FreeBSD)安裝最新發布版本

$ sudo pkg install ansible

你或許想從ports中安裝:

$ sudo make -C /usr/ports/sysutils/ansible install

在Mac OSX 上安裝最新發布版本

在 Mac 上安裝 ansible,最好是通過 pip 安裝,在 通過 Pip 安裝最新發布版本 小節介紹.

通過 OpenCSW 安裝最新發布版本(Solaris)

在 Solaris 上安裝 ansible: SysV package from OpenCSW.

# pkgadd -d http://get.opencsw.org/now
# /opt/csw/bin/pkgutil -i ansible

通過 Pacman 安裝最新發布版本(Arch Linux)

Ansible 已經放入了 Community repository:

$ pacman -S ansible

The AUR has a PKGBUILD for pulling directly from Github called ansible-git.

Also see the Ansible page on the ArchWiki.

如果在 Arch Linux 上已經安裝了 Python 3,並設定為預設的 Python slot,你必須在 組變數 或 inventory 變數中設定如下變數: ansible_python_interpreter = /usr/bin/python2

通過 Pip 安裝最新發布版本

Ansible可通過 “pip” 安裝(安裝和管理Python包的工具),若你還沒有安裝 pip,可執行如下命令安裝:

$ sudo easy_install pip

然後安裝Ansible:

$ sudo pip install ansible

如果你是在 OS X Mavericks 上安裝,編譯器可能或告警或報錯,可通過如下設定避免這種情況:

$ sudo CFLAGS=-Qunused-arguments CPPFLAGS=-Qunused-arguments pip install ansible

使用 virtualenv 的讀者可通過 virtualenv 安裝 Ansible, 然而我們建議不用這樣做,直接在全局安裝 Ansible.不要使用 easy_install 直接安裝 ansible.

發行版的Tarball

不想通過git checkout 建立Ansible的軟體包?在這裡可獲取Tarball Ansible downloads

各種版本的Ansible在這裡做了版本標註 git repository

See also

Introduction To Ad-Hoc Commands
Examples of basic commands
Playbooks
Learning ansible’s configuration management language
Mailing List
Questions? Help? Ideas? Stop by the list on Google Groups
irc.freenode.net
#ansible IRC chat channel