61 lines
1.6 KiB
Org Mode
61 lines
1.6 KiB
Org Mode
#+TITLE: Move fast and break things
|
|
#+DATE: 2023-02-02
|
|
I'll just leave this here...
|
|
#+begin_src yaml
|
|
#! /usr/bin/env ansible-playbook
|
|
- hosts: OpenBSD:!dns
|
|
gather_facts: False
|
|
tasks:
|
|
- name: run sysupgrade
|
|
ansible.builtin.command:
|
|
cmd: 'sysupgrade -s'
|
|
ignore_errors: yes
|
|
async: 3600
|
|
poll: 0
|
|
|
|
- hosts: dns:!ansible_orchestrator
|
|
gather_facts: False
|
|
serial: 1
|
|
tasks:
|
|
- name: run sysupgrade -n
|
|
ansible.builtin.command:
|
|
cmd: 'sysupgrade -ns'
|
|
|
|
- name: check for /bsd.upgrade
|
|
ansible.builtin.stat:
|
|
path: /bsd.upgrade
|
|
register: upgrade_pending
|
|
|
|
- name: reboot and wait for host to return
|
|
block:
|
|
- name: schedule reboot in 1 minute
|
|
ansible.builtin.command:
|
|
cmd: 'shutdown -r +1'
|
|
- name: wait for ssh to go away
|
|
ansible.builtin.wait_for:
|
|
host: '{{ (ansible_ssh_host|default(ansible_host))|default(inventory_hostname) }}'
|
|
port: 22
|
|
state: stopped
|
|
delay: 10
|
|
vars:
|
|
ansible_connection: local
|
|
|
|
- name: wait for DNS to come back.
|
|
ansible.builtin.wait_for:
|
|
state: started
|
|
host: '{{ (ansible_ssh_host|default(ansible_host))|default(inventory_hostname) }}'
|
|
port: 53
|
|
delay: 10
|
|
vars:
|
|
ansible_connection: local
|
|
when: upgrade_pending.stat.exists
|
|
|
|
- hosts: ansible_orchestrator
|
|
gather_facts: False
|
|
tasks:
|
|
- name: run sysupgrade
|
|
ansible.builtin.command:
|
|
cmd: 'sysupgrade -s'
|
|
ignore_errors: yes
|
|
#+end_src
|