J'essaie de récupérer l'ID de groupe de deux groupes ( sysloget utmp) par nom à l'aide d'une tâche Ansible. À des fins de test, j'ai créé un playbook pour récupérer les informations de l'hôte Ansible lui-même.
---
- name: My playbook
  hosts: enabled
  sudo: True
  connection: local
  gather_facts: False
  tasks:
    - name: Determine GIDs
      shell: "getent group {{ item }} | cut -d : -f 3"
      register: gid_{{item}}
      failed_when: gid_{{item}}.rc != 0
      changed_when: false
      with_items:
        - syslog
        - utmp
Malheureusement, j'obtiens l'erreur suivante lors de l'exécution du playbook:
fatal: [hostname] => error while evaluating conditional: gid_syslog.rc != 0
Comment puis-je consolider une tâche comme celle-ci dans un formulaire paramétré tout en enregistrant des variables distinctes , une par article , pour une utilisation ultérieure? Le but est donc d'avoir des variables basées sur le nom du groupe qui peuvent ensuite être utilisées dans des tâches ultérieures.
J'utilise le intfiltre gid_syslog.stdoutet gid_utmp.stdoutje fais un calcul basé sur le GID dans les tâches ultérieures.
J'ai également essayé d'utiliser gid.{{item}}et gid[item]au lieu de gid_{{item}}vain.
Les éléments suivants fonctionnent bien contrairement à ce qui précède:
---
- name: My playbook
  hosts: enabled
  sudo: True
  connection: local
  gather_facts: False
  tasks:
    - name: Determine syslog GID
      shell: "getent group syslog | cut -d : -f 3"
      register: gid_syslog
      failed_when: gid_syslog.rc != 0
      changed_when: false
    - name: Determine utmp GID
      shell: "getent group utmp | cut -d : -f 3"
      register: gid_utmp
      failed_when: gid_utmp.rc != 0
      changed_when: false