summaryrefslogtreecommitdiffstats
path: root/playbooks/openstack/openshift-cluster/files/heat_stack_server.yaml
blob: 435139849c06389d14682eaeca54e1da61cb00b2 (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
142
143
144
145
146
147
148
149
150
151
152
heat_template_version: 2014-10-16

description: OpenShift cluster server

parameters:

  name:
    type: string
    label: Name
    description: Name

  cluster_env:
    type: string
    label: Cluster environment
    description: Environment of the cluster

  cluster_id:
    type: string
    label: Cluster ID
    description: Identifier of the cluster

  type:
    type: string
    label: Type
    description: Type master or node

  subtype:
    type: string
    label: Sub-type
    description: Sub-type compute or infra for nodes, default otherwise
    default: default

  key_name:
    type: string
    label: Key name
    description: Key name of keypair

  image:
    type: string
    label: Image
    description: Name of the image

  flavor:
    type: string
    label: Flavor
    description: Name of the flavor

  net:
    type: string
    label: Net ID
    description: Net resource

  net_name:
    type: string
    label: Net name
    description: Net name

  subnet:
    type: string
    label: Subnet ID
    description: Subnet resource

  secgrp:
    type: comma_delimited_list
    label: Security groups
    description: Security group resources

  floating_network:
    type: string
    label: Floating network
    description: Network to allocate floating IP from

outputs:

  name:
    description: Name of the server
    value: { get_attr: [ server, name ] }

  private_ip:
    description: Private IP of the server
    value:
      get_attr:
        - server
        - addresses
        - { get_param: net_name }
        - 0
        - addr

  floating_ip:
    description: Floating IP of the server
    value:
      get_attr:
        - server
        - addresses
        - { get_param: net_name }
        - 1
        - addr

resources:

  server:
    type: OS::Nova::Server
    properties:
      name:      { get_param: name }
      key_name:  { get_param: key_name }
      image:     { get_param: image }
      flavor:    { get_param: flavor }
      networks:
        - port:  { get_resource: port }
      user_data: { get_resource: config }
      user_data_format: RAW
      metadata:
        environment: { get_param: cluster_env }
        clusterid: { get_param: cluster_id }
        host-type: { get_param: type }
        sub-host-type:    { get_param: subtype }

  port:
    type: OS::Neutron::Port
    properties:
      network: { get_param: net }
      fixed_ips:
        - subnet: { get_param: subnet }
      security_groups: { get_param: secgrp }

  floating-ip:
    type: OS::Neutron::FloatingIP
    properties:
      floating_network: { get_param: floating_network }
      port_id: { get_resource: port }

  config:
    type: OS::Heat::CloudConfig
    properties:
      cloud_config:
        disable_root: true

        hostname: { get_param: name }

        system_info:
          default_user:
            name: openshift
            sudo: ["ALL=(ALL) NOPASSWD: ALL"]

        write_files:
          - path: /etc/sudoers.d/00-openshift-no-requiretty
            permissions: 440
            # content: Defaults:openshift !requiretty
            # Encoded in base64 to be sure that we do not forget the trailing newline or
            # sudo will not be able to parse that file
            encoding: b64
            content: RGVmYXVsdHM6b3BlbnNoaWZ0ICFyZXF1aXJldHR5Cg==