summaryrefslogtreecommitdiff
path: root/roles/kubernetes/base/tasks/main.yml
blob: 0230fd11d0224c1df37b5cc0c0665b97e290ec95 (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
---
- 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
    force: yes

- name: add kubernetes apt key
  apt_key:
    data: "{{ lookup('file', 'kubernetes-apt-key.asc') }}"
    state: present

- name: add kubernetes apt repo
  apt_repository:
    repo: deb http://apt.kubernetes.io/ kubernetes-xenial main
    state: present
    filename: kubernetes

- 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
  with_items:
  - 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
  with_items:
    - 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 }})