openstack-ansible/tests/roles/bootstrap-host/tasks/main.yml

246 lines
6.1 KiB
YAML

---
# Copyright 2015, 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.
# Identify AIO builds in the git user-agent
- include_tasks: prepare_git_useragent.yml
# Attempt data device detection if enabled
- include_tasks: detect_data_disk_device.yml
when:
- bootstrap_host_data_disk_device is none
- bootstrap_host_data_disk_device_detect | bool
# Before we do anything, check the minimum requirements
- import_tasks: check-requirements.yml
tags:
- check-requirements
# We will look for the most specific variable files first and eventually
# end up with the least-specific files.
- name: Gather variables for each operating system
include_vars: "{{ item }}"
with_first_found:
- "{{ ansible_facts['distribution'] | lower }}-{{ ansible_facts['distribution_version'] | lower }}.yml"
- "{{ ansible_facts['distribution'] | lower }}-{{ ansible_facts['distribution_major_version'] | lower }}.yml"
- "{{ ansible_facts['os_family'] | lower }}-{{ ansible_facts['distribution_major_version'] | lower }}.yml"
- "{{ ansible_facts['distribution'] | lower }}.yml"
- "{{ ansible_facts['os_family'] | lower }}.yml"
tags:
- always
- name: Gather nodepool variables
import_tasks: gather_nodepool_vars.yml
tags:
- always
- name: Create the required directories
file:
path: "{{ item }}"
state: directory
with_items:
- "/openstack"
tags:
- create-directories
- import_tasks: install_packages.yml
tags:
- install-packages
# Prepare the data disk, if one is provided
- include_tasks: prepare_data_disk.yml
when:
- bootstrap_host_data_disk_device != None
args:
apply:
tags:
- prepare-data-disk
tags:
- always
# Symlink host repos to /openstack/src to match the lxc continer bind mount
# NOTE(jrosser) this must happen *after* prepare_data_disk as /openstack may remounted
- name: Use on-disk repos for openstack services in CI
block:
- name: Symlink /openstack/src to /home/zuul/src
file:
src: "{{ lookup('env', 'ZUUL_SRC_PATH') }}"
dest: '/openstack/src'
state: link
- name: Create override for zuul git server to local repos
copy:
content: |
openstack_opendev_base_url: "file:///openstack/src/opendev.org"
dest: "/etc/openstack_deploy/user_variables_zuulrepos.yml"
when:
- "lookup('env', 'ZUUL_SRC_PATH') | length > 0"
# Prepare the swap space loopback disk
# This is only necessary if there isn't swap already
- include_tasks: prepare_loopback_swap.yml
when:
- bootstrap_host_loopback_swap | bool
- ansible_facts['swaptotal_mb'] < 1
args:
apply:
tags:
- prepare-loopback
tags:
- always
# Prepare the zfs storage loopback disk
- include_tasks: prepare_loopback_zfs.yml
when:
- bootstrap_host_loopback_zfs | bool
- bootstrap_host_data_disk_device == None
- _lxc_container_backing_store == 'zfs'
args:
apply:
tags:
- prepare-loopback
tags:
- always
# Prepare the btrfs storage loopback disk
- include_tasks: prepare_loopback_btrfs.yml
when:
- bootstrap_host_loopback_btrfs | bool
- bootstrap_host_data_disk_device == None
- _lxc_container_backing_store == 'btrfs'
args:
apply:
tags:
- prepare-loopback
tags:
- always
# Prepare the Cinder LVM VG loopback disk
# This is only necessary if bootstrap_host_loopback_cinder is set to yes
- include_tasks: prepare_loopback_cinder.yml
when:
- bootstrap_host_loopback_cinder | bool
args:
apply:
tags:
- prepare-loopback
tags:
- always
# Prepare the Nova instance storage loopback disk
- include_tasks: prepare_loopback_nova.yml
when:
- bootstrap_host_loopback_nova | bool
args:
apply:
tags:
- prepare-loopback
tags:
- always
# Prepare the Swift data storage loopback disks
- include_tasks: prepare_loopback_swift.yml
when:
- bootstrap_host_loopback_swift | bool
args:
apply:
tags:
- prepare-loopback
tags:
- always
# Prepare the Manila data storage loopback disks
- include_tasks: prepare_loopback_manila.yml
when:
- bootstrap_host_loopback_manila | bool
args:
apply:
tags:
- prepare-loopback
tags:
- always
# Prepare the Ceph cluster UUID and loopback disks
- include_tasks: prepare_ceph.yml
when:
- bootstrap_host_ceph | bool
args:
apply:
tags:
- prepare-ceph
tags:
- always
# Prepare the NFS server and loopback disks
- include_tasks: prepare_nfs.yml
when:
- bootstrap_host_nfs | bool
args:
apply:
tags:
- prepare-nfs
tags:
- always
# Ensure hostname/ip is consistent with inventory
- import_tasks: prepare_hostname.yml
tags:
- prepare-hostname
# Prepare the network interfaces
- import_tasks: prepare_networking.yml
tags:
- prepare-networking
# Ensure that there are both private and public ssh keys for root
- import_tasks: prepare_ssh_keys.yml
tags:
- prepare-ssh-keys
# Prepare local squid proxy
- include_tasks: prepare_squid.yml
when:
- "'proxy' in bootstrap_host_scenarios_expanded"
args:
apply:
tags:
- prepare-squid
tags:
- always
# Prepare local step-ca certificate authority
- include_tasks: prepare_step_ca.yml
when:
- "'stepca' in bootstrap_host_scenarios_expanded"
args:
apply:
tags:
- prepare-step-ca
tags:
- always
# Put the OpenStack-Ansible configuration for an All-In-One on the host
- include_tasks: prepare_aio_config.yml
when:
- bootstrap_host_aio_config | bool
args:
apply:
tags:
- prepare-aio-config
tags:
- always