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
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
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 können auf verschiedene Weisen in Ansible hinterlegt werden:
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 }}"
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'
Siehe Semaphore.