installer_flavor_name: ""
 #Name of the image for instances.
 image_name: ""
+#Name of openstack availability zone to use for instances
+availability_zone: "nova"
 #Whether to use a volume for /dockerdata-nfs or to use ephemeral disk.
 #True by default, most openstack providers offer ssd volumes probably.
 use_volume_for_nfs: true
 
     constraints:
       - custom_constraint: glance.image
         description: "must specify a valid image name"
+  availability_zone:
+    label: "availability zone"
+    description: "availability zone to use for scheduling instances"
+    type: string
   subnet_cidr:
     label: "private subnet cidr"
     description: "Cidr of a private subnet instances will be connected to"
           network: { get_resource: privnet }
           subnet: { get_resource: privsubnet }
           flavor_name: { get_param: node_flavor_name }
+          availability_zone: { get_param: availability_zone }
           notify_command: { get_attr: ["instance_wait_handle", "curl_cli"] }
           security_group: { get_resource: secgroup }
           demo_network: { get_param: demo_network }
       subnet: { get_resource: privsubnet }
       key_name: { get_resource: key }
       flavor_name: { get_param: infra_flavor_name }
+      availability_zone: { get_param: availability_zone }
       image_name: { get_param: image_name }
       notify_command: { get_attr: ["instance_wait_handle", "curl_cli"] }
       security_group: { get_resource: secgroup }
       instance_name: installer
       image_name: { get_param: image_name }
       flavor_name: { get_param: installer_flavor_name }
+      availability_zone: { get_param: availability_zone }
       key_name: { get_resource: key }
       network: { get_resource: privnet }
       subnet: { get_resource: privsubnet }
 
   demo_network:
     type: string
     default: ""
+  availability_zone:
+    type: string
 conditions:
   #Condition for demo network connection
   connect_demo_net:
       name: { get_param: instance_name }
       image: { get_param: image_name }
       flavor: { get_param: flavor_name }
+      availability_zone: { get_param: availability_zone }
       key_name: { get_param: key_name }
       config_drive: true
       networks:
 
     default: ""
   docker_storage_size:
     type: number
+  availability_zone:
+    type: string
 resources:
   #Volume for storing /var/lib/docker for node.
   docker_storage:
       network: { get_param: network }
       subnet: { get_param: subnet }
       flavor_name: { get_param: flavor_name }
+      availability_zone: { get_param: availability_zone }
       notify_command: { get_param: notify_command }
       security_group: { get_param: security_group }
       scheduler_hints: { get_param: scheduler_hints }
 
       node_flavor_name: "{{ node_flavor_name }}"
       infra_flavor_name: "{{ infra_flavor_name }}"
       installer_flavor_name: "{{ installer_flavor_name }}"
+      availability_zone: "{{ availability_zone }}"
       node_ip: "{{ floating_ips_by_address[first_node_ip].id }}"
       infra_ip: "{{ floating_ips_by_address[infra_ip].id }}"
       installer_ip: "{{ floating_ips_by_address[installer_ip].id }}"