46 lines
1.7 KiB
YAML
46 lines
1.7 KiB
YAML
---
|
|
- name: install required packages
|
|
become: true
|
|
ansible.builtin.apt:
|
|
update_cache: true
|
|
force_apt_get: true
|
|
cache_valid_time: 3600
|
|
pkg:
|
|
- curl
|
|
- jq
|
|
|
|
- name: find if binary is already installed
|
|
ansible.builtin.file:
|
|
path: '{{ kubectl_binary_path }}'
|
|
register: kubectl_stat
|
|
changed_when: false
|
|
failed_when: false
|
|
|
|
- name: find current installed version
|
|
when: kubectl_stat.state != "absent"
|
|
ansible.builtin.shell: "{{ kubectl_binary_path }} version --client=true --output=json | jq --raw-output '.clientVersion.gitVersion'"
|
|
changed_when: false
|
|
register: kubectl_local_version_exec
|
|
|
|
- name: find latest available version
|
|
ansible.builtin.command: curl -L -s https://dl.k8s.io/release/stable.txt
|
|
register: latest_kubectl_version_exec
|
|
when: kubectl_install_version is falsy or kubectl_install_version == "latest"
|
|
changed_when: false
|
|
|
|
- name: set kubectl facts
|
|
ansible.builtin.set_fact:
|
|
kubectl_latest_version_available: '{{ latest_kubectl_version_exec.get("stdout", "") if latest_kubectl_version_exec is defined }}'
|
|
kubectl_local_version: '{{ kubectl_local_version_exec.get("stdout", "") if kubectl_local_version_exec is defined }}'
|
|
kubectl_target_install_version: '{{ kubectl_install_version if kubectl_install_version != "latest" else latest_kubectl_version_exec.get("stdout", "") }}'
|
|
|
|
- name: install binary
|
|
become: true
|
|
when: kubectl_stat.state == "absent" or (kubectl_local_version != kubectl_target_install_version and kubectl_install_version is not falsy)
|
|
ansible.builtin.get_url:
|
|
url: "https://dl.k8s.io/release/{{ kubectl_target_install_version }}/bin/linux/amd64/kubectl"
|
|
dest: /usr/local/bin/kubectl
|
|
owner: root
|
|
group: root
|
|
mode: '0755'
|
|
force: true
|