initial push

This commit is contained in:
suu
2025-03-12 13:55:27 +01:00
commit 9f90c494ea
88 changed files with 2343 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
- name: Check code-server binary exists
stat:
path: "{{ code_server_bin_dir }}/code-server"
follow: yes
register: code_server_exists
# This check is compatible with code-server v1, v2 and v3
#
# v3.6.0:
# 3.6.0 a4a03c14922ccaec2a9ff8d1b7b2af8522a4214d
#
# v3.5.0:
# [2020-09-01T06:20:36.864Z] info Using config file ~/.config/code-server/config.yaml
# 3.5.0 de41646fc402b968ca6d555fdf2da7de9554d28a
#
# v3.4.1:
# info Using config file ~/.config/code-server/config.yaml
# 3.4.1 48f7c2724827e526eeaa6c2c151c520f48a61259
#
# v3.0.2:
# 3.0.2 e480f6527e11344a7c69b7cd024bce9379cea7f0
#
# v3:
# 3.0.0
#
# v2:
# info 2.1698-vsc1.41.1
# info f51e045cd5483561afc07694f39307fb673b6d1d
# info x64
#
# v1:
# 1.1156-vsc1.33.1
- name: Check installed code-server version
shell: 'set -o pipefail; code-server --version | grep -P -o "(?<=^|info )\d+(\.\d+)+(-[^ ]+)?"'
args:
executable: /bin/bash
register: code_server_version
when: code_server_exists.stat.exists
changed_when: no
- name: Check latest code-server version
uri:
url: https://api.github.com/repos/cdr/code-server/releases
register: code_server_releases
when: code_server_ver is undefined
- name: Set code-server latest version
set_fact:
code_server_ver: "{{ code_server_releases.json[0].tag_name }}"
when: code_server_ver is undefined

View File

@@ -0,0 +1,19 @@
- name: Create code-server data dir
file:
path: "{{ code_server_data_dir }}"
state: directory
- name: Copy code-server env file
template:
src: env
dest: "{{ code_server_data_dir }}"
mode: 0600
notify: Restart code-server
when: code_server_password is defined or
code_server_env|length > 0
- block:
- import_tasks: copy-certs.yml
rescue:
- import_tasks: copy-certs.yml
become: yes

View File

@@ -0,0 +1,21 @@
- name: Copy TLS certificate
copy:
remote_src: "{{ code_server_tls_cert_remote }}"
src: "{{ code_server_tls_cert }}"
dest: "{{ code_server_data_dir }}/tls.cert"
owner: "{{ code_server_user }}"
group: "{{ ansible_user_gid|string }}"
mode: 0440
notify: Restart code-server
when: code_server_tls_cert is defined
- name: Copy TLS key
copy:
remote_src: "{{ code_server_tls_key_remote }}"
src: "{{ code_server_tls_key }}"
dest: "{{ code_server_data_dir }}/tls.key"
owner: "{{ code_server_user }}"
group: "{{ ansible_user_gid|string }}"
mode: 0440
notify: Restart code-server
when: code_server_tls_key is defined

View File

@@ -0,0 +1,18 @@
- name: Check usage of deprecated variables
debug:
msg: "'{{ item }}' is deprecated, please use 'code_server_{{ item }}'"
when: "{{ item }} is defined"
with_items:
- tls_cert
- tls_key
- tls_cert_remote
- tls_key_remote
- name: Set corresponding code_server_ variables
set_fact: code_server_{{ item }}={{ lookup('vars', item) }}
when: "{{ item }} is defined"
with_items:
- tls_cert
- tls_key
- tls_cert_remote
- tls_key_remote

View File

@@ -0,0 +1,12 @@
- name: Download code-server legacy
become: yes
unarchive:
remote_src: yes
src: "{{ code_server_tar_url }}"
dest: "{{ code_server_bin_dir }}"
extra_opts:
- --strip-components=1
- --wildcards
- "*/code-server"
notify: Restart code-server
when: code_server_download_needed

View File

@@ -0,0 +1,13 @@
- name: Copy code-server systemd unit file
become: yes
template:
src: code-server.service
dest: "{{ code_server_service_dir }}"
notify: Restart code-server
- name: Copy code-server systemd override file
become: yes
template:
src: code-server.service.d/restart.conf
dest: "{{ code_server_service_dir }}/code-server.service.d/"
notify: Restart code-server

View File

@@ -0,0 +1,34 @@
- name: Clean up {{ code_server_dir }}
become: yes
file:
state: absent
path: "{{ code_server_dir }}"
when: code_server_download_needed
- name: Create {{ code_server_dir }}
become: yes
file:
state: directory
path: "{{ code_server_dir }}"
- name: Download code-server
become: yes
unarchive:
remote_src: yes
src: "{{ code_server_tar_url }}"
dest: "{{ code_server_dir }}"
extra_opts:
- --strip-components=1
notify: Restart code-server
when: code_server_download_needed
- name: Add {{ code_server_bin_dir }}/code-server
become: yes
file:
state: link
src: "{{ code_server_dir }}{{ '/bin' if code_server_cleaned_ver is version('3.3.0', '>=') else '' }}/code-server"
dest: "{{ code_server_bin_dir }}/code-server"
# force is required if upgrade from v1 or v2,
# in which case dest exists and is a file.
force: yes
notify: Restart code-server

View File

@@ -0,0 +1,64 @@
---
- name: Check usage of deprecated role variables
include_tasks: deprecate.yml
when: >
tls_cert is defined
or tls_key is defined
or tls_cert_remote is defined
or tls_key_remote is defined
# Always gather facts as we use ansible_user_id and ansible_user_dir
- name: Gather Facts
setup:
gather_subset: '!all'
- name: Check systemd version
shell: "set -o pipefail; systemctl --version | head -1 | cut -d' ' -f2"
args:
executable: /bin/bash
register: systemctl_version
changed_when: no
- name: Create {{ code_server_service_dir }}
become: yes
file:
state: directory
path: "{{ code_server_service_dir }}"
- name: Check code-server
include_tasks: check-code-server.yml
- import_tasks: install-code-server-legacy.yml
when: code_server_major|int < 3
- import_tasks: install-code-server.yml
when: code_server_major|int >= 3
- import_tasks: install-code-server-service.yml
- name: Configure code-server
include_tasks: configure-code-server.yml
- name: Configure service
set_fact:
code_server_configure_service: yes
tags:
- service
- meta: flush_handlers
- name: Enable code-server service
become: yes
systemd:
name: code-server
enabled: yes
tags:
- service
- name: Report
include_tasks: report.yml
- name: Sanity Test
include_tasks: tests.yml
tags:
- tests

View File

@@ -0,0 +1,10 @@
- name: List installed files
debug:
msg:
- "{{ code_server_dir }}"
- "{{ code_server_bin_dir }}/code-server"
- "{{ code_server_service_dir }}/code-server.service"
- "{{ code_server_service_dir }}/code-server.service.d/restart.conf"
- "{% if code_server_password is defined %}{{ code_server_data_dir }}/env{% endif %}"
- "{% if code_server_tls_cert is defined %}{{ code_server_data_dir }}/tls.cert{% endif %}"
- "{% if code_server_tls_key is defined %}{{ code_server_data_dir }}/tls.key{% endif %}"

View File

@@ -0,0 +1,13 @@
---
- name: Test connectivity locally
wait_for:
port: "{{ code_server_port }}"
timeout: 15
- name: Test connectivity remotely
wait_for:
host: "{{ inventory_hostname }}"
port: "{{ code_server_port }}"
timeout: 15
delegate_to: localhost
ignore_errors: yes