--- - name: prepare /var/lib/kubelet as LVM when: kubelet_lvm is defined block: - name: create logical volume lvol: vg: "{{ kubelet_lvm.vg }}" lv: "{{ kubelet_lvm.lv }}" size: "{{ kubelet_lvm.size }}" - name: create filesystem filesystem: fstype: "{{ kubelet_lvm.fs }}" dev: "/dev/mapper/{{ kubelet_lvm.vg | replace('-', '--') }}-{{ kubelet_lvm.lv | replace('-', '--') }}" - name: mount filesytem mount: src: "/dev/mapper/{{ kubelet_lvm.vg | replace('-', '--') }}-{{ kubelet_lvm.lv | replace('-', '--') }}" path: /var/lib/kubelet fstype: "{{ kubelet_lvm.fs }}" state: mounted - name: install apt https transport apt: name: apt-transport-https state: present - name: add repository key copy: src: apt-key.gpg dest: /etc/apt/trusted.gpg.d/kubernetes.gpg notify: update apt cache - name: add repository entry copy: content: | deb http://apt.kubernetes.io/ kubernetes-xenial main dest: /etc/apt/sources.list.d/kubernetes.list notify: update apt cache - name: update apt cache meta: flush_handlers - name: install basic kubernetes components apt: name: - "kubelet{% if kubernetes.pkg_version is defined %}={{ kubernetes.pkg_version }}{% endif %}" - "kubeadm{% if kubernetes.pkg_version is defined %}={{ kubernetes.pkg_version }}{% endif %}" - "kubectl{% if kubernetes.pkg_version is defined %}={{ kubernetes.pkg_version }}{% endif %}" state: present - name: disable automatic upgrades for kubernetes components when: kubernetes.pkg_version is defined loop: - kubelet - kubeadm - kubectl dpkg_selections: name: "{{ item }}" selection: hold - name: set kubelet node-ip lineinfile: name: "/etc/default/kubelet" regexp: '^KUBELET_EXTRA_ARGS=' line: 'KUBELET_EXTRA_ARGS=--node-ip={{ kubernetes.pod_ip_range | ipsubnet(kubernetes.pod_ip_range_size, kubernetes.net_index[inventory_hostname]) | ipaddr(1) | ipaddr("address") }}' - name: add dummy group with gid 998 group: name: app gid: 998 - name: add dummy user with uid 998 user: name: app uid: 998 group: app password: "!" - name: add kubectl/kubeadm completion for shells loop: - zsh - bash blockinfile: path: "/root/.{{ item }}rc" create: yes marker: "### {mark} ANSIBLE MANAGED BLOCK for kubectl ###" content: | source <(kubectl completion {{ item }}) source <(kubeadm completion {{ item }})