From 6d4decad5e2bdca40af46a77755ed821891ca553 Mon Sep 17 00:00:00 2001 From: Roger Rutishauser Date: Wed, 2 Oct 2024 17:38:02 +0200 Subject: [PATCH] add ansible --- ansible/README.md | 82 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 ansible/README.md diff --git a/ansible/README.md b/ansible/README.md new file mode 100644 index 0000000..0490ee6 --- /dev/null +++ b/ansible/README.md @@ -0,0 +1,82 @@ +# Ansible + +für Configuration Management + +## Generell + +Playbooks starten Modules und Tasks, sequentiell ausgeführt. +Playbooks beinhalten 1 oder mehrere Plays. Diese wiederum Tasks und Handlers. (Handler wird nur bei Erreichen des Endes eines Tasks ausgeführt). +Bei grösseren Anwendungen, bestehen Playbooks aus Roles, die im Unterverzeichnis "roles" abgelegt sind. Diese wiederum haben Unterordner wie z.B. Tasks. + +Mit Moduls können Tools in Tools verwendet werden, z.B. Powershell oder Python. +Es gibt über 450 Module. Liste auf Website. +Es gibt Run Commands Modules. Diese gibt es als reine Commands, oder als Shell, wo auch Pipes etc. gebraucht werden können. Script und Raw gibts auch noch. + +Inventory = Listen von Ziel-Hosts, auf die Ansible zugreifen soll, mit Gruppen. Für jede Umgebung gibt es ein Inventory. Docuteam hat staging, production, tobiaswildi. + +Bei Aufruf von Roles in Playbooks können Tags hinzugefügt werden, sodass später nur einzelne roles ausgeführt werden können, anstatt alle. + +Aufruf eines .yml Playbooks: +```ansible-playbook -i [inventory] filename.yml``` + + +## Testumgebung Lokal + - target-server (vagrant ubuntu) starten (nicht über virtualtoolbox starten!) + * cmd: ''cd c:\entwicklung\ansible-test-host\'' + * cmd: ''vagrant up'' + * um von cmd in die shell zu wechseln (ist aber nicht nötig, ausser man will resultate von ansible befehlen anschauen gehen): cmd: ''vagrant ssh'' + - Windows Ubuntu App starten + * weil key auf host geändert hat, muss neuer key angepasst werden. \\ ''ssh-keygen -f "/home/roru/.ssh/known_hosts" -R "[127.0.0.1]:2222"'' + * ''ssh 127.0.0.1 -p2222'' + * check ob target erreichbar: ''ansible -i "127.0.0.1," -e "ansible_port=2222 ansible_user=vagrant" -m ping all'' + + +## Playbook ausführen +```ansible-playbook -i "127.0.0.1," -e "ansible_port=2222 ansible_user=vagrant" webserver.yml``` +oder, wenn eintrag in `/etc/ansible/hosts`: +```ansible-playbook webserver.yml``` +eintrag wäre z.B.: +``` +[testumgenbung] +local ansible_host=127.0.0.1 ansible_port=2222 ansible_user=vagrant +``` + +mit `--check --diff` am schluss wird Ausführung nur simuliert. + +## Beispiel Playbook (mit Endung `.yml`) +``` +--- +- hosts: local + tasks: + - name: create file + file: + path: "~/file.txt" + state: touch + + - name: create file with content + copy: + dest: "~/file-with-content.txt" + content: | + dog1 + tiger + + - name: create multiple files + file: + path: "{{ item }}" + state: touch + mode: 0775 + with_items: + - file1.txt + - file2.txt + - file3.txt + + - name: create multiple files with different attributes + file: + path: "{{ item.location }}" + state: touch + mode: "{{ item.mode }}" + with_items: + - { location: 'file10.txt',mode: '0566' } + - { location: 'file11.txt',mode: '0766' } +... +```