homelab/ansible/roles/byggmester/tasks/main.yml

119 lines
2.9 KiB
YAML

---
- name: Install building dependencies
ansible.builtin.apt:
pkg:
- npm
- rsync
update_cache: true
become: true
- name: Create groups
ansible.builtin.group:
name: "{{ item }}"
loop:
- docker
- forgejo-runner
become: true
- name: Create forgejo-runner user
ansible.builtin.user:
name: forgejo-runner
groups: docker
group: forgejo-runner
password: "!"
home: "/home/forgejo-runner"
create_home: true
system: true
shell: /bin/bash
comment: "forgejo-runner system user"
become: true
notify: Restart forgejo-runner
- name: Download
ansible.builtin.get_url:
url: "{{ byggmester_download_url }}"
dest: /home/forgejo-runner/forgejo-runner
mode: "774"
owner: forgejo-runner
become: true
notify: Restart forgejo-runner
- name: Copy runner service
ansible.builtin.copy:
src: forgejo-runner.service
dest: /etc/systemd/system/forgejo-runner.service
mode: "0644"
owner: root
become: true
notify: Daemon reload
- name: Copy config
ansible.builtin.copy:
src: config.yml
dest: /home/forgejo-runner/config.yml
mode: "0744"
owner: forgejo-runner
become: true
notify: Restart forgejo-runner
- name: See if runner file already exists
ansible.builtin.stat:
path: /home/forgejo-runner/.runner
register: is_registered
become: true
- name: Regisert new runner
when: "not is_registered.stat.exists"
block:
- name: Generate secret
delegate_to: forgejo
ansible.builtin.command: >-
/usr/local/bin/forgejo/forgejo forgejo-cli actions generate-secret
register: generated_secret
become: true
become_user: forgejo
- name: Create a runner on forgejo server
delegate_to: forgejo
ansible.builtin.command: >-
/usr/local/bin/forgejo/forgejo --config /etc/forgejo/app.ini forgejo-cli actions register
--name byggmester
--labels ubuntu
--secret {{ generated_secret.stdout }}
become: true
become_user: forgejo
- name: Join byggmester runner
ansible.builtin.command: >-
./forgejo-runner create-runner-file --instance https://code.polsevev.dev
--secret {{ generated_secret.stdout }}
args:
chdir: "/home/forgejo-runner"
become: true
become_user: forgejo-runner
notify: Restart forgejo-runner
- name: Ensure runnner service is started
ansible.builtin.service:
name: forgejo-runner.service
state: started
enabled: true
become: true
- name: Create .ssh
ansible.builtin.file:
state: directory
owner: forgejo-runner
path: /home/forgejo-runner/.ssh
group: forgejo-runner
mode: "0755"
become: true
- name: Create known hosts
ansible.builtin.file:
state: touch
owner: forgejo-runner
path: /home/forgejo-runner/.ssh/known_hosts
group: forgejo-runner
mode: "0600"
become: true