--- # Copyright 2017, Rackspace US, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - name: Gather nspawn host facts hosts: "{{ nspawn_host_group | default('nspawn_hosts') }}" gather_facts: true tags: - always - name: Set nspawn containers group hosts: "{{ container_group | default('all_containers') }}" gather_facts: false tags: - always - nspawn-containers-create tasks: - name: Add hosts to dynamic inventory group group_by: key: nspawn_containers parents: all_nspawn_containers when: - container_tech == 'nspawn' - name: Create container(s) hosts: all_nspawn_containers gather_facts: false user: root environment: "{{ deployment_environment_variables | default({}) }}" tags: - nspawn-containers-create roles: - role: "nspawn_container_create" post_tasks: - name: Wait for container connectivity wait_for_connection: connect_timeout: "{{ lxc_container_wait_params.connect_timeout | default(omit) }}" delay: "{{ lxc_container_wait_params.delay | default(omit) }}" sleep: "{{ lxc_container_wait_params.sleep | default(omit) }}" timeout: "{{ lxc_container_wait_params.timeout | default(omit) }}" - name: Rescan storage quotas hosts: "{{ nspawn_host_group | default('nspawn_hosts') }}" gather_facts: false tags: - nspawn-containers-create tasks: - name: Rescan quotas command: "btrfs quota rescan -w /var/lib/machines" changed_when: false - name: Gather nspawn containers facts hosts: all_nspawn_containers gather_facts: true tags: - always - name: Configure containers default software hosts: all_nspawn_containers gather_facts: false user: root vars_files: - defaults/repo_packages/openstack_services.yml - "defaults/{{ install_method }}_install.yml" environment: "{{ deployment_environment_variables | default({}) }}" tags: - nspawn-containers-create pre_tasks: - name: Update package cache (apt) package: update_cache: yes force_apt_get: yes force: yes register: cache_update until: cache_update is success retries: 5 delay: 15 when: - ansible_pkg_mgr == 'apt' - name: Update package cache (zypper) zypper_repository: repo: '*' runrefresh: yes register: cache_update until: cache_update is success retries: 5 delay: 15 when: - ansible_pkg_mgr == 'zypper' # When using gather_facts with smart gathering, # the facts aren't fully updated unless they # are old. Using the setup module in a task # does a more thorough collection. # Given we've just created the container, it is # best that we do a full collection of facts - # otherwise we end up with a stale set which # has stuff like the hostname = localhost. - name: Gather facts for new container(s) setup: gather_subset: "network,hardware,virtual" roles: - role: "openstack_hosts" is_container: true