У нас есть 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