--- - name: Copy kubectl bash completion copy: src: kubectl_bash_completion.sh dest: /etc/bash_completion.d/kubectl.sh - name: Install kubectl binary command: cp -pf "{{ local_release_dir }}/kubernetes/bin/kubectl" "{{ bin_dir }}/kubectl" changed_when: false notify: restart kubelet - name: populate users for basic auth in API lineinfile: dest: "{{ kube_users_dir }}/known_users.csv" create: yes line: '{{ item.value.pass }},{{ item.key }},{{ item.value.role }}' backup: yes with_dict: "{{ kube_users }}" # Sync masters - name: synchronize auth directories for masters synchronize: src: "{{ item }}" dest: "{{ kube_config_dir }}" recursive: yes delete: yes rsync_opts: [ '--one-file-system'] set_remote_user: false with_items: - "{{ kube_token_dir }}" - "{{ kube_cert_dir }}" - "{{ kube_users_dir }}" delegate_to: "{{ groups['kube-master'][0] }}" when: inventory_hostname != "{{ groups['kube-master'][0] }}" # Write manifests - name: Write kube-apiserver manifest template: src: manifests/kube-apiserver.manifest.j2 dest: "{{ kube_manifest_dir }}/kube-apisever.manifest" notify: restart kubelet - meta: flush_handlers - name: wait for the apiserver to be running (pulling image and running container) wait_for: port: "{{kube_apiserver_insecure_port}}" delay: 10 timeout: 60 - name: copy 'kube-system' namespace manifest copy: src=namespace.yml dest=/etc/kubernetes/kube-system-ns.yml run_once: yes when: inventory_hostname == groups['kube-master'][0] - name: Check if kube-system exists command: kubectl get ns kube-system register: 'kubesystem' changed_when: False ignore_errors: yes run_once: yes - name: Create 'kube-system' namespace command: kubectl create -f /etc/kubernetes/kube-system-ns.yml when: kubesystem|failed changed_when: False run_once: yes - name: Write kube-controller-manager manifest template: src: manifests/kube-controller-manager.manifest.j2 dest: "{{ kube_config_dir }}/kube-controller-manager.manifest" - name: Write kube-scheduler manifest template: src: manifests/kube-scheduler.manifest.j2 dest: "{{ kube_config_dir }}/kube-scheduler.manifest" - name: Write podmaster manifest template: src: manifests/kube-podmaster.manifest.j2 dest: "{{ kube_manifest_dir }}/kube-podmaster.manifest"