如何使用原子主機(jī)(Atomic Host)、Ansible和Cockpit部署容器
我在紅帽工作的期間,每天在 Fedora Atomic host 上使用 Docker 容器。 來自原子項目Project Atomic的原子主機(jī)Atomic Host是一個輕量級容器操作系統(tǒng),可以以 Docker 格式運(yùn)行 Linux 容器。它專門為提高效率而定制,使其成為用于云環(huán)境的 Docker 運(yùn)行時系統(tǒng)的理想選擇。
幸運(yùn)的是,我發(fā)現(xiàn)一個很好的方式來管理在主機(jī)上運(yùn)行的容器:Cockpit。 它是一個具有漂亮的 Web 界面的 GNU/Linux 服務(wù)器遠(yuǎn)程管理工具。它可以幫我管理在主機(jī)上運(yùn)行的服務(wù)器和容器。你可以在從之前發(fā)布在這里的這篇概述中了解 Cockpit 的更多信息。不過,我也希望在主機(jī)上可以自動運(yùn)行容器,我可以使用 Ansible 來完成這個工作。
請注意,我們不能在原子主機(jī)上使用 dnf 命令。原子主機(jī)并沒有設(shè)計為通用操作系統(tǒng),而是更適合容器和其他用途。但在原子主機(jī)上設(shè)置應(yīng)用程序和服務(wù)仍然非常容易。這篇文章向您展示了如何自動化和簡化這個過程。
設(shè)置組件
開始之前,請確保你的系統(tǒng)上安裝了 Ansible。
- sudo dnf -y install ansible
首先,我們需要在原子主機(jī)上運(yùn)行 cockpit 容器。在你的機(jī)器上從 https://github.com/trishnaguha/fedora-cloud-ansible 下載它的源代碼。
- $ git clone https://github.com/trishnaguha/fedora-cloud-ansible.git
現(xiàn)在切換到 cockpit 的目錄,并如下編輯 inventory 文件:
- $ cd fedora-cloud-ansible
- $ cd cockpit
- $ vim inventory
完成如下修改:
- 使用你的原子主機(jī)的 IP 替換掉 IP_ADDRESS_OF_HOST。
- 用您的 SSH 私鑰文件的路徑替換 ansible_ssh_private_key_file ='PRIVATE_KEY_FILE' 行中的PRIVATE_KEY_FILE。
然后保存并退出 inventory 文件編輯。
接下來,編輯 ansible 配置文件:
- $ vim ansible.cfg
替換 remote_user=User 中 User 為你的原子主機(jī)上的遠(yuǎn)程用戶名。然后保存并退出文件編輯。
結(jié)合起來
現(xiàn)在是運(yùn)行 Ansible 的 PlayBook 的時候了。此命令開始運(yùn)行原子主機(jī)上的 Cockpit 容器:
- $ ansible-playbook cockpit.yml
Cockpit 現(xiàn)在運(yùn)行在原子主機(jī)上了。使用瀏覽器去訪問你的實例的公網(wǎng) IP 的 9090 端口——這是 Cockpit 的默認(rèn)端口。舉個例子,如果該實例的 IP 地址是 192.168.1.4,就去訪問 192.168.1.4:9090,你將會看到如下的 Web 界面:
管理你的容器
使用原子主機(jī)的登錄信息或以 root 用戶身份登錄。然后訪問 Cockpit 管理器上的 Containers 部分來查看原子主機(jī)上運(yùn)行的容器。在下面的示例中,您會看到我還設(shè)置了其他容器,如 httpd 和 redis:
注意,該界面允許您直接在 Cockpit 管理器中使用 Run 和 Stop 按鈕啟動和停止容器。您還可以使用 Cockpit 管理器管理您的原子主機(jī)。轉(zhuǎn)到 Tools -> Terminals,在這里里你可以使用原子主機(jī)的終端:
如果您打算在原子主機(jī)上部署容器化的應(yīng)用程序,則可以簡單地為其編寫一個 PlayBook。然后,您可以使用ansible-playbook 命令進(jìn)行部署,并使用 Cockpit 來管理容器。
歡迎你對這個倉庫進(jìn)行分支或添加容器的 PlayBook。