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.