parent
cca25975c8
commit
12df809250
@ -0,0 +1,49 @@
|
|||||||
|
---
|
||||||
|
- name: Configure mini-monitoring server
|
||||||
|
hosts: smolmonitor
|
||||||
|
tasks:
|
||||||
|
- name: Performing APT cache update and package upgrade
|
||||||
|
ansible.builtin.apt:
|
||||||
|
upgrade: yes
|
||||||
|
update_cache: yes
|
||||||
|
cache_valid_time: 86400
|
||||||
|
become: true
|
||||||
|
become_method: sudo
|
||||||
|
- name: Update/install necessary packages
|
||||||
|
ansible.builtin.package:
|
||||||
|
name:
|
||||||
|
- vim
|
||||||
|
- wget
|
||||||
|
- curl
|
||||||
|
- openssl
|
||||||
|
state: latest
|
||||||
|
become: true
|
||||||
|
become_method: sudo
|
||||||
|
- name: Download vim config from aperture (root)
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
dest: /root/.vimrc
|
||||||
|
url: https://aperture.dismyserver.net/.vimrc
|
||||||
|
become: true
|
||||||
|
become_method: sudo
|
||||||
|
|
||||||
|
- name: Verify misc script dir exists
|
||||||
|
ansible.builtin.file:
|
||||||
|
path: /opt/sublight/scripts
|
||||||
|
state: directory
|
||||||
|
|
||||||
|
####- certificate monitoring script
|
||||||
|
|
||||||
|
- name: Verify certificate script is deployed
|
||||||
|
ansible.builtin.template:
|
||||||
|
dest: /opt/sublight/scripts/collect-certdata.sh
|
||||||
|
src: /root/ansible/templates/collect-certdata.sh.j2
|
||||||
|
mode: '0744'
|
||||||
|
- name: Ensure cert monitoring script is scheduled
|
||||||
|
ansible.builtin.cron:
|
||||||
|
name: "Poll cert data"
|
||||||
|
minute: "*"
|
||||||
|
job: "/opt/sublight/scripts/collect-certdata.sh"
|
||||||
|
user: root
|
||||||
|
state: present
|
||||||
|
become: true
|
||||||
|
become_method: sudo
|
@ -0,0 +1,32 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Recommended crontab:
|
||||||
|
# * * * * * /path/to/collect-certdata.sh
|
||||||
|
|
||||||
|
influx_host="{{ influx_host }}"
|
||||||
|
influx_path="/api/v2/write"
|
||||||
|
influx_org="{{ influx_org }}"
|
||||||
|
influx_bucket="{{ influx_bucket }}"
|
||||||
|
influx_token="{{ influx_token }}"
|
||||||
|
influx_metric="certificate"
|
||||||
|
domains=({% for dns in certificate_monitor_domains %}"{{dns}}" {% endfor %})
|
||||||
|
|
||||||
|
influx_url="${influx_host}${influx_path}?org=${influx_org}&bucket=${influx_bucket}"
|
||||||
|
influx_header_auth="Authorization: Token ${influx_token}"
|
||||||
|
influx_header_content="Content-Type: text/plain; charset=utf-8"
|
||||||
|
influx_header_accept="Accept: application/json"
|
||||||
|
|
||||||
|
for dn in ${domains[@]}; do
|
||||||
|
certificate="$(openssl s_client -connect ${dn}:443 2>/dev/null </dev/null | openssl x509)"
|
||||||
|
|
||||||
|
# Calculation broken down from https://gist.github.com/holly/4205943
|
||||||
|
datestr=`echo "${certificate}" | openssl x509 -enddate -noout | cut -d'=' -f2`
|
||||||
|
daystr=`date -d "$datestr" "+%s"`
|
||||||
|
current_time=$(date "+%s")
|
||||||
|
days=`echo $((($daystr - $current_time) / 60 / 60 / 24))`
|
||||||
|
|
||||||
|
data="${influx_metric},domain=${dn} remaining=${days}i"
|
||||||
|
|
||||||
|
curl --request POST "${influx_url}" --header "${influx_header_auth}" --header "${influx_header_content}" --header "${influx_header_accept}" --data-binary "${data}"
|
||||||
|
|
||||||
|
done
|
Loading…
Reference in new issue