summaryrefslogtreecommitdiffstats
path: root/nova-compute-instance.yaml
blob: 3074228e7559d25eac54519bf875e4418d959557 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
HeatTemplateFormatVersion: '2012-12-12'
Description: 'Nova Compute'
Parameters:
  AdminPassword:
    Default: unset
    Description: The password for the keystone admin account, used for monitoring, querying neutron etc.
    Type: String
    NoEcho: true
  KeyName: 
    Description: Name of an existing EC2 KeyPair to enable SSH access to the instances
    Type: String
    Default: default
  Flavor:
    Description: Use this flavor
    Type: String
    Default: baremetal
  NovaImage:
    Type: String
    Default: overcloud-compute
  KeystoneHost:
    Type: String
  NeutronHost:
    Type: String
  RabbitHost:
    Type: String
  RabbitPassword:
    Type: String
    NoEcho: true
  NovaInterfaces:
    Type: String
    Default: eth0
  NovaComputeDriver:
    Type: String
    Default: libvirt.LibvirtDriver
  NovaComputeLibvirtType:
    Type: String
    Default: ''
  NovaApiHost:
    Type: String
  NovaPassword:
    Default: unset
    Description: The password for the nova service account, used by nova-api.
    Type: String
    NoEcho: true
  GlanceHost:
    Type: String
  NovaDSN:
    Type: String
  NeutronDSN:
    Type: String
  NeutronBridgeMappings:
    Type: String
  NeutronNetworkVLANRanges:
    Type: String
  NeutronNetworkType:
    Type: String
  NeutronEnableTunnelling:
    Type: String
Resources:
  ComputeAccessPolicy:
    Type: OS::Heat::AccessPolicy
    Properties:
      AllowedResources: [ NovaCompute0 ]
  ComputeUser:
    Type: AWS::IAM::User
    Properties:
      Policies: [ { Ref: ComputeAccessPolicy } ]
  ComputeKey:
    Type: AWS::IAM::AccessKey
    Properties:
      UserName:
        Ref: ComputeUser
  NovaCompute0:
    Type: OS::Nova::Server
    Properties:
      image:
        {Ref: NovaImage}
      flavor: {Ref: Flavor}
      key_name: {Ref: KeyName}
    Metadata:
      os-collect-config:
        cfn:
          access_key_id:
            Ref: ComputeKey
          secret_access_key:
            Fn::GetAtt: [ ComputeKey, SecretAccessKey ]
          stack_name: {Ref: 'AWS::StackName'}
          path: NovaCompute0Config.Metadata
      OpenStack::ImageBuilder::Elements: [ nova-compute ]
  NovaCompute0Config:
    Type: AWS::AutoScaling::LaunchConfiguration
    Properties:
      InstanceType: '0'
      ImageId: '0'
    Metadata:
      os-collect-config:
        cfn:
          access_key_id:
            Ref: ComputeKey
          secret_access_key:
            Fn::GetAtt: [ ComputeKey, SecretAccessKey ]
          stack_name: {Ref: 'AWS::StackName'}
          path: NovaCompute0Config.Metadata
      nova:
        compute_driver: {Ref: NovaComputeDriver}
        compute_libvirt_type: {Ref: NovaComputeLibvirtType}
        db: {Ref: NovaDSN}
        host: {Ref: NovaApiHost}
        service-password:
          Ref: NovaPassword
      glance:
        host: {Ref: GlanceHost}
      keystone:
        host: {Ref: KeystoneHost}
      neutron:
        host: {Ref: NeutronHost}
        ovs_db: {Ref: NeutronDSN}
        ovs:
          local_ip:
            Fn::Select:
              - 0
              - Fn::Select:
                - ctlplane
                - Fn::GetAtt:
                  - NovaCompute0
                  - networks
          tenant_network_type: {Ref: NeutronNetworkType}
          network_vlan_ranges: {Ref: NeutronNetworkVLANRanges}
          bridge_mappings: {Ref: NeutronBridgeMappings}
          enable_tunneling: {Ref: NeutronEnableTunnelling}
        service-password:
          Ref: NeutronPassword
      admin-password: {Ref: AdminPassword}
      rabbit:
        host: {Ref: RabbitHost}
        password: {Ref: RabbitPassword}
      swift:
        store_user: ''
        store_key: ''
      interfaces:
        control: {Ref: NovaInterfaces}