Compare commits
4 commits
main
...
ansible_pu
Author | SHA1 | Date | |
---|---|---|---|
2f696c4154 |
|||
c0c101fef3 |
|||
baca447578 |
|||
e616c55edb |
8 changed files with 49 additions and 4 deletions
|
@ -1,9 +1,10 @@
|
|||
# ansible_pull
|
||||
# ansible_pull__age_private_key needs to be defined per host (probably HOST.sops.yaml).
|
||||
ansible_pull__repo_url: https://git.hamburg.ccc.de/CCCHH/ansible-infra.git
|
||||
ansible_pull__inventory: inventories/chaosknoten
|
||||
ansible_pull__playbook: playbooks/maintenance.yaml
|
||||
ansible_pull__checkout: ansible_pull_notify
|
||||
ansible_pull__timer_on_calendar: "*-*-* 04:00:00 Europe/Berlin"
|
||||
ansible_pull__failure_notification_address: june+test@jsts.xyz
|
||||
ansible_pull__timer_randomized_delay_sec: 30min
|
||||
|
||||
# msmtp
|
||||
|
|
|
@ -13,6 +13,7 @@ Should work on Debian-based distributions.
|
|||
- `ansible_pull__inventory`: The inventory to use.
|
||||
- `ansible_pull__playbook`: The playbook to run.
|
||||
- `ansible_pull__timer_on_calendar`: When to run the playbook. This is the argument to a systemd timers OnCalendar. See the systemd.time man page for reference.
|
||||
- `ansible_pull__failure_notification_address`: The address to send the failure notification to.
|
||||
|
||||
## Optional Arguments
|
||||
|
||||
|
|
|
@ -16,6 +16,9 @@ argument_specs:
|
|||
ansible_pull__timer_on_calendar:
|
||||
type: str
|
||||
required: true
|
||||
ansible_pull__failure_notification_address:
|
||||
type: str
|
||||
required: true
|
||||
ansible_pull__user:
|
||||
type: str
|
||||
required: false
|
||||
|
|
3
roles/ansible_pull/meta/main.yaml
Normal file
3
roles/ansible_pull/meta/main.yaml
Normal file
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
dependencies:
|
||||
- role: msmtp
|
|
@ -15,6 +15,15 @@
|
|||
virtualenv: /usr/local/lib/ansible_pull_venv
|
||||
become: true
|
||||
|
||||
- name: ensure ansible-pull-failure-notify script installation exists
|
||||
ansible.builtin.template:
|
||||
src: ansible-pull-failure-notify.sh.j2
|
||||
dest: /usr/local/sbin/ansible-pull-failure-notify.sh
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0755"
|
||||
become: true
|
||||
|
||||
- name: ensure secrets directory exists
|
||||
ansible.builtin.file:
|
||||
path: /etc/ansible_pull_secrets
|
||||
|
@ -33,14 +42,17 @@
|
|||
group: "{{ ansible_pull__user }}"
|
||||
become: true
|
||||
|
||||
- name: ensure systemd service exists
|
||||
- name: ensure systemd services exists
|
||||
ansible.builtin.template:
|
||||
src: ansible-pull.service.j2
|
||||
dest: /etc/systemd/system/ansible-pull.service
|
||||
src: "{{ item }}.j2"
|
||||
dest: "/etc/systemd/system/{{ item }}"
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
become: true
|
||||
loop:
|
||||
- ansible-pull.service
|
||||
- ansible-pull-failure-notify.service
|
||||
notify:
|
||||
- systemd daemon reload
|
||||
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
[Unit]
|
||||
Description=ansible-pull failure notifier
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/usr/local/sbin/ansible-pull-failure-notify.sh
|
||||
User=root
|
|
@ -0,0 +1,17 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Ideally we would use --invocation instead of --since, but this isn't supported in the systemd version Debian 12 ships.
|
||||
ANSIBLE_PULL_LOG=$(journalctl --unit=ansible-pull --identifier=ansible-pull --since=-6h --output=cat)
|
||||
|
||||
MESSAGE="Subject: [{{ inventory_hostname }}] ansible-pull: execution failure
|
||||
|
||||
An error occured during the ansible-pull execution.
|
||||
|
||||
Logs:
|
||||
""$ANSIBLE_PULL_LOG""
|
||||
|
||||
To view the logs yourself run:
|
||||
journalctl --unit=ansible-pull --identifier=ansible-pull -e
|
||||
"
|
||||
|
||||
printf "$MESSAGE" | msmtp '{{ ansible_pull__failure_notification_address }}'
|
|
@ -2,6 +2,7 @@
|
|||
Description=ansible-pull for configuration and maintenance
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
OnFailure=ansible-pull-failure-notify.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue