aboutsummaryrefslogtreecommitdiffstats
path: root/swift-storage-source.yaml
blob: 93011e7003112d7b500fa3415714dd3ab6623559 (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
HeatTemplateFormatVersion: '2012-12-12'
Description: 'Common Swift Storage Configuration'
Parameters:
  SwiftStorageImage:
    Type: String
    Default: overcloud-swift-storage
  OvercloudSwiftStorageFlavor:
    Default: baremetal
    Description: Flavor for Swift storage nodes to request when deploying.
    Type: String
  NeutronNetworkType:
    Type: String
    Default: 'gre'
  NeutronEnableTunnelling:
    Type: String
    Default: True
Resources:
  SwiftStorageAccessPolicy:
    Type: OS::Heat::AccessPolicy
    Properties:
      AllowedResources:
      - SwiftStorage0
      - SwiftStorage0Config
  SwiftStorageUser:
    Type: AWS::IAM::User
    Properties:
      Policies: [ { Ref: SwiftStorageAccessPolicy } ]
  SwiftStorage0Key:
    Type: AWS::IAM::AccessKey
    Properties:
      UserName:
        Ref: SwiftStorageUser
  SwiftStorage0CompletionCondition:
    Type: AWS::CloudFormation::WaitCondition
    DependsOn: controller0Config
    Properties:
      Handle: {Ref: SwiftStorage0CompletionHandle}
      Count: '1'
      Timeout: '1800'
  SwiftStorage0CompletionHandle:
    Type: AWS::CloudFormation::WaitConditionHandle
  SwiftStorage0:
    Type: OS::Nova::Server
    Properties:
      image:
        {Ref: SwiftStorageImage}
      flavor: {Ref: OvercloudSwiftStorageFlavor}
      key_name: {Ref: KeyName}
    Metadata:
      os-collect-config:
        cfn:
          access_key_id:
            Ref: SwiftStorage0Key
          secret_access_key:
            Fn::GetAtt: [ SwiftStorage0Key, SecretAccessKey ]
          stack_name: {Ref: 'AWS::StackName'}
          path: SwiftStorage0Config.Metadata
      OpenStack::ImageBuilder::Elements: [ swift ]
  SwiftStorage0Config:
    Type: AWS::AutoScaling::LaunchConfiguration
    Properties:
      InstanceType: '0'
      ImageId: '0'
    Metadata:
      completion-handle:
        Ref: SwiftStorage0CompletionHandle
      os-collect-config:
        cfn:
          access_key_id:
            Ref: SwiftStorage0Key
          secret_access_key:
            Fn::GetAtt: [ SwiftStorage0Key, SecretAccessKey ]
          stack_name: {Ref: 'AWS::StackName'}
          path: SwiftStorage0Config.Metadata
      admin-password: {Ref: AdminPassword}
      neutron:
        ovs:
          local_ip:
            Fn::Select:
              - 0
              - Fn::Select:
                - ctlplane
                - Fn::GetAtt:
                  - SwiftStorage0
                  - networks
          tenant_network_type: {Ref: NeutronNetworkType}
          enable_tunneling: {Ref: NeutronEnableTunnelling}
        service-password:
          Ref: NeutronPassword
      swift:
        devices:
          Fn::Join:
          - ', '
          - - Fn::Join:
              - ''
              - - 'r1z1-'
                - Fn::Select:
                  - 0
                  - Fn::Select:
                    - 'ctlplane'
                    - Fn::GetAtt:
                      - controller0
                      - networks
                - ':%PORT%/d1'
            - Fn::Join:
              - ', '
              - Merge::Map:
                  SwiftStorage0:
                    Fn::Join:
                    - ''
                    - - 'r1z1-'
                      - Fn::Select:
                        - 0
                        - Fn::Select:
                          - 'ctlplane'
                          - Fn::GetAtt:
                            - SwiftStorage0
                            - networks
                      - ':%PORT%/d1'
        hash:
          Ref: SwiftHashSuffix
        part-power: 10
        replicas: 1
        service-password:
          Ref: SwiftPassword