mirror of
https://github.com/k3s-io/k3s-ansible.git
synced 2024-09-26 03:42:39 +02:00
feat: Add support using Docker runtime & allow setting of node name per node
Signed-off-by: Shane Dell <shanedell100@gmail.com>
This commit is contained in:
parent
33c15e7c2f
commit
e8b8c45303
@ -38,3 +38,4 @@ k3s_cluster:
|
|||||||
# Containerd can be configured to connect to private registries and use them to pull images as needed by the kubelet.
|
# Containerd can be configured to connect to private registries and use them to pull images as needed by the kubelet.
|
||||||
# YAML here will be placed as the content of /etc/rancher/k3s/registries.yaml
|
# YAML here will be placed as the content of /etc/rancher/k3s/registries.yaml
|
||||||
# See https://docs.k3s.io/installation/private-registry
|
# See https://docs.k3s.io/installation/private-registry
|
||||||
|
# use_docker_runtime: false, by default containerd is used as the runtime. Set to true to install docker and use it as the k3s runtime
|
||||||
|
@ -25,6 +25,25 @@
|
|||||||
group: root
|
group: root
|
||||||
mode: 0755
|
mode: 0755
|
||||||
|
|
||||||
|
- name: Download install docker script
|
||||||
|
delegate_to: localhost
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
# don't use the docker provided script https://get.docker.com as it doesn't seem to work well with k3s
|
||||||
|
url: https://releases.rancher.com/install-docker/20.10.sh
|
||||||
|
timeout: 120
|
||||||
|
dest: "{{ airgap_dir }}/install-docker.sh"
|
||||||
|
mode: 0755
|
||||||
|
when: use_docker_runtime
|
||||||
|
|
||||||
|
- name: Distribute install docker script
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: "{{ airgap_dir }}/install-docker.sh"
|
||||||
|
dest: /usr/local/bin/install-docker.sh
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0755
|
||||||
|
when: use_docker_runtime
|
||||||
|
|
||||||
- name: Distribute K3s binary
|
- name: Distribute K3s binary
|
||||||
ansible.builtin.copy:
|
ansible.builtin.copy:
|
||||||
src: "{{ airgap_dir }}/k3s"
|
src: "{{ airgap_dir }}/k3s"
|
||||||
@ -109,6 +128,12 @@
|
|||||||
- "{{ airgap_dir }}/k3s-airgap-images-arm.tar"
|
- "{{ airgap_dir }}/k3s-airgap-images-arm.tar"
|
||||||
skip: true
|
skip: true
|
||||||
|
|
||||||
|
- name: Run install docker script
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: /usr/local/bin/install-docker.sh
|
||||||
|
changed_when: true
|
||||||
|
when: use_docker_runtime
|
||||||
|
|
||||||
- name: Run K3s Install [server]
|
- name: Run K3s Install [server]
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: /usr/local/bin/k3s-install.sh
|
cmd: /usr/local/bin/k3s-install.sh
|
||||||
|
@ -2,3 +2,5 @@
|
|||||||
k3s_server_location: "/var/lib/rancher/k3s"
|
k3s_server_location: "/var/lib/rancher/k3s"
|
||||||
systemd_dir: "/etc/systemd/system"
|
systemd_dir: "/etc/systemd/system"
|
||||||
api_port: 6443
|
api_port: 6443
|
||||||
|
use_docker_runtime: false
|
||||||
|
node_name: "{{ inventory_hostname }}"
|
||||||
|
@ -10,11 +10,23 @@
|
|||||||
ansible.builtin.set_fact:
|
ansible.builtin.set_fact:
|
||||||
installed_k3s_version: "{{ k3s_version_output.stdout_lines[0].split(' ')[2] }}"
|
installed_k3s_version: "{{ k3s_version_output.stdout_lines[0].split(' ')[2] }}"
|
||||||
|
|
||||||
|
- name: Get docker installed version
|
||||||
|
ansible.builtin.command: docker --version
|
||||||
|
register: docker_version_output
|
||||||
|
changed_when: false
|
||||||
|
ignore_errors: true
|
||||||
|
when: use_docker_runtime
|
||||||
|
|
||||||
|
- name: Set docker installed version
|
||||||
|
when: use_docker_runtime and docker_version_output.rc == 0
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
installed_docker_version: "{{ docker_version_output.stdout_lines[0].split(' ')[2] }}"
|
||||||
|
|
||||||
# If airgapped, all K3s artifacts are already on the node.
|
# If airgapped, all K3s artifacts are already on the node.
|
||||||
# We should be downloading and installing the newer version only if we are in one of the following cases :
|
# We should be downloading and installing the newer version only if we are in one of the following cases :
|
||||||
# - we couldn't get k3s installed version in the first task of this role
|
# - we couldn't get k3s installed version in the first task of this role
|
||||||
# - the installed version of K3s on the nodes is older than the requested version in ansible vars
|
# - the installed version of K3s on the nodes is older than the requested version in ansible vars
|
||||||
- name: Download artifact only if needed
|
- name: Download k3s artifact only if needed
|
||||||
when: k3s_version_output.rc != 0 or installed_k3s_version is version(k3s_version, '<') and airgap_dir is undefined
|
when: k3s_version_output.rc != 0 or installed_k3s_version is version(k3s_version, '<') and airgap_dir is undefined
|
||||||
block:
|
block:
|
||||||
- name: Download K3s install script
|
- name: Download K3s install script
|
||||||
@ -26,7 +38,7 @@
|
|||||||
group: root
|
group: root
|
||||||
mode: 0755
|
mode: 0755
|
||||||
|
|
||||||
- name: Download K3s binary
|
- name: Run K3S Install
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: /usr/local/bin/k3s-install.sh
|
cmd: /usr/local/bin/k3s-install.sh
|
||||||
environment:
|
environment:
|
||||||
@ -35,6 +47,24 @@
|
|||||||
INSTALL_K3S_EXEC: "agent"
|
INSTALL_K3S_EXEC: "agent"
|
||||||
changed_when: true
|
changed_when: true
|
||||||
|
|
||||||
|
- name: Download docker artifact only if needed
|
||||||
|
when: use_docker_runtime and docker_version_output.rc != 0 and airgap_dir is undefined
|
||||||
|
block:
|
||||||
|
- name: Download docker install script
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
# don't use the docker provided script https://get.docker.com as it doesn't seem to work well with k3s
|
||||||
|
url: https://releases.rancher.com/install-docker/20.10.sh
|
||||||
|
timeout: 120
|
||||||
|
dest: /usr/local/bin/install-docker.sh
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0755
|
||||||
|
|
||||||
|
- name: Run docker install script
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: /usr/local/bin/install-docker.sh
|
||||||
|
changed_when: true
|
||||||
|
|
||||||
- name: Copy K3s service file
|
- name: Copy K3s service file
|
||||||
register: k3s_agent_service
|
register: k3s_agent_service
|
||||||
ansible.builtin.template:
|
ansible.builtin.template:
|
||||||
|
@ -26,4 +26,4 @@ RestartSec=5s
|
|||||||
ExecStartPre=/bin/sh -xc '! /usr/bin/systemctl is-enabled --quiet nm-cloud-setup.service'
|
ExecStartPre=/bin/sh -xc '! /usr/bin/systemctl is-enabled --quiet nm-cloud-setup.service'
|
||||||
ExecStartPre=-/sbin/modprobe br_netfilter
|
ExecStartPre=-/sbin/modprobe br_netfilter
|
||||||
ExecStartPre=-/sbin/modprobe overlay
|
ExecStartPre=-/sbin/modprobe overlay
|
||||||
ExecStart=/usr/local/bin/k3s agent --data-dir {{ k3s_server_location }} --server https://{{ api_endpoint }}:{{ api_port }} --token {{ token }} {{ extra_agent_args }}
|
ExecStart=/usr/local/bin/k3s agent --node-name {{ node_name }} --data-dir {{ k3s_server_location }} --server https://{{ api_endpoint }}:{{ api_port }} --token {{ token }} {{ '--docker' if use_docker_runtime else '' }} {{ extra_agent_args }}
|
||||||
|
@ -5,3 +5,5 @@ api_port: 6443
|
|||||||
kubeconfig: ~/.kube/config.new
|
kubeconfig: ~/.kube/config.new
|
||||||
user_kubectl: true
|
user_kubectl: true
|
||||||
cluster_context: k3s-ansible
|
cluster_context: k3s-ansible
|
||||||
|
use_docker_runtime: false
|
||||||
|
node_name: "{{ inventory_hostname }}"
|
||||||
|
@ -10,11 +10,23 @@
|
|||||||
ansible.builtin.set_fact:
|
ansible.builtin.set_fact:
|
||||||
installed_k3s_version: "{{ k3s_version_output.stdout_lines[0].split(' ')[2] }}"
|
installed_k3s_version: "{{ k3s_version_output.stdout_lines[0].split(' ')[2] }}"
|
||||||
|
|
||||||
|
- name: Get docker installed version
|
||||||
|
ansible.builtin.command: docker --version
|
||||||
|
register: docker_version_output
|
||||||
|
changed_when: false
|
||||||
|
ignore_errors: true
|
||||||
|
when: use_docker_runtime
|
||||||
|
|
||||||
|
- name: Set docker installed version
|
||||||
|
when: use_docker_runtime and docker_version_output.rc == 0
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
installed_docker_version: "{{ docker_version_output.stdout_lines[0].split(' ')[2] }}"
|
||||||
|
|
||||||
# If airgapped, all K3s artifacts are already on the node.
|
# If airgapped, all K3s artifacts are already on the node.
|
||||||
# We should be downloading and installing the newer version only if we are in one of the following cases :
|
# We should be downloading and installing the newer version only if we are in one of the following cases :
|
||||||
# - we couldn't get k3s installed version in the first task of this role
|
# - we couldn't get k3s installed version in the first task of this role
|
||||||
# - the installed version of K3s on the nodes is older than the requested version in ansible vars
|
# - the installed version of K3s on the nodes is older than the requested version in ansible vars
|
||||||
- name: Download artifact only if needed
|
- name: Download k3s artifact only if needed
|
||||||
when: k3s_version_output.rc != 0 or installed_k3s_version is version(k3s_version, '<') and airgap_dir is undefined
|
when: k3s_version_output.rc != 0 or installed_k3s_version is version(k3s_version, '<') and airgap_dir is undefined
|
||||||
block:
|
block:
|
||||||
- name: Download K3s install script
|
- name: Download K3s install script
|
||||||
@ -26,7 +38,7 @@
|
|||||||
group: root
|
group: root
|
||||||
mode: 0755
|
mode: 0755
|
||||||
|
|
||||||
- name: Download K3s binary
|
- name: Run K3S Install
|
||||||
ansible.builtin.command:
|
ansible.builtin.command:
|
||||||
cmd: /usr/local/bin/k3s-install.sh
|
cmd: /usr/local/bin/k3s-install.sh
|
||||||
environment:
|
environment:
|
||||||
@ -34,6 +46,24 @@
|
|||||||
INSTALL_K3S_VERSION: "{{ k3s_version }}"
|
INSTALL_K3S_VERSION: "{{ k3s_version }}"
|
||||||
changed_when: true
|
changed_when: true
|
||||||
|
|
||||||
|
- name: Download docker artifact only if needed
|
||||||
|
when: use_docker_runtime and docker_version_output.rc != 0 and airgap_dir is undefined
|
||||||
|
block:
|
||||||
|
- name: Download docker install script
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
# don't use the docker provided script https://get.docker.com as it doesn't seem to work well with k3s
|
||||||
|
url: https://releases.rancher.com/install-docker/20.10.sh
|
||||||
|
timeout: 120
|
||||||
|
dest: /usr/local/bin/install-docker.sh
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0755
|
||||||
|
|
||||||
|
- name: Run docker install script
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: /usr/local/bin/install-docker.sh
|
||||||
|
changed_when: true
|
||||||
|
|
||||||
- name: Add K3s autocomplete to user bashrc
|
- name: Add K3s autocomplete to user bashrc
|
||||||
ansible.builtin.lineinfile:
|
ansible.builtin.lineinfile:
|
||||||
path: "~{{ ansible_user }}/.bashrc"
|
path: "~{{ ansible_user }}/.bashrc"
|
||||||
|
@ -25,4 +25,4 @@ Restart=always
|
|||||||
RestartSec=5s
|
RestartSec=5s
|
||||||
ExecStartPre=-/sbin/modprobe br_netfilter
|
ExecStartPre=-/sbin/modprobe br_netfilter
|
||||||
ExecStartPre=-/sbin/modprobe overlay
|
ExecStartPre=-/sbin/modprobe overlay
|
||||||
ExecStart=/usr/local/bin/k3s server --cluster-init --data-dir {{ k3s_server_location }} --token {{ token }} {{ extra_server_args }}
|
ExecStart=/usr/local/bin/k3s server --cluster-init --node-name {{ node_name }} --data-dir {{ k3s_server_location }} --token {{ token }} {{ '--docker' if use_docker_runtime else '' }} {{ extra_server_args }}
|
@ -25,4 +25,4 @@ Restart=always
|
|||||||
RestartSec=5s
|
RestartSec=5s
|
||||||
ExecStartPre=-/sbin/modprobe br_netfilter
|
ExecStartPre=-/sbin/modprobe br_netfilter
|
||||||
ExecStartPre=-/sbin/modprobe overlay
|
ExecStartPre=-/sbin/modprobe overlay
|
||||||
ExecStart=/usr/local/bin/k3s server --data-dir {{ k3s_server_location }} --server https://{{ api_endpoint }}:{{ api_port }} --token {{ token }} {{ extra_server_args }}
|
ExecStart=/usr/local/bin/k3s server --node-name {{ node_name }} --data-dir {{ k3s_server_location }} --server https://{{ api_endpoint }}:{{ api_port }} --token {{ token }} {{ '--docker' if use_docker_runtime else '' }} {{ extra_server_args }}
|
@ -25,4 +25,4 @@ Restart=always
|
|||||||
RestartSec=5s
|
RestartSec=5s
|
||||||
ExecStartPre=-/sbin/modprobe br_netfilter
|
ExecStartPre=-/sbin/modprobe br_netfilter
|
||||||
ExecStartPre=-/sbin/modprobe overlay
|
ExecStartPre=-/sbin/modprobe overlay
|
||||||
ExecStart=/usr/local/bin/k3s server --data-dir {{ k3s_server_location }} --token {{ token }} {{ extra_server_args }}
|
ExecStart=/usr/local/bin/k3s server --node-name {{ node_name }} --data-dir {{ k3s_server_location }} --token {{ token }} {{ '--docker' if use_docker_runtime else '' }} {{ extra_server_args }}
|
Loading…
Reference in New Issue
Block a user