A recipe to bootstrap an Alpine Linux-based LXD container with Ansible.
First, the playbook creates the container (or reconfigures it if it exists and its configuration differs); then it checks whether Python (a prerequisite for Ansible) is installed, and if not, installs it.
---
- hosts: localhost
gather_facts: no
connection: local
tasks:
- name: Create the container
lxd_container:
name: Container
state: started
source:
type: image
mode: pull
server: https://images.linuxcontainers.org
protocol: lxd
alias: alpine/edge/amd64
devices: "{{ lxd_devices }}"
config: "{{ lxd_config }}"
profiles: ["default"]
wait_for_ipv4_addresses: true
- name: Check if Python is installed in the container
raw: apk info -e python
register: python_install_check
changed_when: false
failed_when: false
delegate_to: container
- name: Update package list
raw: apk update
when: python_install_check.rc == 1
failed_when: false
delegate_to: container
- name: Install Python
raw: apk add python
when: python_install_check.rc == 1
delegate_to: container
servers:
[containers]
container ansible_connection=lxd
group_vars/all:
---
lxd_devices: {}
lxd_config: {}
Bootstrap Alpine Linux LXD Container with Ansible