Jekyll deploy z gitem i ansiblem

Czas było zrobić porządki i ułatwić sobie życie. Z ansible korzystam już od jakiegoś czasu, głównie w pracy. Prywatnie, przez studia, nie miałem w ostatnich miesiącach czasu na napisanie kilku playbooków ułatwiających codzienne życie. A po cichu liczę, że trochę automatyki zachęci mnie do pisania.

W pracy robię już trzecie podejście (chyba ostatnie?) do napisania automatyki w Ansible. Za każdym razem wiązało się to z gruntownym przepisaniem poprzedniej wersji - a najczęściej z przepisaniem od zera całości. Teraz mam wrażenie, że udało się zebrać trochę doświadczenia w tym jak powinny mniej więcej wyglądać role, żeby były wygodne.

Moje podejście zakłada wykorzystanie zmiennych wszędzie tam, gdzie przypadkiem mogą się przydać. Czemu w ten sposób? Zawsze możemy stworzyć domyślne zmienne, które później jest łatwo nadpisać - czy to dla danej grupy czy tylko dla konkretnych hostów. Daje to całkiem sporą elastyczność ewentualnego rozwiązania.

Druga strona medalu - samego jekylla wrzuciłem sobie do gita. Dzięki temu mogę w prosty sposób kontrolować wersję oraz kopiować kod za pomocą modułu gita w ansible.

Sam plik roli jest bardzo prosty - opiera się na ściągnięciu repozytorium do katalogu i wywołaniu handlera:

---
- name: Update files
  git:
    repo:   ""
    dest:   ""
    update: yes
    accept_hostkey: yes
    key_file: ~/.ssh/id_rsa
  notify:
    - build jekyll

Handler wykonuje jekyll build, który zasili naszego bloga nową treścią:

---
- name: build jekyll
  command:
    "/jekyll build -s  -d "

Aktualną wersję można znaleźć w repozytorium.