34 votes

Est-il possible d'écrire les fichiers hôtes/inventaires Ansible en YAML ?

Dans la page des meilleures pratiques, il y a un exemple qui utilise hosts.yml pour les fichiers d'hôtes :

YAML-based hosts file

Dans la documentation, cependant, je ne trouve que la syntaxe INI pour écrire les fichiers hosts.

Quelle est la syntaxe des fichiers d'inventaire en YAML ?

44voto

techraf Points 30698

Oui.

Cela a été déprécié en version 0.6 en 2012 et réintroduit dans un commit inclus pour la première fois dans la version 2.1 en 2016.

Le site exemple de fichier sur GitHub contient les directives et les exemples :

  • Les commentaires commencent par le caractère "#".
  • Les lignes vides sont ignorées
  • Les entrées de niveau supérieur sont supposées être des groupes
  • Les hôtes doivent être spécifiés dans le hosts : d'un groupe et ils doivent être une clé ( : terminé)
  • Les groupes peuvent avoir des enfants, des hôtes et des clés vars.
  • Tout ce qui est défini sous un hôte est considéré comme une variable.
  • Vous pouvez entrer des noms d'hôtes ou des adresses IP
  • Un nom d'hôte/ip peut être membre de plusieurs groupes.

Ex 1 : Hôtes non groupés, mis dans le groupe 'ungrouped'.

ungrouped:
  hosts:
      green.example.com:
          ansible_ssh_host: 191.168.100.32
      blue.example.com:
      192.168.100.1:
      192.168.100.10:

Ex 2 : Une collection d'hôtes appartenant au groupe 'webservers'.

webservers:
  hosts:
      alpha.example.org:
      beta.example.org:
      192.168.1.100:
      192.168.1.110:

Ex 3 : Vous pouvez créer des hôtes en utilisant des plages et ajouter des groupes d'enfants et des variables à un groupe. Le groupe enfant peut définir tout ce que vous ajouteriez normalement à un groupe.

testing:
  hosts:
      www[001:006].example.com:
  vars:
      testing1: value1
  children:
      webservers:
          hosts:
              beta.example.org:

3voto

CPU 100 Points 2269

Les réponses précédentes sont correctes, mais voici un exemple simple de hosts.yaml et d'INI côte à côte dans la capture d'écran. Je ne fais que copier le hosts.yaml actuel ici aussi, donc si vous voulez faire un copier-coller et l'éditer vous-même, vous pouvez le faire.

--- 
all: 
  hosts:               
    xmp: 
      ansible_connection: ssh
      ansible_host: "192.1.0.1"
      ansible_port: 7822
      ansible_user: nanoseco

enter image description here

un peu plus d'informations :

https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html

2voto

jitter Points 89

Je viens de découvrir Convertisseur d'inventaire Ansible INI vers YAML en github ce qui a bien fonctionné pour moi :

Ce référentiel contient un script Python pour convertir les inventaires Ansible au format INI en format YAML.

Pour une raison quelconque, la conversion a abouti à des plages d'hôtes ( [01:03] ) étant séparées par = au lieu de l'exemple et de l'exactitude : .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X