Externe CDN mittels Ansible prüfen
von Kirsten Roschanski
Da wir unsere Webseiten eh mit Ansible verwalten, war klar, das wir dieses auch mal schnell damit prüfen möchten.
#
# Ansible Playbook to ckeck inventorys to CDNs
#
# ansible-playbook -i HOSTFOLDER check_extern_cdn.yml --ssh-common-args='-o StrictHostKeyChecking=no'
---
- hosts: all
gather_facts: no # Run Local
tasks:
- name: Check that a page returns a status 200 and fail if the word google-analytics is in the page contents
ansible.builtin.uri:
url: "https://{{ inventory_hostname }}"
return_content: yes
register: this
failed_when: "'google-analytics' in this.content"
- name: Check that a page returns a status 200 and fail if the word cdnjs is in the page contents
ansible.builtin.uri:
url: "https://{{ inventory_hostname }}"
return_content: yes
register: this
failed_when: "'https://cdnjs.com' in this.content"
- name: Check that a page returns a status 200 and fail if the word https://fonts.googleapis.com is in the page contents
ansible.builtin.uri:
url: "https://{{ inventory_hostname }}"
return_content: yes
register: this
failed_when: "'https://fonts.googleapis.com' in this.content"
Falls man noch nicht seine Webprojekte mit Ansible verwaltet, kann man das ganze auch ganz einfach lokal mit einer Liste machen.
#
# Ansible Playbook to ckeck inventorys to CDNs
#
# ansible-playbook check_extern_cdn.yml
---
- hosts: localhost
connection: local
gather_facts: no # Run Local
vars:
uri:
- "https://kirsten-roschanski.de/"
- "https://kirsten-roschanski.de/datenschutz"
tasks:
- name: Check that a page returns a status 200 and fail if the word google-analytics is in the page contents
ansible.builtin.uri:
url: "{{ item }}"
return_content: yes
register: this
loop: "{{ uri }}"
failed_when: "'google-analytics' in this.content"
- name: Check that a page returns a status 200 and fail if the word cdnjs is in the page contents
ansible.builtin.uri:
url: "{{ item }}"
return_content: yes
register: this
loop: "{{ uri }}"
failed_when: "'https://cdnjs.com' in this.content"
- name: Check that a page returns a status 200 and fail if the word https://fonts.googleapis.com is in the page contents
ansible.builtin.uri:
url: "{{ item }}"
return_content: yes
register: this
loop: "{{ uri }}"
failed_when: "'https://fonts.googleapis.com' in this.content"
Information
Nach nun fast zwei Jahren Erfahrung mit der Automatisierung mit Ansible kann ich nur jeden ermutigen.
Inzwischen sichern und aktualisieren wir rund 80 Contao-Installationen und einige andere Projekte voll automatisiert mit Ansible.
Dafür nutzen wir einen RasberryPi der in der Agentur steht und nächtlich die Seiten sichert und aktualisiert.