Ansible KIT: Unterschied zwischen den Versionen

Aus Xinux Wiki
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>
[firewalls]
+
[it]
fw1 ansible_host=192.168.3.101
+
ns      ansible_host=10.88.113.21
fw2 ansible_host=192.168.3.102
+
mail    ansible_host=10.88.113.3
fw3 ansible_host=192.168.3.103
+
fw      ansible_host=10.88.113.1
fw4 ansible_host=192.168.3.104
+
proxy    ansible_host=10.88.113.4
fw5 ansible_host=192.168.3.105
+
checkmk  ansible_host=10.88.113.5
fw6 ansible_host=192.168.3.106
+
www      ansible_host=10.88.113.11
fw7 ansible_host=192.168.3.113
+
revproxy ansible_host=10.88.113.41
 +
 
  
[firewalls:vars]
+
[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