openstack-manuals/doc/hot-guide/source/environment.rst
Gauvain Pocentek a9d9dbec1c Fix typo in hot-guide source
Commit bc93bb5f fixed a typo in the autogenerated output of the HOT
guide. This patch imports the fix in the source file.

Change-Id: I66801444324d82fb4b5a1ab7775d29f9d606af85
2014-12-30 10:39:35 +01:00

3.9 KiB

Environments

The environment affects the runtime behaviour of a template. It provides a way to override the resource implementations and a mechanism to place parameters that the service needs.

To fully understand the runtime behavior you have to consider what plug-ins are installed on the cloud you're using.

Environment file format

The environment is a yaml text file that contains two main sections:

parameters

A map of key/pair values.

resource_registry

Definition of custom resources.

Use the -e option of the heat stack-create command to create a stack using with the environment defined in such a file.

You can also provide environment parameters as a list of key/value pairs using the -P option of the heat stack-create command.

In the following example the environment is read from the my_env.yaml file and an extra parameter is provided using the -P option:

$ heat stack-create my_stack -e my_env.yaml -P "param1=val1;param2=val2" -f my_tmpl.yaml

Global and effective environments

The environment used for a stack is the combination of the environment you use with the template for the stack, and a global environment that is determined by your cloud operator. An entry in the user environment takes precedence over the global environment. OpenStack includes a default global environment, but you cloud operator can add additional environment entries.

Define values for a template arguments

You can define values for the template arguments in the parameters section of an environment file:

parameters:
  KeyName: my_keypair
  InstanceType: m1.tiny
  ImageId: F18-x86_64-cfntools

Create and override resources

You can create or override resources in the resource_registry section of an environment file. The resource you provide in this manner must have an identifier, and references either other resources IDs or the URL of an existing template file.

The following example maps the new OS::Networking::FloatingIP resource to the existing OS::Nova::FloatingIP resource:

resource_registry:
  "OS::Networking::FloatingIP": "OS::Nova::FloatingIP"

You can use wildcards to map multiple resources:

resource_registry:
  "OS::Network*": "OS::Neutron*"

To create or override a resource with a custom resource, create a template file to define this resource, and provide the URL to the template file in the environment file:

resource_registry:
  "AWS::EC2::Instance": file:///path/to/my_instance.yaml

The supported URL scheme are file, http and https.

Note

The template file extension must be .yaml or .template, or it will not be treated as a custom template resource.

You can limit the usage of a custom resource to a specific resource of the template:

resource_registry:
  resources:
    my_db_server:
      "OS::DBInstance": file:///home/mine/all_my_cool_templates/db.yaml