怎麼部署 Ansible 環境?
Last updated
Last updated
在本次的章節裡,凍仁將簡單地介紹 Ansible 基本觀念和怎麼安裝、設定 Ansible。
在 Ansible 的世界裡,我們會透過 inventory 檔案來定義有哪些 Managed node (被控端),並藉由 SSH 和 Python 進行溝通。
換句話說,當 Control Machine (主控端) 可以用 SSH 連上 Managed node,且被連上的機器裡有預載 Python 時,Ansible 就可以運作了!
Control Machine
指的是我們主要會在上面操作 Ansible 的機器,凍仁喜歡用主控端來形容它。它可以是我們平時用的電腦、手機 或機房裡的某一台機器,也可以把它想成是一般 Lab 練習裡的 Workstation
。
Managed node
則是被 Ansible 操縱的機器,凍仁喜歡用被控端來形容它。在很多的 Lab 練習裡會用 Server
來稱呼它。
在一般的情況下,我們只需在 Control Machine 裡安裝 Ansible 即可,因為 GNU/Linux 和 macOS 的 Managed node 都早已預載了 Python 2.5 以上的版本,且開通了 SSH 連線的條件。
若想拿 Ansible 來管 Windows 了話,則需進行較多的設置。大家可參考凍仁先前分享的 Ansible - Roles & Windows 簡報和官方文件。
礙於文章篇幅,這裡只會提到凍仁較常用的環境,其餘的部份還請參考官方文件和 Ansible 台灣使用者社群所維護的 Ansible 安裝教學。
目前最新釋出的 Ansible 版本為 v2.2.0.0。
Ubuntu (Apt)
安裝 add-apt-repository
必要套件。
使用 Ansible 官方的 PPA 套件來源。
安裝 Ansible。
CentOS (Yum)
新增 epel-release
第三方套件來源。
安裝 Ansible。
macOS (Homebrew)
請先安裝 homebrew,已安裝者請略過。
安裝 Ansible。
Python (Pip)
Ansible 近來的釋出速度很快,若想追求較新的版本可改用 Pip 的方式進行安裝,較不建議初學者使用。
需請先安裝 pip,已安裝者請略過。
升級 pip。
安裝 Ansible。
正常在 Managed Node 我們都會安裝 OpenSSH server 和開通連線權限以便於遠端管理,OpenSSH 這邊凍仁就不多加贅述了。
Python 的部份呢?雖說現代的 GNU/Linux 大多都早已內建了,可 Ansible 預設使用的 Python 是 2.x 的版本,這在 Ubuntu 16.04 預載 Python 3.4 的環境上需做些調整,詳情請參閱 Python 3 Support | Ansible Documentation 一文。
Ubuntu.
CentOS.
macOS: 在 macOS 10.11 裡,我們只需使用內建的 OpenSSH server 和 Python 即可,詳情請參考 Apple 官方的 OS X El Capitan: 允許遠端電腦取用您的 Mac 一文進行設置。
我們可以藉由 ansible.cfg
來設定預設的 inventory 檔案的路徑、遠端使用者名稱和 SSH 金鑰路徑等相關設定。
安裝好 Ansible 後,我們可以在 /etc/ansible/
的目錄底下找到 Ansible 的設定檔。
通常我們較偏愛把 ansible.cfg
和 hosts
這兩個檔案與其它的 Playbooks
放在同個專案目錄底下,然後透過版本控制系統 (例如 Git) 把它們一起儲存起來,以實現 Ansible 的 Infrastructure as Code!
inventory
就單字本身有詳細目錄、清單和列表的意思。在這裡我們可以把它當成是一份主機列表,我們可透過它對定義每個 Managed Node 的代號、IP 位址、連線相關資訊和群組。
若有對 Control Machine 本機操作的需求,建議於 /etc/ansible/hosts
補上 local 的設定。
當已上的設置都完成了,您可以試著在終端機裡用 Ansible 呼叫本機印出 Hello World
。
歡迎來到 Ansible 的世界!:D
Ansible 已在 2.2 時加入了 Python 3 Support 的功能,感謝友人 @maxsolar 的 feedback,這下凍仁可以少寫一篇文章了!
▲ hostfile
參數即將在 Ansible 2.8.0 被移除,若您是使 Ansible 2.4.0 以上的版本,請改用 inventory
,詳情請參考官方文件。