diff --git a/contrib/ansible/group_vars/all.yml b/contrib/ansible/group_vars/all.yml index da6b88e1dcd..9641b4a1946 100644 --- a/contrib/ansible/group_vars/all.yml +++ b/contrib/ansible/group_vars/all.yml @@ -1,3 +1,11 @@ +# This value determines how kubernetes binaries, config files, and service +# files are loaded onto the target machines. The following are the only +# valid options: +# +# localBuild - requires make release to have been run to build local binaries +# packageManager - will install packages from your distribution using yum/dnf/apt +source_type: localBuild + # will be used as the Internal dns domain name if DNS is enabled. Services # will be discoverable under ..svc., e.g. # myservice.default.svc.cluster.local diff --git a/contrib/ansible/roles/master/handlers/main.yml b/contrib/ansible/roles/master/handlers/main.yml index 10985570a91..7d927dd3b39 100644 --- a/contrib/ansible/roles/master/handlers/main.yml +++ b/contrib/ansible/roles/master/handlers/main.yml @@ -1,4 +1,9 @@ --- +- name: reload systemd + command: /usr/bin/systemctl --system daemon-reload + notify: + - restart daemons + - name: restart daemons command: /bin/true notify: diff --git a/contrib/ansible/roles/master/tasks/localBuildInstall.yml b/contrib/ansible/roles/master/tasks/localBuildInstall.yml new file mode 100644 index 00000000000..225cb13e465 --- /dev/null +++ b/contrib/ansible/roles/master/tasks/localBuildInstall.yml @@ -0,0 +1,29 @@ +--- +- name: Copy master binaries + copy: + src: ../../_output/local/go/bin/{{ item }} + dest: /usr/bin/ + mode: 755 + with_items: + - kube-apiserver + - kube-scheduler + - kube-controller-manager + - kubectl + +- name: Copy master service files + copy: + src: ../init/systemd/{{ item }} + dest: /etc/systemd/system/ + mode: 644 + with_items: + - kube-apiserver.service + - kube-scheduler.service + - kube-controller-manager.service + notify: reload systemd + +- name: Copy systemd tmpfile for apiserver + copy: + src: ../init/systemd/tmpfiles.d/ + dest: /etc/tmpfiles.d/ + mode: 644 + notify: reload systemd diff --git a/contrib/ansible/roles/master/tasks/main.yml b/contrib/ansible/roles/master/tasks/main.yml index 847a5f9e595..759e45c5d76 100644 --- a/contrib/ansible/roles/master/tasks/main.yml +++ b/contrib/ansible/roles/master/tasks/main.yml @@ -1,9 +1,9 @@ --- -- include: generic-install.yml - when: not is_atomic and not ansible_distribution == "CentOS" +- include: packageManagerInstall.yml + when: source_type == "packageManager" -- include: centos.yml - when: not is_atomic and ansible_distribution == "CentOS" +- include: localBuildInstall.yml + when: source_type == "localBuild" - name: write the config file for the api server template: src=apiserver.j2 dest={{ kube_config_dir }}/apiserver diff --git a/contrib/ansible/roles/master/tasks/packageManagerInstall.yml b/contrib/ansible/roles/master/tasks/packageManagerInstall.yml new file mode 100644 index 00000000000..2bc950a0c03 --- /dev/null +++ b/contrib/ansible/roles/master/tasks/packageManagerInstall.yml @@ -0,0 +1,23 @@ +--- +- include: pkgMgrInstallers/centos-install.yml + when: ansible_distribution == "CentOS" + +- name: Set fact saying we did CentOS package install + set_fact: + did_install: true + when: ansible_distribution == "CentOS" + + + +- include: pkgMgrInstallers/fedora-install.yml + when: ansible_distribution == "Fedora" and ansible_distribution_release != "Rawhide" + +- name: Set fact saying we did Fedora package install + set_fact: + did_install: true + when: ansible_distribution == "Fedora" and ansible_distribution_release != "Rawhide" + + + +- include: pkgMgrInstallers/generic-install.yml + when: not did_install diff --git a/contrib/ansible/roles/master/tasks/centos.yml b/contrib/ansible/roles/master/tasks/pkgMgrInstallers/centos-install.yml similarity index 66% rename from contrib/ansible/roles/master/tasks/centos.yml rename to contrib/ansible/roles/master/tasks/pkgMgrInstallers/centos-install.yml index 095000b5027..0d04c7c8253 100644 --- a/contrib/ansible/roles/master/tasks/centos.yml +++ b/contrib/ansible/roles/master/tasks/pkgMgrInstallers/centos-install.yml @@ -1,8 +1,9 @@ --- -- name: CentOS | Install kubernetes master +- name: CentOS | Install kubernetes master yum: pkg=kubernetes-master state=latest enablerepo=virt7-docker-common-candidate notify: - restart daemons + when: not is_atomic diff --git a/contrib/ansible/roles/master/tasks/pkgMgrInstallers/fedora-install.yml b/contrib/ansible/roles/master/tasks/pkgMgrInstallers/fedora-install.yml new file mode 100644 index 00000000000..865dad2d59f --- /dev/null +++ b/contrib/ansible/roles/master/tasks/pkgMgrInstallers/fedora-install.yml @@ -0,0 +1,9 @@ +- name: Fedora | Install kubernetes master + action: "{{ ansible_pkg_mgr }}" + args: + name: kubernetes-master + state: latest + enablerepo: "updates-testing" + notify: + - restart daemons + when: not is_atomic diff --git a/contrib/ansible/roles/master/tasks/generic-install.yml b/contrib/ansible/roles/master/tasks/pkgMgrInstallers/generic-install.yml similarity index 64% rename from contrib/ansible/roles/master/tasks/generic-install.yml rename to contrib/ansible/roles/master/tasks/pkgMgrInstallers/generic-install.yml index 6e69dbf3f63..dbd6afe05ec 100644 --- a/contrib/ansible/roles/master/tasks/generic-install.yml +++ b/contrib/ansible/roles/master/tasks/pkgMgrInstallers/generic-install.yml @@ -1,7 +1,8 @@ -- name: Install kubernetes +- name: Generic | Install kubernetes master action: "{{ ansible_pkg_mgr }}" args: name: kubernetes-master state: latest notify: - restart daemons + when: not is_atomic diff --git a/contrib/ansible/roles/node/handlers/main.yml b/contrib/ansible/roles/node/handlers/main.yml index fd00563b38b..608d9497304 100644 --- a/contrib/ansible/roles/node/handlers/main.yml +++ b/contrib/ansible/roles/node/handlers/main.yml @@ -1,4 +1,9 @@ --- +- name: reload systemd + command: /usr/bin/systemctl --system daemon-reload + notify: + - restart daemons + - name: restart daemons command: /bin/true notify: diff --git a/contrib/ansible/roles/node/tasks/localBuildInstall.yml b/contrib/ansible/roles/node/tasks/localBuildInstall.yml new file mode 100644 index 00000000000..58f105f8a6d --- /dev/null +++ b/contrib/ansible/roles/node/tasks/localBuildInstall.yml @@ -0,0 +1,25 @@ +--- +- name: Copy node binaries + copy: + src: ../../_output/local/go/bin/{{ item }} + dest: /usr/bin/ + mode: 755 + with_items: + - kubelet + - kube-proxy + - kubectl + +- name: Copy node service files + copy: + src: ../init/systemd/{{ item }} + dest: /etc/systemd/system/ + mode: 644 + with_items: + - kube-proxy.service + - kubelet.service + notify: reload systemd + +- name: Create the /var/lib/kubelet working directory + file: + path: /var/lib/kubelet + state: directory diff --git a/contrib/ansible/roles/node/tasks/main.yml b/contrib/ansible/roles/node/tasks/main.yml index 1c88a864466..d44a4f6f47e 100644 --- a/contrib/ansible/roles/node/tasks/main.yml +++ b/contrib/ansible/roles/node/tasks/main.yml @@ -8,11 +8,11 @@ selinux: state=permissive policy=targeted when: "'Enforcing' in selinux.stdout" -- include: generic-install.yml - when: not is_atomic and not ansible_distribution == "CentOS" +- include: packageManagerInstall.yml + when: source_type == "packageManager" -- include: centos.yml - when: not is_atomic and ansible_distribution == "CentOS" +- include: localBuildInstall.yml + when: source_type == "localBuild" - name: Make sure manifest directory exists file: path={{ kube_manifest_dir }} state=directory diff --git a/contrib/ansible/roles/node/tasks/packageManagerInstall.yml b/contrib/ansible/roles/node/tasks/packageManagerInstall.yml new file mode 100644 index 00000000000..2bc950a0c03 --- /dev/null +++ b/contrib/ansible/roles/node/tasks/packageManagerInstall.yml @@ -0,0 +1,23 @@ +--- +- include: pkgMgrInstallers/centos-install.yml + when: ansible_distribution == "CentOS" + +- name: Set fact saying we did CentOS package install + set_fact: + did_install: true + when: ansible_distribution == "CentOS" + + + +- include: pkgMgrInstallers/fedora-install.yml + when: ansible_distribution == "Fedora" and ansible_distribution_release != "Rawhide" + +- name: Set fact saying we did Fedora package install + set_fact: + did_install: true + when: ansible_distribution == "Fedora" and ansible_distribution_release != "Rawhide" + + + +- include: pkgMgrInstallers/generic-install.yml + when: not did_install diff --git a/contrib/ansible/roles/node/tasks/centos.yml b/contrib/ansible/roles/node/tasks/pkgMgrInstallers/centos-install.yml similarity index 88% rename from contrib/ansible/roles/node/tasks/centos.yml rename to contrib/ansible/roles/node/tasks/pkgMgrInstallers/centos-install.yml index 577c6f84dd9..9f8a413f5aa 100644 --- a/contrib/ansible/roles/node/tasks/centos.yml +++ b/contrib/ansible/roles/node/tasks/pkgMgrInstallers/centos-install.yml @@ -6,3 +6,4 @@ enablerepo=virt7-docker-common-candidate notify: - restart daemons + when: not is_atomic diff --git a/contrib/ansible/roles/node/tasks/pkgMgrInstallers/fedora-install.yml b/contrib/ansible/roles/node/tasks/pkgMgrInstallers/fedora-install.yml new file mode 100644 index 00000000000..97ef31bbd8e --- /dev/null +++ b/contrib/ansible/roles/node/tasks/pkgMgrInstallers/fedora-install.yml @@ -0,0 +1,9 @@ +- name: Fedora | Install kubernetes node + action: "{{ ansible_pkg_mgr }}" + args: + name: kubernetes-node + state: latest + enablerepo: "updates-testing" + notify: + - restart daemons + when: not is_atomic diff --git a/contrib/ansible/roles/node/tasks/generic-install.yml b/contrib/ansible/roles/node/tasks/pkgMgrInstallers/generic-install.yml similarity index 64% rename from contrib/ansible/roles/node/tasks/generic-install.yml rename to contrib/ansible/roles/node/tasks/pkgMgrInstallers/generic-install.yml index b3597237141..c4619116f75 100644 --- a/contrib/ansible/roles/node/tasks/generic-install.yml +++ b/contrib/ansible/roles/node/tasks/pkgMgrInstallers/generic-install.yml @@ -1,7 +1,8 @@ -- name: Install kubernetes +- name: Generic | Install kubernetes node action: "{{ ansible_pkg_mgr }}" args: name: kubernetes-node state: latest notify: - restart daemons + when: not is_atomic