added: vm runner iac and doc
This commit is contained in:
parent
5b5ec98fcf
commit
1b3b11cb87
9 changed files with 116 additions and 2 deletions
|
|
@ -30,6 +30,7 @@ eval $(ssh-agent -s) && ssh-add ~/.ssh/homelab
|
||||||
| vm-forgejo | 192.168.1.50 | Forgejo :3000 |
|
| vm-forgejo | 192.168.1.50 | Forgejo :3000 |
|
||||||
| vm-nextcloud | 192.168.1.51 | Nextcloud :8080 |
|
| vm-nextcloud | 192.168.1.51 | Nextcloud :8080 |
|
||||||
| vm-tools | 192.168.1.52 | Stirling PDF :8081 |
|
| vm-tools | 192.168.1.52 | Stirling PDF :8081 |
|
||||||
|
| vm-runner | 192.168.1.53 | Forgejo Actions Runner |
|
||||||
| VPS Scaleway | 51.158.126.113 | Caddy + WireGuard |
|
| VPS Scaleway | 51.158.126.113 | Caddy + WireGuard |
|
||||||
| QNAP | 192.168.1.208 | NAS NFS/SMB |
|
| QNAP | 192.168.1.208 | NAS NFS/SMB |
|
||||||
|
|
||||||
|
|
@ -37,7 +38,7 @@ eval $(ssh-agent -s) && ssh-add ~/.ssh/homelab
|
||||||
|
|
||||||
`vault_forgejo_db_password`, `vault_forgejo_domain`, `vault_nextcloud_db_password`,
|
`vault_forgejo_db_password`, `vault_forgejo_domain`, `vault_nextcloud_db_password`,
|
||||||
`vault_nextcloud_admin_user`, `vault_nextcloud_admin_password`, `vault_nextcloud_domain`,
|
`vault_nextcloud_admin_user`, `vault_nextcloud_admin_password`, `vault_nextcloud_domain`,
|
||||||
`vault_admin_password`, `vault_wg_*`
|
`vault_admin_password`, `vault_wg_*`, `vault_forgejo_runner_token`
|
||||||
|
|
||||||
## Pièges connus
|
## Pièges connus
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,11 @@ all:
|
||||||
vm-tools:
|
vm-tools:
|
||||||
ansible_host: 192.168.1.52
|
ansible_host: 192.168.1.52
|
||||||
|
|
||||||
|
runner:
|
||||||
|
hosts:
|
||||||
|
vm-runner:
|
||||||
|
ansible_host: 192.168.1.53
|
||||||
|
|
||||||
vps:
|
vps:
|
||||||
hosts:
|
hosts:
|
||||||
vps-gateway:
|
vps-gateway:
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
# Cible : forgejo, nextcloud, tools (pas gateway)
|
# Cible : forgejo, nextcloud, tools (pas gateway)
|
||||||
|
|
||||||
- name: Installation Docker
|
- name: Installation Docker
|
||||||
hosts: forgejo:nextcloud:tools
|
hosts: forgejo:nextcloud:tools:runner
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
|
|
|
||||||
80
ansible/playbooks/runner.yml
Normal file
80
ansible/playbooks/runner.yml
Normal file
|
|
@ -0,0 +1,80 @@
|
||||||
|
# =============================================================================
|
||||||
|
# Playbook : runner.yml
|
||||||
|
# Description: Deploiement du Forgejo Actions Runner (vm-runner)
|
||||||
|
# Registration automatique si premiere installation,
|
||||||
|
# puis demarrage du daemon en container Docker.
|
||||||
|
#
|
||||||
|
# Usage :
|
||||||
|
# ansible-playbook playbooks/runner.yml \
|
||||||
|
# -i inventories/<inventaire>/ \
|
||||||
|
# --ask-vault-pass
|
||||||
|
#
|
||||||
|
# Prerequis :
|
||||||
|
# - Docker installe (playbook docker.yml execute avant)
|
||||||
|
# - Token runner genere dans Forgejo : Admin > Actions > Runners
|
||||||
|
# - vault_forgejo_runner_token defini dans le vault
|
||||||
|
# - vault_forgejo_domain defini dans le vault
|
||||||
|
#
|
||||||
|
# Exemple :
|
||||||
|
# ansible-playbook playbooks/runner.yml \
|
||||||
|
# -i inventories/homelab/ \
|
||||||
|
# --ask-vault-pass \
|
||||||
|
# --tags runner
|
||||||
|
# =============================================================================
|
||||||
|
---
|
||||||
|
- name: Deploiement Forgejo Actions Runner
|
||||||
|
hosts: runner
|
||||||
|
become: true
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- name: Creation des repertoires runner
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: "{{ item }}"
|
||||||
|
state: directory
|
||||||
|
owner: "{{ admin_user }}"
|
||||||
|
group: "{{ admin_user }}"
|
||||||
|
mode: "0755"
|
||||||
|
loop:
|
||||||
|
- /opt/runner
|
||||||
|
- /opt/runner/data
|
||||||
|
tags: [runner]
|
||||||
|
|
||||||
|
- name: Deploiement docker-compose runner
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: ../../docker/runner/docker-compose.yml
|
||||||
|
dest: /opt/runner/docker-compose.yml
|
||||||
|
owner: "{{ admin_user }}"
|
||||||
|
group: "{{ admin_user }}"
|
||||||
|
mode: "0644"
|
||||||
|
tags: [runner]
|
||||||
|
|
||||||
|
- name: Verification fichier de registration
|
||||||
|
ansible.builtin.stat:
|
||||||
|
path: /opt/runner/data/.runner
|
||||||
|
register: runner_config
|
||||||
|
tags: [runner]
|
||||||
|
|
||||||
|
# La registration est une operation unique : elle cree /opt/runner/data/.runner
|
||||||
|
# Ce fichier contient les credentials du runner, il ne faut pas la rejouer
|
||||||
|
- name: Registration du runner (premiere fois uniquement)
|
||||||
|
community.docker.docker_container:
|
||||||
|
name: forgejo-runner-register
|
||||||
|
image: code.forgejo.org/forgejo/runner:6
|
||||||
|
auto_remove: true
|
||||||
|
volumes:
|
||||||
|
- /opt/runner/data:/data
|
||||||
|
command: >
|
||||||
|
forgejo-runner register
|
||||||
|
--no-interactive
|
||||||
|
--instance "https://{{ vault_forgejo_domain }}"
|
||||||
|
--token "{{ vault_forgejo_runner_token }}"
|
||||||
|
--name "vm-runner"
|
||||||
|
--labels "ubuntu-latest:docker://ubuntu:22.04,self-hosted:host"
|
||||||
|
when: not runner_config.stat.exists
|
||||||
|
tags: [runner]
|
||||||
|
|
||||||
|
- name: Demarrage du runner
|
||||||
|
community.docker.docker_compose_v2:
|
||||||
|
project_src: /opt/runner
|
||||||
|
state: present
|
||||||
|
tags: [runner]
|
||||||
|
|
@ -23,5 +23,8 @@
|
||||||
- name: Deploiement outils
|
- name: Deploiement outils
|
||||||
ansible.builtin.import_playbook: playbooks/tools.yml
|
ansible.builtin.import_playbook: playbooks/tools.yml
|
||||||
|
|
||||||
|
- name: Deploiement Forgejo Actions Runner
|
||||||
|
ansible.builtin.import_playbook: playbooks/runner.yml
|
||||||
|
|
||||||
- name: Configuration VPS
|
- name: Configuration VPS
|
||||||
ansible.builtin.import_playbook: playbooks/vps.yml
|
ansible.builtin.import_playbook: playbooks/vps.yml
|
||||||
|
|
|
||||||
10
docker/runner/docker-compose.yml
Normal file
10
docker/runner/docker-compose.yml
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
services:
|
||||||
|
runner:
|
||||||
|
image: code.forgejo.org/forgejo/runner:6
|
||||||
|
restart: unless-stopped
|
||||||
|
user: "0:0"
|
||||||
|
volumes:
|
||||||
|
- ./data:/data
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
working_dir: /data
|
||||||
|
command: forgejo-runner daemon
|
||||||
|
|
@ -53,6 +53,14 @@ locals {
|
||||||
disk = 10
|
disk = 10
|
||||||
ip = var.tools_ip
|
ip = var.tools_ip
|
||||||
}
|
}
|
||||||
|
runner = {
|
||||||
|
vmid = 204
|
||||||
|
cores = 4
|
||||||
|
memory = 4096
|
||||||
|
balloon = 2048
|
||||||
|
disk = 20
|
||||||
|
ip = var.runner_ip
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,4 +7,5 @@ gateway_ip = "192.168.1.254"
|
||||||
forgejo_ip = "192.168.1.50"
|
forgejo_ip = "192.168.1.50"
|
||||||
nextcloud_ip = "192.168.1.51"
|
nextcloud_ip = "192.168.1.51"
|
||||||
tools_ip = "192.168.1.52"
|
tools_ip = "192.168.1.52"
|
||||||
|
runner_ip = "192.168.1.53"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -71,6 +71,12 @@ variable "tools_ip" {
|
||||||
default = "192.168.1.52"
|
default = "192.168.1.52"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
variable "runner_ip" {
|
||||||
|
description = "IP de la VM Forgejo Actions runner"
|
||||||
|
type = string
|
||||||
|
default = "192.168.1.53"
|
||||||
|
}
|
||||||
|
|
||||||
# --- Cloud-init ---
|
# --- Cloud-init ---
|
||||||
variable "ci_user" {
|
variable "ci_user" {
|
||||||
description = "Utilisateur cree par cloud-init"
|
description = "Utilisateur cree par cloud-init"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue