Skip to content

Commit 207aaa2

Browse files
committed
deploy frp server via ansible
1 parent fa99235 commit 207aaa2

File tree

6 files changed

+130
-105
lines changed

6 files changed

+130
-105
lines changed

.github/workflows/ansible_run.yml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,9 @@ on:
55
push:
66
branches:
77
- main
8-
paths:
9-
- ".github/workflows/ansible_run.yml"
10-
- "ansible/**"
118

129
jobs:
13-
ansible:
10+
deploy:
1411
runs-on: ubuntu-latest
1512
steps:
1613
- uses: actions/checkout@v4
@@ -39,3 +36,4 @@ jobs:
3936
ansible-playbook -i hosts playbook.yml
4037
env:
4138
ANSIBLE_HOST_KEY_CHECKING: False
39+
FRP_TOKEN: ${{ secrets.FRP_TOKEN }}

.github/workflows/deploy_frp_server.yml

Lines changed: 0 additions & 38 deletions
This file was deleted.

ansible/playbook.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,13 @@
66
file: vars/users.yaml
77
name: accounts
88

9+
- name: Include frp settings
10+
include_vars:
11+
file: vars/frp_config.yaml
12+
name: frp_config
13+
914
- name: Include user ssh keys
1015
include_tasks: ../ansible/tasks/sync_ssh_keys.yml
16+
17+
- name: Set up FRP Server
18+
include_tasks: ../ansible/tasks/frp_setup.yml

ansible/tasks/frp_setup.yml

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
---
2+
- name: Set download_file_name
3+
set_fact:
4+
download_file_name: "frp_{{ frp_config.frp_version }}_{{ frp_config.frp_os }}_{{ frp_config.frp_arch }}"
5+
6+
- name: Create remote access directory
7+
file:
8+
path: "{{ frp_config.remote_access_dir }}"
9+
state: directory
10+
mode: '0755'
11+
become: yes
12+
13+
- name: Download FRP release
14+
get_url:
15+
url: "https://github.com/fatedier/frp/releases/download/v{{ frp_config.frp_version }}/{{ download_file_name }}.tar.gz"
16+
dest: "/tmp/{{ download_file_name }}.tar.gz"
17+
mode: '0644'
18+
become: yes
19+
20+
- name: Extract FRP archive
21+
unarchive:
22+
src: "/tmp/{{ download_file_name }}.tar.gz"
23+
dest: /tmp/
24+
remote_src: yes
25+
become: yes
26+
27+
- name: Stop FRP service before copying new binary
28+
systemd:
29+
name: "{{ frp_config.frp_component }}"
30+
state: stopped
31+
ignore_errors: yes
32+
become: yes
33+
34+
- name: Copy FRP binary
35+
copy:
36+
src: "/tmp/{{ download_file_name }}/{{ frp_config.frp_component }}"
37+
dest: "{{ frp_config.remote_access_dir }}/{{ frp_config.frp_component }}"
38+
remote_src: yes
39+
mode: '0755'
40+
become: yes
41+
42+
- name: Set capability on FRP binary to bind to privileged ports
43+
capabilities:
44+
path: "{{ frp_config.remote_access_dir }}/{{ frp_config.frp_component }}"
45+
capability: cap_net_bind_service=+ep
46+
state: present
47+
become: yes
48+
49+
# Get the FRP token from environment variable
50+
- name: Get FRP token from environment variable
51+
set_fact:
52+
frp_token: "{{ lookup('env', 'FRP_TOKEN') }}"
53+
54+
- name: Copy FRP config
55+
template:
56+
src: "{{ playbook_dir }}/../frp_config/{{ frp_config.frp_component }}.toml"
57+
dest: "{{ frp_config.remote_access_dir }}/{{ frp_config.frp_component }}.toml"
58+
mode: '0644'
59+
vars:
60+
token: "{{ frp_token }}"
61+
become: yes
62+
63+
- name: Copy systemd service file
64+
copy:
65+
src: "{{ playbook_dir }}/../frp_config/{{ frp_config.frp_component }}.service"
66+
dest: "/etc/systemd/system/{{ frp_config.frp_component }}.service"
67+
mode: '0644'
68+
become: yes
69+
70+
- name: Reload systemd
71+
systemd:
72+
daemon_reload: yes
73+
become: yes
74+
75+
- name: Start and enable FRP service
76+
systemd:
77+
name: "{{ frp_config.frp_component }}"
78+
state: started
79+
enabled: yes
80+
become: yes
81+
82+
- name: Check FRP service status
83+
command: systemctl status {{ frp_config.frp_component }}
84+
register: service_status
85+
changed_when: false
86+
become: yes
87+
88+
- name: Display FRP service status
89+
debug:
90+
var: service_status.stdout_lines
91+
92+
- name: Wait for 5 seconds
93+
pause:
94+
seconds: 5
95+
96+
- name: Check FRP service status again
97+
command: systemctl status {{ frp_config.frp_component }}
98+
register: service_status_after
99+
changed_when: false
100+
become: yes
101+
102+
- name: Display FRP service status after pause
103+
debug:
104+
var: service_status_after.stdout_lines
105+
106+
- name: Cleanup downloaded files
107+
file:
108+
path: "{{ item }}"
109+
state: absent
110+
with_items:
111+
- "/tmp/{{ download_file_name }}.tar.gz"
112+
- "/tmp/{{ download_file_name }}"
113+
become: yes

ansible/vars/frp_config.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
remote_access_dir: /opt/remote-access
2+
frp_version: 0.61.2
3+
frp_os: linux
4+
frp_arch: amd64
5+
frp_component: frps
6+
# Remove the reference to variables in this file
7+
download_file_name: ""

frp_config/setup_frp_server.sh

Lines changed: 0 additions & 63 deletions
This file was deleted.

0 commit comments

Comments
 (0)