Назад | Перейти на главную страницу

Как использовать Ansible для управления удаленными контейнерами lxc?

Как я могу использовать Ansible для выполнения задач в контейнерах lxc на удаленном сервере?

Мы используем Ansible для развертывания нашего кода на нескольких серверах (физических и виртуальных машинах).

До сих пор у каждого экземпляра был публичный IP-адрес и работающий ssh-сервер, поэтому все работало как шарм. Но недавно нам пришлось развернуть два контейнера lxc на удаленном сервере.

Два контейнера привязаны и не запускают ssh-сервер (и мы хотели бы, чтобы он оставался таким). Я могу подключиться к ним только с помощью ssh, чтобы связаться с физическим хостом, а затем подключиться к ним lxc.

Я нашел единственный способ специальный плагин, который никогда не обновлялся до последней версии Ansible 2.0. Я также попал в список рассылки безрезультатно.

Кому-нибудь удавалось использовать Ansible в такой конфигурации?

Попробуйте ansible-lxc-ssh плагин подключения от Pierre Chifflier, который работает с 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.

Ну, так как я не мог найти решение, я в конечном итоге запустил ssh-сервер на каждом контейнере lxc.

Вот мой .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