centos:ansible:detail

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
centos:ansible:detail [09.01.2020 10:24. ] – [Script ausführen] djangocentos:ansible:detail [24.09.2022 14:26. ] (aktuell) – gelöscht django
Zeile 1: Zeile 1:
-====== Ansible - Erweiterte Konfigurationsbeispiele ====== 
-{{:centos:ansible:ansible_logo.png?nolink&125|Bild: Ansible Logo}} \\ \\ 
  
-Nachdem wir uns bereits eingehend mit den **[[centos:ansible:start#grundlagen|Grundlagen]]**, mit der **[[centos:ansible:start#installation|Installation von Ansible]]** und auch schon mit der Grundkonfiguration beschäftigt sowie erste Erfahrungen mit **[[centos:ansible:first#playbook_-_beispiele|Playbooks]]** gesammelt haben, wollen wir uns nun mit der tiefergehenden Konfiguration von Ansible beschäftigen.  
- 
-===== Inventory ===== 
-Zur Verwaltung/Inventarisierung  von mehreren Knoten oder Hosts in unserer Infrastrukturumgebung verwendet Ansible Listen oder eine Gruppe von Listen, die man als **Inventory** bezeichnet. Im einfachsten Fall beschreibt solch eine Inventory-Datei lediglich Hosts und/oder deren Hostnamen  bzw. IP-Adressen. Auf der anderen Seite kann man aber auch komplexe Landschaften abbilden und Eigenschaften einzelnen Hosts und /oider Gruppe zuordnen. 
- 
-Im Kapitel **[[centos:ansible:first#remote_user-anpassung_via_inventory_hostsyml|erweiterte Konfiguration - Anpassungen "Inventory hosts.yml"]]** hatten wir uns schon einmal kurz mit dem Thema **Inventory** beschäftigt. In den nachfolgenden Beispielen wollen wir  nun intensiver auf Details dazu eingehen. 
- 
-Im Kapitel **[[https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html|How to build your inventory]]** der Ansible-Onlinedoku finden sich dazu vile tiefergehende Informationen. 
- 
-{{page>centos:ansible:hosts&nofooter&showheader}} 
- 
- 
-==== ~/ansible/hosts.yml ==== 
-Im Kapitel **[[centos:ansible:first#remote_user-anpassung_via_inventory_hostsyml|erweiterte Konfiguration - Anpassungen "Inventory hosts.yml"]]** hatten wir uns schon einmal kurz mit dem Thema **Inventory** beschäftigt.  
- 
-In der Ansible-Konfigurationsdatei **''/etc/ansible/ansible.cfg''** zeigt zu Beginn der default-Eintrag auf die vorgenannte Datei **[[#etc_ansible_hosts|/etc/ansible/hosts]]**. 
- 
-<code> ... 
- 
-[defaults] 
- 
-# some basic default values... 
- 
-#inventory      = /etc/ansible/hosts 
-... 
-</code> 
- 
-Unsere erweiterte YAML-Konfigurationsdatei für die Hosts wolen wir aber künftig in der Ansible-Administationsumgebung unseres Admin-Users vorhalten und pflegen. Im Beispiel unseres Adminusers **django** wäre dies entsprechend der Pfad **''/home/django/ansible/hosts.yml''** 
- 
-Wir hinterlegen also dort, dass zukünftig die Inventory-Datei **''hosts.yml''** eingelesen und ausgewertet werden soll. 
-   # vim /etc/ansible/ansible.cfg 
- 
-<code>[defaults] 
- 
-# some basic default values... 
- 
-# Django : 2020-01-01  
-# default: #inventory      = /etc/ansible/hosts 
-inventory      = /home/django/ansible/hosts.yml 
-</code> 
- 
-=== inventory - Beispiel === 
-Dort legen wir uns unsere erweiteret Host-Datei im YAML-Format an. 
-   $ vim /home/django/ansible/hosts.yml> 
- 
-<file bash /home/django/ansible/hosts.yml>--- #YAML start syntax (optional)  
-all: 
-  hosts:                                                                       # nicht zugeordnete Hosts 
-    n3r0.intra.nausch.org: 
-    g33k.intra.nausch.org: 
-  children:                                                                    # Untermenge/-gruppe aller Hosts  
-    centos8:                                                                   # Gruppe der definierten CentOS 8 Hosts 
-      vars:                                                                    # Variablen, die für die ganze Gruppe gelten 
-        ansible_ssh_port: 22 
-        ansible_ssh_user: ansible 
-        ansible_ssh_private_key_file: /home/django/.ssh/id_ed25519_ansible 
-      hosts:                                                                   # Liste aller Hosts die dieser gruppe zugehören 
-        www8.dmz.nausch.org: 
-          ansible_ssh_host: 10.0.0.90                                          # Hostspezifische Ansible-Systemvariable 
-    centos7:                                                                   # Gruppe der definierten CentOS 7 Hosts 
-      vars:                                                                    # Variablen, die für die ganze Gruppe gelten 
-        ansible_ssh_port: 22 
-        ansible_ssh_user: ansible 
-        ansible_ssh_private_key_file: /home/django/.ssh/id_rsa_ansible        
-      hosts:                                                                   # Liste aller Hosts die dieser gruppe zugehören 
-        www7.dmz.nausch.org: 
-          ansible_ssh_host: 10.0.0.97                                          # Hostspezifische Ansible-Systemvariable 
-                                                                               # optische Abtrennung zu nachfolgenden Definitionen 
-    ffmucgluon:                                                                # Definition der Gruppe aaler Freifunk Knoten/Hosts 
-      vars:                                                                    # Variablen, die für die ganze Gruppe gelten 
-        ansible_ssh_port: 22 
-        ansible_ssh_user: root 
-        ansible_ssh_private_key_file: /home/django/.ssh/id_rsa4096_freifunk_2014 
-        contact_info: 'Django [BOfH] | django@nausch.org | chat -> @django' 
-      hosts:                                                                   # Liste aller Hosts die dieser gruppe zugehören 
-        ff_pliening_gbw_ug:                                                    # Host 
-          hostname: ff_pliening_gbw_ug                                         # Hostspezifische Informationen / Variablen 
-          latitude: -48.19861319429455 
-          longitude: -168.2017571420684 
-          branch: stable 
-          domain: ffmuc_muc_ost 
-          director: ffmuc_muc_ost 
-          modell: TP-Link TL-WDR4300 v1 
-          ansible_ssh_host: 2001:608:a01:102:32b5:c2ff:fe56:62b1 
- 
-        ff_pliening_gbw_egod:                                                  # Host  
-          hostname: ffplieninggbwegod                                          # Hostspezifische Informationen / Variablen 
-          pretty_hostname: ff_pliening_gbw_egod 
-          latitude: 48.198652080 
-          longitude: 11.797969940 
-          branch: stable 
-          domain: ffmuc_muc_ost 
-          director: ffmuc_muc_ost 
-          modell: Ubiquiti UniFi-AC-MESH 
-          ansible_ssh_host: 2001:608:a01:102:1ae8:29ff:fea9:22ed 
- 
-        ff_pliening_gbw_ogod:                                                  # Host 
-          hostname: ffplieninggbwogod                                          # Hostspezifische Informationen / Variablen 
-          pretty_hostname: ff_pliening_gbw_ogod 
-          latitude: 48.198699460 
-          longitude: 11.798053090 
-          branch: stable 
-          domain: ffmuc_muc_ost 
-          director: ffmuc_muc_ost 
-          modell: Ubiquiti UniFi-AC-MESH 
-          ansible_ssh_host: 2001:608:a01:102:1ae8:29ff:fec0:aaae 
- 
-        ff_pliening_gbw_dgod:                                                  # Host 
-           hostname: ffplieninggbwdgod                                         # Hostspezifische Informationen / Variablen 
-           prettyhostname: ff_pliening_gbw_dgod 
-           latitude: 48.198671230 
-           longitude: 11.798122820 
-           branch: stable 
-           domain: ffmuc_muc_ost 
-           director: ffmuc_muc_ost 
-           modell: Ubiquiti UniFi-AC-MESH 
-           ansible_ssh_host: 2001:608:a01:102:1ae8:29ff:fec6:c8eb 
- 
-        ff_pliening_gbw_cpod:                                                  # Host 
-           hostname: ffplieninggbwcpod                                         # Hostspezifische Informationen / Variablen 
-           pretty_hostname: ff_pliening_gbw_cpod 
-           latitude: 48.198726280 
-           longitude: 11.798159030 
-           branch: stable 
-           domain: ffmuc_muc_ost 
-           director: ffmuc_muc_ost 
-           modell: Ubiquiti UniFi-AC-MESH 
-           ansible_ssh_host: 2001:608:a01:102:1ae8:29ff:fec6:c8dd 
- 
-        ff_pliening_gbw_kvm_ol:                                                # Host 
-           hostname: ffplieninggbwkvmol                                        # Hostspezifische Informationen / Variablen 
-           pretty_hostname: ff_pliening_gbw_kvm_ol 
-           latitude: 48.198646720 
-           longitude: 11.798047720 
-           branch: stable 
-           domain: ffmuc_muc_ost 
-           director: ffmuc_muc_ost 
-           modell: Red Hat KVM 
-           ansible_ssh_host: 2001:608:a01:102:5054:ff:fe9e:b358 
- 
-... #YAML end syntax</file> 
- 
- 
-Die YAML-Konfigurationsdatei enthält entsprechende Bemerkungen, die die einzelnen Blöcke und Funktionen ausreichend beschreiben. Wie können so individuelle und Anwendungsspezifische Lösungen abbilden.  
- 
-<WRAP center round info 100%> 
-Natürlich gilt zu bedenken, dass das gezeigte Beispiel mit nur 8 Hosts und überschaubaren Variablen doch schon recht umfangreich geworden ist, wenn dies alles in eine Inventory-Datei gepackt wird. Bei Dutzenden oder Hunderten von Maschinen wird dies dann daraus schwer zu handeln - von verschachtelten Gruppen in Gruppen, oder Host die Mitglied in mehreren Gruppen sein sollen, sprechen wir dann besser gar nicht. Hier werden wir später auf eine andere/aufgeteilte Lösung einschwenken müssen.  
-</WRAP> 
- 
-/* Viele Hinweise und Beispiel zu den Gruppen finden sich auch hier im Kapitel **[[https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html|How to build your inventory]]** der Ansible Dokumentation enthalten.*/ 
- 
-=== playbook === 
-Unsere gerade angelegte Inventory-Datei wollen wir nun verwenden um die Geolocation-Daten unserer Freifunk-Knoten zu organisieren. Die Geodaten sind in der obigen Inventory-Datei in den beiden Variablen **''latitude''** und **''longitude''** gespeichert - diese beiden Variablen nutzen wir nun in unserem Playbook. 
-   $ ~/ansible/08_set_location.yml 
- 
-<file bash ~/ansible/08_set_location.yml> 
---- 
-- hosts: ffmucgluon 
-  gather_facts: False 
- 
-  tasks: 
-    - name: "Set GEO location of our own ffmuc-nodes" 
-      #https://docs.ansible.com/ansible/latest/modules/raw_module.html 
-      raw: uci set gluon-node-info.@location[0]="location"; uci set gluon-node-info.@location[0].share_location="1"; uci set gluon-node-info.@location[0].latitude="{{ latitude }}" ; uci set gluon-node-info.@location[0].longitude="{{ longitude }}"; uci commit gluon-node-info</file> 
- 
-=== Script ausführen === 
-Nun wollen wir unser ersten Playbook ausführen, um die Geodaten aus der Inventory-Datei auf unseren Freifunk-Knoten abzugleichen; hierzu rufen wir unser Script wie folgt auf: 
-   $ ansible-playbook -v 08_change_contact.yml 
- 
-<html><pre class="code"> 
-<font style="color: rgb(43, 100, 164)">Using /etc/ansible/ansible.cfg as config file</font> 
-<font style="color: rgb(0, 0, 0)">BECOME password:  
- 
-PLAY [ffmucgluon] ********************************************************************************************************************** 
- 
-<font style="color: rgb(0, 0, 0)">TASK [Update new contact-address on own ffmuc-nodes] ***********************************************************************************</font> 
-<font style="color: rgb(196, 160, 0)">changed: [ff_pliening_gbw_egod] => {"changed": true, "rc": 0, "stderr": "Shared connection to 2001:608:a01:102:1ae8:29ff:fea9:22ed closed.\r\n", "stderr_lines": ["Shared connection to 2001:608:a01:102:1ae8:29ff:fea9:22ed closed."], "stdout": "", "stdout_lines": []} 
-changed: [ff_pliening_gbw_kvm_ol] => {"changed": true, "rc": 0, "stderr": "Shared connection to 2001:608:a01:102:5054:ff:fe9e:b358 closed.\r\n", "stderr_lines": ["Shared connection to 2001:608:a01:102:5054:ff:fe9e:b358 closed."], "stdout": "", "stdout_lines": []} 
-changed: [ff_pliening_gbw_ogod] => {"changed": true, "rc": 0, "stderr": "Shared connection to 2001:608:a01:102:1ae8:29ff:fec0:aaae closed.\r\n", "stderr_lines": ["Shared connection to 2001:608:a01:102:1ae8:29ff:fec0:aaae closed."], "stdout": "", "stdout_lines": []} 
-changed: [ff_pliening_gbw_ug] => {"changed": true, "rc": 0, "stderr": "Shared connection to 2001:608:a01:102:32b5:c2ff:fe56:62b1 closed.\r\n", "stderr_lines": ["Shared connection to 2001:608:a01:102:32b5:c2ff:fe56:62b1 closed."], "stdout": "", "stdout_lines": []} 
-changed: [ff_pliening_gbw_dgod] => {"changed": true, "rc": 0, "stderr": "Shared connection to 2001:608:a01:102:1ae8:29ff:fec6:c8eb closed.\r\n", "stderr_lines": ["Shared connection to 2001:608:a01:102:1ae8:29ff:fec6:c8eb closed."], "stdout": "", "stdout_lines": []} 
-changed: [ff_pliening_gbw_cpod] => {"changed": true, "rc": 0, "stderr": "Shared connection to 2001:608:a01:102:1ae8:29ff:fec6:c8dd closed.\r\n", "stderr_lines": ["Shared connection to 2001:608:a01:102:1ae8:29ff:fec6:c8dd closed."], "stdout": "", "stdout_lines": []}</font><br> 
-<font style="color: rgb(0, 0, 0)">PLAY RECAP *****************************************************************************************************************************</font> 
-<font style="color: rgb(196, 160, 0)">ff_pliening_gbw_cpod       </font><font style="color: rgb(0, 0, 0)">: </font><font style="color: rgb(25, 100, 5)">ok=1    </font><font style="color: rgb(196, 160, 0)">changed=1    </font><font style="color: rgb(0, 0, 0)">unreachable=0    failed=0    skipped=0    rescued=0    ignored=0</font> 
-<font style="color: rgb(196, 160, 0)">ff_pliening_gbw_dgod       </font><font style="color: rgb(0, 0, 0)">: </font><font style="color: rgb(25, 100, 5)">ok=1    </font><font style="color: rgb(196, 160, 0)">changed=1    </font><font style="color: rgb(0, 0, 0)">unreachable=0    failed=0    skipped=0    rescued=0    ignored=0</font> 
-<font style="color: rgb(196, 160, 0)">ff_pliening_gbw_egod       </font><font style="color: rgb(0, 0, 0)">: </font><font style="color: rgb(25, 100, 5)">ok=1    </font><font style="color: rgb(196, 160, 0)">changed=1    </font><font style="color: rgb(0, 0, 0)">unreachable=0    failed=0    skipped=0    rescued=0    ignored=0</font> 
-<font style="color: rgb(196, 160, 0)">ff_pliening_gbw_kvm_ol     </font><font style="color: rgb(0, 0, 0)">: </font><font style="color: rgb(25, 100, 5)">ok=1    </font><font style="color: rgb(196, 160, 0)">changed=1    </font><font style="color: rgb(0, 0, 0)">unreachable=0    failed=0    skipped=0    rescued=0    ignored=0</font> 
-<font style="color: rgb(196, 160, 0)">ff_pliening_gbw_ogod       </font><font style="color: rgb(0, 0, 0)">: </font><font style="color: rgb(25, 100, 5)">ok=1    </font><font style="color: rgb(196, 160, 0)">changed=1    </font><font style="color: rgb(0, 0, 0)">unreachable=0    failed=0    skipped=0    rescued=0    ignored=0</font> 
-<font style="color: rgb(196, 160, 0)">ff_pliening_gbw_ug         </font><font style="color: rgb(0, 0, 0)">: </font><font style="color: rgb(25, 100, 5)">ok=1    </font><font style="color: rgb(196, 160, 0)">changed=1    </font><font style="color: rgb(0, 0, 0)">unreachable=0    failed=0    skipped=0    rescued=0    ignored=0</font> 
-<br></pre> 
-</html> 
- 
-=== Ergebnis === 
-Alle unsere eigenen definierten Freifunk Knoten haben nun auf der **[[https://map.ffmuc.net/#!/de/map/18e829a922ed|Freifunk München Karte]]** die aktualisierten GeoDaten. 
- 
-==== Inventarisierung größerer Umgebungen ==== 
- 
-FIXME FIXME FIXME FIXME FIXME FIXME FIXME FIXME FIXME FIXME FIXME FIXME  
- 
- 
- 
-/* https://gerardnico.com/infra/ansible/start */ 
  • centos/ansible/detail.1578565471.txt.gz
  • Zuletzt geändert: 09.01.2020 10:24.
  • von django