tripleo-heat-templates/docker/compute-post.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}