openstack-ansible/playbooks/roles/lxc_container_create
Major Hayden 05ae112e20 Update cached LXC image in place
The LXC container creation playbook is one of the longest-running playbooks
in the repository.  It generally takes 15-17 minutes to run during the gate
jobs.  Much of this time is spent updating each container with the latest
packages.

This patch causes the LXC cached image to be updated one time before that
image is used for all of the containers.  It reduces the amount of times the
updates actually run and this shortens the time it takes to complete the
playbook.

The updates to the cached image will only occur if a new cache image has
just been downloaded.

Partial-bug: 1489169

Change-Id: Iba64f9a3aeb999907088f2a99e8904700074550b
2015-09-21 17:10:52 +00:00
..
defaults Merge "Add support for specifying custom static routes" 2015-06-30 21:17:15 +00:00
handlers Updated ansible to use the latest stable release 2015-04-08 08:29:53 +01:00
meta Convert existing roles into galaxy roles 2015-02-18 10:56:25 +00:00
tasks Update cached LXC image in place 2015-09-21 17:10:52 +00:00
templates Added post and pre hook script for veth cleanup 2015-09-03 18:00:42 -05:00
CONTRIBUTING.rst Convert existing roles into galaxy roles 2015-02-18 10:56:25 +00:00
LICENSE Convert existing roles into galaxy roles 2015-02-18 10:56:25 +00:00
README.rst Convert existing roles into galaxy roles 2015-02-18 10:56:25 +00:00

OpenStack LXC container create

tags

openstack, lxc, container, cloud, ansible

category

*nix

Role for creating LXC containers. This role has been setup for use in OpenStack. This role will create several directories on the LXC host for use in bind mounted storage within the container.

Example Play:
- name: Create container(s)
  hosts: all_containers
  gather_facts: false
  user: root
  roles:
    - { role: "lxc_container_create", tags: [ "lxc-container-create" ] }
Example Inventory:
{
    "all_containers": {
        "children": [
            "group_of_containers"
        ],
        "hosts": []
    },
    "lxc_hosts": {
        "children": [],
        "hosts": [
            "infra1"
        ]
    },
    "group_of_containers": {
        "children": [],
        "hosts": [
            "container1"
        ]
    },
    "_meta": {
        "hostvars": {
            "infra1": {
                "ansible_ssh_host": "192.168.0.1",
                "container_address": "192.168.0.1",
                "container_name": "infra1",
                "container_networks": {
                    "management_address": {
                        "bridge": "br-mgmt",
                        "interface": "eth1",
                        "netmask": "255.255.252.0",
                        "type": "veth"
                    }
                },
                "properties": {
                    "container_release": "trusty",
                    "is_metal": true
                }
            },
            "container1": {
                "ansible_ssh_host": "10.0.0.1",
                "container_address": "10.0.0.1",
                "container_name": "container1",
                "container_networks": {
                    "management_address": {
                        "address": "10.0.0.1",
                        "bridge": "br-mgmt",
                        "interface": "eth1",
                        "netmask": "255.255.252.0",
                        "type": "veth"
                    }
                },
                "physical_host": "infra1",
                "physical_host_group": "lxc_hosts",
                "properties": {
                    "container_release": "trusty",
                }
            }
        }
    }
}