From a649aa8b7eecbe27c0942c41c0a4f59cae85e3e0 Mon Sep 17 00:00:00 2001 From: Smana Date: Sat, 13 Feb 2016 11:17:20 +0100 Subject: [PATCH 1/2] use ansible_service_mgr to detect init system --- roles/etcd/handlers/main.yml | 2 +- roles/etcd/tasks/configure.yml | 4 ++-- roles/kubernetes/master/tasks/main.yml | 4 ++-- roles/kubernetes/master/tasks/start.yml | 2 +- .../master/templates/kube-apiserver.j2 | 4 ++-- roles/kubernetes/node/handlers/main.yml | 2 +- roles/kubernetes/node/tasks/install.yml | 6 +++--- roles/kubernetes/node/templates/kubelet.j2 | 4 ++-- roles/kubernetes/preinstall/tasks/main.yml | 20 +------------------ roles/network_plugin/calico/handlers/main.yml | 2 +- roles/network_plugin/calico/tasks/main.yml | 10 +++++----- roles/network_plugin/calico/templates/docker | 2 +- .../network_plugin/flannel/handlers/main.yml | 2 +- roles/network_plugin/flannel/tasks/main.yml | 2 +- roles/network_plugin/flannel/templates/docker | 2 +- roles/network_plugin/weave/handlers/main.yml | 2 +- roles/network_plugin/weave/tasks/main.yml | 8 ++++---- 17 files changed, 30 insertions(+), 48 deletions(-) diff --git a/roles/etcd/handlers/main.yml b/roles/etcd/handlers/main.yml index 22661c087..a2044fb08 100644 --- a/roles/etcd/handlers/main.yml +++ b/roles/etcd/handlers/main.yml @@ -7,7 +7,7 @@ - name: reload systemd command: systemctl daemon-reload - when: init_system == "systemd" + when: ansible_service_mgr == "systemd" - name: reload etcd service: diff --git a/roles/etcd/tasks/configure.yml b/roles/etcd/tasks/configure.yml index 1d3f7887b..925180de0 100644 --- a/roles/etcd/tasks/configure.yml +++ b/roles/etcd/tasks/configure.yml @@ -4,7 +4,7 @@ src: etcd.service.j2 dest: /lib/systemd/system/etcd.service backup: yes - when: init_system == "systemd" + when: ansible_service_mgr == "systemd" notify: restart etcd - name: Configure | Write etcd initd script @@ -13,7 +13,7 @@ dest: /etc/init.d/etcd owner: root mode: 0755 - when: init_system == "sysvinit" and ansible_os_family == "Debian" + when: ansible_service_mgr in ["sysvinit","upstart"] and ansible_os_family == "Debian" notify: restart etcd - name: Configure | Create etcd config file diff --git a/roles/kubernetes/master/tasks/main.yml b/roles/kubernetes/master/tasks/main.yml index 70dd02325..b974d13a2 100644 --- a/roles/kubernetes/master/tasks/main.yml +++ b/roles/kubernetes/master/tasks/main.yml @@ -18,7 +18,7 @@ src: "kube-apiserver.service.j2" dest: "/etc/systemd/system/kube-apiserver.service" backup: yes - when: init_system == "systemd" + when: ansible_service_mgr == "systemd" notify: restart kube-apiserver - name: install | Write kube-apiserver initd script @@ -28,7 +28,7 @@ owner: root mode: 0755 backup: yes - when: init_system == "sysvinit" and ansible_os_family == "Debian" + when: ansible_service_mgr in ["sysvinit","upstart"] and ansible_os_family == "Debian" - name: Write kube-apiserver config file template: diff --git a/roles/kubernetes/master/tasks/start.yml b/roles/kubernetes/master/tasks/start.yml index 7fa4f2764..c8b2e7927 100644 --- a/roles/kubernetes/master/tasks/start.yml +++ b/roles/kubernetes/master/tasks/start.yml @@ -4,7 +4,7 @@ - name: reload systemd command: systemctl daemon-reload - when: init_system == "systemd" and restart_apimaster is defined and restart_apimaster == True + when: ansible_service_mgr == "systemd" and restart_apimaster is defined and restart_apimaster == True - name: reload kube-apiserver service: diff --git a/roles/kubernetes/master/templates/kube-apiserver.j2 b/roles/kubernetes/master/templates/kube-apiserver.j2 index 2f900fdc8..b45fa46f2 100644 --- a/roles/kubernetes/master/templates/kube-apiserver.j2 +++ b/roles/kubernetes/master/templates/kube-apiserver.j2 @@ -3,7 +3,7 @@ # # The following values are used to configure the kube-apiserver -{% if init_system == "sysvinit" %} +{% if ansible_service_mgr in ["sysvinit","upstart"] %} # Logging directory KUBE_LOGGING="--log-dir={{ kube_log_dir }} --logtostderr=true" {% else %} @@ -38,7 +38,7 @@ KUBE_TLS_CONFIG="--tls_cert_file={{ kube_cert_dir }}/apiserver.pem --tls_private # Add you own! KUBE_API_ARGS="--token_auth_file={{ kube_token_dir }}/known_tokens.csv --basic-auth-file={{ kube_users_dir }}/known_users.csv --service_account_key_file={{ kube_cert_dir }}/apiserver-key.pem" -{% if init_system == "sysvinit" %} +{% if ansible_service_mgr in ["sysvinit","upstart"] %} DAEMON_ARGS="$KUBE_LOGGING $KUBE_LOG_LEVEL $KUBE_ALLOW_PRIV $KUBE_API_PORT $KUBE_SERVICE_ADDRESSES \ $KUBE_ETCD_SERVERS $KUBE_ADMISSION_CONTROL $KUBE_RUNTIME_CONFIG $KUBE_TLS_CONFIG $KUBE_API_ARGS" {% endif %} diff --git a/roles/kubernetes/node/handlers/main.yml b/roles/kubernetes/node/handlers/main.yml index 7b2c3df71..ad9707757 100644 --- a/roles/kubernetes/node/handlers/main.yml +++ b/roles/kubernetes/node/handlers/main.yml @@ -1,7 +1,7 @@ --- - name: reload systemd command: systemctl daemon-reload - when: init_system == "systemd" + when: ansible_service_mgr == "systemd" - name: restart kubelet command: /bin/true diff --git a/roles/kubernetes/node/tasks/install.yml b/roles/kubernetes/node/tasks/install.yml index 32c64fae4..e501dc61d 100644 --- a/roles/kubernetes/node/tasks/install.yml +++ b/roles/kubernetes/node/tasks/install.yml @@ -1,17 +1,17 @@ --- - name: install | Write kubelet systemd init file template: src=kubelet.service.j2 dest=/etc/systemd/system/kubelet.service backup=yes - when: init_system == "systemd" + when: ansible_service_mgr == "systemd" notify: restart kubelet - name: install | Write kubelet initd script template: src=deb-kubelet.initd.j2 dest=/etc/init.d/kubelet owner=root mode=0755 backup=yes - when: init_system == "sysvinit" and ansible_os_family == "Debian" + when: ansible_service_mgr in ["sysvinit","upstart"] and ansible_os_family == "Debian" notify: restart kubelet - name: install | Write kubelet initd script template: src=rh-kubelet.initd.j2 dest=/etc/init.d/kubelet owner=root mode=0755 backup=yes - when: init_system == "sysvinit" and ansible_os_family == "RedHat" + when: ansible_service_mgr in ["sysvinit","upstart"] and ansible_os_family == "RedHat" notify: restart kubelet - name: install | Install kubelet binary diff --git a/roles/kubernetes/node/templates/kubelet.j2 b/roles/kubernetes/node/templates/kubelet.j2 index 73e7fe604..0f9197586 100644 --- a/roles/kubernetes/node/templates/kubelet.j2 +++ b/roles/kubernetes/node/templates/kubelet.j2 @@ -1,4 +1,4 @@ -{% if init_system == "sysvinit" %} +{% if ansible_service_mgr in ["sysvinit","upstart"] %} # Logging directory KUBE_LOGGING="--log-dir={{ kube_log_dir }} --logtostderr=true" {% else %} @@ -30,7 +30,7 @@ DOCKER_SOCKET="--docker-endpoint=unix:/var/run/weave/weave.sock" {% endif %} # Should this cluster be allowed to run privileged docker containers KUBE_ALLOW_PRIV="--allow_privileged=true" -{% if init_system == "sysvinit" %} +{% if ansible_service_mgr in ["sysvinit","upstart"] %} DAEMON_ARGS="$KUBE_LOGGING $KUBE_LOG_LEVEL $KUBE_ALLOW_PRIV $KUBELET_API_SERVER $KUBELET_ADDRESS \ $KUBELET_HOSTNAME $KUBELET_REGISTER_NODE $KUBELET_ARGS $DOCKER_SOCKET $KUBELET_ARGS $KUBELET_NETWORK_PLUGIN" {% endif %} diff --git a/roles/kubernetes/preinstall/tasks/main.yml b/roles/kubernetes/preinstall/tasks/main.yml index 7ceda9b1f..88aef9d6f 100644 --- a/roles/kubernetes/preinstall/tasks/main.yml +++ b/roles/kubernetes/preinstall/tasks/main.yml @@ -15,24 +15,6 @@ paths: - ../vars -- name: "Identify init system" - shell: > - $(pgrep systemd > /dev/null && systemctl status network.target > /dev/null); - if [ $? -eq 0 ] ; then - echo systemd; - else - echo sysvinit; - fi - always_run: True - register: init_system_output - changed_when: False - tags: always - -- set_fact: - init_system: "{{ init_system_output.stdout }}" - always_run: True - tags: always - - name: Create kubernetes config directory file: path: "{{ kube_config_dir }}" @@ -56,7 +38,7 @@ path: "{{ kube_log_dir }}" state: directory owner: kube - when: init_system == "sysvinit" + when: ansible_service_mgr in ["sysvinit","upstart"] - name: Create cni directories file: diff --git a/roles/network_plugin/calico/handlers/main.yml b/roles/network_plugin/calico/handlers/main.yml index 59163cc07..1e8d56dbe 100644 --- a/roles/network_plugin/calico/handlers/main.yml +++ b/roles/network_plugin/calico/handlers/main.yml @@ -7,7 +7,7 @@ - name : reload systemd shell: systemctl daemon-reload - when: init_system == "systemd" + when: ansible_service_mgr == "systemd" - name: reload calico-node service: diff --git a/roles/network_plugin/calico/tasks/main.yml b/roles/network_plugin/calico/tasks/main.yml index d8f51fa1a..d7f9930b6 100644 --- a/roles/network_plugin/calico/tasks/main.yml +++ b/roles/network_plugin/calico/tasks/main.yml @@ -14,7 +14,7 @@ src: systemd-docker.service dest: /lib/systemd/system/docker.service notify: restart docker - when: init_system == "systemd" + when: ansible_service_mgr == "systemd" - meta: flush_handlers @@ -80,21 +80,21 @@ - name: Calico | Write /etc/network-environment template: src=network-environment.j2 dest=/etc/network-environment - when: init_system == "sysvinit" + when: ansible_service_mgr in ["sysvinit","upstart"] - name: Calico | Write calico-node systemd init file template: src=calico-node.service.j2 dest=/etc/systemd/system/calico-node.service - when: init_system == "systemd" + when: ansible_service_mgr == "systemd" notify: restart calico-node - name: Calico | Write calico-node initd script template: src=deb-calico.initd.j2 dest=/etc/init.d/calico-node owner=root mode=0755 - when: init_system == "sysvinit" and ansible_os_family == "Debian" + when: ansible_service_mgr in ["sysvinit","upstart"] and ansible_os_family == "Debian" notify: restart calico-node - name: Calico | Write calico-node initd script template: src=rh-calico.initd.j2 dest=/etc/init.d/calico-node owner=root mode=0755 - when: init_system == "sysvinit" and ansible_os_family == "RedHat" + when: ansible_service_mgr in ["sysvinit","upstart"] and ansible_os_family == "RedHat" notify: restart calico-node - meta: flush_handlers diff --git a/roles/network_plugin/calico/templates/docker b/roles/network_plugin/calico/templates/docker index 2f547a6c3..332b7503f 100644 --- a/roles/network_plugin/calico/templates/docker +++ b/roles/network_plugin/calico/templates/docker @@ -1,5 +1,5 @@ # Deployed by Ansible -{% if init_system == "sysvinit" and kube_network_plugin == "flannel" and ansible_os_family == "Debian" %} +{% if ansible_service_mgr in ["sysvinit","upstart"] and kube_network_plugin == "flannel" and ansible_os_family == "Debian" %} DOCKER_OPTS="--bip={{ flannel_subnet }} --mtu={{ flannel_mtu }}" {% elif kube_network_plugin == "flannel" and ansible_os_family == "RedHat" %} DOCKER_NETWORK_OPTIONS="--bip={{ flannel_subnet }} --mtu={{ flannel_mtu }}" diff --git a/roles/network_plugin/flannel/handlers/main.yml b/roles/network_plugin/flannel/handlers/main.yml index 1683b8c35..427370569 100644 --- a/roles/network_plugin/flannel/handlers/main.yml +++ b/roles/network_plugin/flannel/handlers/main.yml @@ -13,7 +13,7 @@ - name : reload systemd shell: systemctl daemon-reload - when: init_system == "systemd" + when: ansible_service_mgr == "systemd" - name: reload docker service: diff --git a/roles/network_plugin/flannel/tasks/main.yml b/roles/network_plugin/flannel/tasks/main.yml index 5cdbf24ac..6cfa302fb 100644 --- a/roles/network_plugin/flannel/tasks/main.yml +++ b/roles/network_plugin/flannel/tasks/main.yml @@ -47,6 +47,6 @@ src: systemd-docker.service dest: /lib/systemd/system/docker.service notify: restart docker - when: init_system == "systemd" + when: ansible_service_mgr == "systemd" - meta: flush_handlers diff --git a/roles/network_plugin/flannel/templates/docker b/roles/network_plugin/flannel/templates/docker index eefd150e1..028fd07b1 100644 --- a/roles/network_plugin/flannel/templates/docker +++ b/roles/network_plugin/flannel/templates/docker @@ -1,5 +1,5 @@ # Deployed by Ansible -{% if init_system == "sysvinit" and kube_network_plugin == "flannel" and ansible_os_family == "Debian" %} +{% if ansible_service_mgr in ["sysvinit","upstart"] and kube_network_plugin == "flannel" and ansible_os_family == "Debian" %} DOCKER_OPTS="--bip={{ flannel_subnet }} --mtu={{ flannel_mtu }}" {% elif kube_network_plugin == "flannel" %} OPTIONS="--bip={{ flannel_subnet }} --mtu={{ flannel_mtu }}" diff --git a/roles/network_plugin/weave/handlers/main.yml b/roles/network_plugin/weave/handlers/main.yml index 959db16c7..3bb21c346 100644 --- a/roles/network_plugin/weave/handlers/main.yml +++ b/roles/network_plugin/weave/handlers/main.yml @@ -7,7 +7,7 @@ - name : reload systemd shell: systemctl daemon-reload - when: init_system == "systemd" + when: ansible_service_mgr == "systemd" - name: restart weave command: /bin/true diff --git a/roles/network_plugin/weave/tasks/main.yml b/roles/network_plugin/weave/tasks/main.yml index 0fbbbc35d..cd415cf42 100644 --- a/roles/network_plugin/weave/tasks/main.yml +++ b/roles/network_plugin/weave/tasks/main.yml @@ -14,7 +14,7 @@ src: systemd-docker.service dest: /lib/systemd/system/docker.service notify: restart docker - when: init_system == "systemd" + when: ansible_service_mgr == "systemd" - meta: flush_handlers @@ -41,17 +41,17 @@ - name: Weave | Write weave systemd init file template: src=weave.service.j2 dest=/etc/systemd/system/weave.service - when: init_system == "systemd" + when: ansible_service_mgr == "systemd" notify: restart systemd-weave - name: Weave | Write weaveproxy systemd init file template: src=weaveproxy.service.j2 dest=/etc/systemd/system/weaveproxy.service - when: init_system == "systemd" + when: ansible_service_mgr == "systemd" notify: restart systemd-weaveproxy - name: Weave | Write weaveexpose systemd init file template: src=weaveexpose.service.j2 dest=/etc/systemd/system/weaveexpose.service - when: init_system == "systemd" + when: ansible_service_mgr == "systemd" notify: restart systemd-weaveexpose - name: Weave | Enable weave From c0cf506fb46686551a23ce8c7bd09de33fd22b79 Mon Sep 17 00:00:00 2001 From: Smana Date: Sat, 13 Feb 2016 11:59:46 +0100 Subject: [PATCH 2/2] install epel-release on RHEL7 --- roles/kubernetes/master/tasks/main.yml | 6 ------ roles/kubernetes/master/tasks/start.yml | 5 +++-- roles/kubernetes/preinstall/tasks/main.yml | 13 ++++++++----- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/roles/kubernetes/master/tasks/main.yml b/roles/kubernetes/master/tasks/main.yml index b974d13a2..d3a8dad68 100644 --- a/roles/kubernetes/master/tasks/main.yml +++ b/roles/kubernetes/master/tasks/main.yml @@ -91,9 +91,3 @@ name: kubelet state: restarted changed_when: false - -- name: restart kube-apiserver - service: - name: kube-apiserver - state: restarted - when: secret_changed | default(false) diff --git a/roles/kubernetes/master/tasks/start.yml b/roles/kubernetes/master/tasks/start.yml index c8b2e7927..9cd247c42 100644 --- a/roles/kubernetes/master/tasks/start.yml +++ b/roles/kubernetes/master/tasks/start.yml @@ -11,11 +11,12 @@ name: kube-apiserver state: restarted enabled: yes - when: restart_apimaster is defined and restart_apimaster == True + when: ( restart_apimaster is defined and restart_apimaster == True) or + secret_changed | default(false) - name: Enable apiserver service: name: kube-apiserver enabled: yes state: started - when: restart_apimaster is not defined or restart_apimaster == False \ No newline at end of file + when: restart_apimaster is not defined or restart_apimaster == False diff --git a/roles/kubernetes/preinstall/tasks/main.yml b/roles/kubernetes/preinstall/tasks/main.yml index 88aef9d6f..fc06d12b7 100644 --- a/roles/kubernetes/preinstall/tasks/main.yml +++ b/roles/kubernetes/preinstall/tasks/main.yml @@ -59,23 +59,26 @@ when: ansible_pkg_mgr == 'yum' - name: Install python-apt for Debian distribs - shell: apt-get install -y python-apt + command: apt-get install -y python-apt when: ansible_os_family == "Debian" changed_when: False - name: Install python-dnf for latest RedHat versions - shell: dnf install -y python-dnf yum + command: dnf install -y python-dnf yum when: ansible_distribution == "Fedora" and ansible_distribution_major_version > 21 changed_when: False -- name: Install epel-release for RedHat and CentOS distribs +- name: Install epel-release on RHEL + command: rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm + when: ansible_distribution == "RedHat" + +- name: Install epel-release on CentOS action: module: "{{ ansible_pkg_mgr }}" name: "epel-release" state: latest - when: ansible_distribution == "RedHat" or - ansible_distribution == "CentOS" + when: ansible_distribution == "CentOS" - name: Install packages requirements action: