--- - name: Copy necessary files to worker nodes hosts: workers vars: kubernetes_files: - ca.pem kubelet_files: - kube-worker.kubeconfig kube_proxy_files: - kube-proxy.kubeconfig workers: - debian-k8s-node1 - debian-k8s-node2 become: true tasks: - name: Create the var lib kubernetes directory file: path: /var/lib/kubernetes state: directory - name: Create the var lib kubelet directory file: path: /var/lib/kubelet state: directory - name: Create the var lib kube-proxy directory file: path: /var/lib/kube-proxy state: directory - name: Copy the files to kubernetes directory copy: src: /var/tmp/kubernetes/{{ item }} dest: /var/lib/kubernetes/{{ item }} mode: preserve with_items: - "{{ kubernetes_files }}" - name: Copy kubeconfig file to the kubelet directory copy: src: /var/tmp/kubernetes/{{ item }}.kubeconfig dest: /var/lib/kubelet/kubeconfig mode: preserve with_items: - "{{ workers }}" - name: Copy worker node pem file to kubelet directory copy: src: /var/tmp/kubernetes/{{ item }}.pem dest: /var/lib/kubelet/{{ item }}.pem mode: preserve with_items: - "{{ workers }}" - name: Copy worker node key pem file to kubelet directory copy: src: /var/tmp/kubernetes/{{ item }}-key.pem dest: /var/lib/kubelet/{{ item }}-key.pem mode: preserve with_items: - "{{ workers }}" - name: Copy kube-proxy kubeconfig file to kube-proxy directory copy: src: /var/tmp/kubernetes/kube-proxy.kubeconfig dest: /var/lib/kube-proxy/kubeconfig mode: preserve - name: Download and install the Kubernetes binaries hosts: workers become: true vars: tasks: - name: Install dependencies apt: name: "{{ item }}" state: present with_items: - "socat" - "conntrack" - "ipset" - name: Download and install worker binaries get_url: url: "{{ item }}" dest: /usr/local/bin mode: 0755 with_items: - "https://storage.googleapis.com/kubernetes-release/release/v1.11.2/bin/linux/amd64/kubectl" - "https://storage.googleapis.com/kubernetes-release/release/v1.11.2/bin/linux/amd64/kube-proxy" - "https://storage.googleapis.com/kubernetes-release/release/v1.11.2/bin/linux/amd64/kubelet" - "https://storage.googleapis.com/kubernetes-the-hard-way/runsc" - name: Download utilities get_url: url: "{{ item }}" dest: /var/tmp/ with_items: - "https://github.com/kubernetes-incubator/cri-tools/releases/download/v1.11.1/crictl-v1.11.1-linux-amd64.tar.gz" - "https://github.com/containernetworking/plugins/releases/download/v0.7.1/cni-plugins-amd64-v0.7.1.tgz" - "https://github.com/containerd/containerd/releases/download/v1.2.0-beta.2/containerd-1.2.0-beta.2.linux-amd64.tar.gz" - name: Download runc get_url: url: https://github.com/opencontainers/runc/releases/download/v1.0.0-rc5/runc.amd64 dest: /usr/local/bin/runc mode: 0755 - name: Create installation directories file: path: "{{ item }}" state: directory with_items: - "/etc/cni/net.d" - "/opt/cni/bin" - "/var/lib/kubelet" - "/var/lib/kube-proxy" - "/var/lib/kubernetes" - "/var/run/kubernetes" - "/etc/containerd" - name: Extract crictl binary unarchive: remote_src: yes src: /var/tmp/crictl-v1.11.1-linux-amd64.tar.gz dest: /usr/local/bin mode: 0755 - name: Extract cniplugins binaries unarchive: remote_src: yes src: /var/tmp/cni-plugins-amd64-v0.7.1.tgz dest: /opt/cni/bin mode: 0755 - name: Extract containerd binaries unarchive: remote_src: yes src: /var/tmp/containerd-1.2.0-beta.2.linux-amd64.tar.gz dest: / mode: 0755 - name: Create the CNI configuration hosts: workers become: true vars: pod_cidr: 10.200.0.0/24 cluster_cidr: 10.200.0.0/16 tasks: - name: Create bridge.conf file template: src: templates/10_bridge.conf.j2 dest: /etc/cni/net.d/10_bridge.conf - name: Create loopback file copy: src: files/99_loopback.conf dest: /etc/cni/net.d/99_loopback.conf - name: Create containerd configuration copy: src: files/config.toml dest: /etc/containerd/config.toml - name: Create containerd service file copy: src: files/containerd.service dest: /etc/systemd/system/containerd.service - name: Create kubelet-config.yaml file template: src: templates/kubelet-config.yaml.j2 dest: /var/lib/kubelet/kubelet-config.yaml - name: Create the kubelet service file copy: src: files/kubelet.service dest: /etc/systemd/system/kubelet.service - name: Create the kube-proxy-config.yaml file template: src: templates/kube-proxy-config.yaml.j2 dest: /var/lib/kube-proxy/kube-proxy-config.yaml - name: Create the kube-proxy.service file copy: src: files/kube-proxy.service dest: /etc/systemd/system/kube-proxy.service - name: Reload systemd configuration command: systemctl daemon-reload - name: Start and enable the worker daemons service: name: "{{ item }}" state: started enabled: true with_items: - "containerd" - "kubelet" - "kube-proxy"