Ansible ist ein Open-Source Tool zur zentralen Konfiguration und Administration von Computern. Im Gegensatz zu vielen anderen [[configuration_management|Konfigurationsmanagement]] tools erfordert Ansible keine zwingenden Agents auf den Clients. ansible-playbook -i ansible -i -m --user --ask-pass // prompt for pass ansible-playbook --user --ask-pass --ask-become-pass -i // prompt for pass and sudo pass =====Inventarliste===== Sobald Inventory-Hosts aufgelistet sind, können ihnen Variablen in einfachen Textdateien (in einem Unterverzeichnis namens 'group_vars/' oder 'host_vars/') oder direkt in der Inventory-Datei zugewiesen werden. // file located unter /etc/ansible/hosts [webservers] www1.example.com www2.example.com [dbservers] db0.example.com db1.example.com =====Playbook===== Playbooks werden in [[yaml|YAML]] geschrieben und können mehrere Teile Ihrer IT-Infrastruktur fein orchestrieren, mit sehr detaillierter Kontrolle darüber, wie viele Maschinen gleichzeitig angegangen werden müssen. Hier beginnt Ansible am interessantesten zu werden. --- - name: Apache server installed hosts: webservers become: true tasks: - name: latest Apache version installed yum: name: httpd state: latest - name: Apache enabled and running service: name: httpd enabled: true state: started - name: copy index.html copy: src: web.html dest: /var/www/html/index.html =====Zugangsdaten===== Zugangsdaten können auf verschiedene Weisen in Ansible hinterlegt werden: * Direkte Angabe **in Playbooks**: Sie können Benutzernamen und Passwörter direkt im Playbook verwenden. Beachten Sie jedoch, dass dies unsicher sein kann, da die Zugangsdaten im Klartext im Playbook erscheinen würden. * Verwendung von **Variablen und Vaults**: Sie können Variablen verwenden, um Zugangsdaten zu speichern, und Ansible Vault verwenden, um diese Variablen zu verschlüsseln. Dies bietet eine sicherere Möglichkeit, Zugangsdaten zu verwalten. * Verwendung von **Ansible Tower oder AWX**: Diese Tools bieten eine zentrale und sichere Möglichkeit, Inventare und Zugangsdaten zu verwalten. Sie bieten auch erweiterte Funktionen zur Automatisierung und Ausführung von Playbooks. =====Cisco===== Siehe [[Cisco]]. --- - name: Konfiguration von VLAN auf Switches hosts: all gather_facts: no connection: network_cli tasks: - name: Konfiguration des VLANs ios_command: commands: - vlan 100 when: ansible_network_os == 'ios' - name: VLAN der Schnittstelle zuweisen ios_config: lines: - interface GigabitEthernet0/1 # Interface, das dem VLAN zugewiesen wird (anpassen) - switchport access vlan 100 # VLAN-ID, die dem Interface zugewiesen wird (anpassen) when: ansible_network_os == 'ios' - name: Konfiguration speichern ios_command: commands: - write memory when: ansible_network_os == 'ios' --- - name: Configure MikroTik Router with VLANs from Cisco Switch hosts: mikrotik_router gather_facts: no tasks: - name: Fetch VLAN configurations from Cisco Switch raw: "show vlan brief" register: cisco_vlan_output delegate_to: cisco_switch - name: Parse VLAN configurations set_fact: cisco_vlans: "{{ cisco_vlan_output.stdout_lines | map('split') | list }}" - name: Configure MikroTik Router with VLANs mikrotik_command: commands: - "/interface vlan add name=vlan{{ item.0 }} vlan-id={{ item.0 }} interface=" wait_for: result wait_for_result: true host: "{{ inventory_hostname }}" username: "{{ mikrotik_username }}" password: "{{ mikrotik_password }}" loop: "{{ cisco_vlans }}" =====HP===== Siehe [[HP]]. --- - name: Konfiguration von VLAN auf HP Switches hosts: all gather_facts: no connection: network_cli tasks: - name: Konfiguration des VLANs procurve_config: lines: - vlan 100 provider: "{{ cli }}" when: ansible_network_os == 'procurve' - name: VLAN der Schnittstelle zuweisen procurve_config: lines: - interface 1 # Interface, das dem VLAN zugewiesen wird (anpassen) - untagged vlan 100 # VLAN-ID, die dem Interface zugewiesen wird (anpassen) provider: "{{ cli }}" when: ansible_network_os == 'procurve' - name: Konfiguration speichern procurve_config: lines: write memory provider: "{{ cli }}" when: ansible_network_os == 'procurve' =====WebUI===== Siehe Semaphore. =====Links===== * [[https://www.youtube.com/watch?v=w9eCU4bGgjQ|First Steps]] * [[https://www.youtube.com/watch?v=p2a-_L_zNOo|Ubuntu installation]] * [[https://4sysops.com/archives/encrypt-and-decrypt-with-ansible-vault/|Encrypt and decrypt passwordswith Ansible Vault]]