Ansible介紹/安裝/入門
Ansible是一個IT自動化工具。 它可以配置系統,部署軟件,並編排更先進的IT任務,如持續部署或零停機滾動更新。
Ansible的主要目標是簡單易用。 它還強調了安全性和可靠性,具有最少的移動部件,用OpenSSH來傳輸(使用加速socket模式和pull模式作為替代方案)
是一種針對人們的可審計性設計的語言 - 甚至這些人都不熟悉項目。
我們認為簡單性與各種規模的環境相關,因此我們為所有類型的繁忙用戶設計:開發人員,系統管理員,發布工程師,IT經理以及兩者之間的所有人員。 可適用於管理所有環境,從具有少量實例的小型設置到具有數千個實例的企業環境。
可以無代理的方式管理機器。 從來沒有一個問題,如何升級遠程守護程序或無法管理系統的問題,因為守護程序被卸載。 由於OpenSSH是同行評議的開源組件之一,安全性大大降低。 可解密是分散的 - 它依賴於您現有的操作系??統憑據來控制對遠程機器的訪問。 如果需要,Ansible可以輕松連接到Kerberos,LDAP和其他集中式身份驗證管理系統。
源代碼:https://github.com/ansible/ansible/
安裝
安裝擴展源 http://fedoraproject.org/wiki/EPEL
yum install ansible
我們首先顯示的不是“可配置”的強大的配置/部署/編排功能。 這些功能是由單獨的部分所涵蓋的playbooks來處理的。
Remote Connection Information
在開始之前,了解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檢查來反轉系統並通過系統“電話回家”來從中央存儲庫中提取配置指令。
Your first commands
現在你已經安裝了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不僅僅是運行命令,還具有強大的配置管理和部署功能。 還有更多的探索,但你已經有一個完全工作的基礎設施!
[[email protected] ~]# 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進行探索。
Ansible介紹/安裝/入門