mirror of
https://github.com/kubernetes-sigs/kubespray.git
synced 2026-10-31 22:46:19 -02:30
95 lines
3.3 KiB
YAML
95 lines
3.3 KiB
YAML
---
|
|
- name: Create kube config dir for current/ansible become user
|
|
file:
|
|
path: "{{ ansible_env.HOME | default('/root') }}/.kube"
|
|
mode: "0700"
|
|
state: directory
|
|
|
|
- name: Write admin kubeconfig to current/ansible become user home
|
|
copy:
|
|
src: "{{ kube_config_dir }}/admin.conf"
|
|
dest: "{{ ansible_env.HOME | default('/root') }}/.kube/config"
|
|
remote_src: true
|
|
mode: "0600"
|
|
backup: true
|
|
|
|
- name: Create kube artifacts dir
|
|
file:
|
|
path: "{{ artifacts_dir }}"
|
|
mode: "0750"
|
|
state: directory
|
|
delegate_to: localhost
|
|
connection: local
|
|
become: false
|
|
run_once: true
|
|
when: kubeconfig_localhost
|
|
|
|
- name: Wait for k8s apiserver
|
|
wait_for:
|
|
host: "{{ _kube_apiserver_local_endpoint | urlsplit('hostname') }}"
|
|
port: "{{ _kube_apiserver_local_endpoint | urlsplit('port') | default(kube_apiserver_port, true) }}"
|
|
timeout: 180
|
|
|
|
- name: Create kubeconfig localhost artifacts
|
|
when: kubeconfig_localhost
|
|
block:
|
|
- name: Generate admin kubeconfig using kubeadm
|
|
command: >-
|
|
{{ bin_dir }}/kubeadm kubeconfig user
|
|
--client-name=kubernetes-admin-{{ cluster_name }}
|
|
--org=kubeadm:cluster-admins
|
|
--config {{ kube_config_dir }}/kubeadm-config.yaml
|
|
register: kubeadm_admin_kubeconfig
|
|
changed_when: false
|
|
run_once: true
|
|
delegate_to: "{{ groups['kube_control_plane'][0] }}"
|
|
|
|
- name: Write admin kubeconfig on ansible host
|
|
copy:
|
|
content: "{{ kubeadm_admin_kubeconfig.stdout | from_yaml | combine(override, recursive=true) | to_nice_yaml(indent=2) }}"
|
|
dest: "{{ artifacts_dir }}/admin.conf"
|
|
mode: "0600"
|
|
vars:
|
|
admin_kubeconfig: "{{ kubeadm_admin_kubeconfig.stdout | from_yaml }}"
|
|
context: "kubernetes-admin-{{ cluster_name }}@{{ cluster_name }}"
|
|
client_kubeconfig_endpoint: >-
|
|
{{ ('https://' ~ (hostvars[groups['kube_control_plane'][0]].ansible_host | ansible.utils.ipwrap) ~ ':' ~ kube_apiserver_port)
|
|
if (kubeconfig_localhost_ansible_host | default(false) and kube_apiserver_endpoint is not defined)
|
|
else _kube_apiserver_endpoint }}
|
|
override:
|
|
clusters:
|
|
- "{{ admin_kubeconfig['clusters'][0] | combine({'name': cluster_name, 'cluster': admin_kubeconfig['clusters'][0]['cluster'] | combine({'server': client_kubeconfig_endpoint})}, recursive=true) }}"
|
|
contexts:
|
|
- "{{ admin_kubeconfig['contexts'][0] | combine({'name': context, 'context': admin_kubeconfig['contexts'][0]['context'] | combine({'cluster': cluster_name})}, recursive=true) }}"
|
|
current-context: "{{ context }}"
|
|
delegate_to: localhost
|
|
connection: local
|
|
become: false
|
|
run_once: true
|
|
|
|
- name: Copy kubectl binary to ansible host
|
|
fetch:
|
|
src: "{{ bin_dir }}/kubectl"
|
|
dest: "{{ artifacts_dir }}/kubectl"
|
|
flat: true
|
|
validate_checksum: false
|
|
register: copy_binary_result
|
|
until: copy_binary_result is not failed
|
|
retries: 20
|
|
become: false
|
|
run_once: true
|
|
when: kubectl_localhost
|
|
|
|
- name: Create helper script kubectl.sh on ansible host
|
|
copy:
|
|
content: |
|
|
#!/bin/bash
|
|
${BASH_SOURCE%/*}/kubectl --kubeconfig=${BASH_SOURCE%/*}/admin.conf "$@"
|
|
dest: "{{ artifacts_dir }}/kubectl.sh"
|
|
mode: "0755"
|
|
become: false
|
|
run_once: true
|
|
delegate_to: localhost
|
|
connection: local
|
|
when: kubectl_localhost and kubeconfig_localhost
|