peopledoc / ansible-boot-lxd

Ansible role to boot LXD containers
0 stars 1 forks source link
ansible-role approved-public ghec-mig-migrated lxd

This role instanciates any inventory host that ends with .lxc and sets it up for ansible: install python, add your ssh key for root.

Note that you need lxc, dsnmasq, and sudo to be properly configured. And lxc-python2 (which require lxc-dev) installed in your ansible environement. That means that you can create a container with internet access and that you can resolve it by name.lxc. One way to set this up is to use novafloss/ansible-setup <https://github.com/novafloss/ansible-setup>_

Consider this example inventory::

[flow]
flow.lxc lxc_template_options='-r wheezy'

[rabbitmq]
rabbitmq.lxc

[redis]
redis.lxc

And a playbook like that::

---

- hosts: localhost
  become: true
  become_user: root
  become_method: sudo
  roles:
  - novafloss.ssh-agent
  - novafloss.boot-lxc

- hosts: redis
  roles:
  - geerlingguy.redis

- hosts: rabbitmq
  roles:
  - alexey.rabbitmq

First, novafloss.boot-lxc will start the containers and create them if they don't exist, then plays will be executed normally on rabbitmq and redis container hosts.

Note that it uses novafloss.ssh-agent role <https://github.com/novafloss/ansible-ssh-agent>_ to ensure that an SSH agent is working on the host. While that may not be necessary on your machine, it's required to execute on fresh containers ie. in CI environments.