使用原子主機(Atomic Host)、Ansible 和 Cockpit 部署容器

2021-12-24 Linux中國

我在紅帽[1]工作的期間,每天在 Fedora Atomic host[2] 上使用 Docker[3] 容器。 來自原子項目Project Atomic[4]的原子主機Atomic Host是一個輕量級容器作業系統,可以以 Docker 格式運行 Linux 容器。它專門為提高效率而定製,使其成為用於雲環境的 Docker 運行時系統的理想選擇。

幸運的是,我發現一個很好的方式來管理在主機上運行的容器:Cockpit[5]。 它是一個具有漂亮的 Web 界面的 GNU/Linux 伺服器遠程管理工具。它可以幫我管理在主機上運行的伺服器和容器。你可以在從之前發布在這裡的這篇概述[6]中了解 Cockpit 的更多信息。不過,我也希望在主機上可以自動運行容器,我可以使用 Ansible[7] 來完成這個工作。

請注意,我們不能在原子主機上使用 dnf 命令。原子主機並沒有設計為通用作業系統,而是更適合容器和其他用途。但在原子主機上設置應用程式和服務仍然非常容易。這篇文章向您展示了如何自動化和簡化這個過程。

設置組件

開始之前,請確保你的系統上安裝了 Ansible。

sudo dnf -y install ansible

首先,我們需要在原子主機上運行 cockpit 容器。在你的機器上從https://github.com/trishnaguha/fedora-cloud-ansible 下載它的原始碼。

$ git clone https://github.com/trishnaguha/fedora-cloud-ansible.git

現在切換到 cockpit 的目錄,並如下編輯 inventory 文件:

$ cd fedora-cloud-ansible

$ cd cockpit

$ vim inventory

完成如下修改:

使用你的原子主機的 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 為你的原子主機上的遠程用戶名。然後保存並退出文件編輯。

結合起來

現在是運行 Ansible 的 PlayBook 的時候了。此命令開始運行原子主機上的 Cockpit 容器:

$ ansible-playbook cockpit.yml

Cockpit 現在運行在原子主機上了。使用瀏覽器去訪問你的實例的公網 IP 的 9090 埠——這是 Cockpit 的默認埠。舉個例子,如果該實例的 IP 地址是 192.168.1.4,就去訪問 192.168.1.4:9090,你將會看到如下的 Web 界面:

管理你的容器

使用原子主機的登錄信息或以 root 用戶身份登錄。然後訪問 Cockpit 管理器上的 Containers 部分來查看原子主機上運行的容器。在下面的示例中,您會看到我還設置了其他容器,如 httpd 和 redis[8]:

注意,該界面允許您直接在 Cockpit 管理器中使用 Run 和 Stop 按鈕啟動和停止容器。您還可以使用 Cockpit 管理器管理您的原子主機。轉到 Tools -> Terminals,在這裡裡你可以使用原子主機的終端:

如果您打算在原子主機上部署容器化的應用程式,則可以簡單地為其編寫一個 PlayBook。然後,您可以使用 ansible-playbook 命令進行部署,並使用 Cockpit 來管理容器。

歡迎你對這個倉庫[9]進行分支或添加容器的 PlayBook。

via: https://fedoramagazine.org/deploy-containers-atomic-host-ansible-cockpit/

作者:trishnag[10] 譯者:Bestony 校對:wxy

本文由 LCTT[11] 原創編譯,Linux中國 榮譽推出

[1]: https://www.redhat.com/
[2]: https://getfedora.org/en/cloud/download/atomic.html
[3]: https://www.docker.com/
[4]: http://www.projectatomic.io/
[5]: http://cockpit-project.org/
[6]: https://fedoramagazine.org/cockpit-overview/
[7]: https://www.ansible.com/
[8]: https://github.com/trishnaguha/fedora-cloud-ansible/tree/master/redis
[9]: https://github.com/trishnaguha/fedora-cloud-ansible
[10]: https://fedoramagazine.org/author/trishnag/
[11]: https://github.com/LCTT/TranslateProject

推薦文章

相關焦點

  • Docker 容器化部署運維 OpenStack 和 Ceph
    Kolla項目,及其相關的其他項目,如下:Kolla 項目:負責Docker build OpenStack每個服務,如 nova-compute 容器等;Kolla-Ansible 項目:使用 Ansible 部署這些容器,搭建 OpenStack 環境;Kolla-Kubernetes 項目:使用 Kubernetes 部署這些容器,搭建
  • 使用 Cockpit 方便地管理容器
    為什麼使用 Cockpit?因為它可以處理這些管理任務:Cockpit 可以安裝在 Debian、Red Hat、CentOS、Arch Linux 和 Ubuntu 之上。在這裡,我將使用一臺已經安裝了 Docker 的 Ubuntu 16.04 伺服器來安裝系統。在上面的功能列表中,其中最突出的是容器管理。為什麼?因為它使安裝和管理容器變得非常簡單。
  • 20 分鐘建立一個 Ansible 實驗室 | Linux 中國
    工具和軟體本方案使用以下工具和軟體:◈ Ansible 是我們選擇的自動化工具,因為它易於使用,而且足夠靈活,可以滿足實驗室的要求。你必須進行以下設置才能建立環境:◈ 在 BIOS 中啟用虛擬化技術支持(以下是在我的聯想筆記本上的過程)這個實驗室環境有什麼?
  • 用Ansible部署ELK STACK
    首先,你需要編輯Ansible主機文件(/etc/ansible/hosts)。在這個文件中,你通常會列出你希望使用Ansible來管理的伺服器與主機組。由於我們已經使用Ansible建立了與伺服器的連接,因此我們可以使用Ansible ELK Playbook(https://github.com/DanielBerman/ansible-elk-playbook)來進行部署。該劇本遵循經典的Ansible劇本結構:
  • 一文學會主流Ansible Web UI的部署與使用 | 萬字長文
    -1.tar.gztar xvf ansible-tower-setup-bundle-3.7.2-1.tar.gzcd ansible-tower-setup-bundle-3.7.2-1Step4: 安裝Ansible TowerAnsible Tower是使用Ansible playbook來部署的,首先需要配置一下inventory,配置內容如下:
  • Ansible系列-基礎篇-Ansible 的安裝、配置和基本使用
    Linux、MacOS、其他類Unix系統和Windows。2、Ansible 節點主要分為兩類,管理節點和被管理節點•管理節點,就是安裝了 Ansible 的節點,Ansible 所有的指令都是這裡發出,類似指揮部下發通知指令•被管理節點,或者叫目標節點一般是業務主機等,需要在這些節點上批量的部署一些軟體、執行命令、添加定義任務等等需要主要的是 管理節點 和 被管理節點 之間需要配置好 SSH免密通道
  • 一個高效使用Ansible的小技巧
    現今整個技術圈都在吼雲原生(Cloud Native)、容器化,是不是伺服器日常管理就不重要了呢?但其實 Ansible 是基於模塊工作的,本身沒有批量部署的能力。真正具有批量部署的是 ansible 所運行的模塊, Ansible 只是提供一種框架。
  • Ansible系列-基礎篇-Ansible 常見模塊的使用
    "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong"}setup上一篇中配置的時候提到ansible facts 收集目標主機信息,也可以使用 setup 模塊。
  • ansible 入門使用
    執行腳本playbook的方法$ansible-playbook deploy.ymlplaybook的例子deploy.yml的功能為web主機部署apache, 其中包含以下部署步驟:下面文件中使用了兩個變量ansible_hostname和ansible_default_ipv4.address。
  • Kolla 讓 OpenStack 部署更貼心(修正版)
    眾所周知,容器技術具有非常優秀的應用部署敏捷性和擴展性,其中又以 Docker 和 Kubernetes 作為構建容器化應用程式的主要標準,是最受歡迎的容器技術選型。為了適配多樣的應用場景,社區將 Kolla 項目解耦成為了三個組件。由 Kolla 繼續負責構建容器鏡像,由 Kolla-ansible 和 Kolla-kubernetes 負責容器的自動化部署與管理。
  • Ansible的Ad-hoc和Inventory基本使用(啟示錄)
    ansible伺服器Blockinfile模塊:在哪一行插入文本,可帶行標籤Lineinfile模塊:編輯文本,如在哪一行插入replace模塊:替換文本service模塊: 管理伺服器二.Ansible的常用命令和常用參數1.Ansible常用命令ansible mytest -m setup #產看指定主機
  • 使用 Ansible 管理 Windows
    本文主要介紹在如何使用 Ansible 管理 Windows 客戶端,Ansible 官方提供了一個很方便的安裝腳本,對於外網用戶來說安裝真的很輕鬆,可惜筆者遇到的問題是如何在內網部署,有相同煩惱的小夥伴不妨參考下輕輕鬆鬆使用 Ansible 管理 Windows 客戶端Ansible 在 2.3 版本之前對於 Windows 支持的並不算很友好,從 2.4 版本開始已經可以使用原生模塊實現很多需求
  • 每天部署數千個容器實例,擴縮容複雜性該如何管理?
    無論是大型軟體公司還是小型軟體公司,現在每天都要部署數千個容器實例,這種擴縮容的複雜性是他們必須要管理的。本文介紹了如何將 Kubernetes 納入到現有的傳統 CI/CD 管道中,並實現服務的高可用性,以及隨時在生產環境中進行代碼變更。 基於容器的微服務架構改變了開發和運維團隊測試和部署現代應用程式 / 服務的方式。
  • Ansible及Ansible Tower安裝
    優點在於它是去中心化的工具,可以直接通過ssh管理遠程主機,實現無Agent的部署(ssh+python環境已經原生集成在Linux中)。Ansible的缺點也在於其去中心化的特點,本身不支持高可用和分布式架構,無法實現Server-Proxy-Client的架構。
  • 在KVM環境中使用容器做為Linux安裝分發伺服器
    1 目標使用容器 提供tftp,dhcp,http服務, 實現在KVM環境中提供kickstart全自動安裝服務。
  • Ansible實現ADC自動化運維ADC自動化運維
    Ansible是一種開源軟體供應,配置管理和應用程式部署工具,可將基礎結構作為代碼來實現。它可以在許多類Unix系統上運行,並且可以配置類Unix系統以及MicrosoftWindows。 它包括自己的描述性語言來描述系統配置。Ansible是無代理的,它通過SSH或Windows遠程管理(允許遠程PowerShell執行)臨時進行遠程連接以執行其任務。
  • Ansible使用及YAML語法介紹
    這個工具的目標有這麼幾項:自動化部署APP;自動化管理配置項;自動化的持續交付;自動化的(AWS)雲服務管理。Ansible 不需要在遠程主機上安裝 client/agents,因為它是基於 SSH 來和遠程主機通訊的。
  • CDP私有雲集群自動化部署
    /centos7-init.sh您可以在沒有任何憑據的情況下運行,但理想情況下,我們將設置一個配置文件,其中包含雲憑據(如果部署在公共雲上)和 CDP 許可證文件(如果你想使用一個)的路徑。清單連結到主機模板,通過使用host_template在這裡分配給cluster_worker_nodes和cluster_mater_nodes的變量。注意:每個主機只能有一個主機模板。在此文件中,唯一主機的數量將決定劇本提供的主機數量。另請注意,主機名只是佔位符,將被提供的實例主機名替換。
  • 離線環境安裝使用 Ansible
    $ yum install -y python-devel openssl-devel gcc libffi-devel安裝過程ansible 安裝需要先將 18 個依賴包安裝完成,依賴包的安裝過程大同小異,都是解壓文件後,通過 python setup.py install
  • 使用 ansible-bender 構建容器鏡像 | Linux 中國
    了解如何使用 Ansible 在容器中執行命令。 容器和 Ansible 可以很好地融合在一起:從管理和編排到供應和構建。