Comment puis-je utiliser with_dict par extra_vars ?

J'essaie je sais tout mais toute sortie with_dict attend un dict :(

C'est tous les fichiers

# vars.yml
rd1:
  Terry:
    user_name:terry_liu
    user_birth:1994/05/11
  Cary:
    user_name:cary_lin
    user_birth:1992/02/19
rd6:
  Jessie:
    user_name:jessie_chen
    user_birth:1996/11/20
  Sherry:
    user_name:sherry_hsu
    user_birth:1989/07/23

-

# test.yml
- name: demo
  hosts: test
  vars_files:
    - vars.yml

  tasks:
    - name: show data
      debug:
        msg: "{{ item }}"
      with_dict: "{{ dep }}"

-

#command
ansible-playbook -i inventory test.yml --extra-vars 'dep=rd1'

-

L'hôte de Inventory est ma machine virtuelle de test, il suffit d'avoir une adresse IP et cela peut être ssh.

Lors de l'exécution de la commande, elle affiche: fatal : [172.16.1.227] : ÉCHEC ! => {"msg": "with_dict attend un dict"}

Je pense qu'il faut var dans var, mais j'essaie de différentes manières, toutes échouent.

Ma demande est d'envoyer un float dep var et d'obtenir les données correspondantes de vars.yml.

Merci à tous, bonne journée !

1
Okami 14 févr. 2020 à 11:50

1 réponse

Meilleure réponse

Le problème est que "{{ dep }}" s'évalue à la chaîne "rd1"

with_dict: "{{ dep }}"

C'est la raison de l'erreur "with_dict expects a dict".

Au lieu de cela, vous avez besoin de lookup et de vars plugin. Par exemple

with_dict: "{{ lookup('vars', dep) }}"
0
Vladimir Botka 14 févr. 2020 à 10:53