summaryrefslogtreecommitdiff
path: root/extraconfig/services/openshift-master.yaml
blob: 0efa62299fb789fd2bc86be7eed6028f76699d43 (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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
heat_template_version: queens

description: External tasks definition for OpenShift

parameters:
  RoleNetIpMap:
    default: {}
    type: json
  ServiceData:
    default: {}
    description: Dictionary packing service data
    type: json
  ServiceNetMap:
    default: {}
    description: Mapping of service_name -> network name. Typically set
                 via parameter_defaults in the resource registry.  This
                 mapping overrides those in ServiceNetMapDefaults.
    type: json
  DefaultPasswords:
    default: {}
    type: json
  RoleName:
    default: ''
    description: Role name on which the service is applied
    type: string
  RoleParameters:
    default: {}
    description: Parameters specific to the role
    type: json
  EndpointMap:
    default: {}
    description: Mapping of service endpoint -> protocol. Typically set
                 via parameter_defaults in the resource registry.
    type: json

outputs:
  role_data:
    description: Role data for the Openshift Service
    value:
      service_name: openshift_master
      config_settings:
        tripleo.openshift_master.firewall_rules:
          '200 openshift-master api':
            dport: 6443
            proto: tcp
          '200 openshift-master etcd':
            dport:
              - 2379
              - 2380
            proto: tcp
      upgrade_tasks: []
      step_config: ''
      external_deploy_tasks:
        - name: openshift_master step 2
          when: step == '2'
          block:
            - name: create openshift temp dirs
              file:
                path: "{{item}}"
                state: directory
              with_items:
                - "{{playbook_dir}}/openshift"
            - name: generate openshift inventory
              copy:
                dest: "{{playbook_dir}}/openshift/inventory.yml"
                content: |
                  masters:
                    hosts:
                      {% for host in groups['openshift_master'] -%}
                      {{ hostvars.raw_get(host)['ansible_hostname'] }}:
                        ansible_user: {{ hostvars.raw_get(host)['ansible_user'] | default(hostvars.raw_get(host)['ansible_ssh_user']) | default('root') }}
                        ansible_host: {{ hostvars.raw_get(host)['ansible_host'] | default(host) }}
                        ansible_become: true
                      {% endfor %}

                  nodes:
                    hosts:
                      {% for host in groups['openshift_worker'] -%}
                      {{ hostvars.raw_get(host)['ansible_hostname'] }}:
                        ansible_user: {{ hostvars.raw_get(host)['ansible_user'] | default(hostvars.raw_get(host)['ansible_ssh_user']) | default('root') }}
                        ansible_host: {{ hostvars.raw_get(host)['ansible_host'] | default(host) }}
                        ansible_become: true
                        openshift_schedulable: true
                      {% endfor %}

                  etcd:
                    children:
                      masters: {}

                  OSEv3:
                    children:
                      masters: {}
                      nodes: {}

            - name: generate openshift global vars
              copy:
                dest: "{{playbook_dir}}/openshift/global_vars.yml"
                content: |
                  containerized: true
                  openshift_master_cluster_method: native
                  openshift_use_dnsmasq: true
                  openshift_deployment_type: origin
                  openshift_release: '3.6'
                  openshift_image_tag: v3.6.1
                  enable_excluders: false
                  openshift_docker_selinux_enabled: false
                  osm_etcd_image: "registry.fedoraproject.org/f27/etcd"
                  # NOTE(flaper87): Needed for the gate
                  openshift_disable_check: disk_availability,docker_storage,memory_availability,docker_image_availability
                  skip_ovs_svc_handlers: true

            - name: generate openshift playbook
              copy:
                dest: "{{playbook_dir}}/openshift/playbook.yml"
                content: |
                  # NOTE(flaper87): The NetworkManager setup has been moved
                  # into openshift-ansible but it's not been released yet.
                  # This code will go away as soon as an rpm with the required
                  # roles hits the repo.
                  - name: Install NetworkManager
                    hosts: all

                    tasks:
                      - name: install NetworkManager
                        package:
                          name: NetworkManager
                          state: present

                      - name: generate nm dispatcher script
                        copy:
                          dest: "/etc/NetworkManager/dispatcher.d/99-os-net-config-origin-dns.sh"
                          owner: root
                          mode: 0755
                          content: >-
                            #!/bin/bash -x

                            for dev in $(jq '.network_config[] | {name}.name' /etc/os-net-config/config.json);
                            do
                              temp="${dev%\"}"
                              temp="${temp#\"}"
                              export DEVICE_IFACE=$temp

                              /etc/NetworkManager/dispatcher.d/99-origin-dns.sh $DEVICE_IFACE up
                            done

                      - name: Enable NetworkManager
                        service:
                          name: NetworkManager
                          state: restarted
                          enabled: yes

                  - include: /usr/share/ansible/openshift-ansible/playbooks/byo/config.yml
            - name: set openshift command
              set_fact:
                openshift_command: >-
                  {%- if openshift_command is defined -%}
                  {{openshift_command}}
                  {%- else -%}
                  ANSIBLE_HOST_KEY_CHECKING=False
                  ansible-playbook
                  -i '{{playbook_dir}}/openshift/inventory.yml'
                  --extra-vars '@{{playbook_dir}}/openshift/global_vars.yml'
                  '{{playbook_dir}}/openshift/playbook.yml'
                  {%- endif -%}
            - name: print openshift command
              debug:
                var: openshift_command
            - name: run openshift (immediate log at {{playbook_dir}}/openshift/playbook.log)
              shell: |
                {{openshift_command}} 2>&1 | tee {{playbook_dir}}/openshift/playbook.log
                exit ${PIPESTATUS[0]}
              register: outputs
            - name: print openshift outputs
              debug:
                var: (outputs.stderr|default('')).split('\n')|union(outputs.stdout_lines|default([]))
              failed_when: outputs|failed
              when: outputs is defined