83 lines
3.4 KiB
YAML
83 lines
3.4 KiB
YAML
---
|
||
- name: Deploy and Reload Caddy & frpc on Heterogeneous Systems
|
||
hosts: caddy_servers
|
||
become: yes
|
||
|
||
# # 'pre_tasks' 会在所有常规 'tasks' 之前执行
|
||
# pre_tasks:
|
||
# - name: "(Alpine Only) Ensure Python 3 is installed for Ansible"
|
||
# # 使用 'raw' 模块,因为它不依赖 Python
|
||
# # 这是一个标准的在 Alpine 上引导 Ansible 的方法
|
||
# raw: test -e /usr/bin/python3 || (apk update && apk add python3)
|
||
# register: result
|
||
# changed_when: "'OK' in result.stdout or 'fetch' in result.stdout"
|
||
# # 'when' 条件确保这个任务只在 Alpine 系统上运行
|
||
# when: ansible_os_family == "Alpine"
|
||
|
||
tasks:
|
||
# --- Caddy 任务 (保持不变) ---
|
||
- name: "Copy Caddyfile for {{ inventory_hostname }}"
|
||
copy:
|
||
src: "files/{{ inventory_hostname }}/Caddyfile"
|
||
dest: /etc/caddy/Caddyfile
|
||
owner: root
|
||
group: caddy
|
||
mode: '0644'
|
||
validate: 'caddy validate --config %s --adapter caddyfile'
|
||
notify: Reload Caddy
|
||
# --- 新增的 FRPC 任务 ---
|
||
- name: "Copy frpc.toml for {{ inventory_hostname }}"
|
||
# 使用 copy 模块部署 frpc.toml
|
||
copy:
|
||
src: "files/{{ inventory_hostname }}/frp/frpc.toml"
|
||
dest: /etc/frp/frpc.toml
|
||
owner: root
|
||
group: root # 根据您服务器上的实际情况,frp的用户组可能是root或frp
|
||
mode: '0640' # toml文件可能包含敏感信息,使用更严格的权限
|
||
# 当这个任务只在 192.168.31.102 上执行
|
||
when: inventory_hostname == "192.168.31.101"
|
||
# 当文件变更时,通知 "Restart frpc" 这个 handler
|
||
notify: Restart frpc
|
||
# --- 新增的 DOCKER COMPOSE 任务 ---
|
||
- name: "Copy docker-compose.yml for {{ inventory_hostname }}"
|
||
copy:
|
||
src: "files/{{ inventory_hostname }}/ddns-go/docker-compose.yml"
|
||
dest: /root/ddns-go/docker-compose.yml
|
||
owner: root
|
||
group: root
|
||
mode: '0644'
|
||
when: inventory_hostname == "192.168.31.101"
|
||
notify: Relaunch Docker Compose application
|
||
|
||
handlers:
|
||
# --- Caddy Handlers (保持不变) ---
|
||
- name: Reload Caddy on systemd systems (e.g., Ubuntu)
|
||
# Both handlers listen for the same notification
|
||
listen: "Reload Caddy"
|
||
systemd:
|
||
name: caddy
|
||
state: reloaded
|
||
# This handler ONLY runs on systems with systemd
|
||
when: ansible_service_mgr == "systemd"
|
||
|
||
- name: Reload Caddy on OpenRC systems (e.g., Alpine)
|
||
# Both handlers listen for the same notification
|
||
listen: "Reload Caddy"
|
||
# For Alpine, we use the 'command' module to call its service manager
|
||
command: rc-service caddy reload
|
||
# This handler ONLY runs on systems with openrc
|
||
when: ansible_service_mgr == "openrc"
|
||
|
||
# --- 新增的 FRPC Handler ---
|
||
- name: Restart frpc
|
||
# frpc 运行在 Alpine (OpenRC) 上,所以我们直接使用 command 模块
|
||
command: rc-service frpc restart
|
||
# 这个 handler 监听 "Restart frpc" 通知
|
||
listen: "Restart frpc"
|
||
|
||
# --- 新增的 DOCKER COMPOSE Handler ---
|
||
- name: Relaunch Docker Compose application
|
||
# 使用 command 模块来执行 docker compose 命令,以应用新的配置
|
||
# 'docker compose' 是新版语法,如果您的服务器是旧版 docker-compose,请使用 'docker-compose'
|
||
command: docker compose -f /root/ddns-go/docker-compose.yml up -d --remove-orphans
|
||
listen: "Relaunch Docker Compose application" |