Files
ansible_management/deploy_docker.yml
2025-07-11 15:48:18 +08:00

83 lines
3.4 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
- 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"