Benutzer-Werkzeuge

Webseiten-Werkzeuge


ansible

Ansible ist ein Open-Source Tool zur zentralen Konfiguration und Administration von Computern. Im Gegensatz zu vielen anderen Konfigurationsmanagement tools erfordert Ansible keine zwingenden Agents auf den Clients.

ansible-playbook <playbook-file> -i <inventory-file>
ansible -i <inventory-file> <group> -m <module> --user <serveradmin> --ask-pass // prompt for pass
ansible-playbook <playbook> --user <serveradmin> --ask-pass --ask-become-pass -i <inventory-file> // 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 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=<Interface-Name>"
        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.

ansible.txt · Zuletzt geändert: 2024/08/21 16:15 von admin