--- - name: Include OS-specific variables. include_vars: "{{ ansible_os_family }}.yml" - include_tasks: setup-RedHat.yml when: ansible_os_family == 'RedHat' - include_tasks: setup-Debian.yml when: ansible_os_family == 'Debian' - name: Ensure dependencies are installed. package: name=curl state=present - name: Install Kubernetes packages. package: name: "{{ item.name | default(item) }}" state: "{{ item.state | default('present') }}" notify: restart kubelet with_items: "{{ kubernetes_packages }}" # per the install doc, # https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ - name: Set sysctl for IPv4 bridges sysctl: name: net.bridge.bridge-nf-call-iptables value: 1 state: present - name: Set sysctl for IPv6 bridges sysctl: name: net.bridge.bridge-nf-call-ip6tables value: 1 state: present - include_tasks: kubelet-setup.yml - name: Ensure kubelet is started and enabled at boot. service: name: kubelet state: started enabled: true - name: Check if Kubernetes has already been initialized. stat: path: /etc/kubernetes/admin.conf register: kubernetes_init_stat # Set up master. - include_tasks: master-setup.yml when: kubernetes_role == 'master' # Set up nodes. - name: Get the kubeadm join command from the Kubernetes master. command: kubeadm token create --print-join-command changed_when: false when: kubernetes_role == 'master' register: kubernetes_join_command_result - name: Set the kubeadm join command globally. set_fact: kubernetes_join_command: > {{ kubernetes_join_command_result.stdout }} {{ kubernetes_join_command_extra_opts }} when: kubernetes_join_command_result.stdout is defined delegate_to: "{{ item }}" delegate_facts: true with_items: "{{ groups['all'] }}" - include_tasks: node-setup.yml when: kubernetes_role == 'node'