Ssh

如何使用 Ansible 管理遠端 lxc 容器?

  • October 24, 2020

如何使用 Ansible 在遠端伺服器上的 lxc 容器上執行任務?

我們使用 Ansible 在多個伺服器(物理機和虛擬機)上部署我們的程式碼。

到目前為止,每個實例都有一個公共 IP 地址和一個正在執行的 ssh 伺服器,所以一切都像一個魅力。但最近,我們不得不在遠端伺服器上部署兩個 lxc 容器。

這兩個容器是 nat 的,不執行 ssh 伺服器(我們希望保持這種狀態)。我只能使用 ssh 連接到它們以到達物理主機,然後 lxc-attach’ing 到它們。

我發現的唯一方法是一個自定義外掛,它從未針對最新的 Ansible 2.0 版本進行更新。到目前為止,我也到達了郵件列表,但沒有任何結果。

有沒有人成功地在這樣的配置中使用 Ansible?

好吧,由於我找不到解決方案,我最終在每個 lxc 容器上執行了一個 ssh 伺服器。

這是我的.ssh/config範例:

Host main_server
   HostName server_address
   User root
   Port 2022
   ForwardAgent yes

Host lxc_container
   User root
   Port 22
   ProxyCommand ssh main_server nc lxc_container 22
   ForwardAgent yes

試試Pierre Chifflier 的 ansible -lxc-ssh連接外掛,它適用於 Ansible 2.x。我把外掛放在ansible.cfg中定義的預設位置,/usr/share/ansible_plugins/connection_plugins/

在清單主機文件 /etc/ansible/hosts 中,我放了以下內容

[containers]
container_01 ansible_host=lxc_server ansible_connection=lxc_ssh ansible_ssh_extra_args=container_01

請注意,您必須將容器名稱作為 ssh 額外參數傳遞。請務必將 lxc_server 替換為您的 lxc 主機的名稱。

引用自:https://serverfault.com/questions/750432