Ansible KIT: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| + | = Einführung = | ||
| + | *Ansible ist ein agentenloses Automatisierungstool, das über SSH arbeitet. | ||
| + | *Es ermöglicht eine schnelle und einfache Verwaltung mehrerer Server gleichzeitig. | ||
| + | |||
=Installation= | =Installation= | ||
*sudo apt install ansible sshpass | *sudo apt install ansible sshpass | ||
| Zeile 9: | Zeile 13: | ||
*vi > ~/ansible/hosts | *vi > ~/ansible/hosts | ||
<pre> | <pre> | ||
| − | [ | + | [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_user=kit | ||
ansible_password=kit | ansible_password=kit | ||
| Zeile 48: | Zeile 53: | ||
=Ist ip_forward eingeschaltet?= | =Ist ip_forward eingeschaltet?= | ||
*ansible all -i ~/ansible/hosts -a "cat /proc/sys/net/ipv4/ip_forward" | *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. | ||
| + | |||
| + | * vi install_nginx.yaml | ||
| + | <pre> | ||
| + | --- | ||
| + | - 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 | ||
| + | </pre> | ||
| + | |||
| + | == Ausführen == | ||
| + | * ansible-playbook -i hosts install_nginx.yaml | ||
| + | |||
| + | = Konfigurationsdatei ändern = | ||
| + | Nun ändern wir die Startseite von Nginx. | ||
| + | |||
| + | * vi modify_nginx_config.yaml | ||
| + | <pre> | ||
| + | --- | ||
| + | - 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 | ||
| + | </pre> | ||
| + | |||
| + | == 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. | ||
| + | |||
| + | * vi install_local_package.yaml | ||
| + | <pre> | ||
| + | --- | ||
| + | - 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 | ||
| + | </pre> | ||
| + | |||
| + | == Ausführen == | ||
| + | * 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. | ||
| + | |||
| + | * vi create_user.yaml | ||
| + | <pre> | ||
| + | --- | ||
| + | - 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: "{{ 'mustang' | password_hash('sha512') }}" | ||
| + | </pre> | ||
| + | |||
| + | == Ausführen == | ||
| + | * 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 | ||
Aktuelle Version vom 19. März 2025, 19:54 Uhr
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.
- vi install_nginx.yaml
---
- 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
Ausführen
- 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.
- vi install_local_package.yaml
---
- 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
Ausführen
- 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.
- vi create_user.yaml
---
- 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: "{{ 'mustang' | password_hash('sha512') }}"
Ausführen
- 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