Ansible, ein kostenloses und Open-Source-Python-basiertes Projekt von Red Hat, ist eine beliebte Konfigurationsmanagement- und IT-Automatisierungsplattform.
Es ist plattformübergreifend und kann mit den meisten modernen Betriebssystemen arbeiten, einschließlich Linux, Windows und Mac. Es unterstützt eine deklarative Sprache, die in geschrieben ist YAML
or YAML Ain't Markup Language
Systemkonfiguration zu beschreiben.
Ansible hat zusammen mit anderen modernen Konfigurationsmanagement-Plattformen die IT-Automatisierung und Industriestandards revolutioniert. Konfigurationsmanagement-Tools sind Teil der DevOps Toolset und sind ein untrennbarer Bestandteil eines modernen IT-Prozesslebenszyklus. Dies gilt für jede moderne Infrastrukturumgebung, unabhängig davon, ob sie auf einer On-Premise-, Hybrid- oder Cloud-Umgebung aufgebaut ist. Nicht nur für DevOps, Ansible kann auch dabei helfen, viele alltägliche Aufgaben zu automatisieren, die von einem System Administrator.
Einer der Vorteile der Verwendung Ansible ist, dass es agentenlos ist und nicht viel braucht, um loszulegen SSH Zugriff auf den Zielcomputer und die unterstützte Version von Python, die auf den meisten modernen Betriebssystemen bereits standardmäßig installiert ist. Da es sich um ein leichtgewichtiges Tool handelt, kann es außerdem mit einem Erbe innovativer Systeme bereitgestellt und verwendet werden.
Verwendung von Ansible
Besetzung
Ansible ist ein Tool der Wahl für die Orchestrierung verschiedener Systemadministrations- und Bereitstellungsaufgaben. Playbooks ermöglichen die Verwendung derselben Orchestrierung workflows über verschiedene Projekte und YAML
basierte Konfigurationsdaten ermöglichen das Speichern und Versionieren Ihrer Infrastruktur in einem Git-Repository oder einem unterstützten Versionskontrolle Plattform.
Anwendungsbereitstellung
Egal, ob es sich um eine einfache Codeanwendung mit wenigen Zeilen oder um eine umfangreiche Bereitstellung mit mehreren Ebenen handelt, Ansible ermöglicht die Automatisierung der End-to-End Anwendungsbereitstellung Lebenszyklus.
Sicherheit und Compliance
Ansible kann auch dabei helfen, sicherzustellen, dass Ihre Systeme gemäß den Richtlinien Ihres Unternehmens gesichert sind und den Industriestandards entsprechen. Es kann auf Tausenden von Servern ausgeführt werden, ein Audit generieren und diese Sicherheitslücken schließen, wodurch der Administrator die vollständige Kontrolle über die Umgebung erhält.
Sehen wir uns nun einige der häufigsten an Sysadmin Aufgaben, die Sie mit Ansible automatisieren können.
Copy files from a local or remote system
Als Systemadministrator ist es üblich, Dateien von einem Verzeichnis in ein anderes zu kopieren. Konfigurationsdateien müssen oft auf Remote-Server kopiert werden, oder manchmal müssen wir Dateien von einem Remote-Standort an einen anderen verschieben.
Ansible copy
Modul kann Ihnen helfen, diese Aufgaben in a Textbuch.
Es ist eine Routineaufgabe für einen Systemadministrator, den Status von verwalteten Servern zu kennen und vordefinierte Aktionen gemäß den Richtlinien des Unternehmens auszuführen. Eine solche Aufgabe besteht darin, die Serverbetriebszeit zu kennen. Mit Ansible können wir Betriebszeitwerte einfach abrufen und zusammen ausdrucken. Ein Beispiel zum Kopieren ntp
Konfiguration vom lokalen zu einem entfernten Server mit copy
Modul ist unten dargestellt:
---
- hosts: all
gather_facts: no
become: yes
tasks:
- name: Copy a new ntp configuration file and back up the original, if it differs
copy:
src: ./ntp.conf
dest: /etc/ntp.conf
owner: root
group: root
mode: '0644'
backup: yes
Configure additional cron jobs
Das Einrichten geplanter Jobs zur Ausführung von Routineaufgaben gehört zur Verwaltung jedes Servers. Sie können planen automatische Backups, Patching, Auditing usw. zu bestimmten Tages- oder Monatszeiten automatisch und lässt Ihnen produktive Zeit.
cron
ist ein solches Tool in Linux, das die Planung unterstützt, und Ansible kann Ihnen dabei helfen, diese Jobs hinzuzufügen oder zu ändern. Als Beispiel zeigt das folgende Playbook, wie Sie a rsync
Job als root
auf einigen oder allen Ihrer Server ganz einfach mit Ansible.
---
- hosts: all
gather_facts: no
become: yes
tasks:
- name: Deploy cron job
cron:
name: "Set rsync job"
user: root
minute: "5"
hour: "4"
job: "rsync -avz /path/to/folder1 /path/to/folder1 2>&1"
Manage disks and filesystems
Ansible kann verwendet werden, um Festplatten zu verwalten, Partitionslayouts, Dateisysteme und Mounts, einschließlich /etc/fstab
auf Linux-Servern. Verschiedene Ansible-Module machen dies möglich. Hier ist ein Beispiel, das eine Partition auf einem erstellt 100GB
Festplatte, formatiert sie mit ext4
filesystem erstellt ein neues Verzeichnis zum Mounten der Partition und mountet es schließlich in ein bestimmtes Verzeichnis. Ein Eintrag in /etc/fstab
wird je nach Moduloptionen auch durch temporäres oder permanentes Mounten erstellt.
---
- hosts: all
gather_facts: no
become: yes
tasks:
- name: Create a partition
parted:
device: /dev/sdb
number: 1
part_end: "100%"
state: present
- name: Format new partition
filesystem:
fstype: ext4
dev: /dev/sdb1
- name: Create mount directory
file:
path: /data
state: directory
- name: Mount partition
mount:
path: /data
src: /dev/sdb1
fstype: ext4
state: mounted
Collect server logs
Das Aufbewahren von Protokollen an einem bequemen Ort ist manchmal für Sicherheit, Audit und Analyse unerlässlich. Ansible ermöglicht die Sammlung von Protokolle von verschiedenen Servern in Ihrer Unternehmensumgebung und hält sie einfach an Ihrem definierten Standort. Hier ist das Playbook, um dies zu erreichen:
---
- hosts: all
gather_facts: no
become: yes
tasks:
- name: Find logs
find:
paths: /var/log/
patterns: '*.log'
recurse: yes
register: _logs
- name: Fetch logs
fetch:
src: "{{ item.path }}"
dest: /tmp/logs
with_items: "{{ _logs.files }}"
Install or remove packages and software
Pakete müssen häufig auf Benutzeranfragen oder als Teil der anfänglichen Server-Builds installiert werden. Möglicherweise müssen wir auch bestimmte Pakete entfernen, die nicht mehr benötigt werden oder einige kritische Fehler usw. aufweisen. Ansible ermöglicht es Ihnen, Pakete einfach zu installieren oder zu entfernen, ohne zu jedem Server gehen und manuelle Befehle ausführen zu müssen. Hier ist ein Beispiel, das die Installation und Entfernung von jeweils einem Paket demonstriert für Ubuntu und RHEL/CentOS-basierte Linux-Server.
---
- hosts: ubuntu
gather_facts: no
tasks:
- name: Install lsof utility
apt:
pkg: lsof
state: latest
sudo: yes
- name: Remove ARP Scan utility
apt:
pkg: arp-scan
state: absent
sudo: yes
---
- hosts: centos
gather_facts: no
tasks:
- name: Install lsof utility
yum:
pkg: lsof
state: latest
sudo: yes
- name: Remove ARP Scan utility
yum:
pkg: arp-scan
state: absent
sudo: yes
Managing users
Benutzer und Gruppen bilden die Grundstruktur, um die herum Unix/Linux-basierte Systeme Zugriffe und Berechtigungen verwalten. In einem großen Unternehmen kann die Verwaltung von Benutzern und Gruppen trotz Automatisierung zur Unterstützung der Umgebung eine große Herausforderung sein.
Mit Ansible verfügt der Systemadministrator über ein hervorragendes Werkzeug zum Erstellen, Ändern und Löschen von Benutzern und Gruppen mit allen im Betriebssystem unterstützten Möglichkeiten.
Hier ist ein einfaches Beispiel, das das Erstellen und Löschen von Benutzern und Gruppen mit Ansible zeigt. Nachdem dieses Playbook ausgeführt wurde, haben die Zielserver groupA
und groupB
erstellt mit gegebenen GIDs während user1
wird entfernt, falls vorhanden. Ein neuer Benutzer ohne Shell wird erstellt als user2
mit gegebener UID, zugewiesenen Gruppen und gesperrtem Passwort.
---
- hosts: all
gather_facts: no
become: yes
tasks:
- group:
gid: 12310
name: groupA
state: present
- group:
gid: 12311
name: groupB
state: present
- user:
name: user1
state: absent
- user:
name: user2
uid: 12427
shell: /bin/false
password_lock: yes
groups: groupA, groupB
Managing services
Dienste sind Prozess-Daemons, die im Hintergrund laufen und Dienste wie sshd
Bereitstellung SSH Konnektivität usw. Mit Ansible können Sie System- und Benutzerdienste verwalten, z. B. starten, stoppen und neu starten. Hier ist ein Beispiel-Playbook, um dies zu demonstrieren:
---
- hosts: all
gather_facts: no
become: yes
tasks:
- name: Restart ssh daemon
service:
name: ssh
state: restarted
- name: Restart sssd daemon
service:
name: sssd
state: stopped
- name: Restart httpd daemon
service:
name: httpd
state: started
Im obigen Beispiel wird der SSH-Dienst neu gestartet, während der SSSD-Dienst als nächstes gestoppt wird. Die httpd
Daemon wird gegen Ende gestartet. Da Ansible idempotent ist, werden alle Dienste, die bereits gestartet oder gestoppt wurden, nicht geändert, während der Neustart immer den Dienststatus ändert. Denken Sie daran, den Dienstnamen zu überprüfen, da verschiedene Linux-Distributionen andere Namen verwenden, sogar für denselben Dienst wie ssh
und sshd
.
Zusammenfassung
Ansible macht das Leben eines Systemadministrators einfach, indem es Ihnen ermöglicht, wiederholte und zeitaufwendige Aufgaben automatisiert auszuführen und menschliche Fehler und Arbeitsaufwand zu reduzieren. Darüber hinaus ermöglicht es die Speicherung von Konfigurationsdaten in einem zentralen Code-Repository wie Git, sodass mehrere Benutzer zusammenarbeiten und jede Aktivität überprüfen können.
Um mehr über Ansible und seine umfangreichen Module zu erfahren, beziehen Sie sich auf seine Dokumentation.