使用 Ansible 的无 SSH LXC 容器
SSH-less LXC containers using Ansible
我是 ansible 的新手,我正在尝试在一些 lxc 容器上使用 ansible。
我的问题是我不想在我的容器上安装 ssh。所以
我尝试了什么:
我尝试使用此连接 plugin 但它似乎不适用于 ansible 2。
在了解 chifflier 连接插件不起作用后,我尝试使用来自 openstack.
的连接插件
经过一些失败的尝试,我深入研究了代码,我明白了
该插件没有我正在与之交谈的主机是容器的信息。(因为代码从未达到此 point)
我目前的设置:
{Ansbile 主机}---|ssh|---{vm}--|ansible 连接插件|---{container1}
我的ansible.cfg:
[defaults]
connection_plugins = /home/jkarr/ansible-test/connection_plugins/ssh
inventory = inventory
我的库存:
[hosts]
vm ansible_host=192.168.28.12
[containers]
mailserver physical_host=vm container_name=mailserver
我的组变量:
ansible_host: "{{ physical_hostname }}"
ansible_ssh_extra_args: "{{ container_name }}"
ansible_user: containeruser
container_name: "{{ inventory_hostname }}"
physical_hostname: "{{ hostvars[physical_host]['ansible_host'] }}"
我的测试手册:
- name: Test Playbook
hosts: containers
gather_facts: true
tasks:
- name: testfile
copy:
content: "Test"
dest: /tmp/test
输出为:
fatal: [mailserver]: UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: ssh: Could not resolve hostname mailserver: No address associated with hostname\r\n",
"unreachable": true
}
Ansible 版本为:2.3.1.0
那我做错了什么?有小费吗?
提前致谢!
更新 1:
基于 I am now using this connection plug-in。
我更新了我的库存,它看起来像:
[hosts]
vm ansible_host=192.168.28.12
[containers]
mailserver physical_host=vm ansible_connection=lxc
在 运行 我的剧本之后:
<192.168.28.12> THIS IS A LOCAL LXC DIR
fatal: [mailserver]: FAILED! => {
"failed": true,
"msg": "192.168.28.12 is not running"
}
这很奇怪,因为 192.168.28.12 是虚拟机,容器称为邮件服务器。我还验证了容器是 运行.
另外为什么说 192.168.28.12 是本地 lxc 目录?
更新二:
我从 playbook 中删除了我的 group_vars、我的 ansible.cfg 和连接插件,我得到了这个错误:
<mailserver> THIS IS A LOCAL LXC DIR
fatal: [mailserver]: FAILED! => {
"failed": true,
"msg": "mailserver is not running"
}
你应该看看这个lxc connection plugin。它可能符合您的需求。
编辑: lxc
连接插件实际上是 Ansible 的一部分。
只需在您的清单或组变量中添加 ansible_connection=lxc
。
我正在尝试类似的东西。
我想在主机上使用 ansible 和 运行 lxc 容器通过 ssh 配置主机,它们也是使用 ansible 配置的:
ansible control node ----> host-a -----------> container-a
ssh lxc-attach
lxc
连接模块的问题在于,它仅适用于本地 lxc 容器。无法通过 ssh 使其工作。
目前唯一的方法似乎是直接 ssh 连接或通过第一台主机的 ssh 连接:
ssh
ansible control node ----> container-a
or
ssh ssh
ansible control node ----> host-a ----> container-a
两者都需要在容器中安装 sshd。但是第二种方式不需要端口转发或多个ip地址。
您找到可行的解决方案了吗?
我是 ansible 的新手,我正在尝试在一些 lxc 容器上使用 ansible。 我的问题是我不想在我的容器上安装 ssh。所以
我尝试了什么:
我尝试使用此连接 plugin 但它似乎不适用于 ansible 2。
在了解 chifflier 连接插件不起作用后,我尝试使用来自 openstack.
经过一些失败的尝试,我深入研究了代码,我明白了 该插件没有我正在与之交谈的主机是容器的信息。(因为代码从未达到此 point)
我目前的设置: {Ansbile 主机}---|ssh|---{vm}--|ansible 连接插件|---{container1}
我的ansible.cfg:
[defaults]
connection_plugins = /home/jkarr/ansible-test/connection_plugins/ssh
inventory = inventory
我的库存:
[hosts]
vm ansible_host=192.168.28.12
[containers]
mailserver physical_host=vm container_name=mailserver
我的组变量:
ansible_host: "{{ physical_hostname }}"
ansible_ssh_extra_args: "{{ container_name }}"
ansible_user: containeruser
container_name: "{{ inventory_hostname }}"
physical_hostname: "{{ hostvars[physical_host]['ansible_host'] }}"
我的测试手册:
- name: Test Playbook
hosts: containers
gather_facts: true
tasks:
- name: testfile
copy:
content: "Test"
dest: /tmp/test
输出为:
fatal: [mailserver]: UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: ssh: Could not resolve hostname mailserver: No address associated with hostname\r\n",
"unreachable": true
}
Ansible 版本为:2.3.1.0
那我做错了什么?有小费吗? 提前致谢!
更新 1:
基于
[hosts]
vm ansible_host=192.168.28.12
[containers]
mailserver physical_host=vm ansible_connection=lxc
在 运行 我的剧本之后:
<192.168.28.12> THIS IS A LOCAL LXC DIR
fatal: [mailserver]: FAILED! => {
"failed": true,
"msg": "192.168.28.12 is not running"
}
这很奇怪,因为 192.168.28.12 是虚拟机,容器称为邮件服务器。我还验证了容器是 运行.
另外为什么说 192.168.28.12 是本地 lxc 目录?
更新二:
我从 playbook 中删除了我的 group_vars、我的 ansible.cfg 和连接插件,我得到了这个错误:
<mailserver> THIS IS A LOCAL LXC DIR
fatal: [mailserver]: FAILED! => {
"failed": true,
"msg": "mailserver is not running"
}
你应该看看这个lxc connection plugin。它可能符合您的需求。
编辑: lxc
连接插件实际上是 Ansible 的一部分。
只需在您的清单或组变量中添加 ansible_connection=lxc
。
我正在尝试类似的东西。
我想在主机上使用 ansible 和 运行 lxc 容器通过 ssh 配置主机,它们也是使用 ansible 配置的:
ansible control node ----> host-a -----------> container-a
ssh lxc-attach
lxc
连接模块的问题在于,它仅适用于本地 lxc 容器。无法通过 ssh 使其工作。
目前唯一的方法似乎是直接 ssh 连接或通过第一台主机的 ssh 连接:
ssh
ansible control node ----> container-a
or
ssh ssh
ansible control node ----> host-a ----> container-a
两者都需要在容器中安装 sshd。但是第二种方式不需要端口转发或多个ip地址。
您找到可行的解决方案了吗?