Przeglądaj źródła

improve ordering of systemd units

Jason DeTiberus 9 lat temu
rodzic
commit
8f7b31051d

+ 4 - 0
roles/etcd/tasks/main.yml

@@ -36,6 +36,10 @@
     state: stopped
     enabled: no
 
+- name: Mask system etcd when containerized
+  when: openshift.common.is_containerized | bool
+  command: systemctl mask etcd
+
 - name: Reload systemd units
   command: systemctl daemon-reload
   when: openshift.common.is_containerized | bool and ( install_etcd_result | changed )

+ 3 - 0
roles/etcd/templates/etcd.docker.service

@@ -1,12 +1,15 @@
 [Unit]
 Description=The Etcd Server container
 After=docker.service
+Requires=docker.service
+PartOf=docker.service
 
 [Service]
 EnvironmentFile=/etc/etcd/etcd.conf
 ExecStartPre=-/usr/bin/docker rm -f {{ etcd_service }}
 ExecStart=/usr/bin/docker run --name {{ etcd_service }} --rm -v /var/lib/etcd:/var/lib/etcd:z -v /etc/etcd:/etc/etcd:z --env-file=/etc/etcd/etcd.conf --net=host --entrypoint=/usr/bin/etcd {{ openshift.etcd.etcd_image }}
 ExecStop=/usr/bin/docker stop {{ etcd_service }}
+SyslogIdentifier=etcd_container
 Restart=always
 
 [Install]

+ 5 - 5
roles/openshift_master/templates/docker-cluster/atomic-openshift-master-api.service.j2

@@ -1,12 +1,12 @@
 [Unit]
 Description=Atomic OpenShift Master API
 Documentation=https://github.com/openshift/origin
-After=network.target
-After=etcd.service
+After=etcd_container.service
+Wants=etcd_container.service
 Before={{ openshift.common.service_type }}-node.service
-Requires=network.target
-Requires=docker.service
+After=docker.service
 PartOf=docker.service
+Requires=docker.service
 
 [Service]
 EnvironmentFile=/etc/sysconfig/{{ openshift.common.service_type }}-master-api
@@ -18,7 +18,7 @@ ExecStop=/usr/bin/docker stop {{ openshift.common.service_type }}-master-api
 LimitNOFILE=131072
 LimitCORE=infinity
 WorkingDirectory={{ openshift.common.data_dir }}
-SyslogIdentifier=atomic-openshift-master-api
+SyslogIdentifier={{ openshift.common.service_type }}-master-api
 Restart=always
 
 [Install]

+ 2 - 3
roles/openshift_master/templates/docker-cluster/atomic-openshift-master-controllers.service.j2

@@ -1,9 +1,9 @@
 [Unit]
 Description=Atomic OpenShift Master Controllers
 Documentation=https://github.com/openshift/origin
-After=network.target
+Wants={{ openshift.common.service_type }}-master-api.service
 After={{ openshift.common.service_type }}-master-api.service
-Before={{ openshift.common.service_type }}-node.service
+After=docker.service
 Requires=docker.service
 PartOf=docker.service
 
@@ -22,4 +22,3 @@ Restart=on-failure
 
 [Install]
 WantedBy=multi-user.target
-WantedBy={{ openshift.common.service_type }}-node.service

+ 2 - 1
roles/openshift_master/templates/docker/master.docker.service.j2

@@ -1,8 +1,9 @@
 [Unit]
 After=docker.service
-Before={{ openshift.common.service_type }}-node.service
 Requires=docker.service
 PartOf=docker.service
+After=etcd_container.service
+Wants=etcd_container.service
 
 [Service]
 EnvironmentFile=/etc/sysconfig/{{ openshift.common.service_type }}-master

+ 2 - 2
roles/openshift_master/templates/native-cluster/atomic-openshift-master-api.service.j2

@@ -1,10 +1,10 @@
 [Unit]
 Description=Atomic OpenShift Master API
 Documentation=https://github.com/openshift/origin
-After=network.target
+After=network-online.target
 After=etcd.service
 Before={{ openshift.common.service_type }}-node.service
-Requires=network.target
+Requires=network-online.target
 
 [Service]
 Type=notify

+ 3 - 4
roles/openshift_master/templates/native-cluster/atomic-openshift-master-controllers.service.j2

@@ -1,10 +1,10 @@
 [Unit]
 Description=Atomic OpenShift Master Controllers
 Documentation=https://github.com/openshift/origin
-After=network.target
+After=network-online.target
 After={{ openshift.common.service_type }}-master-api.service
-Before={{ openshift.common.service_type }}-node.service
-Requires=network.target
+Wants={{ openshift.common.service_type }}-master-api.service
+Requires=network-online.target
 
 [Service]
 {% if openshift.common.version_gte_3_1_1_or_1_1_1 | bool %}
@@ -23,4 +23,3 @@ Restart=on-failure
 
 [Install]
 WantedBy=multi-user.target
-WantedBy={{ openshift.common.service_type }}-node.service

+ 1 - 3
roles/openshift_node/handlers/main.yml

@@ -3,8 +3,6 @@
   service: name={{ openshift.common.service_type }}-node state=restarted
   when: not (node_service_status_changed | default(false) | bool)
 
-- name: restart docker
-  service: name=docker state=restarted
-
 - name: restart openvswitch
   service: name=openvswitch state=restarted
+  when: not (ovs_service_status_changed | default(false) | bool)

+ 6 - 2
roles/openshift_node/tasks/main.yml

@@ -85,6 +85,10 @@
 - name: Start and enable openvswitch docker service
   service: name=openvswitch.service enabled=yes state=started
   when: openshift.common.is_containerized | bool and openshift.common.use_openshift_sdn | bool
+  register: ovs_start_result
+
+- set_fact:
+    ovs_service_status_changed: "{{ ovs_start_result | changed }}"
 
 # TODO: add the validate parameter when there is a validation command to run
 - name: Create the Node config
@@ -134,7 +138,7 @@
 
 - name: Start and enable node
   service: name={{ openshift.common.service_type }}-node enabled=yes state=started
-  register: start_result
+  register: node_start_result
 
 - set_fact:
-    node_service_status_changed: "{{ start_result | changed }}"
+    node_service_status_changed: "{{ node_start_result | changed }}"

Plik diff jest za duży
+ 5 - 3
roles/openshift_node/templates/openshift.docker.node.service


+ 1 - 0
roles/openshift_node/templates/openvswitch.docker.service

@@ -9,6 +9,7 @@ ExecStartPre=-/usr/bin/docker rm -f openvswitch
 ExecStart=/usr/bin/docker run --name openvswitch --rm --privileged --net=host --pid=host -v /lib/modules:/lib/modules -v /run:/run -v /sys:/sys:ro -v /etc/origin/openvswitch:/etc/openvswitch {{ openshift.node.ovs_image }}:${IMAGE_VERSION}
 ExecStartPost=/usr/bin/sleep 5
 ExecStop=/usr/bin/docker stop openvswitch
+SyslogIdentifier=openvswitch
 Restart=always
 
 [Install]