Note :
- Ce tutoriel est disponible dans un environnement de laboratoire gratuit fourni par Oracle.
- Il utilise des exemples de valeurs pour les données d'identification, la location et les compartiments d'Oracle Cloud Infrastructure. À la fin de votre laboratoire, remplacez ces valeurs par celles qui sont propres à votre environnement en nuage.
Écrire un livre de jeux avec Oracle Linux Automation Engine
Présentation
Le moteur d'automatisation Oracle Linux Automation Engine, un composant d'Oracle Linux Automation Manager, est un outil d'automatisation pour déployer des logiciels, configurer des systèmes et orchestrer des tâches, telles que les mises à niveau et les mises à jour, sous forme de livres de jeu. Au départ, à l'aide de l'ensemble ansible
, Oracle Linux Automation Engine provient maintenant de l'ensemble logiciel ansible-core
à code source libre.
Le tutoriel suivant présente l'écriture de livres de jeu avec Oracle Linux Automation Engine.
Objectifs
Dans ce tutoriel, vous apprendrez à :
- Installer Oracle Linux Automation Engine
- Créer un fichier d'inventaire
- Exécuter une commande ad hoc
- Écrire et exécuter un livre de jeu
Préalables
-
Un minimum de deux systèmes Oracle Linux avec la configuration suivante :
- un utilisateur non racine avec les autorisations
sudo
- paire de clés SSH pour l'utilisateur non racine
- la possibilité de SSH d'un hôte à un autre à l'aide d'une connexion SSH sans mot de passe
- un utilisateur non racine avec les autorisations
Déployer Oracle Linux
Note : Si vous exécutez votre propre location, lisez les préalables du projet linux-virt-labs
GitHub README.md et remplissez les conditions requises avant de déployer l'environnement de laboratoire.
-
Ouvrez un terminal sur le Luna Desktop.
-
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" olam_type: none EOF
-
Sert à créer un fichier d'inventaire.
cat << EOF | tee hosts > /dev/null localhost ansible_connection=local ansible_connection=local ansible_python_interpreter=/usr/bin/python3.6 EOF
-
Déployez l'environnement de l'exercice.
ansible-playbook create_instance.yml -i hosts -e "@instances.yml"
L'environnement de laboratoire gratuit nécessite la variable supplémentaire
ansible_python_interpreter
pour localhost, car il installe l'ensemble RPM pour la trousse SDK Oracle Cloud Infrastructure pour Python. L'emplacement d'installation de cet ensemble est sous les modules Python par défaut du système en fonction de votre version d'Oracle Linux. L'utilisation d'une variable d'inventaire évite d'avoir une incidence sur les lectures exécutées sur des hôtes autres que localhost.La forme de déploiement par défaut utilise l'unité centrale AMD. Vous pouvez modifier la forme des instances en transmettant une nouvelle définition de variable de forme sur la ligne de commande.
Par exemple :
-e instance_shape="VM.Standard3.Flex"
De même, la version par défaut de l'image Oracle Linux utilise la variable
os_version
définie dans le fichier `default_vars.yml. Vous pouvez modifier cette valeur en transmettant la version principale d'Oracle Linux sur la ligne de commande.Par exemple :
-e os_version="9"
Important : Attendez que le livre de jeu s'exécute avec succès et atteignez la tâche Mettre en pause. À ce stade du livre de jeu, 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'il déploie.
Configurer le noeud de contrôle d'Oracle Linux Automation Engine
Le noeud de contrôle est le système permettant d'exécuter les livres de jeu Oracle Linux Automation Engine. L'exécution de livres de jeu nécessite l'installation de l'ensemble 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 autorisations sur la clé privée SSH.
ssh oracle@$CONTROL "chmod 600 ~/.ssh/id_rsa"
-
Connectez-vous au système ol-control-node via SSH.
ssh oracle@$CONTROL
-
Installez l'ensemble Oracle Linux Automation Engine et les dépendances.
sudo dnf install -y ansible-core
L'ensemble
ansible-core
est disponible dans le référentiel 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.
Note : Si la sortie affiche ERROR : Ansible exige que l'encodage des paramètres régionaux soit UTF-8; Aucun détecté., cela indique un paramètre de paramètres régionaux incorrect pour
ansible
. Corrigez le problème en définissant ces deux variables d'environnement :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 gérerez à 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 jeu.
Collecter des 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 résolvable du ou des systèmes que vous gérez. Les étapes de collecte de ces informations peuvent varier en fonction du type de système et de l'emplacement du déploiement.
Dans l'environnement de laboratoire gratuit fourni, nous avons besoin de l'adresse IP du système ol-host
, que le script de déploiement affiche dans sa sortie.
Créer un fichier de stocks
Oracle Linux Automation Engine place l'inventaire par défaut dans /etc/ansible/hosts
. Il permet également un fichier d'inventaire au niveau du projet. Lors de l'utilisation d'un inventaire au niveau du 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 jeu.
À partir d'un terminal sur le noeud de contrôle d'Oracle Linux Automation Engine :
-
Créer un répertoire de projet
mkdir ~/ol-automation
-
Déplacez-vous vers le nouveau répertoire et ouvrez un nouveau fichier d'inventaire à l'aide de votre éditeur de texte préféré. Ici, nous allons utiliser
vi
.cd ~/ol-automation
vi inventory
-
Entrez le mode d'insertion
vi
en entranti
. -
Ajoutez l'adresse IP publique du système ol-host fourni. Le fichier ne doit contenir que l'adresse IP.
Exemple :
130.61.100.96
-
Enregistrez le fichier et fermez-le. Si vous utilisez
vi
, vous pouvez entrerESC
,:wq!
etENTER
. -
Validez le fichier d'inventaire.
ansible-inventory -i inventory --list
La sortie affiche les informations sur les stocks.
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 qui ne font 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 entranti
. -
Ajoutez le nom du groupe entre crochets, suivi de l'adresse IP en dessous.
Exemple :
[development] 130.61.100.96
-
Enregistrez le fichier et fermez-le. Si vous utilisez
vi
, vous pouvez entrerESC
,:wq!
etENTER
. -
Exécutez à nouveau l'étape de validation et vérifiez que la sortie contient le groupe.
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 comporte plusieurs modules run-once qui ne nécessitent pas d'écrire un livre de jeu. Le plus élémentaire est le module ping
, qui tente d'établir une connexion SSH en fonction des détails fournis dans l'inventaire.
À partir d'un terminal sur le noeud de contrôle d'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
spécifie le module à exécuter. -
Acceptez l'empreinte numérique de la clé ECDSA en entrant
yes
à l'invite.Selon 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 d'utilisateur local
oracle
n'existe pas sur l'hôte que nous tentons de gérer. Corrigez cela en ajoutant un utilisateur distant valide dans l'inventaire à l'aide de la variableansible_user
. Dans le fichier d'inventaire, donnez à 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 entranti
. -
Ajoutez les deux variables comme illustré dans l'exemple.
Exemple :
[development] ol-host ansible_host=130.61.100.96 ansible_user=opc
L'environnement de laboratoire 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 le fichier et fermez-le. Si vous utilisez
vi
, vous pouvez le faire en entrantESC
,:wq!
etENTER
. -
Exécutez de nouveau 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 livre de jeu
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 jeu ciblera les hôtes all
à partir du fichier d'inventaire créé. Cet exemple de livre de jeu se compose d'une seule tâche qui imprime un message de débogage.
À partir d'un terminal sur le noeud de contrôle d'Oracle Linux Automation Engine :
-
Créez un fichier playbook.
vi hello.yml
-
Entrez le mode d'insertion
vi
en entranti
. -
Ajoutez le texte suivant au fichier playbook.
Exemple :
--- - hosts: all tasks: - name: Print message debug: msg: Hello from Oracle Linux
Un livre de jeu doit toujours commencer par
---
, suivi d'une lignehosts
indiquant les hôtes à gérer. La valeurall
indique que vous exécuterez le livre de jeu sur tous les hôtes répertoriés dans l'inventaire. Vous pouvez également demander à un livre de jeu d'exécuter des tâches uniquement sur une liste spécifique d'hôtes ou de groupes en listant chaque cible, séparées par des deux-points 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 jeu. -
Enregistrez le fichier et fermez-le. Si vous utilisez
vi
, vous pouvez le faire en entrantESC
,:wq!
etENTER
. -
Exécutez le livre de jeu hello.yml sur 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 d'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 imprime 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 jeu s'exécute une seule fois. Avant d'exécuter la tâche indiquée dans le livre de jeu, Oracle Linux Automation Engine exécute une collecte de tâches par défaut appelée faits. Cette tâche extrait des informations sur l'hôte distant, que les livres de jeu peuvent utiliser plus tard pour personnaliser le comportement des tâches au moyen de conditionnels. -
Exécutez la commande ad hoc suivante pour imprimer la liste des faits de l'hôte.
ansible ol-host -i inventory -m setup
Étapes suivantes
Ce message et la sortie de faits confirment que vous avez exécuté votre premier livre de jeu avec succès à l'aide d'Oracle Linux Automation Engine.
Liens connexes
- Documentation sur Oracle Linux Automation Manager
- Formation sur Oracle Linux Automation Manager
- Parcours d'apprentissage pour Oracle Linux
Autres ressources d'apprentissage
Explorez d'autres laboratoires sur le site docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal Oracle Learning YouTube. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir la documentation sur le produit, visitez Oracle Help Center.
Write a Playbook with Oracle Linux Automation Engine
G33075-02
Copyright ©2021, Oracle and/or its affiliates.