diff --git a/etc/openstack_deploy/env.d/extra_container.yml.example b/etc/openstack_deploy/env.d/extra_container.yml.example new file mode 100644 index 0000000000..75d944ea48 --- /dev/null +++ b/etc/openstack_deploy/env.d/extra_container.yml.example @@ -0,0 +1,44 @@ +--- +# Copyright 2014, 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. + +component_skel: + example_api: + belongs_to: + # This is a meta group of a given component type. + - example_all + +container_skel: + example_api_container: + belongs_to: + # This is a group of containers mapped to a physical host. + - example-infra_containers + contains: + # This maps back to an item in the component_skel. + - example_api + properties: + # These are arbitrary key value pairs. + service_name: example_service + # This is the image that the lxc container will be built from. + container_release: trusty + +physical_skel: + # This maps back to items in the container_skel. + example-infra_containers: + belongs_to: + - all_containers + # This is a required pair for the container physical entry. + example-infra_hosts: + belongs_to: + - hosts diff --git a/playbooks/inventory/dynamic_inventory.py b/playbooks/inventory/dynamic_inventory.py index b3cfcc9558..5c18473fe1 100755 --- a/playbooks/inventory/dynamic_inventory.py +++ b/playbooks/inventory/dynamic_inventory.py @@ -856,7 +856,7 @@ def _merge_dict(base_items, new_items): def _extra_config(user_defined_config, base_dir): - """Discover new items in a conf.d directory and add the new values. + """Discover new items in any extra directories and add the new values. :param user_defined_config: ``dict`` :param base_dir: ``str`` @@ -919,6 +919,11 @@ def main(): % (env_version, version) ) + # Load anything in an env.d directory if found + env_plugins = os.path.join(local_path, 'env.d') + if os.path.isdir(env_plugins): + _extra_config(user_defined_config=environment, base_dir=env_plugins) + # Load existing inventory file if found dynamic_inventory_file = os.path.join( local_path, 'openstack_inventory.json'