=====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: {{ :linux:anible_yaml_lint.jpg | Arbeiten mit YAML Ansible mit Lint Unterstüzung}} ---- ==== 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 ---- ====Quellen ==== Web: * https://www.arthurkoziel.com/setting-up-vim-for-yaml/ Vi * https://ostechnix.com/vim-plug-a-minimalist-vim-plugin-manager/ Ansible: * https://vimawesome.com/plugin/ansible-vim YAML * https://github.com/adrienverge/yamllint