summaryrefslogtreecommitdiff
path: root/roles/kubernetes/base/tasks/main.yml
blob: bf62f7d27cf988460d463830c329ea9ec30e69cf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
---
- 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 }})