aboutsummaryrefslogtreecommitdiffstats
path: root/extraconfig/pre_network/host_config_and_reboot.role.j2.yaml
blob: fe52ef7e2c5619a68078f6e21bf7d71552164250 (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
heat_template_version: pike

description: >
  Do some configuration, then reboot - sometimes needed for early-boot
  changes such as modifying kernel configuration

parameters:
  server:
    type: string
  # Deprecated Parameters, these configuration are deprecated in favor or role-specific parameters.
  # Use: extraconfig/pre_network/host_config_and_reboot.yaml.
  # Deprecated in Pike and will be removed in Queens.
  {{role}}KernelArgs:
    type: string
    default: ""
  {{role}}TunedProfileName:
    type: string
    default: ""
  {{role}}HostCpusList:
    type: string
    default: ""
  deployment_actions:
    default: ['CREATE', 'UPDATE']
    type: comma_delimited_list
    description: >
      List of stack actions that will trigger any deployments in this
      templates. The actions will be an empty list of the server is in the
      toplevel DeploymentServerBlacklist parameter's value.

parameter_group:
  - label: deprecated
    parameters:
      - {{role}}KernelArgs
      - {{role}}TunedProfileName
      - {{role}}HostCpusList

conditions:
  param_exists:
    or:
      - not:
          equals:
          - get_param: {{role}}KernelArgs
          - ""
      - not:
          equals:
          - get_param: {{role}}TunedProfileName
          - ""
  deployment_actions_empty:
    equals:
      - {get_param: deployment_actions}
      - []

resources:

  HostParametersConfig:
    type: OS::Heat::SoftwareConfig
    condition: param_exists
    properties:
      group: ansible
      inputs:
        - name: _KERNEL_ARGS_
        - name: _TUNED_PROFILE_NAME_
        - name: _HOST_CPUS_LIST_
      outputs:
        - name: result
      config:
        get_file: ansible_host_config.ansible

  HostParametersDeployment:
    type: OS::Heat::SoftwareDeployment
    condition: param_exists
    properties:
      name: HostParametersDeployment
      server:  {get_param: server}
      config: {get_resource: HostParametersConfig}
      actions:
        if:
          - deployment_actions_empty
          - []
          - ['CREATE'] # Only do this on CREATE
      input_values:
        _KERNEL_ARGS_: {get_param: {{role}}KernelArgs}
        _TUNED_PROFILE_NAME_: {get_param: {{role}}TunedProfileName}
        _HOST_CPUS_LIST_: {get_param: {{role}}HostCpusList}

  RebootConfig:
    type: OS::Heat::SoftwareConfig
    condition: param_exists
    properties:
      group: script
      config: |
        #!/bin/bash
        # Stop os-collect-config to avoid any race collecting another
        # deployment before reboot happens
        systemctl stop os-collect-config.service
        /sbin/reboot

  RebootDeployment:
    type: OS::Heat::SoftwareDeployment
    condition: param_exists
    depends_on: HostParametersDeployment
    properties:
      name: RebootDeployment
      server:  {get_param: server}
      config: {get_resource: RebootConfig}
      actions:
        if:
          - deployment_actions_empty
          - []
          - ['CREATE'] # Only do this on CREATE
      signal_transport: NO_SIGNAL

outputs:
  result:
    value:
      get_attr: [HostParametersDeployment, result]
    condition: param_exists
  stdout:
    value:
      get_attr: [HostParametersDeployment, deploy_stdout]
    condition: param_exists
  stderr:
    value:
      get_attr: [HostParametersDeployment, deploy_stderr]
    condition: param_exists
  status_code:
    value:
      get_attr: [HostParametersDeployment, deploy_status_code]
    condition: param_exists