Skip to content

Commit

Permalink
feat: optimize install and removal tasks
Browse files Browse the repository at this point in the history
  • Loading branch information
papanito committed Apr 23, 2021
1 parent db0cabb commit 6787c45
Show file tree
Hide file tree
Showing 12 changed files with 54 additions and 60 deletions.
2 changes: 1 addition & 1 deletion defaults/main.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
# defaults file for cloudflared
cf_init_system: systemd
cf_systemd_user: root
cf_systemd_group: root
cf_use_system_v: False
cf_remove_setup_certificate: False

cf_download_baseurl: https://bin.equinox.io/c/VdrWdbjqyF/
Expand Down
4 changes: 2 additions & 2 deletions tasks/add-tunnel.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
- name: Create config file for service '{{ item.key }}'
template:
src: config.yml.j2
dest: "{{ cf_config_dir_cf_named_tunnels }}/{{ item.key }}.yml"
dest: "{{ cf_config_dir }}/{{ item.key }}.yml"
register: tunnel_template
- name: Restart systemd service {{ item.key }}
systemd:
name: "{{ systemd_filename }}@{{ item.key }}"
state: restarted
enabled: yes
when: (service_template.changed or tunnel_template.changed) and not cf_use_system_v
- name: Restart systemv service {{ item.key }}
- name: Restart initv service {{ item.key }}
ansible.builtin.service:
name: "{{ systemd_filename }}-{{ item.key }}"
state: restarted
Expand Down
2 changes: 1 addition & 1 deletion tasks/cleanup.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
ignore_errors: true
- name: Remove legacy config files
file:
path: "{{ cf_config_dir_cf_named_tunnels }}/{{ config_filename_legacy }}"
path: "{{ cf_config_dir }}/{{ config_filename_legacy }}"
state: absent
- name: Remove legacy cloudflared service files
file:
Expand Down
3 changes: 0 additions & 3 deletions tasks/configure-tunnels.yml

This file was deleted.

21 changes: 5 additions & 16 deletions tasks/configure.yml → tasks/configure_initv.yml
Original file line number Diff line number Diff line change
@@ -1,28 +1,17 @@
- name: Define required variables for configure
set_fact:
tunnel_name: "{{ item.key }}"

- name: Install cloudflared service for service '{{ tunnel_name }}' in systemd
template:
src: cloudflared.service.j2
dest: "{{ cf_systemd_target_dir }}/{{ systemd_filename }}@.service"
register: service_template
when: not cf_use_system_v
- name: Reload systemd
systemd:
daemon_reload: yes
no_block: no
when: service_template.changed and not cf_use_system_v
initv_pid_file: "/var/run/{{ systemd_filename }}_{{ tunnel_name }}.pid"
initv_log_file: "/var/log/{{ systemd_filename }}_{{ tunnel_name }}.log"

- name: Install cloudflared service for service '{{ tunnel_name }}' in System-V
template:
src: cloudflared.systemv.j2
src: cloudflared.initv.j2
dest: "/etc/init.d/{{ systemd_filename }}-{{ tunnel_name }}"
owner: root
group: root
mode: 0755
register: service_template
when: cf_use_system_v

- name: Link Stop-Script to /etc/init.d/"{{ systemd_filename }}-{{ tunnel_name }}"
file:
Expand All @@ -35,7 +24,7 @@
- rc6.d
loop_control:
loop_var: item_runlevel
when: service_template.changed and cf_use_system_v
when: service_template.changed

- name: "Link Start-Script /etc/init.d/{{ systemd_filename }}-{{ tunnel_name }}"
file:
Expand All @@ -49,4 +38,4 @@
- rc5.d
loop_control:
loop_var: item_runlevel
when: service_template.changed and cf_use_system_v
when: service_template.changed
15 changes: 15 additions & 0 deletions tasks/configure_systemd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
- name: Define required variables for configure
set_fact:
tunnel_name: "{{ item.key }}"

- name: Install cloudflared service for service '{{ tunnel_name }}' in systemd
template:
src: cloudflared.service.j2
dest: "{{ cf_systemd_target_dir }}/{{ systemd_filename }}@.service"
register: service_template

- name: Reload systemd
systemd:
daemon_reload: yes
no_block: no
when: service_template.changed
4 changes: 2 additions & 2 deletions tasks/install.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
dest: "{{ cf_install_target_dir }}"
remote_src: yes
when: not stat_result.stat.exists or cf_force_install
- name: Create {{ cf_config_dir_cf_named_tunnels }} if it does not exist
- name: Create {{ cf_config_dir }} if it does not exist
file:
path: "{{ cf_config_dir_cf_named_tunnels }}"
path: "{{ cf_config_dir }}"
state: directory
mode: 0744
- block:
Expand Down
17 changes: 9 additions & 8 deletions tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
- name: Setting cf_named_tunnels_available
set_fact:
cf_named_tunnels_available: "{{ ansible_facts.services | select('match', 'cloudflared@(.+).service|cloudflared-(.*)') | \
map('regex_replace', 'cloudflared@|cloudflared-', '') | map('regex_replace', '.service' '') | list }}"
map('regex_replace', 'cloudflared@|cloudflared-', '') | map('regex_replace', '.service' '') | list }}"

- name: Setting cf_named_tunnels to remove
set_fact:
Expand All @@ -31,20 +31,21 @@
- name: Download and install cloudflared
include_tasks: install.yml

- name: Install cloudflared
include_tasks: configure.yml
- name: Install cloudflared as a systemd service
include_tasks: configure_systemd.yml
with_dict: "{{ cf_named_tunnels }}"
when: not cf_install_only
when: not cf_install_only and cf_init_system == "systemd"

- name: Configure cf_named_tunnels
include_tasks: configure-cf_named_tunnels.yml
when: not cf_install_only
- name: Install cloudflared as a system-v service
include_tasks: configure_initv.yml
with_dict: "{{ cf_named_tunnels }}"
when: not cf_install_only and cf_init_system == "initv"

- name: Add ssh proxy for all servers in the ssh client config
include_tasks: ssh-client-config.yml
loop: "{{ groups['servers'] }}"
when: cf_ssh_client_config

- name: Remove setup certificate
include_tasks: remove-setup-certificate.yml
include_tasks: remove_setup_certificate.yml
when: cf_remove_setup_certificate
38 changes: 15 additions & 23 deletions tasks/remove-tunnels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,29 +5,13 @@
enabled: no
daemon_reload: yes
no_block: no
when: not cf_use_system_v
when: cf_init_system == "systemd"

- name: Stop service "{{ systemd_filename }}-{{ item }}"
ansible.builtin.service:
name: "{{ systemd_filename }}-{{ item }}"
state: stopped
when: cf_use_system_v

- name: Delete config file for tunnel '{{ item }}'
file:
state: absent
path: "{{ cf_config_dir_cf_named_tunnels }}/{{ item }}.yml"

- name: Delete logfile for tunnel '{{ item }}'
file:
state: absent
path: "/var/log/cloudflared_{{ item }}.log"

- name: Delete systemd service file for tunnel '{{ item }}'
file:
state: absent
path: "{{ systemd_filename }}@{{ item }}"
when: not cf_use_system_v
when: cf_init_system == "initv"

- name: Delete Link in runlevel directory to /etc/init.d/"{{ systemd_filename }}-{{ item }}"
file:
Expand All @@ -39,7 +23,7 @@
- rc6.d
loop_control:
loop_var: item_runlevel
when: cf_use_system_v
when: cf_init_system == "initv"

- name: "Delete Link in runlevel directory to /etc/init.d/{{ systemd_filename }}-{{ item }}"
file:
Expand All @@ -52,10 +36,18 @@
- rc5.d
loop_control:
loop_var: item_runlevel
when: cf_use_system_v
when: cf_init_system == "initv"

- name: Delete systemv service file for tunnel '{{ item }}'
- name: Delete service-, log- and config-files for tunnel '{{ item }}'
file:
state: absent
path: /etc/init.d/"{{ systemd_filename }}-{{ item }}"
when: cf_use_system_v
path: "{{ cf_file_to_remove }}"
loop:
- "{{ cf_config_dir }}/{{ item }}.yml"
- "{{ cf_systemd_target_dir }}/{{ systemd_filename }}@{{ item }}"
- "/var/log/cloudflared_{{ item }}.log"
- "/etc/init.d/{{ systemd_filename }}-{{ item }}"
- "/var/run/{{ systemd_filename }}_{{ item }}.pid"
- "/var/log/{{ systemd_filename }}_{{ item }}.log"
loop_control:
loop_var: cf_file_to_remov
File renamed without changes.
2 changes: 1 addition & 1 deletion templates/cloudflared.service.j2
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ After=network.target

[Service]
Type=simple
ExecStart=cloudflared tunnel --config {{ cf_config_dir_cf_named_tunnels }}/%i.yml run %i
ExecStart=cloudflared tunnel --config {{ cf_config_dir }}/%i.yml run %i
User={{ cf_systemd_user }}
Group={{ cf_systemd_group }}

Expand Down
6 changes: 3 additions & 3 deletions templates/cloudflared.systemv.j2
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@
# Description: cloudflared tunnel for {{ tunnel_name }}
### END INIT INFO

SCRIPT="cloudflared tunnel --config {{ cf_config_dir_cf_named_tunnels }}/{{ tunnel_name }}.yml run {{ tunnel_name }}"
SCRIPT="cloudflared tunnel --config {{ cf_config_dir }}/{{ tunnel_name }}.yml run {{ tunnel_name }}"
RUNAS={{ cf_systemd_user }}

PIDFILE=/var/run/{{ systemd_filename }}_{{ tunnel_name }}.pid
LOGFILE=/var/log/{{ systemd_filename }}_{{ tunnel_name }}.log
PIDFILE={{ initv_pid_file }}
LOGFILE={{ initv_log_file }}

start() {
if [ -f $PIDFILE ] && [ -s $PIDFILE ] && kill -0 $(cat $PIDFILE); then
Expand Down

0 comments on commit 6787c45

Please sign in to comment.