summaryrefslogtreecommitdiffstats
path: root/puppet/controller-post.yaml
blob: 80b08a06bc7d2cb43ae640e90e609e9901c99fa0 (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
heat_template_version: 2015-04-30

description: >
  OpenStack controller node post deployment for Puppet.

parameters:
  ConfigDebug:
    default: false
    description: Whether to run config management (e.g. Puppet) in debug mode.
    type: boolean
  servers:
    type: json
  NodeConfigIdentifiers:
     type: json
     description: Value which changes if the node configuration may need to be re-applied
  StepConfig:
     type: string
     description: Config manifests that will be used to step through the deployment.
     default: ''

resources:

  ControllerArtifactsConfig:
    type: deploy-artifacts.yaml

  ControllerArtifactsDeploy:
    type: OS::Heat::StructuredDeployments
    properties:
      servers:  {get_param: servers}
      config: {get_resource: ControllerArtifactsConfig}

  ControllerPrePuppet:
    type: OS::TripleO::Tasks::ControllerPrePuppet
    properties:
      servers:  {get_param: servers}
      input_values:
        update_identifier: {get_param: NodeConfigIdentifiers}

  ControllerPuppetConfig:
    type: OS::TripleO::ControllerConfig
    properties:
      StepConfig: {get_param: StepConfig}

  # Step through a series of Puppet runs using the same manifest.
  # NOTE: To enable stepping through the deployments via heat hooks,
  # you must observe the glob naming defined in overcloud-steps.yaml
  # e.g all Deployment resources should have a *Deployment_StepN suffix
  ControllerLoadBalancerDeployment_Step1:
    type: OS::Heat::StructuredDeployments
    depends_on: [ControllerPrePuppet, ControllerArtifactsDeploy]
    properties:
      name: ControllerLoadBalancerDeployment_Step1
      servers:  {get_param: servers}
      config: {get_resource: ControllerPuppetConfig}
      input_values:
        step: 1
        update_identifier: {get_param: NodeConfigIdentifiers}
      actions: ['CREATE'] # no need for two passes on an UPDATE

  ControllerServicesBaseDeployment_Step2:
    type: OS::Heat::StructuredDeployments
    depends_on: ControllerLoadBalancerDeployment_Step1
    properties:
      name: ControllerServicesBaseDeployment_Step2
      servers:  {get_param: servers}
      config: {get_resource: ControllerPuppetConfig}
      input_values:
        step: 2
        update_identifier: {get_param: NodeConfigIdentifiers}
      actions: ['CREATE'] # no need for two passes on an UPDATE

  ControllerOvercloudServicesDeployment_Step3:
    type: OS::Heat::StructuredDeployments
    depends_on: ControllerServicesBaseDeployment_Step2
    properties:
      name: ControllerOvercloudServicesDeployment_Step3
      servers:  {get_param: servers}
      config: {get_resource: ControllerPuppetConfig}
      input_values:
        step: 3
        update_identifier: {get_param: NodeConfigIdentifiers}

  ControllerOvercloudServicesDeployment_Step4:
    type: OS::Heat::StructuredDeployments
    depends_on: ControllerOvercloudServicesDeployment_Step3
    properties:
      name: ControllerOvercloudServicesDeployment_Step4
      servers:  {get_param: servers}
      config: {get_resource: ControllerPuppetConfig}
      input_values:
        step: 4
        update_identifier: {get_param: NodeConfigIdentifiers}

  ControllerOvercloudServicesDeployment_Step5:
    type: OS::Heat::StructuredDeployments
    depends_on: ControllerOvercloudServicesDeployment_Step4
    properties:
      name: ControllerOvercloudServicesDeployment_Step5
      servers:  {get_param: servers}
      config: {get_resource: ControllerPuppetConfig}
      input_values:
        step: 5
        update_identifier: {get_param: NodeConfigIdentifiers}

  ControllerOvercloudServicesDeployment_Step6:
    type: OS::Heat::StructuredDeployments
    depends_on: ControllerOvercloudServicesDeployment_Step5
    properties:
      name: ControllerOvercloudServicesDeployment_Step6
      servers:  {get_param: servers}
      config: {get_resource: ControllerPuppetConfig}
      input_values:
        step: 6
        update_identifier: {get_param: NodeConfigIdentifiers}

  ControllerOvercloudServicesDeployment_Step7:
    type: OS::Heat::StructuredDeployments
    depends_on: ControllerOvercloudServicesDeployment_Step6
    properties:
      name: ControllerOvercloudServicesDeployment_Step7
      servers:  {get_param: servers}
      config: {get_resource: ControllerPuppetConfig}
      input_values:
        step: 7
        update_identifier: {get_param: NodeConfigIdentifiers}

  ControllerPostPuppet:
    type: OS::TripleO::Tasks::ControllerPostPuppet
    depends_on: ControllerOvercloudServicesDeployment_Step7
    properties:
      servers:  {get_param: servers}
      input_values:
        update_identifier: {get_param: NodeConfigIdentifiers}

  # Note, this should come last, so use depends_on to ensure
  # this is created after any other resources.
  ExtraConfig:
    depends_on: ControllerPostPuppet
    type: OS::TripleO::NodeExtraConfigPost
    properties:
        servers: {get_param: servers}