Ansible ist ein Open-Source-Tool zur Konfigurationsverwaltung und Anwendungsbereitstellung. Es hilft, den Verwaltungsaufwand zu reduzieren, indem es die Bereitstellung der App automatisiert und die IT-Infrastruktur verwaltet.
Mit ansible Wir werden den Apache2-Webserver in Ubuntu 20.04 installieren. Dafür müssen wir eine Konfiguration in YAML-Syntax namens Ansible Playbooks erstellen .
Normalerweise gibt es einen Steuerknoten und Hostknoten. Ansible ist auf dem Kontrollknoten installiert und führt das Playbook zur Bereitstellung auf Hostknoten aus. In diesem Lab werden wir es in einem einzelnen Knoten installieren und verwenden.
Ansible auf Ubuntu installieren
Aktualisieren Sie zunächst Ihr System. Der folgende Befehl ruft das neueste Paket ab:
$ sudo apt update
Ansible ist im Basis-Repository von Ubuntu 20.04 verfügbar. Um Ansible zu installieren, führen Sie den folgenden Befehl aus:
$ sudo apt install ansible -y
Überprüfen Sie dann die Ansible-Version mit dem Befehl
$ ansible --version
Die Hostkonfigurationsdatei wird in der Datei /etc/ansible/hosts gespeichert. Fügen Sie die IP Ihres Localhost-Servers mit Hilfe des folgenden Befehls zur Datei hinzu. Stellen Sie sicher, dass Sie einen sudo-Benutzer haben. In unserem Fall hat „ubuntu“ das sudo-Privileg. Hier habe ich meinen Namen als "myserver" angegeben, Sie können Ihren eigenen angeben. Denken Sie auch daran, dass der Benutzer ubuntu ein sudo-Benutzer im System ist.
$ echo "myserver ansible_host=127.0.0.1 ansible_user=ubuntu" >> /etc/ansible/host
Überprüfen Sie es einfach mit dem Befehl,
$ ansible myserver -m ping
Sie sollten eine Pong-Antwort ähnlich dem Screenshot unten erhalten.
Erstellen eines Playbooks
Lassen Sie uns nun ein Playbook mit dem Namen „apache.yml“ erstellen, um den neuesten Apache-Webserver zu installieren und auszuführen.
$ vi apache.yml
Fügen Sie der Datei den folgenden Inhalt hinzu
---
- hosts: myserver
become: true
vars:
- vars/default.yml
- tasks:
- name: Install latest version of Apache
apt: name=apache2 update_cache=yes state=latest
- name: Create document root for your domain
file:
path: "/var/www/{{ http_host }}"
state: directory
owner: "{{ app_user }}"
mode: '0755'
- name: Copy your index page
template:
src: "files/index.html.j2"
dest: "/var/www/{{ http_host }}/index.html"
- name: Set up virtuahHost
template:
src: "files/apache.conf.j2"
dest: "/etc/apache2/sites-available/{{ http_conf }}"
notify: restart-apache
- name: "UFW firewall allow HTTP on port {{ http_port }}"
ufw:
rule: allow
port: "{{ http_port }}"
proto: tcp
handlers:
- name: restart-apache
service:
name: apache2
state: restarted
Hier,
- Host :ist der Hostname, wie Sie ihn in der Datei /etc/ansible/hosts definiert haben
- werden:wahr ist eine Privilegien-Eskalation, weil man sudo ist
- vars :zum Definieren der Variablen
- Aufgaben :Vier Aufgaben sind definiert. Installieren von Apache, Kopieren der Indexseite, Einrichten des virtuellen Hosts, Zulassen von http von der UFW-Firewall, falls bereits aktiviert.
- Handler :Um Apache neu zu starten, wenn alle anderen Aufgaben erfolgreich waren.
Zusammen mit dem Playbook sollten Sie drei weitere Dateien vars/default.yml, files/apache.conf.j2 und files/index.html.j2 definieren. Lassen Sie uns sie nacheinander erstellen.
vars/default.yml
Die Datei default.yml enthält den Domänennamen, den Speicherort der Konfigurationsdatei und den HTTP-Port. Erstellen Sie die Datei und fügen Sie Folgendes hinzu.
http_host: "mydomain.local"
http_conf: "my_domain.conf"
http_port: "80"
files/apache.conf.j2
Die Apache-Konfigurationsvorlage enthält die Konfiguration für den virtuellen Host. Die Variablen sind innerhalb von {{ }} definiert und werden aus der oben definierten Vars-Datei abgerufen. Erstellen Sie die Datei apache.conf.js und fügen Sie den folgenden Inhalt hinzu.
<VirtualHost *:{{ http_port }}>
ServerAdmin webmaster@localhost
ServerName {{ http_host }}
ServerAlias www.{{ http_host }}
DocumentRoot /var/www/{{ http_host }}
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
files/index.html.j2
Eine weitere Vorlage ist Ihre Indexdatei. Erstellen Sie die Datei und fügen Sie den folgenden Inhalt hinzu. Sie können gemäß Ihren Anforderungen ändern.
<html>
<head>
<title>{{ http_host }}</title>
</head>
<body>
<h1>Welcome to {{ http_host }}</h1>
</body>
</html>
Jetzt können Sie ansible-playbook mit dem folgenden Befehl ausführen.
$ ansible-playbook apache.yml --ask-become-pass
Sie werden aufgefordert, ein Passwort für den sudo-Benutzer einzugeben. Der Status sollte wie unten gezeigt in Ordnung sein.
Dadurch wird Apache auch auf dem Standardport 80 ausgeführt. Sie können überprüfen, ob Sie localhost in Ihrem bevorzugten Browser durchsuchen.
Schlussfolgerung
Ansible ist ein hilfreiches Tool, da es agentenlos ist und das Schreiben der Konfiguration einfach ist. Weitere Konfigurationen finden Sie in der offiziellen Dokumentation von Ansible. Bitte kommentieren Sie, wenn Sie Probleme beim Schreiben des Playbooks auf Ansible haben.