renovate(role): introduce first basic Renovate role

Sets up Renovate using Docker and systemd service and timer to run
regularly.
Also add accompanying host group and playbook play.
This commit is contained in:
June 2025-10-16 17:42:13 +02:00
commit 8388657d33
Signed by: june
SSH key fingerprint: SHA256:o9EAq4Y9N9K0pBQeBTqhSDrND5E7oB+60ZNx0U1yPe0
9 changed files with 95 additions and 0 deletions

11
roles/renovate/README.md Normal file
View file

@ -0,0 +1,11 @@
# Role `renovate`
A role for setting up [Renovate](https://docs.renovatebot.com/).
## Supported Distributions
Should work on Debian-based distributions.
## Required Arguments
- `renovate__config`: The Renovate config to deploy.

View file

@ -0,0 +1,10 @@
[Unit]
Description=renovate
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/bin/docker run --rm \
-v "/etc/renovate/config.js:/usr/src/app/config.js" \
renovate/renovate

View file

@ -0,0 +1,8 @@
[Unit]
Description=renovate running every 15 minutes
[Timer]
OnCalendar=*-*-* *:00,15,30,45:00
[Install]
WantedBy=timers.target

View file

@ -0,0 +1,4 @@
- name: systemd daemon reload
ansible.builtin.systemd_service:
daemon_reload: true
become: true

View file

@ -0,0 +1,6 @@
argument_specs:
main:
options:
renovate__config:
type: str
required: true

View file

@ -0,0 +1,3 @@
---
dependencies:
- role: docker

View file

@ -0,0 +1,46 @@
- name: ensure renovate config directory exists
ansible.builtin.file:
path: /etc/renovate
state: directory
owner: root
group: root
mode: "0755"
become: true
- name: ensure renovate config
ansible.builtin.copy:
content: "{{ renovate__config }}"
dest: /etc/renovate/config.js
owner: root
group: root
mode: "0640"
become: true
- name: ensure systemd service exists
ansible.builtin.copy:
src: renovate.service
dest: /etc/systemd/system/renovate.service
owner: root
group: root
mode: "0644"
become: true
notify:
- systemd daemon reload
- name: ensure systemd timer exists
ansible.builtin.copy:
src: renovate.timer
dest: /etc/systemd/system/renovate.timer
owner: root
group: root
mode: "0644"
become: true
notify:
- systemd daemon reload
- name: ensure systemd timer is started and enabled
ansible.builtin.systemd_service:
name: renovate.timer
state: started
enabled: true
become: true