refactor: remove gitvana_bun_host role and associated files

This commit is contained in:
Nathan 2026-04-21 12:26:58 -04:00
parent 09c99318f8
commit b7d0e07ec3
12 changed files with 0 additions and 345 deletions

View File

@ -1,40 +0,0 @@
# gitvana_bun_host
Ansible role to deploy Gitvana directly on a Linux VM/LXC host using Bun and systemd.
## What this role does
- Installs required OS packages
- Installs Bun from official GitHub releases
- Clones/updates the Gitvana repository
- Installs dependencies with Bun
- Creates and manages a systemd unit
- Verifies service reachability over HTTP
## Requirements
- Target OS: Debian 12+ or Ubuntu 22.04+
- Ansible Core 2.16+
- SSH access with privilege escalation rights
## Role variables
See defaults in defaults/main.yml.
Most commonly overridden:
- gitvana_repo_url
- gitvana_repo_version
- gitvana_service_port
- gitvana_run_mode
## Example playbook
```yaml
---
- name: Deploy Gitvana with Bun
hosts: docker_nodes
become: true
roles:
- role: gitvana_bun_host
```

View File

@ -1,30 +0,0 @@
---
gitvana_repo_url: https://git.castaldifamily.com/nathan/gitvana
gitvana_repo_version: main
gitvana_app_user: gitvana
gitvana_app_group: gitvana
gitvana_app_root: /opt/gitvana
gitvana_service_name: gitvana
gitvana_service_port: 3000
gitvana_run_mode: preview
gitvana_env:
NODE_ENV: production
PORT: "{{ gitvana_service_port }}"
gitvana_healthcheck_path: /
gitvana_verify_status_codes:
- 200
- 301
- 302
bun_version: 1.2.15
bun_install_root: /opt/bun
gitvana_bun_arch_map:
x86_64: linux-x64-baseline
aarch64: linux-aarch64
# Optional SSH deploy key for private repositories.
gitvana_git_key_file: ""

View File

@ -1,9 +0,0 @@
---
- name: Reload systemd
ansible.builtin.systemd:
daemon_reload: true
- name: Restart Gitvana service
ansible.builtin.systemd:
name: "{{ gitvana_service_name }}"
state: restarted

View File

@ -1,26 +0,0 @@
---
galaxy_info:
role_name: gitvana_bun_host
namespace: homelab
author: FrankGPT
description: Deploy Gitvana directly on Debian/Ubuntu hosts using Bun and systemd
license: MIT
min_ansible_version: "2.16"
platforms:
- name: Ubuntu
versions:
- jammy
- noble
- name: Debian
versions:
- bookworm
galaxy_tags:
- bun
- web
- application
- deployment
- lxc
dependencies: []

View File

@ -1,35 +0,0 @@
---
- name: Clone or update Gitvana repository
ansible.builtin.git:
repo: "{{ gitvana_repo_url }}"
dest: "{{ gitvana_app_root }}"
version: "{{ gitvana_repo_version }}"
update: true
key_file: "{{ gitvana_git_key_file | default(omit) }}"
accept_hostkey: true
become: true
become_user: "{{ gitvana_app_user }}"
register: gitvana_repo_sync
- name: Ensure repository ownership is correct
ansible.builtin.file:
path: "{{ gitvana_app_root }}"
state: directory
recurse: true
owner: "{{ gitvana_app_user }}"
group: "{{ gitvana_app_group }}"
- name: Check if dependencies directory exists
ansible.builtin.stat:
path: "{{ gitvana_app_root }}/node_modules"
register: gitvana_node_modules
- name: Install application dependencies with Bun
ansible.builtin.command:
cmd: /usr/local/bin/bun install --frozen-lockfile
chdir: "{{ gitvana_app_root }}"
become: true
become_user: "{{ gitvana_app_user }}"
when: gitvana_repo_sync.changed or not gitvana_node_modules.stat.exists
changed_when: true
notify: Restart Gitvana service

View File

@ -1,71 +0,0 @@
---
- name: Ensure Bun install root exists
ansible.builtin.file:
path: "{{ bun_install_root }}"
state: directory
owner: root
group: root
mode: "0755"
- name: Set Bun artifact values
ansible.builtin.set_fact:
bun_archive_name: "bun-{{ bun_arch_suffix }}.zip"
bun_download_url: "https://github.com/oven-sh/bun/releases/download/bun-v{{ bun_version }}/bun-{{ bun_arch_suffix }}.zip"
bun_archive_path: "/tmp/bun-v{{ bun_version }}-{{ bun_arch_suffix }}.zip"
bun_extract_path: "{{ bun_install_root }}/bun-v{{ bun_version }}-{{ bun_arch_suffix }}"
- name: Ensure versioned Bun extract directory exists
ansible.builtin.file:
path: "{{ bun_extract_path }}"
state: directory
owner: root
group: root
mode: "0755"
- name: Download Bun release archive
ansible.builtin.get_url:
url: "{{ bun_download_url }}"
dest: "{{ bun_archive_path }}"
mode: "0644"
- name: Extract Bun archive
ansible.builtin.unarchive:
src: "{{ bun_archive_path }}"
dest: "{{ bun_extract_path }}"
remote_src: true
creates: "{{ bun_extract_path }}/.extracted"
- name: Mark Bun extraction complete
ansible.builtin.file:
path: "{{ bun_extract_path }}/.extracted"
state: touch
mode: "0644"
- name: Locate extracted Bun binary
ansible.builtin.find:
paths: "{{ bun_extract_path }}"
recurse: true
file_type: file
patterns: bun
register: bun_binary_find
- name: Fail when Bun binary is missing
ansible.builtin.fail:
msg: "Bun binary was not found under {{ bun_extract_path }} after extraction."
when: bun_binary_find.matched | int == 0
- name: Select Bun binary path
ansible.builtin.set_fact:
bun_binary_path: "{{ (bun_binary_find.files | sort(attribute='path') | first).path }}"
- name: Ensure Bun binary has execute permission
ansible.builtin.file:
path: "{{ bun_binary_path }}"
mode: "0755"
- name: Link Bun binary into standard PATH
ansible.builtin.file:
src: "{{ bun_binary_path }}"
dest: /usr/local/bin/bun
state: link
force: true

View File

@ -1,18 +0,0 @@
---
- name: Validate role input
ansible.builtin.import_tasks: validate.yml
- name: Install base prerequisites
ansible.builtin.import_tasks: prereqs.yml
- name: Install Bun runtime
ansible.builtin.import_tasks: install_bun.yml
- name: Deploy application code
ansible.builtin.import_tasks: deploy_code.yml
- name: Configure and start service
ansible.builtin.import_tasks: service.yml
- name: Verify service reachability
ansible.builtin.import_tasks: verify.yml

View File

@ -1,31 +0,0 @@
---
- name: Install prerequisite packages
ansible.builtin.apt:
name:
- ca-certificates
- curl
- git
- unzip
state: present
update_cache: true
- name: Ensure application group exists
ansible.builtin.group:
name: "{{ gitvana_app_group }}"
system: true
- name: Ensure application user exists
ansible.builtin.user:
name: "{{ gitvana_app_user }}"
group: "{{ gitvana_app_group }}"
system: true
create_home: false
shell: /usr/sbin/nologin
- name: Ensure application directory exists
ansible.builtin.file:
path: "{{ gitvana_app_root }}"
state: directory
owner: "{{ gitvana_app_user }}"
group: "{{ gitvana_app_group }}"
mode: "0755"

View File

@ -1,17 +0,0 @@
---
- name: Render systemd unit file
ansible.builtin.template:
src: gitvana.service.j2
dest: "/etc/systemd/system/{{ gitvana_service_name }}.service"
owner: root
group: root
mode: "0644"
notify:
- Reload systemd
- Restart Gitvana service
- name: Ensure Gitvana service is enabled and running
ansible.builtin.systemd:
name: "{{ gitvana_service_name }}"
enabled: true
state: started

View File

@ -1,31 +0,0 @@
---
- name: Assert supported operating system
ansible.builtin.assert:
that:
- ansible_os_family == "Debian"
fail_msg: "This role supports Debian/Ubuntu targets only."
- name: Assert required role variables
ansible.builtin.assert:
that:
- gitvana_repo_url | length > 0
- gitvana_repo_version | length > 0
- gitvana_app_user | length > 0
- gitvana_app_group | length > 0
- gitvana_app_root | length > 0
- gitvana_service_name | length > 0
- gitvana_service_port | int > 0
- gitvana_service_port | int < 65536
- bun_version | length > 0
- bun_install_root | length > 0
- gitvana_run_mode in ["dev", "preview"]
fail_msg: "One or more required variables are missing or invalid."
- name: Map architecture for Bun release artifact
ansible.builtin.set_fact:
bun_arch_suffix: "{{ gitvana_bun_arch_map.get(ansible_architecture) }}"
- name: Fail on unsupported architecture
ansible.builtin.fail:
msg: "Unsupported architecture for Bun install: {{ ansible_architecture }}"
when: bun_arch_suffix is not defined or bun_arch_suffix | length == 0

View File

@ -1,16 +0,0 @@
---
- name: Wait for Gitvana service port
ansible.builtin.wait_for:
port: "{{ gitvana_service_port }}"
host: 127.0.0.1
timeout: 60
- name: Verify local HTTP health endpoint
ansible.builtin.uri:
url: "http://127.0.0.1:{{ gitvana_service_port }}{{ gitvana_healthcheck_path }}"
method: GET
status_code: "{{ gitvana_verify_status_codes }}"
register: gitvana_health_result
retries: 3
delay: 5
until: gitvana_health_result.status in gitvana_verify_status_codes

View File

@ -1,21 +0,0 @@
[Unit]
Description=Gitvana Bun Service
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User={{ gitvana_app_user }}
Group={{ gitvana_app_group }}
WorkingDirectory={{ gitvana_app_root }}
{% for key, value in gitvana_env.items() %}
Environment={{ key }}={{ value }}
{% endfor %}
ExecStart=/usr/local/bin/bun run {{ gitvana_run_mode }} --host 0.0.0.0 --port {{ gitvana_service_port }}
Restart=on-failure
RestartSec=5
TimeoutStartSec=120
TimeoutStopSec=30
[Install]
WantedBy=multi-user.target