Как я могу использовать 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