http://docs.ansible.com/ansible/html
https://galaxy.ansible.com/python
Ansible是一個IT自動化工具。 它能夠配置系統,部署軟件,並編排更先進的IT任務,如持續部署或零停機滾動更新。git
Ansible的主要目標是簡單易用。 它還強調了安全性和可靠性,具備最少的移動部件,用OpenSSH來傳輸(使用加速socket模式和pull模式做爲替代方案)github
是一種針對人們的可審計性設計的語言 - 甚至這些人都不熟悉項目。數據庫
咱們認爲簡單性與各類規模的環境相關,所以咱們爲全部類型的繁忙用戶設計:開發人員,系統管理員,發佈工程師,IT經理以及二者之間的全部人員。 可適用於管理全部環境,從具備少許實例的小型設置到具備數千個實例的企業環境。安全
能夠無代理的方式管理機器。 歷來沒有一個問題,如何升級遠程守護程序或沒法管理系統的問題,由於守護程序被卸載。 因爲OpenSSH是同行評議的開源組件之一,安全性大大下降。 可解密是分散的 - 它依賴於您現有的操做系統憑據來控制對遠程機器的訪問。 若是須要,Ansible能夠輕鬆鏈接到Kerberos,LDAP和其餘集中式身份驗證管理系統。bash
源代碼:https://github.com/ansible/ansible/服務器
安裝ssh
安裝擴展源 http://fedoraproject.org/wiki/EPELsocket
yum install ansible
咱們首先顯示的不是「可配置」的強大的配置/部署/編排功能。 這些功能是由單獨的部分所涵蓋的playbooks來處理的。
在開始以前,瞭解Ansible如何經過SSH與遠程機器通訊很是重要。
默認狀況下,Ansense 1.3及更高版本將盡量使用本機OpenSSH進行遠程通訊。 這啓用了ControlPersist(性能特徵),Kerberos以及~/.ssh/config
選項,例如Jump Host設置。 可是,當使用Enterprise Linux 6操做系統做爲控制機器(Red Hat Enterprise Linux和衍生產品如CentOS)時,OpenSSH版本可能太舊,沒法支持ControlPersist。 在這些操做系統上,Ansible將會使用一個名爲「paramiko」的OpenSSH的高質量Python實現。 若是您但願使用Kerberized SSH等功能,請考慮使用Fedora,OS X或Ubuntu做爲控制檯,直到您的平臺可使用較新版本的OpenSSH,或者在Ansible中加入「加速模式」。 見加速模式 。
在最新版本中,包括Ansible 1.2版本,默認是paramiko。 必須使用-c
ssh選項或配置文件中設置本地SSH。
偶爾會遇到不支持SFTP的設備。 這是罕見的,但若是發生,您能夠在配置文件中切換到SCP模式。
雖然這多是常識,但值得分享:任何管理系統受益於在被管理的機器附近運行。 若是您在雲中運行可執行文件,請考慮從雲內的計算機運行它。 在大多數狀況下,這將比在互聯網上更好。
做爲高級主題,Ansible不只須要經過SSH遠程鏈接。 運輸是可插拔的,而且有用於在本地管理某些東西以及管理chroot,lxc和jail容器的選項。 一種叫作「ansible-pull」的模式也能夠經過預約的git檢查來反轉系統並經過系統「電話回家」來從中央存儲庫中提取配置指令。
如今你已經安裝了Ansible,如今該開始一些基礎了。
編輯(或建立) /etc/ansible/hosts
並將一個或多個遠程系統放在其中。 您的公共SSH密鑰應位於這些系統上的authorized_keys
中:
192.0.2.50
aserver.example.org bserver.example.org
這是一個inventory文件,這裏還有更詳細的說明: inventory 。
咱們假設您正在使用SSH密鑰進行身份驗證。 要設置SSH代理以免從新輸入密碼,您能夠執行如下操做:
$ ssh-agent bash
$ ssh-add〜/ .ssh / id_rsa
(根據您的設置,您可能但願使用Ansible的 - --private-key
選項來指定pem文件)
如今ping全部節點:
$ ansible all -m ping
可能會嘗試使用您當前的用戶名遠程鏈接到計算機,就像SSH同樣。 要覆蓋遠程用戶名,只需使用'-u'參數便可。
若是你想訪問sudo模式,還有標誌:
# as bruce
$ ansible all -m ping -u bruce
# as bruce, sudoing to root $ ansible all -m ping -u bruce --sudo # as bruce, sudoing to batman $ ansible all -m ping -u bruce --sudo --sudo-user batman # With latest version of ansible `sudo` is deprecated so use become # as bruce, sudoing to root $ ansible all -m ping -u bruce -b # as bruce, sudoing to batman $ ansible all -m ping -u bruce -b --become-user batman
(若是您想要使用sudo替換,則能夠在Ansible的配置文件中更改sudo實現。傳遞給sudo(如-H)的標誌也能夠設置在那裏。)
恭喜! 您已經使用Ansible聯繫了您的節點。 如今很快就要到:閱讀關於Introduction To Ad-Hoc Commands更多的真實案例,探索您能夠對不一樣的模塊作些什麼,並瞭解可用的Playbook語言。 可Ansible不只僅是運行命令,還具備強大的配置管理和部署功能。 還有更多的探索,但你已經有一個徹底工做的基礎設施!
[root@mhc ~]# ansible all -a "/bin/echo hello"
109.105.4.65 | SUCCESS | rc=0 >>
hello
提示
運行命令時,可使用「localhost」或「127.0.0.1」做爲服務器名稱來指定本地服務器。
例:
$ ansible localhost -m ping -e'ansible_python_interpreter =「/ usr / bin / env python」'
您能夠經過將其添加到清單文件中來明確指定localhost:
localhost ansible_connection = local ansible_python_interpreter =「/ usr / bin / env python」
可選1.2.1及更高版本默認啓用主機密鑰檢查。
若是主機被從新安裝,而且在'known_hosts'中有一個不一樣的密鑰,這將致使錯誤消息,直到更正。 若是一個主機不是最初在'known_hosts',這將致使提示確認密鑰,這將致使交互式體驗,若是使用Ansible,從cron。 你可能不想要這個。
若是您瞭解這些含義並但願禁用此行爲,能夠經過編輯/etc/ansible/ansible.cfg
或~/.ansible.cfg
:
[ 默認值 ] host_key_checking = False
或者,這能夠由環境變量設置:
$ export ANSIBLE_HOST_KEY_CHECKING = False
另請注意,paramiko模式的主機密鑰檢查速度至關慢,所以在使用此功能時也建議切換到「ssh」。
Ansible將在遠程系統日誌的遠程系統上記錄有關模塊參數的一些信息,除非任務或播放標有「no_log:True」屬性。 這將在後面解釋。
要在控制機器上啓用基本日誌記錄,請參閱配置文件文檔並設置「log_path」配置文件設置。 企業用戶也可能對安全塔感興趣。 Tower提供了一個很是強大的數據庫日誌記錄功能,能夠根據主機,項目和特定庫存查看歷史記錄,並以圖形方式和REST API進行探索。