最近OpenStackでインスタンス50台規模の構築が必要になったので、Heatを勉強し始めた

とりあえず下の設定でインスタンス1台上げることができた。1度覚えてしまえばあとは楽だから頑張りたい。

heat_template_version: 2015-04-30

description: Simple template to deploy a single compute instance

## パラメータ定義
#
Image:
  type: string
  label: Image Name
  default: CentOS-6.5

~~他のパラメータ定義は省略~~

##

## 共通の定義
# ネットワークのリソース定義
network:
  type: OS::Neutron::Net
  properties:
  name: { get_param: NetworkName }

# サブネットワークのリソース定義
subnetwork:
  type: OS::Neutron::Subnet
  properties:
    name: { get_param: SubnetName }
    network: { get_resource: network }
    cidr: { get_param: SubnetCidr }

# ルータのリソース定義
router:
  type: OS::Neutron::Router
  properties:
    distributed: True
    name: { get_param: RouterName }
    external_gateway_info: { "network": "net04_ext" }

# ルータに割り当てるインタフェースのリソース定義
router_interface:
  type: OS::Neutron::RouterInterface
  properties:
    router_id: { get_resource: router }
    subnet_id: { get_resource: subnetwork }

##

## インスタンスに関する定義
# Novaのインスタンスに関するリソース定義
instance:
  type: OS::Nova::Server
  depends_on: instance_port
  properties:
    name: { get_param: InstanceName }
    image: { get_param: Image }
    flavor: { get_param: flavor }
    availability_zone: { get_param: Az }
    networks:
      - port: { get_resource: instance_port }

# インスタンスに割り当てるポートのリソース定義
instance_port:
  type: OS::Neutron::Port
  properties:
  network_id: { get_resource: network }
  security_groups: [{ get_param: SecurityGroup }]

# インスタンスに割り当てるフローティングIPの定義(使わないならなくてもいい)
instance_floating_ip:
  type: OS::Neutron::FloatingIP
  properties:
  floating_network: "net04_ext"
  port_id: { get_resource: instance_port }

##