Implement a scenario with no containers

In order to demonstrate that OSA can be built without
any containers, and to validate on a continuous basis
that it still works, a new scenario is implemented to
test it.

As part of this, the following is done:

1. An example environment override file is added which
   sets all the containers with 'is_metal: true' which
   disables the container creation.

2. As haproxy is not used for the scenario on an AIO,
   the haproxy environment configuration is broken out
   from openstack_user_config into its own conf.d file
   and the implementation of it into user space is added
   to all other scenarios.

3. To ensure that the pip lockdown configuration is not
   implemented by the pip install role when the repo
   server doesn't exist yet, we ensure that the var is
   set in the playbook that does the validation.

4. To ensure that rabbitmq is able to correctly start
   up we implement the same host name on the host as
   we do in the inventory. Without this rabbitmq fails.
   In order to do this successfully with ansible, the
   dbus package must be installed on the host, so it is
   added as part of the AIO bootstrapping.

5. The workflow for a deployment needs no changes
   because when the lxc-related playbooks execute, they
   simply skip over because the lxc-related groups are
   empty.

Depends-On: https://review.openstack.org/542307
Change-Id: I67199e1f35c91c4e2c9973e011e856c6ac3fb086
This commit is contained in:
Jean-Philippe Evrard 2017-09-14 21:38:42 +01:00 committed by Jesse Pretorius (odyssey4me)
parent c62647e8d4
commit e09216aa4e
13 changed files with 235 additions and 4 deletions

View File

@ -0,0 +1,4 @@
---
haproxy_hosts:
aio1:
ip: 172.29.236.100

View File

@ -0,0 +1,158 @@
---
container_skel:
aodh_container:
properties:
is_metal: true
barbican_container:
properties:
is_metal: true
ceilometer_central_container:
properties:
is_metal: true
metering-compute_container:
properties:
is_metal: true
ceph-mon_container:
properties:
is_metal: true
cinder_api_container:
properties:
is_metal: true
cinder_scheduler_container:
properties:
is_metal: true
cinder_volumes_container:
properties:
is_metal: true
designate_container:
properties:
is_metal: true
etcd_container:
properties:
is_metal: true
galera_container:
properties:
is_metal: true
glance_container:
properties:
is_metal: true
gnocchi_container:
properties:
is_metal: true
haproxy_container:
properties:
is_metal: true
heat_apis_container:
properties:
is_metal: true
heat_api_container:
properties:
is_metal: true
heat_engine_container:
properties:
is_metal: true
horizon_container:
properties:
is_metal: true
ironic_api_container:
properties:
is_metal: true
ironic_conductor_container:
properties:
is_metal: true
ironic_server_container:
properties:
is_metal: true
ironic_compute_container:
properties:
is_metal: true
keystone_container:
properties:
is_metal: true
magnum_container:
properties:
is_metal: true
memcached_container:
properties:
is_metal: true
molteniron-server_container:
properties:
is_metal: true
neutron_agents_container:
properties:
is_metal: true
neutron_server_container:
properties:
is_metal: true
nova_api_container:
properties:
is_metal: true
nova_api_metadata_container:
properties:
is_metal: true
nova_api_os_compute_container:
properties:
is_metal: true
nova_api_placement_container:
properties:
is_metal: true
nova_compute_container:
properties:
is_metal: true
nova_conductor_container:
properties:
is_metal: true
nova_scheduler_container:
properties:
is_metal: true
nova_console_container:
properties:
is_metal: true
octavia_server_container:
properties:
is_metal: true
repo_container:
properties:
is_metal: true
rabbit_mq_container:
properties:
is_metal: true
rsyslog_container:
properties:
is_metal: true
sahara_container:
properties:
is_metal: true
swift_remote_container:
properties:
is_metal: true
swift_proxy_container:
properties:
is_metal: true
swift_acc_container:
properties:
is_metal: true
swift_obj_container:
properties:
is_metal: true
swift_cont_container:
properties:
is_metal: true
tacker_container:
properties:
is_metal: true
trove_api_container:
properties:
is_metal: true
trove_conductor_container:
properties:
is_metal: true
trove_taskmanager_container:
properties:
is_metal: true
unbound_container:
properties:
is_metal: true
utility_container:
properties:
is_metal: true

View File

@ -128,7 +128,3 @@ repo-infra_hosts:
log_hosts:
aio1:
ip: 172.29.236.100
haproxy_hosts:
aio1:
ip: 172.29.236.100

View File

@ -27,9 +27,12 @@
tags:
- common-pip
# If we can't reach the internal repo, we need to ensure
# pip isn't locked to it.
- name: Set pip upstream URL
set_fact:
pip_upstream_url: "https://bootstrap.pypa.io/get-pip.py"
pip_lock_to_internal_repo: false
when:
- pip_upstream_url != "https://bootstrap.pypa.io/get-pip.py"
- (_repo_data_check.status | default(503)) != 200

View File

@ -95,6 +95,11 @@
tags:
- prepare-octavia
# Ensure hostname/ip is consistent with inventory
- include: prepare_hostname.yml
tags:
- prepare-hostname
# Prepare the network interfaces
- include: prepare_networking.yml
tags:

View File

@ -141,6 +141,13 @@
when:
- "bootstrap_host_scenario == 'ceph'"
- name: Copy modified env.d file for metal scenario
copy:
src: "{{ playbook_dir }}/../etc/openstack_deploy/env.d/aio_metal.yml.example"
dest: "/etc/openstack_deploy/env.d/aio_metal.yml"
when:
- "bootstrap_host_scenario == 'aio_metal'"
- name: Add user_conf_files to contain the list of files to copy into containers
file:
path: /etc/openstack_deploy/user_conf_files.yml

View File

@ -0,0 +1,34 @@
---
# Copyright 2018, 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: Ensure the hosts file is templated appropriately
copy:
content: |
127.0.0.1 localhost aio1
127.0.1.1 aio1.openstack.local aio1
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
dest: /etc/hosts
backup: yes
- name: Ensure hostname is set
hostname:
name: aio1

View File

@ -18,6 +18,7 @@ rdo_package: "https://rdoproject.org/repos/openstack-pike/rdo-release-pike.rpm"
packages_install:
- bridge-utils
- curl
- dbus
- ethtool
- git
- iputils

View File

@ -21,6 +21,7 @@ opensuse_openstack_repos:
packages_install:
- bridge-utils
- curl
- dbus
- ethtool
- git-core
- lvm2

View File

@ -17,6 +17,7 @@ packages_install:
- bridge-utils
- build-essential
- curl
- dbus
- ethtool
- git-core
- ipython

View File

@ -15,6 +15,7 @@
confd_overrides:
aio_lxc:
- name: haproxy.yml.aio
- name: cinder.yml.aio
- name: designate.yml.aio
- name: glance.yml.aio
@ -24,7 +25,16 @@ confd_overrides:
- name: neutron.yml.aio
- name: nova.yml.aio
- name: swift.yml.aio
aio_metal:
- name: cinder.yml.aio
- name: glance.yml.aio
- name: heat.yml.aio
- name: keystone.yml.aio
- name: neutron.yml.aio
- name: nova.yml.aio
- name: swift.yml.aio
ceph:
- name: haproxy.yml.aio
- name: ceph.yml.aio
- name: cinder.yml.aio
- name: glance.yml.aio
@ -32,6 +42,7 @@ confd_overrides:
- name: neutron.yml.aio
- name: nova.yml.aio
translations:
- name: haproxy.yml.aio
- name: cinder.yml.aio
- name: designate.yml.aio
- name: glance.yml.aio
@ -46,12 +57,14 @@ confd_overrides:
- name: octavia.yml.aio
- name: trove.yml.aio
octavia:
- name: haproxy.yml.aio
- name: glance.yml.aio
- name: keystone.yml.aio
- name: neutron.yml.aio
- name: nova.yml.aio
- name: octavia.yml.aio
tacker:
- name: haproxy.yml.aio
- name: keystone.yml.aio
- name: heat.yml.aio
- name: tacker.yml.aio

View File

@ -59,6 +59,13 @@
vars:
action: deploy
scenario: ceph
- job:
name: openstack-ansible-deploy-aio_metal-ubuntu-xenial
parent: openstack-ansible-deploy-aio-ubuntu-xenial
voting: false
vars:
action: deploy
scenario: aio_metal
- job:
name: openstack-ansible-upgrade-aio_lxc-ubuntu-xenial

View File

@ -23,6 +23,7 @@
- openstack-ansible-deploy-ceph-centos-7
- openstack-ansible-deploy-ceph-ubuntu-xenial
- openstack-ansible-deploy-ceph-opensuse-423
- openstack-ansible-deploy-aio_metal-ubuntu-xenial
experimental:
jobs:
- openstack-ansible-deploy-octavia-ubuntu-xenial