Einführung
Ansible ist eine Open-Source-Serververwaltungs- und Automatisierungssoftware, die Infrastructure as Code (IaC) ermöglicht. Dieses Tool ermöglicht eine einfache und effektive Anwendungsbereitstellung, Bereitstellung und Konfigurationsverwaltung.
Ansible Automation Hub sammelt Module von Red Hat und zertifizierten Partnern. phoenixNAP ist stolz darauf, mit dem Bare Metal Cloud-Plug-in Teil der Sammlung vertrauenswürdiger Inhalte von Ansible zu sein. Dieses von Ansible eingeführte Konzept ermöglicht es, Cloud-Anbieter als zusätzliche Bibliotheken zu installieren.
Befolgen Sie die Schritte in dieser Anleitung, um das phoenixNAP BMC Ansible-Modul zu installieren und erfahren Sie, wie Sie relevante Playbooks verwenden.
Voraussetzungen
- Ansible auf dem Kontrollcomputer installiert
- Python auf dem Kontrollcomputer installiert (standardmäßig verfügbar)
Vorteile der Verwendung des PNAP BMC Ansible-Moduls
Dieses IaC-Tool wurde entwickelt, damit Kunden Bare-Metal-Cloud-Server bereitstellen und andere Aufgaben mit einfachen YAML-Skripts ausführen können Playbooks genannt. Sie können jetzt die Servererstellung mit unveränderlicher Bereitstellung effizient automatisieren. Neben dem Vorteil der Automatisierung von IT-Prozessen ist ein weiterer Bonus die Möglichkeit, denselben Code erneut auszuführen, um einen Server im Falle unerwünschter Änderungen auf den ursprünglichen Zustand zurückzusetzen.
Dieses Modell hat keine Master- und Slave-Maschinen. Sie verwenden eine Maschine, um die Dateien zu pushen, d. h. ein Skript auf einem oder mehreren Remote-Hosts auszuführen. Es gibt keine Agenten auf einzelnen Knoten, die Informationen vom Hauptserver abrufen. Das Bare-Metal-Cloud-Modul erfordert kein SSH, um Playbooks auszuführen.
Indem Sie ein zertifiziertes Plugin werden Auf Red Hat Ansible Automation Hub ist der Installationsprozess des BMC-Moduls schnell und wird mit einem einzelnen Ansible-Befehl abgeschlossen . Anschließend können Sie Ansible anweisen, ein Skript auszuführen, das den YAML-Code mit der Beschreibung des Automatisierungsjobs enthält, den Sie ausführen möchten. Das Modul stellt sicher, dass das von Ihnen angegebene Endergebnis in der richtigen Reihenfolge erreicht wird.
Die Inhalte im Ansible Automation Hub werden von Red Hat und seinen Partnern unterstützt. Auf diese Weise können selbst die anspruchsvollsten Umgebungen sicher sein, dass die Module die Erwartungen erfüllen.
BMC Ansible-Modul installieren
Bevor Sie das BMC Ansible-Plug-in installieren, benötigen Sie die Python-Anfragen Paket auf Ihrer Maschine. Es ermöglicht das Senden verschiedener Arten von HTTP-Anfragen.
Um Anforderungen zu installieren , geben Sie ein:
pip install requests
Führen Sie dann den Ansible-Befehl aus, um das phoenixNAP BMC-Modul zu installieren:
ansible-galaxy collection install phoenixnap.bmc
Zeigen Sie nach Abschluss der Installation die Moduldokumentation mit diesem Befehl an:
ansible-doc phoenixnap.bmc.server
Das Ansible BMC-Plugin hängt von API-Anforderungen ab. Alle BMC-API-Anforderungen sind im phoenixNAP-Entwicklerportal dokumentiert.
Create Credential File for Authentication
Um sich erfolgreich bei unserem Autorisierungsserver zu authentifizieren, verwenden Sie den Grant-Typ „Client Credentials“.
Erstellen Sie in Ihrem Home-Verzeichnis ein Verzeichnis .pnap und eine config.yaml Datei darin.
Die Datei muss die folgenden Informationen enthalten:
clientId: myClientId
clientSecret: myClientSecret
Ersetzen Sie myClientId und myClientSecret mit Ihrer ID und Ihrem Geheimnis.
Ansible phoenixNAP BMC-Playbooks
Das Schreiben von Ansible-Playbooks erfordert keine besonderen Programmierkenntnisse und sie decken alle verfügbaren BMC-APIs ab. Diese Skripte sind in YAML geschrieben, einer einfachen Serialisierungssprache, die beim Erstellen von Konfigurationsdateien verwendet wird. Ansible überprüft die tatsächlichen Zustände der Server und vergleicht sie mit den Anweisungen im Playbook.
Wenn der Status nicht mit dem definierten Endergebnis übereinstimmt, stellt das Modul sicher, dass das Ressourcenmodell aus dem Skript befolgt wird, um das festgelegte Ziel zu erreichen.
Wenn Sie ein Playbook mehr als einmal ausführen, führt das Modul keine zusätzlichen Aufgaben aus. Sobald der tatsächliche Zustand eines BMC-Servers dem Ziel des Skripts entspricht, können Sie das Skript mehrmals ausführen, und das Modul führt keine Aufgabe aus.
So führen Sie BMC-Playbooks aus
Der Name eines Playbooks legt nahe, was das Skript tut. Beispiel:playbook_power_off.yml schaltet einen oder mehrere Server aus.
Um ein Playbook auszuführen, verwenden Sie diese Syntax:
ansible-playbook playbook_name.yml
Um einen Server zurückzusetzen, geben Sie daher Folgendes ein:
ansible-playbook playbook_reset.yml
Beispiele für BMC-Playbooks
Die YAML-Playbook-Beispiele, die wir unten bereitstellen, sind einander ähnlich. Der Unterschied ist der Zustand des Servers, den Sie erreichen möchten. Die einzige Datei, die sich etwas mehr von anderen unterscheidet, ist das Skript zum Erstellen eines Servers.
Jedes Playbook muss einen oder mehrere Hostnamen enthalten oder server_ids , sowie die client_id und client_secret . Die bevorzugte Methode besteht darin, die Werte in ~/.pnap/config.yaml einzugeben Datei statt in jedem Playbook.
Server erstellen
Der Name des Playbooks:playbook_create.yml
- name: Create new servers for account
hosts: localhost
gather_facts: false
vars_files:
- ~/.pnap/config.yaml
collections:
- phoenixnap.bmc
tasks:
- server:
client_id: "{{clientId}}"
client_secret: "{{clientSecret}}"
hostnames: [my-server-red]
location: PHX
os: ubuntu/bionic
type: s1.c1.medium
state: present
ssh_key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
Bereitstellungsserver aufheben
Der Name des Playbooks:playbook_deprovision.yml
- name: reset servers
hosts: localhost
gather_facts: false
vars_files:
- ~/.pnap/config.yaml
collections:
- phoenixnap.bmc
tasks:
- server:
client_id: "{{clientId}}"
client_secret: "{{clientSecret}}"
hostnames: [my-server-red]
state: absent
Server ausschalten
Der Name des Playbooks:playbook_power_off.yml
- name: power on servers
hosts: localhost
gather_facts: false
vars_files:
- ~/.pnap/config.yaml
collections:
- phoenixnap.bmc
tasks:
- server:
client_id: "{{clientId}}"
client_secret: "{{clientSecret}}"
hostnames: [my-server-red]
state: powered-off
Server einschalten
Der Name des Playbooks:playbook_power_on.yml
- name: power on servers
hosts: localhost
gather_facts: false
vars_files:
- ~/.pnap/config.yaml
collections:
- phoenixnap.bmc
tasks:
- server:
client_id: "{{clientId}}"
client_secret: "{{clientSecret}}"
hostnames: [my-server-red]
state: powered-on
Server neu starten
Der Name des Playbooks:playbook_reboot.yml
- name: reset servers
hosts: localhost
gather_facts: false
vars_files:
- ~/.pnap/config.yaml
collections:
- phoenixnap.bmc
tasks:
- server:
client_id: "{{clientId}}"
client_secret: "{{clientSecret}}"
hostnames: [my-server-red]
state: rebooted
Server zurücksetzen
Der Name des Playbooks:playbook_reset.yml
- name: reset servers
hosts: localhost
gather_facts: false
vars_files:
- ~/.pnap/config.yaml
collections:
- phoenixnap.bmc
tasks:
- server:
client_id: "{{clientId}}"
client_secret: "{{clientSecret}}"
hostnames: [my-server-red]
ssh_key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
state: reset
Shutdown-Server
Der Name des Playbooks:playbook_shutdown.yml
In diesem Beispiel haben wir server_ids verwendet statt Hostnamen .
- name: shutdown servers
hosts: localhost
gather_facts: false
vars_files:
- ~/.pnap/config.yaml
collections:
- phoenixnap.bmc
tasks:
- server:
client_id: "{{clientId}}"
client_secret: "{{clientSecret}}"
server_ids:
- 5eda71ef674cf47bd2599cfa
state: shutdown