Inhaltsverzeichnis
Mit Ansible YAML arbeiten ohne Nerven Zusammenbruch
Das Problem:
Wer mit YAML Konfigurationsdateien arbeitet, wird am Ende irgendwann ganz wirr, besonders in Ansible.
Von der Idee ist das bestimmt ganz gut, aber der kleinste Fehler kann oft dazu führen, das sehr lange gesucht werden muss wo denn der Tipp Fehler steckt.
Zumal in Ansible ein Syntaktischer und eine Logischer Fehler wie ein falsches Package ähnliche Fehlermeldungen verursachen.
D.h. wenn auf einer gehosteten Umgebung über drei virtuelle Desktops maximal mit dem VI entwickelt werden kann, treibt das einen am Ende in den Wahnsinn.
Das Problem mit Ansible und „–syntax-check“ ist die Verquickung von syntaktischen und Logischen Fehlern.
Gelegentlich hilft genaues Lesen der Fehlermeldung, meist ist aber die Ursache hier zu (nicht) finden „but may be elsewhere in the file depending on the exact syntax problem.“ und schon sucht man eine Stunde nach einen falschen Einrückung oder einen einen falschen Modulnamen oder einen Fehlenden { oder „ oder ähnlichen ganz kleinen Fehlerchen.
Wie hier schneller werden und Oracle Linux 8?
Lösung:
Wie bei jeder Programmiersprache wird eine vernünftige Programmierumgebung mit gute Tools benötigt um hier einfach schneller zu werden.
Und an Ende viel Übung und Geduld um das ganze besser hinzubekommen.
VI Unterstützung
Für den VIM (Extend Edition!) gibt es viele Erweiterungen um hier performanter zu werden.
Vim installieren
VIM zuvor installieren aus Repostitory „ol8_appstream“ für Oracle Linux8:
dnf install vim-enhanced
Und als Default für vi und setzen
Allias hinterlegen und vim für crontab als Editor hinterlegen
.bashrc,
alias vi="vim" export VISUAL="vim"
Plugin Manager
Um die Plugins einfach zu verwalten gibt es verschiedene Plugin Manager, hier wird vim-plug eingesetzt.
Vim Plugin Manager installieren wie den Vim-Plug von https://github.com/junegunn/vim-plug
Verzeichnis für die Plugins anlegen:
mkdir -p ~.vim/plugged
Vim-Plugin herunter laden:
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
.vimrc mit den passenden Plugins für unsere Umgebung anpassen:
" Plugins will be downloaded under the specified directory. call plug#begin('~/.vim/plugged') " List ends here. Plugins become visible to Vim after this call. Plug 'sheerun/vim-polyglot' Plug 'pearofducks/ansible-vim' Plug 'Yggdroot/indentLine' call plug#end()
Bzgl. Plugins siehe ⇒ https://vimawesome.com/plugin/ansible-vim / https://vimawesome.com/plugin/vim-polyglot / https://vimawesome.com/plugin/indentline
Darauf achten das für vim-plug die Syntax leicht anderes ist ( Plug statt Plugin )!
vim starten und mit :PlugInstall die in der .vimrc hinterlegten Plugins dann initialisieren.
Ansible Syntax aktiveren
in der .vimrc hinterlegen das alle .yml Dateien für ansible gelten:
au BufRead,BufNewFile *.yml set filetype=yaml.ansible
Lässt sich noch genauer einschränken aber auf der Maschine unter dem User wird nur für Ansible gescripted.
YAML Lint
Mit einen Lint Program läßt sich der YAML Code prüfen und optimal entwickeln, da alle Fehler aufgezeigt werden, auch die die Ansible dann wieder weg ignoriert.
Installation
Installieren aus dem „ol8_developer_EPEL Repository“ für Oracle Linux 8:
#Was ist bereits aktiviert? dnf repolist # fall nicht bereits aktiviert # dnf install oracle-epel-release-el8.x86_64 # oder falls nur dekativiert # yum-config-manager --enable ol8_developer_EPEL dnf install yamllint.noarch
Konfigurieren
Datei “„ anlegen
mkdir -p ~/.config/yamllint touch ~/.config/yamllint/config
Datei ~/.config/yamllint/config anpassen:
extends: relaxed rules: line-length: disable
siehe dazu ⇒ https://yamllint.readthedocs.io/en/stable/rules.html#module-yamllint.rules.line_length
Ausführen
yamllint --no-warnings install_ahf.yml
YAML Lint in VIM 8 einbinden
Mit dem ALE Plugin läßt sich der Lint auch in VI einbinden, aber nur in der Version 8.
siehe dazu⇒ https://www.arthurkoziel.com/setting-up-vim-for-yaml/
Plugin mit aufnehmen und mit :PlugInstall aktivieren
Plug 'dense-analysis/ale'
so sieht das dann am Ende mit Syntax Highlighting / Indent Kennzeichnung und Lint aus:
In die gehostete Umgebung übertragen
Der Nachteil diese schönen Plugin System ist ja leider der, wenn nicht online dann geht es nicht…
In echten Produktiven Umgebung ist daher so ein freie Zugriff auf Ressourcen im Netz nicht so einfach umzusetzen.
tar cfvz vim_yaml_env.tar.gz .vimrc .vim/
Datei auf den andern Host übertragen und dort die Daten wieder auspacken
cd ~ tar xfvz vim_yaml_env.tar.gz