Remarques :
- Ce tutoriel est disponible dans un environnement d'atelier gratuit fourni par Oracle.
- Il utilise des exemples de valeurs pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. Lorsque vous terminez votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
Ecrire un Playbook avec Oracle Linux Automation Engine
Introduction
Oracle Linux Automation Engine, un composant d'Oracle Linux Automation Manager, est un outil d'automatisation permettant de déployer des logiciels, de configurer des systèmes et d'orchestrer des tâches, telles que des mises à niveau et des mises à jour, sous forme de livres de jeux. A l'origine, à l'aide du package ansible
, Oracle Linux Automation Engine provient désormais du package logiciel open source ansible-core
.
Le tutoriel suivant présente l'écriture de livres de jeux avec Oracle Linux Automation Engine.
Objectifs
Dans ce tutoriel, vous allez apprendre à :
- Installer Oracle Linux Automation Engine
- Créer un fichier d'inventaire
- Exécuter une commande ad hoc
- Écrire et exécuter un playbook
Prérequis
-
Au moins deux systèmes Oracle Linux avec la configuration suivante :
- un utilisateur non root avec des droits d'accès
sudo
- Paire de clés SSH pour l'utilisateur non root
- la possibilité d'utiliser SSH d'un hôte à un autre à l'aide d'une connexion SSH sans mot de passe
- un utilisateur non root avec des droits d'accès
Déployer Oracle Linux
Remarque : en cas d'exécution dans votre propre location, lisez le projet linux-virt-labs
GitHub README.md et respectez les prérequis avant de déployer l'environnement d'atelier.
-
Ouvrez un terminal sur le bureau Luna.
-
Clonez le projet
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Accédez au répertoire de travail.
cd linux-virt-labs/olam
-
Installez les collections requises.
ansible-galaxy collection install -r requirements.yml
-
Mettez à jour la configuration de l'instance Oracle Linux.
cat << EOF | tee instances.yml > /dev/null compute_instances: 1: instance_name: "ol-control-node" type: "control" 2: instance_name: "ol-host" type: "remote" EOF
-
Déployez l'environnement d'exercice.
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e "@instances.yml"
L'environnement d'exercice gratuit nécessite la variable supplémentaire
local_python_interpreter
, qui définitansible_python_interpreter
pour les lectures exécutées sur localhost. Cette variable est nécessaire car l'environnement installe le package RPM pour le kit SDK Oracle Cloud Infrastructure pour Python, situé sous les modules python3.6.La forme de déploiement par défaut utilise la CPU AMD et Oracle Linux 8. Pour utiliser une CPU Intel ou Oracle Linux 9, ajoutez
-e instance_shape="VM.Standard3.Flex"
ou-e os_version="9"
à la commande de déploiement.Important : attendez que le playbook s'exécute correctement et atteignez la tâche de pause. A ce stade du manuel, l'installation d'Oracle Linux est terminée et les instances sont prêtes. Notez la lecture précédente, qui imprime les adresses IP publiques et privées des noeuds qu'elle déploie, ainsi que toute autre information de déploiement nécessaire lors de l'exécution de l'exercice.
Configurer le noeud de contrôle Oracle Linux Automation Engine
Le noeud de contrôle est le système d'exécution des livres de jeux Oracle Linux Automation Engine. L'exécution de livres de jeux nécessite l'installation du package Oracle Linux Automation Engine.
-
Définissez une variable égale à l'adresse IP du noeud de contrôle.
export CONTROL="<ip_address_of_ol-control-node>"
-
Ouvrez un terminal et copiez la paire de clés SSH vers le noeud de contrôle.
scp -rp ~/.ssh/id_rsa* oracle@$CONTROL:~/.ssh/
-
Définissez les droits d'accès sur la clé privée SSH.
ssh oracle@$CONTROL "chmod 600 ~/.ssh/id_rsa"
-
Connectez-vous via SSH au système ol-control-node.
ssh oracle@$CONTROL
-
Installez le package et les dépendances d'Oracle Linux Automation Engine.
sudo dnf install -y ansible-core
Le package
ansible-core
est disponible dans le référentielol8_appstream
d'Oracle Linux. -
Testez l'installation du package.
ansible --version
La sortie affiche la version de la commande, les détails de configuration et la dépendance de version Python.
Remarque : si la sortie indique ERREUR : Ansible exige que l'encodage de l'environnement linguistique soit UTF-8 ; Aucun détecté., cela indique un paramètre d'environnement linguistique incorrect pour
ansible
. Corrigez le problème en définissant les deux variables d'environnement suivantes :export LC_ALL="en_US.UTF-8" export LC_CTYPE="en_US.UTF-8"
Créer un inventaire
Le fichier d'inventaire contient des détails sur les hôtes qui appartiennent à votre infrastructure ou que vous allez gérer à l'aide d'Oracle Linux Automation Engine. Ces détails indiquent comment se connecter à ces hôtes lors de l'exécution de commandes ad hoc ou de livres de jeux.
Collecte d'informations sur l'adresse IP ou le nom d'hôte
Pour créer un inventaire pour Oracle Linux Automation Engine, vous devez déterminer l'adresse IP ou le nom d'hôte pouvant être résolu du ou des systèmes que vous gérez. Les étapes peuvent varier en fonction du type de système et de l'endroit où vous le déployez.
Dans l'environnement d'atelier gratuit fourni, nous avons besoin de l'adresse IP du système ol-host
, que nous localisons à l'aide de l'onglet Ressources de Luna Lab.
Créer un fichier d'inventaire
Oracle Linux Automation Engine place l'inventaire par défaut dans /etc/ansible/hosts
. Il autorise également un fichier d'inventaire de niveau projet. Lorsque vous utilisez un inventaire de niveau projet, vous devez indiquer le chemin d'accès au fichier d'inventaire à l'aide de l'option -i
lors de l'exécution de commandes ad hoc ou de livres de jeux.
A partir d'un terminal sur le noeud de contrôle Oracle Linux Automation Engine :
-
Créer un répertoire de projet
mkdir ~/ol-automation
-
Accédez au nouveau répertoire et ouvrez un nouveau fichier d'inventaire à l'aide de l'éditeur de texte de votre choix. Ici, nous allons utiliser
vi
.cd ~/ol-automation
vi inventory
-
Entrez le mode d'insertion
vi
en saisissanti
. -
Ajoutez l'adresse IP publique du système ol-host fourni. Le fichier ne doit contenir que l'adresse IP.
Par exemple :
130.61.100.96
-
Enregistrez et fermez le fichier. Si vous utilisez
vi
, vous pouvez saisirESC
,:wq!
etENTER
. -
Validez le fichier d'inventaire.
ansible-inventory -i inventory --list
La sortie affiche les informations d'inventaire.
Exemple de sortie :
{ "_meta": { "hostvars": {} }, "all": { "children": [ "ungrouped" ] }, "ungrouped": { "hosts": [ "130.61.100.96" ] } }
La référence
all
fait référence à chaque hôte du fichier d'inventaire, et la sectionungrouped
concerne tous les hôtes ne faisant pas partie d'un groupe répertorié. -
Modifiez l'inventaire et placez l'hôte dans un groupe nommé
development
.vi inventory
-
Entrez le mode d'insertion
vi
en saisissanti
. -
Ajoutez le nom du groupe entre crochets avec l'adresse IP ci-dessous, comme indiqué dans l'exemple.
Par exemple :
[development] 130.61.100.96
-
Enregistrez et fermez le fichier. Si vous utilisez
vi
, vous pouvez saisirESC
,:wq!
etENTER
. -
Exécutez à nouveau l'étape de validation pour voir le groupe ajouté à la sortie.
ansible-inventory -i inventory --list
La sortie affiche les informations mises à jour avec le groupe.
Exemple de sortie :
{ "_meta": { "hostvars": {} }, "all": { "children": [ "development", "ungrouped" ] }, "development": { "hosts": [ "130.61.100.96" ] } }
Exécuter une commande ad hoc
Oracle Linux Automation Engine dispose de plusieurs modules exécutés une fois qui ne nécessitent pas d'écrire un guide stratégique. Le plus basique est le module ping
, qui tente d'établir une connexion SSH en fonction des détails fournis dans l'inventaire.
A partir d'un terminal sur le noeud de contrôle Oracle Linux Automation Engine :
-
Exécutez le module
ping
.ansible all -i inventory -m ping
L'option
all
indique à la commande de s'exécuter sur tous les hôtes répertoriés dans le fichier d'inventaire spécifié par l'option-i
. La commande accepte également des noms d'hôte ou des groupes individuels.L'option
-m
indique le module à exécuter. -
Acceptez l'empreinte de clé ECDSA en saisissant
yes
à l'invite.En fonction de votre environnement,
ping
peut échouer avec la sortie suivante :Exemple de sortie :
130.61.100.96 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh: Warning: Permanently added '130.61.100.96' (ECDSA) to the list of known hosts.\r\noracle@130.61.100.96: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).", "unreachable": true }
Cet échec se produit car le compte utilisateur local
oracle
n'existe pas sur l'hôte que nous tentons de gérer. Corrigez ce problème en ajoutant un utilisateur distant valide à l'inventaire à l'aide de la variableansible_user
. Dans le fichier d'inventaire, attribuez à l'hôte une référence de nom d'hôte et affectez l'adresse IP à la variableansible_host
. -
Ajoutez l'utilisateur distant au fichier d'inventaire.
vi inventory
-
Entrez le mode d'insertion
vi
en saisissanti
. -
Ajoutez les deux variables comme indiqué dans l'exemple.
Par exemple :
[development] ol-host ansible_host=130.61.100.96 ansible_user=opc
L'environnement d'atelier gratuit fournit un système préconfiguré pour tester la gestion à distance contenant un utilisateur nommé
opc
.opc
est l'utilisateur par défaut créé sur une instance Oracle Linux dans Oracle Cloud Infrastructure (OCI). Nous pouvons utiliser un exemple de nomol-host
pour le nom d'hôte. -
Enregistrez et fermez le fichier. Si vous utilisez
vi
, vous pouvez le faire en saisissantESC
,:wq!
etENTER
. -
Réexécutez le module
ping
en utilisant le nom d'hôte plutôt queall
.ansible ol-host -i inventory -m ping
La commande s'exécute avec succès avec des résultats similaires à ceux affichés.
Exemple de sortie :
ol-host | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" }
Écrire un Playbook
Un livre de jeu est un ensemble d'instructions, écrites dans la syntaxe YAML appropriée, exécutées sur un seul hôte ou un groupe d'hôtes. Ces fichiers ont l'extension par défaut .yml
ou .yaml
.
Notre premier livre de jeux ciblera les hôtes all
à partir du fichier d'inventaire créé. Cet exemple de manuel se compose d'une tâche unique qui imprime un message de débogage.
A partir d'un terminal sur le noeud de contrôle Oracle Linux Automation Engine :
-
Créez un fichier de livre de jeux.
vi hello.yml
-
Entrez le mode d'insertion
vi
en saisissanti
. -
Ajoutez le texte suivant au fichier playbook.
Par exemple :
--- - hosts: all tasks: - name: Print message debug: msg: Hello from Oracle Linux
Un livre de jeux doit toujours commencer par
---
, suivi d'une lignehosts
indiquant les hôtes à gérer. La valeurall
indique que le livre de jeux agira sur chaque hôte répertorié dans l'inventaire. Vous pouvez également demander à un livre de jeux d'exécuter des tâches uniquement sur une liste spécifique d'hôtes ou de groupes en répertoriant chaque cible séparée par des points-virgules ou des virgules. La tâche utilise ensuite le module de débogage pour imprimer un message.La ligne
name
entraîne l'affichage de la sortie dans le terminal par Oracle Linux Automation Engine lors de l'exécution du livre de jeux. -
Enregistrez et fermez le fichier. Si vous utilisez
vi
, vous pouvez le faire en saisissantESC
,:wq!
etENTER
. -
Exécutez le livre de jeux hello.yml par rapport à l'inventaire.
ansible-playbook -i inventory hello.yml
Plutôt que d'utiliser la variable
ansible_user
dans le fichier d'inventaire, vous pouvez transmettre le nom utilisateur distant sur la ligne de commande à l'aide de l'option-u username
.ansible-playbook -i inventory hello.yml -u opc
Si tout fonctionne, la commande se termine avec succès et affiche le message de débogage.
Exemple de sortie :
PLAY [all] ********************************************************************* TASK [Gathering Facts] ********************************************************* [WARNING]: Platform linux on host ol-host is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change this. See https://docs.ansible.com/ansible/2.9/referen ce_appendices/interpreter_discovery.html for more information. ok: [ol-host] TASK [Print message] *********************************************************** ok: [ol-host] => { "msg": "Hello from Oracle Linux" } PLAY RECAP ********************************************************************* ol-host : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Comme l'inventaire ne définit qu'un seul hôte,
ol-host
, le livre de jeux s'exécute une fois. Avant d'exécuter la tâche répertoriée dans le manuel, Oracle Linux Automation Engine exécute une tâche par défaut appelée faits. Cette tâche extrait des informations sur l'hôte distant, que les livres de jeux peuvent utiliser ultérieurement pour personnaliser le comportement des tâches via des conditions. -
Exécutez la commande ad hoc suivante pour imprimer une liste complète des faits pour l'hôte.
ansible ol-host -i inventory -m setup
Etapes suivantes
Ce message et la sortie facts confirment que vous avez exécuté votre premier livre de jeux avec succès à l'aide d'Oracle Linux Automation Engine.
Liens connexes
- Documentation d'Oracle Linux Automation Manager
- Formation Oracle Linux Automation Manager
- Centre de formation Oracle Linux
Ressources de formation supplémentaires
Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à d'autres contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir la documentation produit, consultez le site Oracle Help Center.
Write a Playbook with Oracle Linux Automation Engine
F52961-04
Copyright ©2021, Oracle and/or its affiliates.