使用Ansible的无SSH LXC容器

时间:2017-07-16 19:11:36

标签: ansible lxc

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

我尝试了什么:

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

经过一些失败的尝试后,我潜入了代码,我明白了 插件没有我正在与之交谈的主机是一个容器的信息。(因为代码从未到达point

我目前的设置: {Ansbile host} --- | ssh | --- {vm} - | ansible connection plugin | --- {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:
基于eric answer,我现在正在使用此连接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是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"
}

1 个答案:

答案 0 :(得分:4)

你应该看看这个lxc connection plugin。它可能符合您的需求。

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

只需在广告资源或群组中添加ansible_connection=lxc