summaryrefslogtreecommitdiffstats
path: root/roles/openshift_master/tasks/systemd_units.yml
blob: dfc255b3d111ea0558addab315a0568d89f164ae (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
---
# This file is included both in the openshift_master role and in the upgrade
# playbooks.  For that reason the ha_svc variables are use set_fact instead of
# the vars directory on the role.

- name: Init HA Service Info
  set_fact:
    containerized_svc_dir: "/usr/lib/systemd/system"
    ha_svc_template_path: "native-cluster"

- name: Set HA Service Info for containerized installs
  set_fact:
    containerized_svc_dir: "/etc/systemd/system"
    ha_svc_template_path: "docker-cluster"
  when: openshift.common.is_containerized | bool

# This is the image used for both HA and non-HA clusters:
- name: Pre-pull master image
  command: >
    docker pull {{ openshift.master.master_image }}:{{ openshift_image_tag }}
  register: pull_result
  changed_when: "'Downloaded newer image' in pull_result.stdout"
  when: openshift.common.is_containerized | bool and not openshift.common.is_master_system_container | bool

# workaround for missing systemd unit files
- name: Create the systemd unit files
  template:
    src: "master_docker/master.docker.service.j2"
    dest: "{{ containerized_svc_dir }}/{{ openshift.common.service_type }}-master.service"
  when:
  - openshift.common.is_containerized | bool and (openshift.master.ha is not defined or not openshift.master.ha) | bool
  - not openshift.common.is_master_system_container | bool
  register: create_master_unit_file

- name: Install Master service file
  copy:
    dest: "/etc/systemd/system/{{ openshift.common.service_type }}-master.service"
    src: "{{ openshift.common.service_type }}-master.service"
  register: create_master_unit_file
  when:
  - not openshift.common.is_containerized | bool
  - (openshift.master.ha is not defined or not openshift.master.ha) | bool

- command: systemctl daemon-reload
  when: create_master_unit_file | changed

- name: Create the ha systemd unit files
  template:
    src: "{{ ha_svc_template_path }}/atomic-openshift-master-{{ item }}.service.j2"
    dest: "{{ containerized_svc_dir }}/{{ openshift.common.service_type }}-master-{{ item }}.service"
  when:
  - openshift.master.ha is defined and openshift.master.ha | bool and openshift_master_cluster_method == "native"
  - not openshift.common.is_master_system_container | bool
  with_items:
  - api
  - controllers
  register: create_ha_unit_files

- command: systemctl daemon-reload
  when: create_ha_unit_files | changed
# end workaround for missing systemd unit files

- name: Preserve Master API Proxy Config options
  command: grep PROXY /etc/sysconfig/{{ openshift.common.service_type }}-master-api
  register: master_api_proxy
  when: openshift.master.ha is defined and openshift.master.ha | bool and openshift_master_cluster_method == "native"
  failed_when: false
  changed_when: false

- name: Preserve Master API AWS options
  command: grep AWS_ /etc/sysconfig/{{ openshift.common.service_type }}-master-api
  register: master_api_aws
  when: openshift.master.ha is defined and openshift.master.ha | bool and openshift_master_cluster_method == "native"
  failed_when: false
  changed_when: false

- name: Create the master api service env file
  template:
    src: "{{ ha_svc_template_path }}/atomic-openshift-master-api.j2"
    dest: /etc/sysconfig/{{ openshift.common.service_type }}-master-api
    backup: true
  when: openshift.master.ha is defined and openshift.master.ha | bool and openshift_master_cluster_method == "native"
  notify:
  - restart master api

- name: Restore Master API Proxy Config Options
  when: openshift.master.ha is defined and openshift.master.ha | bool and openshift_master_cluster_method == "native"
      and master_api_proxy.rc == 0 and 'http_proxy' not in openshift.common and 'https_proxy' not in openshift.common
  lineinfile:
    dest: /etc/sysconfig/{{ openshift.common.service_type }}-master-api
    line: "{{ item }}"
  with_items: "{{ master_api_proxy.stdout_lines | default([]) }}"

- name: Restore Master API AWS Options
  when: openshift.master.ha is defined and openshift.master.ha | bool and openshift_master_cluster_method == "native"
      and master_api_aws.rc == 0 and
      not (openshift_cloudprovider_kind is defined and openshift_cloudprovider_kind == 'aws' and openshift_cloudprovider_aws_access_key is defined and openshift_cloudprovider_aws_secret_key is defined)
  lineinfile:
    dest: /etc/sysconfig/{{ openshift.common.service_type }}-master-api
    line: "{{ item }}"
  with_items: "{{ master_api_aws.stdout_lines | default([]) }}"
  no_log: True

- name: Preserve Master Controllers Proxy Config options
  command: grep PROXY /etc/sysconfig/{{ openshift.common.service_type }}-master-controllers
  register: master_controllers_proxy
  when: openshift.master.ha is defined and openshift.master.ha | bool and openshift_master_cluster_method == "native"
  failed_when: false
  changed_when: false

- name: Preserve Master Controllers AWS options
  command: grep AWS_ /etc/sysconfig/{{ openshift.common.service_type }}-master-controllers
  register: master_controllers_aws
  when: openshift.master.ha is defined and openshift.master.ha | bool and openshift_master_cluster_method == "native"
  failed_when: false
  changed_when: false

- name: Create the master controllers service env file
  template:
    src: "{{ ha_svc_template_path }}/atomic-openshift-master-controllers.j2"
    dest: /etc/sysconfig/{{ openshift.common.service_type }}-master-controllers
    backup: true
  when: openshift.master.ha is defined and openshift.master.ha | bool and openshift_master_cluster_method == "native"
  notify:
  - restart master controllers

- name: Restore Master Controllers Proxy Config Options
  lineinfile:
    dest: /etc/sysconfig/{{ openshift.common.service_type }}-master-controllers
    line: "{{ item }}"
  with_items: "{{ master_controllers_proxy.stdout_lines | default([]) }}"
  when: openshift.master.ha is defined and openshift.master.ha | bool and openshift_master_cluster_method == "native"
        and master_controllers_proxy.rc == 0 and 'http_proxy' not in openshift.common and 'https_proxy' not in openshift.common

- name: Restore Master Controllers AWS Options
  lineinfile:
    dest: /etc/sysconfig/{{ openshift.common.service_type }}-master-controllers
    line: "{{ item }}"
  with_items: "{{ master_controllers_aws.stdout_lines | default([]) }}"
  when: openshift.master.ha is defined and openshift.master.ha | bool and openshift_master_cluster_method == "native"
      and master_controllers_aws.rc == 0 and
      not (openshift_cloudprovider_kind is defined and openshift_cloudprovider_kind == 'aws' and openshift_cloudprovider_aws_access_key is defined and openshift_cloudprovider_aws_secret_key is defined)

- name: Install Master docker service file
  template:
    dest: "/etc/systemd/system/{{ openshift.common.service_type }}-master.service"
    src: master_docker/master.docker.service.j2
  register: install_result
  when: openshift.common.is_containerized | bool and openshift.master.ha is defined and not openshift.master.ha | bool and not openshift.common.is_master_system_container | bool

- name: Preserve Master Proxy Config options
  command: grep PROXY /etc/sysconfig/{{ openshift.common.service_type }}-master
  register: master_proxy_result
  failed_when: false
  changed_when: false

- set_fact:
    master_proxy: "{{ master_proxy_result.stdout_lines | default([]) }}"

- name: Preserve Master AWS options
  command: grep AWS_ /etc/sysconfig/{{ openshift.common.service_type }}-master
  register: master_aws_result
  failed_when: false
  changed_when: false

- set_fact:
    master_aws: "{{ master_aws_result.stdout_lines | default([]) }}"

- name: Create the master service env file
  template:
    src: "atomic-openshift-master.j2"
    dest: /etc/sysconfig/{{ openshift.common.service_type }}-master
    backup: true
  notify:
  - restart master