From 58074fdeedb64c2dfcffe9539f0b56f07dfa8f78 Mon Sep 17 00:00:00 2001 From: Kevin Carter Date: Wed, 26 Oct 2016 14:37:33 -0500 Subject: [PATCH] Updated envd configs for mixed virt and baremetal (ironic) The env.d files and example configs have been updated to show how ironic can be mixed with virt within the same control plane. These files allow for a new group ironic-compute_hosts to be setup. This will spawn a new ironic container on the selected node which will contain the nova-compute and nova-scheduler service configured for use within ironic. The test cases have been updated to support the new ironic_compute environmental group. Change-Id: Iaa467e28fd829722384cb2e8dad2ed7bf08484e5 Signed-off-by: Kevin Carter --- etc/openstack_deploy/conf.d/ironic.yml.aio | 6 +++++ .../openstack_user_config.yml.example | 24 ++++++++++++++++++- playbooks/inventory/env.d/ironic.yml | 23 ++++++++++++++++++ .../inventory/group_vars/ironic_compute.yml | 16 +++++++++++++ tests/test_inventory.py | 5 ++++ 5 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 playbooks/inventory/group_vars/ironic_compute.yml diff --git a/etc/openstack_deploy/conf.d/ironic.yml.aio b/etc/openstack_deploy/conf.d/ironic.yml.aio index 774e772bc0..2703236031 100644 --- a/etc/openstack_deploy/conf.d/ironic.yml.aio +++ b/etc/openstack_deploy/conf.d/ironic.yml.aio @@ -2,3 +2,9 @@ ironic-infra_hosts: aio1: ip: 172.29.236.100 + +# Ironic compute hosts. These compute hosts will be used to +# facilitate ironic's interactions through nova. +ironic-compute_hosts: + aio1: + ip: 172.29.236.100 diff --git a/etc/openstack_deploy/openstack_user_config.yml.example b/etc/openstack_deploy/openstack_user_config.yml.example index eacafba3b3..55049f4d1a 100644 --- a/etc/openstack_deploy/openstack_user_config.yml.example +++ b/etc/openstack_deploy/openstack_user_config.yml.example @@ -397,7 +397,7 @@ # # -------- # -# Level: compute_hosts (required) +# Level: compute_hosts (optional) # List of target hosts on which to deploy the nova compute service. Recommend # one minimum target host for this service. Typically contains target hosts # that do not reside in other levels. @@ -419,6 +419,28 @@ # # -------- # +# Level: ironic-compute_hosts (optional) +# List of target hosts on which to deploy the nova compute service for Ironic. +# Recommend one minimum target host for this service. Typically contains target +# hosts that do not reside in other levels. +# +# Level: (required, string) +# Hostname of a target host. +# +# Option: ip (required, string) +# IP address of this target host, typically the IP address assigned to +# the management bridge. +# +# Example: +# +# Define an OpenStack compute host: +# +# ironic-compute_hosts: +# ironic-infra1: +# ip: 172.29.236.121 +# +# -------- +# # Level: storage-infra_hosts (required) # List of target hosts on which to deploy the cinder API. Recommend three # minimum target hosts for this service. Typically contains the same target diff --git a/playbooks/inventory/env.d/ironic.yml b/playbooks/inventory/env.d/ironic.yml index 67d4b06dae..659aa80c08 100644 --- a/playbooks/inventory/env.d/ironic.yml +++ b/playbooks/inventory/env.d/ironic.yml @@ -13,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + component_skel: ironic_api: belongs_to: @@ -23,6 +24,10 @@ component_skel: ironic_server: belongs_to: - ironic_servers + ironic_compute: + belongs_to: + - nova_all + container_skel: ironic_api_container: @@ -47,6 +52,18 @@ container_skel: properties: is_metal: true service_name: ironic + ironic_compute_container: + belongs_to: + - ironic-compute_containers + contains: + - ironic_compute + - nova_compute + - nova_scheduler + - neutron_linuxbridge_agent + - neutron_openvswitch_agent + properties: + is_metal: false + service_name: nova physical_skel: @@ -62,3 +79,9 @@ physical_skel: ironic-server_hosts: belongs_to: - hosts + ironic-compute_containers: + belongs_to: + - all_containers + ironic-compute_hosts: + belongs_to: + - hosts diff --git a/playbooks/inventory/group_vars/ironic_compute.yml b/playbooks/inventory/group_vars/ironic_compute.yml new file mode 100644 index 0000000000..4207d5c0c2 --- /dev/null +++ b/playbooks/inventory/group_vars/ironic_compute.yml @@ -0,0 +1,16 @@ +--- +# Copyright 2016, 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. + +nova_virt_type: ironic diff --git a/tests/test_inventory.py b/tests/test_inventory.py index 0a95e35d6a..706dcc6d98 100644 --- a/tests/test_inventory.py +++ b/tests/test_inventory.py @@ -209,6 +209,11 @@ class TestAnsibleInventoryFormatConstraints(unittest.TestCase): 'ironic_server', 'ironic_server_container', 'ironic_servers', + 'ironic_compute', + 'ironic_compute_container', + 'ironic-compute_containers', + 'ironic-compute_all', + 'ironic-compute_hosts', 'keystone', 'keystone_all', 'keystone_container',