Ansible KIT
Einführung
- Ansible ist ein agentenloses Automatisierungstool, das über SSH arbeitet.
- Es ermöglicht eine schnelle und einfache Verwaltung mehrerer Server gleichzeitig.
Installation
- sudo apt install ansible sshpass
Verzeichnis erstellen
- mkdir -p ~/ansible
Arbeitsverzeichnis erstellen
- mkdir -p ~/ansible
- cd ~/ansible
Host Datei erstellen
- vi > ~/ansible/hosts
[it] ns ansible_host=10.88.113.21 mail ansible_host=10.88.113.3 fw ansible_host=10.88.113.1 proxy ansible_host=10.88.113.4 checkmk ansible_host=10.88.113.5 www ansible_host=10.88.113.11 revproxy ansible_host=10.88.113.41 [it:vars] ansible_user=kit ansible_password=kit ansible_become=true ansible_become_method=sudo ansible_become_password=kit ansible_ssh_common_args='-o StrictHostKeyChecking=no'
Wir pingen
- ansible all -i ~/ansible/hosts -m ping
Playbooks
- vi ~/ansible/install_ca.yml
- hosts: firewalls
gather_facts: yes
tasks:
- name: Kopiere CA-Zertifikat auf die Firewalls
copy:
src: ca.crt
dest: /usr/local/share/ca-certificates/ca.crt
owner: root
group: root
mode: "0644"
- name: Zertifikatsdatenbank aktualisieren
command: sudo update-ca-certificates
Ist ip_forward eingeschaltet?
- ansible all -i ~/ansible/hosts -a "cat /proc/sys/net/ipv4/ip_forward"
Paket aus dem Repository installieren und Dienst starten
Nun installieren wir das Paket `nginx` aus dem Repository und starten den zugehörigen Dienst.
Datei `install_nginx.yaml` erstellen:
- vi install_nginx.yaml
Inhalt der Datei: --- - name: Nginx installieren und starten
hosts: all
become: yes
tasks:
- name: Paket nginx installieren
apt:
name: nginx
state: present
- name: Dienst starten und aktivieren
service:
name: nginx
state: started
enabled: yes
Dann ausführen mit:
- ansible-playbook -i hosts install_nginx.yaml
Konfigurationsdatei ändern
Nun ändern wir die Startseite von Nginx.
- vi modify_nginx_config.yaml
---
- name: Nginx-Konfiguration anpassen
hosts: all
become: yes
tasks:
- name: Standardseite ändern
copy:
dest: /var/www/html/index.html
content: "Willkommen auf dem neuen Server – Bereitgestellt mit Ansible"
- name: Nginx neu starten
service:
name: nginx
state: restarted
ausführen
- ansible-playbook -i hosts modify_nginx_config.yaml
Lokales Paket installieren
Nun installieren wir ein lokales Paket, das sich im Ansible-Verzeichnis befindet.
Datei `install_local_package.yaml` erstellen:
- vi install_local_package.yaml
Inhalt der Datei: --- - name: Lokales .deb-Paket installieren
hosts: all
become: yes
tasks:
- name: Paket aus lokalem Verzeichnis installieren
apt:
deb: /home/kit/ansible/packages/custom_package.deb
Dann ausführen mit:
- ansible-playbook -i hosts install_local_package.yaml
Benutzer freddy mit Passwort mustang anlegen
Nun wird ein neuer Benutzer `freddy` mit dem Passwort `mustang` angelegt.
Datei `create_user.yaml` erstellen:
- vi create_user.yaml
Inhalt der Datei: --- - name: Neuen Benutzer freddy anlegen
hosts: all
become: yes
tasks:
- name: Benutzer freddy anlegen
user:
name: freddy
shell: /bin/bash
groups: sudo
append: yes
password: "Vorlage:'mustang'"
Dann ausführen mit:
- ansible-playbook -i hosts create_user.yaml
Änderungen nur an einem Host durchführen
Wenn eine Änderung nur auf `server1` durchgeführt werden soll, kann `-l` genutzt werden.
Beispiel:
- ansible-playbook -i hosts install_nginx.yaml -l server1
Links und weitere Informationen
- Offizielle Ansible-Dokumentation: https://docs.ansible.com/
- Ansible Best Practices: https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html
- YAML-Syntax für Ansible: https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html