Présentation
Ansible est un logiciel de gestion et d'automatisation de serveur open source qui permet l'infrastructure en tant que code (IaC). Cet outil permet le déploiement, le provisionnement et la gestion de la configuration des applications de manière simple et efficace.
Ansible Automation Hub rassemble des modules de Red Hat et de partenaires certifiés. phoenixNAP est fier de faire partie de la collection de contenu de confiance Ansible avec le plugin Bare Metal Cloud. Ce concept introduit par Ansible permet d'installer des fournisseurs de cloud en tant que bibliothèques supplémentaires.
Suivez les étapes de ce guide pour installer le module phoenixNAP BMC Ansible et apprenez à utiliser des playbooks pertinents.
Prérequis
- Ansible installé sur la machine de contrôle
- Python installé sur la machine de contrôle (disponible par défaut)
Avantages de l'utilisation du module Ansible PNAP BMC
Cet outil IaC a été conçu pour permettre aux clients de provisionner des serveurs Bare Metal Cloud et d'effectuer d'autres tâches à l'aide de scripts YAML simples appelés playbooks. Vous pouvez désormais automatiser efficacement la création de serveurs avec un provisionnement immuable. Outre l'avantage d'automatiser les processus informatiques, un autre avantage est la possibilité de réexécuter le même code pour rétablir l'état d'origine d'un serveur en cas de modifications indésirables.
Ce modèle n'a pas de machines maître et esclave. Vous utilisez une machine pour pousser les fichiers, c'est-à-dire exécuter un script sur un ou plusieurs hôtes distants. Il n'y a pas d'agents sur des nœuds individuels qui extraient des informations du serveur principal. Le module Bare Metal Cloud ne nécessite pas SSH pour exécuter des playbooks.
En devenant un plugin certifié sur Red Hat Ansible Automation Hub, le processus d'installation du module BMC est rapide et réalisé à l'aide d'une commande Ansible unique . Ensuite, vous pouvez demander à Ansible d'exécuter un script contenant le code YAML avec la description de la tâche d'automatisation que vous souhaitez effectuer. Le module s'assure d'atteindre le résultat final que vous avez spécifié, et dans le bon ordre.
Le contenu d'Ansible Automation Hub est pris en charge par Red Hat et ses partenaires. De cette façon, même les environnements les plus exigeants peuvent être assurés que les modules répondront aux attentes.
Installer le module BMC Ansible
Avant d'installer le plugin BMC Ansible, vous avez besoin des requêtes Python paquet sur votre machine. Il permet d'envoyer différents types de requêtes HTTP.
Pour installer des requêtes , saisissez :
pip install requests
Ensuite, exécutez la commande Ansible pour installer le module phoenixNAP BMC :
ansible-galaxy collection install phoenixnap.bmc
Une fois l'installation terminée, consultez la documentation du module avec cette commande :
ansible-doc phoenixnap.bmc.server
Le plugin Ansible BMC dépend des requêtes API. Toutes les demandes d'API BMC sont documentées sur le portail des développeurs phoenixNAP.
Créer un fichier d'informations d'identification pour l'authentification
Pour vous authentifier avec succès auprès de notre serveur d'autorisation, utilisez le type d'octroi des informations d'identification du client.
Dans votre répertoire personnel, créez un répertoire .pnap et un config.yaml fichier à l'intérieur.
Le fichier doit contenir les informations suivantes :
clientId: myClientId
clientSecret: myClientSecret
Remplacez myClientId et monClientSecret avec votre identifiant et votre secret.
Livres de lecture Ansible phoenixNAP BMC
L'écriture de playbooks Ansible ne nécessite pas de compétences de codage particulières et couvre toutes les API BMC disponibles. Ces scripts sont écrits en YAML, un langage de sérialisation simple utilisé lors de la création de fichiers de configuration. Ansible fonctionne en vérifiant les états réels des serveurs et en les comparant avec l'ensemble d'instructions du playbook.
Lorsque l'état ne correspond pas au résultat final défini, le module s'assure de suivre le modèle de ressource du script pour atteindre l'objectif défini.
Si vous exécutez un playbook plus d'une fois, le module n'effectuera pas de tâches supplémentaires. Une fois que l'état réel d'un serveur BMC correspond à l'objectif du script, vous pouvez exécuter le script plusieurs fois et le module n'effectuera aucune tâche.
Comment exécuter les Playbooks BMC
Le nom d'un playbook suggère ce que fait le script. Par exemple, playbook_power_off.yml éteint un ou plusieurs serveurs.
Pour exécuter un playbook, utilisez cette syntaxe :
ansible-playbook playbook_name.yml
Par conséquent, pour réinitialiser un serveur, saisissez :
ansible-playbook playbook_reset.yml
Exemples de manuels BMC
Les exemples de playbook YAML que nous fournirons ci-dessous sont similaires les uns aux autres. La différence est l'état du serveur que vous souhaitez atteindre. Le seul fichier légèrement plus différent des autres est le script de création d'un serveur.
Chaque playbook doit contenir un ou plusieurs noms d'hôte ou server_ids , ainsi que le client_id et client_secret . La méthode préférée consiste à entrer les valeurs dans le ~/.pnap/config.yaml fichier au lieu de dans chaque playbook.
Créer un serveur
Le nom du playbook :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') }}"
Déprovisionner le serveur
Le nom du playbook :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
Éteindre le serveur
Le nom du playbook :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
Allumer le serveur
Le nom du playbook :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
Redémarrer le serveur
Le nom du playbook :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
Réinitialiser le serveur
Le nom du playbook :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
Arrêter le serveur
Le nom du playbook :playbook_shutdown.yml
Dans cet exemple, nous avons utilisé server_ids au lieu de noms d'hôte .
- 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