229 lines
7.4 KiB
YAML
229 lines
7.4 KiB
YAML
heat_template_version: 2015-04-30
|
|
|
|
description: >
|
|
OpenStack compute node post deployment for Docker.
|
|
|
|
parameters:
|
|
servers:
|
|
type: json
|
|
NodeConfigIdentifiers:
|
|
type: json
|
|
description: Value which changes if the node configuration may need to be re-applied
|
|
DockerComputeImage:
|
|
type: string
|
|
DockerComputeDataImage:
|
|
type: string
|
|
DockerLibvirtImage:
|
|
type: string
|
|
DockerNeutronAgentImage:
|
|
type: string
|
|
DockerOpenvswitchImage:
|
|
type: string
|
|
DockerOvsVswitchdImage:
|
|
type: string
|
|
DockerOpenvswitchDBImage:
|
|
type: string
|
|
|
|
resources:
|
|
|
|
ComputePuppetConfig:
|
|
type: OS::Heat::SoftwareConfig
|
|
properties:
|
|
group: puppet
|
|
options:
|
|
enable_hiera: True
|
|
enable_facter: False
|
|
tags: package,file,concat,file_line,nova_config,neutron_config,neutron_agent_ovs,neutron_plugin_ml2
|
|
inputs:
|
|
- name: tripleo::packages::enable_install
|
|
type: Boolean
|
|
default: True
|
|
outputs:
|
|
- name: result
|
|
config:
|
|
get_file: ../puppet/manifests/overcloud_compute.pp
|
|
|
|
ComputePuppetDeployment:
|
|
type: OS::Heat::SoftwareDeployments
|
|
properties:
|
|
servers: {get_param: servers}
|
|
config: {get_resource: ComputePuppetConfig}
|
|
input_values:
|
|
update_identifier: {get_param: NodeConfigIdentifiers}
|
|
tripleo::packages::enable_install: True
|
|
|
|
CopyEtcConfig:
|
|
type: OS::Heat::SoftwareConfig
|
|
properties:
|
|
group: script
|
|
outputs:
|
|
- name: result
|
|
config: {get_file: ./copy-etc.sh}
|
|
|
|
CopyEtcDeployment:
|
|
type: OS::Heat::SoftwareDeployments
|
|
depends_on: ComputePuppetDeployment
|
|
properties:
|
|
config: {get_resource: CopyEtcConfig}
|
|
servers: {get_param: servers}
|
|
|
|
NovaComputeContainersDeploymentOVS:
|
|
type: OS::Heat::StructuredDeployments
|
|
properties:
|
|
config: {get_resource: NovaComputeContainersConfigOVS}
|
|
servers: {get_param: servers}
|
|
|
|
NovaComputeContainersConfigOVS:
|
|
type: OS::Heat::StructuredConfig
|
|
properties:
|
|
group: docker-compose
|
|
config:
|
|
ovsvswitchd:
|
|
image: {get_param: DockerOvsVswitchdImage}
|
|
container_name: ovs-vswitchd
|
|
net: host
|
|
privileged: true
|
|
restart: always
|
|
volumes:
|
|
- /run:/run
|
|
- /lib/modules:/lib/modules:ro
|
|
environment:
|
|
- KOLLA_CONFIG_STRATEGY=CONFIG_EXTERNAL_COPY_ALWAYS
|
|
|
|
openvswitchdb:
|
|
image: {get_param: DockerOpenvswitchDBImage}
|
|
container_name: ovs-db-server
|
|
net: host
|
|
restart: always
|
|
volumes:
|
|
- /run:/run
|
|
environment:
|
|
- KOLLA_CONFIG_STRATEGY=CONFIG_EXTERNAL_COPY_ALWAYS
|
|
|
|
NovaComputeContainersDeploymentNetconfig:
|
|
type: OS::Heat::SoftwareDeployments
|
|
depends_on: NovaComputeContainersDeploymentOVS
|
|
properties:
|
|
config: {get_resource: NovaComputeContainersConfigNetconfig}
|
|
servers: {get_param: servers}
|
|
|
|
# We run os-net-config here because we depend on the ovs containers to be up
|
|
# and running before we configure the network. This allows explicit timing
|
|
# of the network configuration.
|
|
NovaComputeContainersConfigNetconfig:
|
|
type: OS::Heat::SoftwareConfig
|
|
properties:
|
|
group: script
|
|
outputs:
|
|
- name: result
|
|
config: |
|
|
#!/bin/bash
|
|
/usr/local/bin/run-os-net-config
|
|
|
|
LibvirtContainersDeployment:
|
|
type: OS::Heat::StructuredDeployments
|
|
depends_on: [CopyEtcDeployment, ComputePuppetDeployment, NovaComputeContainersDeploymentNetconfig]
|
|
properties:
|
|
config: {get_resource: LibvirtContainersConfig}
|
|
servers: {get_param: servers}
|
|
|
|
LibvirtContainersConfig:
|
|
type: OS::Heat::StructuredConfig
|
|
properties:
|
|
group: docker-compose
|
|
config:
|
|
computedata:
|
|
image: {get_param: DockerComputeDataImage}
|
|
container_name: computedata
|
|
|
|
libvirt:
|
|
image: {get_param: DockerLibvirtImage}
|
|
container_name: libvirt
|
|
net: host
|
|
pid: host
|
|
privileged: true
|
|
restart: always
|
|
volumes:
|
|
- /run:/run
|
|
- /lib/modules:/lib/modules:ro
|
|
- /var/lib/etc-data/libvirt/libvirtd.conf:/opt/kolla/libvirtd/libvirtd.conf
|
|
- /var/lib/nova/instances:/var/lib/nova/instances
|
|
environment:
|
|
- KOLLA_CONFIG_STRATEGY=CONFIG_EXTERNAL_COPY_ALWAYS
|
|
volumes_from:
|
|
- computedata
|
|
|
|
NovaComputeContainersDeployment:
|
|
type: OS::Heat::StructuredDeployments
|
|
depends_on: [CopyEtcDeployment, ComputePuppetDeployment, NovaComputeContainersDeploymentNetconfig, LibvirtContainersDeployment]
|
|
properties:
|
|
config: {get_resource: NovaComputeContainersConfig}
|
|
servers: {get_param: servers}
|
|
|
|
NovaComputeContainersConfig:
|
|
type: OS::Heat::StructuredConfig
|
|
properties:
|
|
group: docker-compose
|
|
config:
|
|
openvswitch:
|
|
image: {get_param: DockerOpenvswitchImage}
|
|
container_name: openvswitch
|
|
net: host
|
|
privileged: true
|
|
restart: always
|
|
volumes:
|
|
- /run:/run
|
|
- /lib/modules:/lib/modules:ro
|
|
- /var/lib/etc-data/neutron/neutron.conf:/etc/kolla/neutron-openvswitch-agent/:ro
|
|
- /var/lib/etc-data/neutron/plugins/ml2/ml2_conf.ini:/etc/kolla/neutron-openvswitch-agent/:ro
|
|
environment:
|
|
- KOLLA_CONFIG_STRATEGY=CONFIG_EXTERNAL_COPY_ALWAYS
|
|
volumes_from:
|
|
- computedata
|
|
# FIXME: Kolla now uses a JSON model to run custom commands. We rebuilt a custom container to read in KOLLA_COMMAND_ARGS
|
|
|
|
# FIXME: Here we're subjugating kolla's start scripts because we want our custom run command
|
|
neutronagent:
|
|
image: {get_param: DockerOpenvswitchImage}
|
|
container_name: neutronagent
|
|
net: host
|
|
pid: host
|
|
privileged: true
|
|
restart: always
|
|
volumes:
|
|
- /run:/run
|
|
- /lib/modules:/lib/modules:ro
|
|
- /var/lib/etc-data/neutron/neutron.conf:/etc/neutron/neutron.conf:ro
|
|
- /var/lib/etc-data/neutron/plugins/ml2/openvswitch_agent.ini:/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini:ro
|
|
environment:
|
|
- KOLLA_CONFIG_STRATEGY=CONFIG_EXTERNAL_COPY_ALWAYS
|
|
# FIXME: Kolla now uses a JSON model to run custom commands. We rebuilt a custom container to read in KOLLA_COMMAND_ARGS
|
|
- KOLLA_COMMAND_ARGS=--config-file /usr/share/neutron/neutron-dist.conf --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini
|
|
volumes_from:
|
|
- computedata
|
|
|
|
novacompute:
|
|
image: {get_param: DockerComputeImage}
|
|
container_name: novacompute
|
|
net: host
|
|
privileged: true
|
|
restart: always
|
|
volumes:
|
|
- /run:/run
|
|
- /sys/fs/cgroup:/sys/fs/cgroup
|
|
- /lib/modules:/lib/modules:ro
|
|
- /var/lib/etc-data/:/etc/:ro
|
|
- /var/lib/nova/instances:/var/lib/nova/instances
|
|
volumes_from:
|
|
- computedata
|
|
# FIXME: this skips the kolla start.sh script and just starts Nova
|
|
# Ideally we'd have an environment that switched the kolla container
|
|
# to be externally configured.
|
|
command: /usr/bin/nova-compute
|
|
|
|
ExtraConfig:
|
|
depends_on: NovaComputeContainersDeployment
|
|
type: OS::TripleO::NodeExtraConfigPost
|
|
properties:
|
|
servers: {get_param: servers}
|