Если за предыдущий плейбук Ansible с бэкапом Mikrotik-ов меня должны были проклясть, то за этот точно распнут. Так как это не только плейбук, который идемпонентен, так еще и подчеркивает свою идемпонентность максимально наглым способом, используя shell. Но тем не менее возможно кому-то пригодится.
У нас есть OpenVPN сервер, который связывает нас со всеми клиентами. И на этом сервере есть CRL-список отозванных сертификатов, чтобы периодически отключать провинившихся. Сам CRL-список имеет срок действия 30 дней. Раньше мне приходилось раз в 30 дней подключаться к серверу и обновлять его руками. Но теперь у меня есть супершвабра... так, это из другой оперы. Теперь за меня все делает Ansible по следующему сценарию.
# Обновление списка CRL OpenVPN.
- hosts: localhost connection: local gather_facts: no tasks: - name: Создание нового CRL файла shell: source vars && openssl ca -gencrl -cert keys/ca.crt -keyfile keys/ca.key -out keys/crl.pem -config openssl.cnf args: chdir: /usr/share/easy-rsa executable: /bin/bash - name: Перезапуск OpenVPN systemd: name: openvpn state: restarted
Обратите внимание на две строчки. connection: local говорит, что плейбук должен выполняться на локальной машине и подключаться никуда не надо. gather_facts: no указывает, что собирать файты не надо. Они просто не нужны, а на старте их сбор занимает время.
Проигрывается плейбук по крону, вот такой незатейливой командой: 0 0 */20 * * /usr/bin/ansible-playbook -i /etc/ansible/hosts /etc/ansible/update-crl.yml > /dev/null 2>&1