Template Based Orchestration

Heat Templates

Heat templates with local context (env) definitions.

engine: heat
cloud_endpoint: {{ openstack-manager-name }}
root_path: /path/to/heat-templates
template_path: /path/to/heat-templates/template
context_source: local
context_path: /path/to/heat-templates/env

Heat templates with remote context (env) definitions coming from Inventory service.

engine: heat
cloud_endpoint: {{ openstack-manager-name }}
root_path: /path/to/heat-templates
template_path: /path/to/heat-templates/template
context_source: remote
context_inventory: {{ inventory-name }}

The metadata schema for Heat manager:

query:
  heat_complete_graph:
    name: Complete Stack
    layout: graph
  heat_template_stacks_tree:
    name: Template Stacks
    layout: hierarchy
    hierarchy_layers:
      0:
        name: Heat heat_template_stacks_tree
        kind:
      1:
        kind: heat_template
      2:
        kind: heat_stack
        target: defined_by
relation:
  defined_by:
    relation:
      default: template
default_resource: heat_template
resource:
  heat_template:
    client: heat
    icon: fa:cube
    name: Template
    resource: OS::Heat::Stack
    workflow:
      create:
        name: Launch stack
  heat_stack:
    client: heat
    icon: fa:cube
    name: Stack
    resource: OS::Heat::Stack
    model:
      template:
        type: relationship_to
        model: defined_by
        target: heat_template

TerraForm Templates

Configuration for parsing Hashicorp TerraForm templates.

monitor:
  terraform-local-manager:
    engine: terraform
    endpoints:
    - {{ kubernetes-manager-name }}
    - {{ openstack-manager-name }}
    - {{ amazon-manager-name }}
    terraform_bin: /path/to/terraform-bin
    template_path: /path/to/terraform-templates

The metadata schema for Terraform manager:

query:
  tf_complete_graph:
    name: Complete Template
    layout: graph
relation:
  uses_tf_template:
    relation:
      default: template
  in_tf_state:
    relation:
      default: state
  in_tf_module:
    relation:
      default: module
  in_tf_net:
    relation:
      default: network
  in_tf_subnet:
    relation:
      default: subnet
  has_tf_security_group:
    relation:
      default: security_group
  using_tf_key_pair:
    relation:
      default: key_pair
  links_tf_router:
    relation:
      default: router
  links_tf_floating_instance:
    relation:
      default: instance
  links_tf_floating_ip:
    relation:
      tf_openstack_compute_floatingip_associate_v2: floating_ip
      tf_openstack_networking_floatingip_v2: router
default_resource: tf_template
resource:
  tf_template:
    client: ''
    icon: fa:map-signs
    name: Template
    resource: ''
    workflow:
      create:
        name: Deploy template
  tf_state:
    client: ''
    icon: fa:map-signs
    name: State
    resource: ''
    workflow:
      destroy:
        name: Destroy
    model:
      template:
        type: relationship_to
        model: uses_tf_template
        target: tf_template
  tf_module:
    client: ''
    icon: fa:map-signs
    name: Module
    resource: ''
    model:
      state:
        type: relationship_to
        model: in_tf_state
        target: tf_state
  tf_openstack_compute_floatingip_associate_v2:
    client: ''
    icon: fa:map-signs
    name: Floating IP Association
    resource: openstack_compute_floatingip_associate_v2
    model:
      module:
        type: relationship_to
        model: in_tf_module
        target: tf_module
      floating_ip:
        type: relationship_to
        model: links_tf_floating_ip
        target: tf_openstack_networking_floatingip_v2
      instance:
        type: relationship_to
        model: links_tf_floating_instance
        target: tf_openstack_compute_instance_v2
  tf_openstack_compute_instance_v2:
    client: ''
    icon: fa:server
    name: Instance
    resource: openstack_compute_instance_v2
    model:
      module:
        type: relationship_to
        model: in_tf_module
        target: tf_module
      key_pair:
        type: relationship_to
        model: using_tf_key_pair
        target: tf_openstack_compute_keypair_v2
      security_group:
        type: relationship_to
        model: has_tf_security_group
        target: tf_openstack_compute_secgroup_v2
      network:
        type: relationship_to
        model: in_tf_net
        target: tf_openstack_networking_network_v2
  tf_openstack_compute_keypair_v2:
    client: ''
    icon: fa:key
    name: Key Pair
    resource: openstack_compute_keypair_v2
  tf_openstack_compute_secgroup_v2:
    client: ''
    icon: fa:cube
    name: Security Group
    resource: openstack_compute_secgroup_v2
    model:
      module:
        type: relationship_to
        model: in_tf_module
        target: tf_module
  tf_openstack_networking_floatingip_v2:
    client: ''
    icon: fa:map-signs
    name: Floating IP
    resource: openstack_networking_floatingip_v2
    model:
      module:
        type: relationship_to
        model: in_tf_module
        target: tf_module
      router:
        type: relationship_to
        model: links_tf_floating_ip
        target: tf_openstack_networking_router_interface_v2
  tf_openstack_networking_network_v2:
    client: ''
    icon: fa:share-alt
    name: Net
    resource: openstack_networking_network_v2
    model:
      module:
        type: relationship_to
        model: in_tf_module
        target: tf_module
      key_pair:
        type: relationship_to
        model: in_tf_net
        target: tf_openstack_networking_network_v2
  tf_openstack_networking_router_interface_v2:
    client: ''
    icon: fa:arrows-alt
    name: Router Interface
    resource: openstack_networking_router_interface_v2
    model:
      module:
        type: relationship_to
        model: in_tf_module
        target: tf_module
      subnet:
        type: relationship_to
        model: in_tf_subnet
        target: tf_openstack_networking_subnet_v2
      router:
        type: relationship_to
        model: links_tf_router
        target: tf_openstack_networking_router_v2
  tf_openstack_networking_router_v2:
    client: ''
    icon: fa:arrows-alt
    name: Router
    resource: openstack_networking_router_v2
    model:
      module:
        type: relationship_to
        model: in_tf_module
        target: tf_module
  tf_openstack_networking_subnet_v2:
    client: ''
    icon: fa:share-alt
    name: Subnet
    resource: openstack_networking_subnet_v2
    model:
      module:
        type: relationship_to
        model: in_tf_module
        target: tf_module
      network:
        type: relationship_to
        model: in_tf_net
        target: tf_openstack_networking_network_v2