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]]