Boot config for installing software-config agent
This defines environment files which each declare a resource type Heat::InstallConfigAgent. This can be used by server user_data when booting a pristine image to install the agent required use software deployment resources in templates. This template can be run with downloadable Fedora images from http://fedoraproject.org/en/get-fedora#clouds or Ubuntu images from https://cloud-images.ubuntu.com/ Tested with Fedora-x86_64-20-20140618-sda (yum and pip) and trusty-server-cloudimg-amd64-disk1 (pip) Change-Id: I654561719b88c7e2a548ff6db406dd0caf3e8489
This commit is contained in:
parent
c055d5bdea
commit
426b924c41
|
@ -7,6 +7,15 @@ and hooks to configure software on servers using a variety of techniques.
|
||||||
|
|
||||||
Contained here are the following directories:
|
Contained here are the following directories:
|
||||||
|
|
||||||
|
boot-config
|
||||||
|
-----------
|
||||||
|
This directory has environment files which each declare a resource type
|
||||||
|
Heat::InstallConfigAgent.
|
||||||
|
|
||||||
|
This can be used by server user_data when booting a pristine image
|
||||||
|
to install the agent required to use software deployment resources in
|
||||||
|
templates.
|
||||||
|
|
||||||
elements
|
elements
|
||||||
--------
|
--------
|
||||||
This contains `diskimage-builder <https://github.com/openstack/diskimage-builder>`_
|
This contains `diskimage-builder <https://github.com/openstack/diskimage-builder>`_
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
================================================
|
||||||
|
Boot config for installing software-config agent
|
||||||
|
================================================
|
||||||
|
|
||||||
|
This directory has environment files which each declare a resource type
|
||||||
|
Heat::InstallConfigAgent.
|
||||||
|
|
||||||
|
This can be used by server user_data when booting a pristine image
|
||||||
|
to install the agent required to use software deployment resources in
|
||||||
|
templates.
|
||||||
|
|
||||||
|
The environments only install the heat-config-script hook. If other hooks are
|
||||||
|
required then define your own environment file which defines a resource
|
||||||
|
template based on one of the templates in template/
|
||||||
|
|
||||||
|
To install the agent during boot, include the following in the template:
|
||||||
|
|
||||||
|
boot_config:
|
||||||
|
type: Heat::InstallConfigAgent
|
||||||
|
|
||||||
|
server:
|
||||||
|
type: OS::Nova::Server
|
||||||
|
properties:
|
||||||
|
user_data_format: SOFTWARE_CONFIG
|
||||||
|
user_data: {get_attr: [boot_config, config]}
|
||||||
|
# ...
|
||||||
|
|
||||||
|
When creating the stack, reference the desired environment, eg:
|
||||||
|
|
||||||
|
heat stack-create -e fedora_yum_env.yaml \
|
||||||
|
-f ../example-templates/example-config-pristine-image.yaml \
|
||||||
|
deploy-to-pristine
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Installs software-config agent on boot for fedora with pip install
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
image: Fedora-x86_64-20-20140618-sda
|
||||||
|
|
||||||
|
resource_registry:
|
||||||
|
"Heat::InstallConfigAgent": templates/install_config_agent_fedora_pip.yaml
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Installs software-config agent on boot for fedora with yum
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
image: Fedora-x86_64-20-20140618-sda
|
||||||
|
|
||||||
|
resource_registry:
|
||||||
|
"Heat::InstallConfigAgent": templates/install_config_agent_fedora_yum.yaml
|
|
@ -0,0 +1,5 @@
|
||||||
|
# Defines a Heat::InstallConfigAgent config resource which performs no config.
|
||||||
|
# This environment can be used when the image already has the required agents
|
||||||
|
# installed and configured.
|
||||||
|
resource_registry:
|
||||||
|
"Heat::InstallConfigAgent": "OS::Heat::SoftwareConfig"
|
|
@ -0,0 +1,112 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
# os-apply-config templates directory
|
||||||
|
oac_templates=/usr/libexec/os-apply-config/templates
|
||||||
|
mkdir -p $oac_templates/etc
|
||||||
|
|
||||||
|
# initial /etc/os-collect-config.conf
|
||||||
|
cat <<EOF >/etc/os-collect-config.conf
|
||||||
|
[DEFAULT]
|
||||||
|
command = os-refresh-config
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# template for building os-collect-config.conf for polling heat
|
||||||
|
cat <<EOF >$oac_templates/etc/os-collect-config.conf
|
||||||
|
[DEFAULT]
|
||||||
|
{{^os-collect-config.command}}
|
||||||
|
command = os-refresh-config
|
||||||
|
{{/os-collect-config.command}}
|
||||||
|
{{#os-collect-config}}
|
||||||
|
{{#command}}
|
||||||
|
command = {{command}}
|
||||||
|
{{/command}}
|
||||||
|
{{#polling_interval}}
|
||||||
|
polling_interval = {{polling_interval}}
|
||||||
|
{{/polling_interval}}
|
||||||
|
{{#cachedir}}
|
||||||
|
cachedir = {{cachedir}}
|
||||||
|
{{/cachedir}}
|
||||||
|
{{#collectors}}
|
||||||
|
collectors = {{collectors}}
|
||||||
|
{{/collectors}}
|
||||||
|
|
||||||
|
{{#cfn}}
|
||||||
|
[cfn]
|
||||||
|
{{#metadata_url}}
|
||||||
|
metadata_url = {{metadata_url}}
|
||||||
|
{{/metadata_url}}
|
||||||
|
stack_name = {{stack_name}}
|
||||||
|
secret_access_key = {{secret_access_key}}
|
||||||
|
access_key_id = {{access_key_id}}
|
||||||
|
path = {{path}}
|
||||||
|
{{/cfn}}
|
||||||
|
|
||||||
|
{{#heat}}
|
||||||
|
[heat]
|
||||||
|
auth_url = {{auth_url}}
|
||||||
|
user_id = {{user_id}}
|
||||||
|
password = {{password}}
|
||||||
|
project_id = {{project_id}}
|
||||||
|
stack_id = {{stack_id}}
|
||||||
|
resource_name = {{resource_name}}
|
||||||
|
{{/heat}}
|
||||||
|
|
||||||
|
{{#request}}
|
||||||
|
[request]
|
||||||
|
{{#metadata_url}}
|
||||||
|
metadata_url = {{metadata_url}}
|
||||||
|
{{/metadata_url}}
|
||||||
|
{{/request}}
|
||||||
|
|
||||||
|
{{/os-collect-config}}
|
||||||
|
EOF
|
||||||
|
mkdir -p $oac_templates/var/run/heat-config
|
||||||
|
|
||||||
|
# template for writing heat deployments data to a file
|
||||||
|
echo "{{deployments}}" > $oac_templates/var/run/heat-config/heat-config
|
||||||
|
|
||||||
|
# os-refresh-config scripts directory
|
||||||
|
# This moves to /usr/libexec/os-refresh-config in later releases
|
||||||
|
orc_scripts=/opt/stack/os-config-refresh
|
||||||
|
for d in pre-configure.d configure.d migration.d post-configure.d; do
|
||||||
|
install -m 0755 -o root -g root -d $orc_scripts/$d
|
||||||
|
done
|
||||||
|
|
||||||
|
# os-refresh-config script for running os-apply-config
|
||||||
|
cat <<EOF >$orc_scripts/configure.d/20-os-apply-config
|
||||||
|
#!/bin/bash
|
||||||
|
set -ue
|
||||||
|
|
||||||
|
exec os-apply-config
|
||||||
|
EOF
|
||||||
|
chmod 700 $orc_scripts/configure.d/20-os-apply-config
|
||||||
|
|
||||||
|
# os-refresh-config script for running heat config hooks
|
||||||
|
cat <<EOF >$orc_scripts/configure.d/55-heat-config
|
||||||
|
$heat_config_script
|
||||||
|
EOF
|
||||||
|
chmod 700 $orc_scripts/configure.d/55-heat-config
|
||||||
|
|
||||||
|
# config hook for shell scripts
|
||||||
|
hooks_dir=/var/lib/heat-config/hooks
|
||||||
|
mkdir -p $hooks_dir
|
||||||
|
|
||||||
|
# install hook for configuring with shell scripts
|
||||||
|
cat <<EOF >$hooks_dir/script
|
||||||
|
$hook_script
|
||||||
|
EOF
|
||||||
|
chmod 755 $hooks_dir/script
|
||||||
|
|
||||||
|
# install heat-config-notify command
|
||||||
|
cat <<EOF >/usr/bin/heat-config-notify
|
||||||
|
$heat_config_notify
|
||||||
|
EOF
|
||||||
|
chmod 755 /usr/bin/heat-config-notify
|
||||||
|
|
||||||
|
# run once to write out /etc/os-collect-config.conf
|
||||||
|
os-collect-config --one-time --debug
|
||||||
|
cat /etc/os-collect-config.conf
|
||||||
|
|
||||||
|
# run again to poll for deployments and run hooks
|
||||||
|
os-collect-config --one-time --debug
|
|
@ -0,0 +1,6 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
pip install os-collect-config os-apply-config os-refresh-config dib-utils heat-cfntools
|
||||||
|
|
||||||
|
cfn-create-aws-symlinks
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
yum -y install os-collect-config os-apply-config os-refresh-config dib-utils
|
|
@ -0,0 +1,5 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
apt-get -y update
|
||||||
|
apt-get -y install python-pip git gcc python-dev libyaml-dev libssl-dev libffi-dev libxml2-dev libxslt1-dev
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
yum -y install python-pip gcc git-core python-devel libyaml-devel openssl-devel libffi-devel libxml2-devel libxslt-devel
|
|
@ -0,0 +1,53 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -eux
|
||||||
|
|
||||||
|
if [[ `systemctl` =~ -\.mount ]]; then
|
||||||
|
|
||||||
|
# if there is no system unit file, install a local unit
|
||||||
|
if [ ! -f /usr/lib/systemd/system/os-collect-config.service ]; then
|
||||||
|
|
||||||
|
cat <<EOF >/etc/systemd/system/os-collect-config.service
|
||||||
|
[Unit]
|
||||||
|
Description=Collect metadata and run hook commands.
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart=/usr/bin/os-collect-config
|
||||||
|
Restart=on-failure
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat <<EOF >/etc/os-collect-config.conf
|
||||||
|
[DEFAULT]
|
||||||
|
command=os-refresh-config
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
# enable and start service to poll for deployment changes
|
||||||
|
systemctl enable os-collect-config
|
||||||
|
systemctl start --no-block os-collect-config
|
||||||
|
elif [[ `/sbin/init --version` =~ upstart ]]; then
|
||||||
|
if [ ! -f /etc/init/os-collect-config.conf ]; then
|
||||||
|
|
||||||
|
cat <<EOF >/etc/init/os-collect-config.conf
|
||||||
|
start on runlevel [2345]
|
||||||
|
stop on runlevel [016]
|
||||||
|
respawn
|
||||||
|
|
||||||
|
# We're logging to syslog
|
||||||
|
console none
|
||||||
|
|
||||||
|
exec os-collect-config 2>&1 | logger -t os-collect-config
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
initctl reload-configuration
|
||||||
|
service os-collect-config start
|
||||||
|
else
|
||||||
|
echo "ERROR: only systemd or upstart supported" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
heat_template_version: 2014-10-16
|
||||||
|
|
||||||
|
resources:
|
||||||
|
|
||||||
|
install_python_build_env:
|
||||||
|
type: "OS::Heat::SoftwareConfig"
|
||||||
|
properties:
|
||||||
|
group: ungrouped
|
||||||
|
config: {get_file: fragments/install_python_build_env_yum.sh}
|
||||||
|
|
||||||
|
install_config_agent_pip:
|
||||||
|
type: "OS::Heat::SoftwareConfig"
|
||||||
|
properties:
|
||||||
|
group: ungrouped
|
||||||
|
config: {get_file: fragments/install_config_agent_pip.sh}
|
||||||
|
|
||||||
|
configure_config_agent:
|
||||||
|
type: "OS::Heat::SoftwareConfig"
|
||||||
|
properties:
|
||||||
|
group: ungrouped
|
||||||
|
config:
|
||||||
|
str_replace:
|
||||||
|
params:
|
||||||
|
$heat_config_script: {get_file: ../../elements/heat-config/os-refresh-config/configure.d/55-heat-config}
|
||||||
|
$hook_script: {get_file: ../../elements/heat-config-script/install.d/hook-script.py}
|
||||||
|
$heat_config_notify: {get_file: ../../elements/heat-config/bin/heat-config-notify}
|
||||||
|
template: {get_file: fragments/configure_config_agent.sh}
|
||||||
|
|
||||||
|
start_config_agent:
|
||||||
|
type: "OS::Heat::SoftwareConfig"
|
||||||
|
properties:
|
||||||
|
group: ungrouped
|
||||||
|
config: {get_file: fragments/start_config_agent.sh}
|
||||||
|
|
||||||
|
install_config_agent:
|
||||||
|
type: "OS::Heat::MultipartMime"
|
||||||
|
properties:
|
||||||
|
parts:
|
||||||
|
- config: {get_resource: install_python_build_env}
|
||||||
|
- config: {get_resource: install_config_agent_pip}
|
||||||
|
- config: {get_resource: configure_config_agent}
|
||||||
|
- config: {get_resource: start_config_agent}
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
config:
|
||||||
|
value: {get_resource: install_config_agent}
|
|
@ -0,0 +1,39 @@
|
||||||
|
heat_template_version: 2014-10-16
|
||||||
|
|
||||||
|
resources:
|
||||||
|
|
||||||
|
install_config_agent_yum:
|
||||||
|
type: "OS::Heat::SoftwareConfig"
|
||||||
|
properties:
|
||||||
|
group: ungrouped
|
||||||
|
config: {get_file: fragments/install_config_agent_yum.sh}
|
||||||
|
|
||||||
|
configure_config_agent:
|
||||||
|
type: "OS::Heat::SoftwareConfig"
|
||||||
|
properties:
|
||||||
|
group: ungrouped
|
||||||
|
config:
|
||||||
|
str_replace:
|
||||||
|
params:
|
||||||
|
$heat_config_script: {get_file: ../../elements/heat-config/os-refresh-config/configure.d/55-heat-config}
|
||||||
|
$hook_script: {get_file: ../../elements/heat-config-script/install.d/hook-script.py}
|
||||||
|
$heat_config_notify: {get_file: ../../elements/heat-config/bin/heat-config-notify}
|
||||||
|
template: {get_file: fragments/configure_config_agent.sh}
|
||||||
|
|
||||||
|
start_config_agent:
|
||||||
|
type: "OS::Heat::SoftwareConfig"
|
||||||
|
properties:
|
||||||
|
group: ungrouped
|
||||||
|
config: {get_file: fragments/start_config_agent.sh}
|
||||||
|
|
||||||
|
install_config_agent:
|
||||||
|
type: "OS::Heat::MultipartMime"
|
||||||
|
properties:
|
||||||
|
parts:
|
||||||
|
- config: {get_resource: install_config_agent_yum}
|
||||||
|
- config: {get_resource: configure_config_agent}
|
||||||
|
- config: {get_resource: start_config_agent}
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
config:
|
||||||
|
value: {get_resource: install_config_agent}
|
|
@ -0,0 +1,46 @@
|
||||||
|
heat_template_version: 2014-10-16
|
||||||
|
|
||||||
|
resources:
|
||||||
|
|
||||||
|
install_python_build_env:
|
||||||
|
type: "OS::Heat::SoftwareConfig"
|
||||||
|
properties:
|
||||||
|
group: ungrouped
|
||||||
|
config: {get_file: fragments/install_python_build_env_apt.sh}
|
||||||
|
|
||||||
|
install_config_agent_pip:
|
||||||
|
type: "OS::Heat::SoftwareConfig"
|
||||||
|
properties:
|
||||||
|
group: ungrouped
|
||||||
|
config: {get_file: fragments/install_config_agent_pip.sh}
|
||||||
|
|
||||||
|
configure_config_agent:
|
||||||
|
type: "OS::Heat::SoftwareConfig"
|
||||||
|
properties:
|
||||||
|
group: ungrouped
|
||||||
|
config:
|
||||||
|
str_replace:
|
||||||
|
params:
|
||||||
|
$heat_config_script: {get_file: ../../elements/heat-config/os-refresh-config/configure.d/55-heat-config}
|
||||||
|
$hook_script: {get_file: ../../elements/heat-config-script/install.d/hook-script.py}
|
||||||
|
$heat_config_notify: {get_file: ../../elements/heat-config/bin/heat-config-notify}
|
||||||
|
template: {get_file: fragments/configure_config_agent.sh}
|
||||||
|
|
||||||
|
start_config_agent:
|
||||||
|
type: "OS::Heat::SoftwareConfig"
|
||||||
|
properties:
|
||||||
|
group: ungrouped
|
||||||
|
config: {get_file: fragments/start_config_agent.sh}
|
||||||
|
|
||||||
|
install_config_agent:
|
||||||
|
type: "OS::Heat::MultipartMime"
|
||||||
|
properties:
|
||||||
|
parts:
|
||||||
|
- config: {get_resource: install_python_build_env}
|
||||||
|
- config: {get_resource: install_config_agent_pip}
|
||||||
|
- config: {get_resource: configure_config_agent}
|
||||||
|
- config: {get_resource: start_config_agent}
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
config:
|
||||||
|
value: {get_resource: install_config_agent}
|
|
@ -0,0 +1,7 @@
|
||||||
|
# Installs software-config agent on boot for ubuntu with pip install
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
image: trusty-server-cloudimg-amd64-disk1
|
||||||
|
|
||||||
|
resource_registry:
|
||||||
|
"Heat::InstallConfigAgent": templates/install_config_agent_ubuntu_pip.yaml
|
|
@ -0,0 +1,122 @@
|
||||||
|
heat_template_version: 2014-10-16
|
||||||
|
description: >
|
||||||
|
A template which demonstrates doing boot-time installation of the required
|
||||||
|
files for script based software deployments.
|
||||||
|
This template expects to be created with an environment which defines
|
||||||
|
the resource type Heat::InstallConfigAgent such as
|
||||||
|
../boot-config/fedora_pip_env.yaml
|
||||||
|
parameters:
|
||||||
|
key_name:
|
||||||
|
type: string
|
||||||
|
default: heat_key
|
||||||
|
flavor:
|
||||||
|
type: string
|
||||||
|
default: m1.small
|
||||||
|
image:
|
||||||
|
type: string
|
||||||
|
private_net:
|
||||||
|
type: string
|
||||||
|
default: private
|
||||||
|
public_net:
|
||||||
|
type: string
|
||||||
|
default: public
|
||||||
|
|
||||||
|
resources:
|
||||||
|
the_sg:
|
||||||
|
type: OS::Neutron::SecurityGroup
|
||||||
|
properties:
|
||||||
|
name: the_sg
|
||||||
|
description: Ping and SSH
|
||||||
|
rules:
|
||||||
|
- protocol: icmp
|
||||||
|
- protocol: tcp
|
||||||
|
port_range_min: 22
|
||||||
|
port_range_max: 22
|
||||||
|
|
||||||
|
config:
|
||||||
|
type: OS::Heat::SoftwareConfig
|
||||||
|
properties:
|
||||||
|
group: script
|
||||||
|
inputs:
|
||||||
|
- name: foo
|
||||||
|
- name: bar
|
||||||
|
outputs:
|
||||||
|
- name: result
|
||||||
|
config: |
|
||||||
|
#!/bin/sh -x
|
||||||
|
echo "Writing to /tmp/$bar"
|
||||||
|
echo $foo > /tmp/$bar
|
||||||
|
echo -n "The file /tmp/$bar contains `cat /tmp/$bar` for server $deploy_server_id during $deploy_action" > $heat_outputs_path.result
|
||||||
|
echo "Written to /tmp/$bar"
|
||||||
|
echo "Output to stderr" 1>&2
|
||||||
|
|
||||||
|
deployment:
|
||||||
|
type: OS::Heat::SoftwareDeployment
|
||||||
|
properties:
|
||||||
|
config:
|
||||||
|
get_resource: config
|
||||||
|
server:
|
||||||
|
get_resource: server
|
||||||
|
input_values:
|
||||||
|
foo: fooooo
|
||||||
|
bar: baaaaa
|
||||||
|
|
||||||
|
other_deployment:
|
||||||
|
type: OS::Heat::SoftwareDeployment
|
||||||
|
properties:
|
||||||
|
config:
|
||||||
|
get_resource: config
|
||||||
|
server:
|
||||||
|
get_resource: server
|
||||||
|
input_values:
|
||||||
|
foo: fu
|
||||||
|
bar: barmy
|
||||||
|
actions:
|
||||||
|
- CREATE
|
||||||
|
- UPDATE
|
||||||
|
- SUSPEND
|
||||||
|
- RESUME
|
||||||
|
|
||||||
|
boot_config:
|
||||||
|
type: Heat::InstallConfigAgent
|
||||||
|
|
||||||
|
server:
|
||||||
|
type: OS::Nova::Server
|
||||||
|
properties:
|
||||||
|
image: {get_param: image}
|
||||||
|
flavor: {get_param: flavor}
|
||||||
|
key_name: {get_param: key_name}
|
||||||
|
networks:
|
||||||
|
- network: {get_param: private_net}
|
||||||
|
security_groups:
|
||||||
|
- {get_resource: the_sg}
|
||||||
|
user_data_format: SOFTWARE_CONFIG
|
||||||
|
user_data: {get_attr: [boot_config, config]}
|
||||||
|
|
||||||
|
server_floating_ip_assoc:
|
||||||
|
type: OS::Neutron::FloatingIPAssociation
|
||||||
|
properties:
|
||||||
|
floatingip_id: {get_resource: floating_ip}
|
||||||
|
port_id: {get_attr: [server, addresses, {get_param: private_net}, 0, port]}
|
||||||
|
|
||||||
|
floating_ip:
|
||||||
|
type: OS::Neutron::FloatingIP
|
||||||
|
properties:
|
||||||
|
floating_network: {get_param: public_net}
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
result:
|
||||||
|
value:
|
||||||
|
get_attr: [deployment, result]
|
||||||
|
stdout:
|
||||||
|
value:
|
||||||
|
get_attr: [deployment, deploy_stdout]
|
||||||
|
stderr:
|
||||||
|
value:
|
||||||
|
get_attr: [deployment, deploy_stderr]
|
||||||
|
status_code:
|
||||||
|
value:
|
||||||
|
get_attr: [deployment, deploy_status_code]
|
||||||
|
other_result:
|
||||||
|
value:
|
||||||
|
get_attr: [other_deployment, result]
|
|
@ -0,0 +1,8 @@
|
||||||
|
# Defines a Heat::InstallConfigAgent config resource which performs no config.
|
||||||
|
# This environment can be used when the image already has the required agents
|
||||||
|
# installed and configured.
|
||||||
|
#
|
||||||
|
# See heat-templates/hot/software-config/boot-config for environments
|
||||||
|
# for different distros and install methods
|
||||||
|
resource_registry:
|
||||||
|
"Heat::InstallConfigAgent": "OS::Heat::SoftwareConfig"
|
Loading…
Reference in New Issue