116 行
3.3 KiB
YAML
116 行
3.3 KiB
YAML
# K3s 安装 Role (统一 Server 和 Agent)
|
|
---
|
|
- name: Validate TAILSCALE_AUTH_KEY
|
|
ansible.builtin.fail:
|
|
msg: "请设置环境变量: export TAILSCALE_AUTH_KEY='tskey-auth-xxx'"
|
|
when: (tailscale_auth_key | default('')) | length == 0
|
|
|
|
- name: Create K3s config directory
|
|
ansible.builtin.file:
|
|
path: /etc/rancher/k3s
|
|
state: directory
|
|
mode: "0755"
|
|
|
|
# 检查安装状态
|
|
- name: Check if K3s is installed
|
|
ansible.builtin.stat:
|
|
path: /usr/local/bin/k3s
|
|
register: k3s_binary
|
|
|
|
# 部署配置文件(注册变更状态)
|
|
- name: Deploy K3s server config
|
|
ansible.builtin.template:
|
|
src: k3s-server.yaml.j2
|
|
dest: /etc/rancher/k3s/config.yaml
|
|
mode: "0600"
|
|
when: "'masters' in group_names"
|
|
register: k3s_server_config
|
|
|
|
- name: Deploy K3s agent config
|
|
ansible.builtin.template:
|
|
src: k3s-agent.yaml.j2
|
|
dest: /etc/rancher/k3s/config.yaml
|
|
mode: "0600"
|
|
when: "'agents' in group_names"
|
|
register: k3s_agent_config
|
|
|
|
- name: Deploy registries.yaml
|
|
ansible.builtin.template:
|
|
src: registries.yaml.j2
|
|
dest: /etc/rancher/k3s/registries.yaml
|
|
mode: "0644"
|
|
when: use_mirror | default(false)
|
|
|
|
# 判断是否需要安装/重启
|
|
- name: Set K3s installation flag
|
|
ansible.builtin.set_fact:
|
|
k3s_needs_install: "{{ not k3s_binary.stat.exists or (k3s_server_config.changed | default(false)) or (k3s_agent_config.changed | default(false)) }}"
|
|
|
|
# 设置安装变量
|
|
- name: Set K3s install variables
|
|
ansible.builtin.set_fact:
|
|
k3s_install_url: "{{ mirror_k3s_install_url if (use_mirror | default(false)) else global_k3s_install_url }}"
|
|
k3s_install_mirror: "{{ 'INSTALL_K3S_MIRROR=cn' if (use_mirror | default(false)) else '' }}"
|
|
|
|
|
|
# 下载安装脚本
|
|
- name: Download K3s install script
|
|
ansible.builtin.get_url:
|
|
url: "{{ k3s_install_url }}"
|
|
dest: /tmp/k3s-install.sh
|
|
mode: "0755"
|
|
when: k3s_needs_install
|
|
|
|
# 安装 K3s
|
|
- name: Install K3s server
|
|
ansible.builtin.command:
|
|
cmd: /tmp/k3s-install.sh server
|
|
environment:
|
|
INSTALL_K3S_VERSION: "{{ k3s_version }}"
|
|
INSTALL_K3S_MIRROR: "{{ 'cn' if (use_mirror | default(false)) else '' }}"
|
|
when:
|
|
- "'masters' in group_names"
|
|
- k3s_needs_install
|
|
changed_when: true
|
|
|
|
- name: Install K3s agent
|
|
ansible.builtin.command:
|
|
cmd: /tmp/k3s-install.sh agent
|
|
environment:
|
|
INSTALL_K3S_VERSION: "{{ k3s_version }}"
|
|
INSTALL_K3S_MIRROR: "{{ 'cn' if (use_mirror | default(false)) else '' }}"
|
|
when:
|
|
- "'agents' in group_names"
|
|
- k3s_needs_install
|
|
changed_when: true
|
|
|
|
# 清理安装脚本
|
|
- name: Remove install script
|
|
ansible.builtin.file:
|
|
path: /tmp/k3s-install.sh
|
|
state: absent
|
|
|
|
# 等待 K3s 就绪 (仅 Server)
|
|
- name: Wait for K3s server ready
|
|
ansible.builtin.wait_for:
|
|
path: /var/lib/rancher/k3s/server/node-token
|
|
timeout: 120
|
|
when: "'masters' in group_names"
|
|
|
|
# 保存 kubeconfig (仅 cluster-init)
|
|
- name: Fetch kubeconfig
|
|
ansible.builtin.fetch:
|
|
src: /etc/rancher/k3s/k3s.yaml
|
|
dest: "{{ playbook_dir }}/../kubeconfig.yaml"
|
|
flat: true
|
|
when: cluster_init | default(false)
|
|
|
|
- name: Update kubeconfig server address
|
|
ansible.builtin.replace:
|
|
path: "{{ playbook_dir }}/../kubeconfig.yaml"
|
|
regexp: 'server: https://127\.0\.0\.1:6443'
|
|
replace: "server: {{ k3s_server_url }}"
|
|
delegate_to: localhost
|
|
become: false
|
|
when: cluster_init | default(false)
|