Initial commit
This commit is contained in:
83
deploy_docker.yml
Normal file
83
deploy_docker.yml
Normal file
@@ -0,0 +1,83 @@
|
||||
---
|
||||
- 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"
|
||||
Reference in New Issue
Block a user