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.