使用Ansible的SSH较少的LXC容器

使用Ansible的SSH较少的LXC容器,ansible,lxc,Ansible,Lxc,我是ansible的新手,我正在尝试在一些lxc容器上使用ansible。 我的问题是我不想在容器上安装ssh。所以 我尝试的是: 我尝试使用此连接,但发现它与ansible 2不兼容。 在了解chifflier连接插件不起作用后,我尝试使用来自的连接插件 在一些失败的尝试之后,我深入到代码中,我明白了 插件没有我正在与之交谈的主机是容器的信息。(因为代码从未到达此位置) 我当前的设置: {Ansbile host}--| ssh |--{vm}--| ansible连接插件|--{contai

我是ansible的新手,我正在尝试在一些lxc容器上使用ansible。 我的问题是我不想在容器上安装ssh。所以

我尝试的是:

我尝试使用此连接,但发现它与ansible 2不兼容。
在了解chifflier连接插件不起作用后,我尝试使用来自的连接插件

在一些失败的尝试之后,我深入到代码中,我明白了 插件没有我正在与之交谈的主机是容器的信息。(因为代码从未到达此位置)

我当前的设置: {Ansbile host}--| 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"
}
这是一个本地LXC目录
致命:[mailserver]:失败!=>{
“失败”:对,
“msg”:“192.168.28.12未运行”
}
这很奇怪,因为192.168.28.12是vm,容器名为mailserver。我还验证了容器是否正在运行

还有为什么它说192.168.28.12是本地lxc目录

更新2:

我从playbook中删除了我的group_vars、ansible.cfg和连接插件,我得到了以下错误:

<mailserver> THIS IS A LOCAL LXC DIR
fatal: [mailserver]: FAILED! => {
    "failed": true, 
    "msg": "mailserver is not running"
}
这是一个本地LXC目录
致命:[mailserver]:失败!=>{
“失败”:对,
“msg”:“邮件服务器未运行”
}

你应该看看这个。它可能适合你的需要

编辑:连接插件实际上是Ansible的一部分


只需在您的清单或组变量中添加
ansible\u connection=lxc

您应该看看这个。它可能适合你的需要

编辑:连接插件实际上是Ansible的一部分


只需在您的资源清册或组变量中添加
ansible\u connection=lxc

错误表明主机邮件服务器未在ansible资源清册文件中分配IP。您可以设置主机的IP并重试吗?@Tejaswi我试图将“mailserver”更改为容器的指定IP,但我收到了相同的错误。@jkarr您的
组变量
正在覆盖
ansible\u主机
。你能尝试一个没有
组变量的简单的
调试
吗?@EricCitaire在删除组变量、连接插件文件夹和ansible.cfg后,我遇到了类似的错误,请参见更新的问题。错误是主机邮件服务器没有在ansible清单文件中分配IP。您可以设置主机的IP并重试吗?@Tejaswi我试图将“mailserver”更改为容器的指定IP,但我收到了相同的错误。@jkarr您的
组变量
正在覆盖
ansible\u主机
。你能尝试一个没有组变量的简单调试吗?@EricCitaire在删除组变量、连接插件文件夹和ansible.cfg后,我遇到了类似的错误,请参见更新的问题。谢谢!看来你推荐的连接插件让我更进一步了。有关我的“新问题”的更多信息,请参见我问题中的更新1。谢谢!看来你推荐的连接插件让我更进一步了。有关我的“新问题”的更多信息,请参见我问题中的更新1。