Ansible Informationen zu Jekyll exportieren

Ich verwende Ansible um die Konfiguration von Servern und Desktop Geräten zu automatisieren. Da ich Jekyll für meinen Blog verwende habe ich begonnen auch die Dokumentation der Server mit Hilfe des Dokumentations Templates zu pflegen. Neben der Beschreibung eines Servers ist es natürlich hilfreich auch technische Informationen dort abzulegen.

Und da ich ja schon viele Informationen in Ansible vorliegen habe lag es natürlich nahe ein Playbook zu schreiben das mir diese Daten direkt in das Jekyll Template exportiert.

Die Idee: Ich nutze die Collections und exportiere die gewünschte Informationen als Input für ein Collectionstemplate.

Dazu brauchen wir also zuerst ein Playbook für den Export.

Für alle Hosts die in der etc-host von Ansible in der Gruppe “Doku” enthalten sind wird mit dem Template server.j2 eine Datei in dem Collection Verzeichnis “_server” erstellt das die gewünschten Ansible Informationen enthält.

vi ansible-2-doku.yml 
  ---
  - hosts: doku
    roles:
      - server-doku
  

vi roles/server-doku/defaults/main.yml 
  ---
  hosts: localhost
  connection: local
  path2jekyll: "/home/user/doku/_server/"

vi roles/server-doku/tasks/main.yml 
   ---
   - name: build collection input
     template: src=templates/server.j2 dest={{ path2jekyll }}/{{ ansible_hostname }}.md
     delegate_to: localhost

vi roles/server-doku/templates/server.j2 
   ---
   layout: server
   title: {{ ansible_hostname }}
   ip :  {{ ansible_fqdn }}
   os : {{ ansible_system }}
   permalink: /host-infos-{{ ansible_hostname }}.html
   tags: [Server, {{ ansible_hostname }} ]
   sidebar: mydoc_sidebar
   folder: mydoc
   ---

So jetzt brauchen wir noch die Collection Definition in Jekyll

 vi _config.yml 
   
   collections:
     server:
       output: true

 vi _layouts/server.html 
 
    ---
    layout: page
    ---
    IP Adresse: {{ page.ip }} <br>
    Betriebssystem : {{ page.os }} <br>
    .....

Jetzt bekommen wir bei jedem Lauf von Jekyll für jeden Server eine html Datei erstellt auf die wir aus anderen Seiten verlinken können.