-1

How do I supply multiple values to the variable delete_signer_cert_cert_id in the following playbook and instead of duplicating the code multiple times?

- name: Delete expired signer certs
  hosts: all
  ignore_errors: true
  connection: local
  roles:
   - role: delete_signer_cert
     delete_signer_cert_kdb_id : "pdsrv"
     delete_signer_cert_cert_id: "ATTWiFiIssuingTest"

   - role: delete_signer_cert
     delete_signer_cert_kdb_id : "pdsrv"
     delete_signer_cert_cert_id: "Entrust.net Secure Server Certification Authority"

   - role: delete_signer_cert
     delete_signer_cert_kdb_id : "pdsrv"
     delete_signer_cert_cert_id: "Entrust.net Certification Authority (2048)"

   - role: delete_signer_cert
     delete_signer_cert_kdb_id : "pdsrv"
     delete_signer_cert_cert_id: "Entrust.net Client Certification Authority"

I tried something like this but in vain

---
- name: Delete expired signer certs
  hosts: all
  ignore_errors: true
  connection: local
  vars_files:
    - expiredsamlcerts.yml
  roles:
    - role: delete_signer_cert
     delete_signer_cert_kdb_id : "samlkeys"
     delete_signer_cert_cert_id: "{{ item.my_list }}"
     loop: "{{ my_list }}"

The file I supplied looks like this vi ~/expiredsamlcerts.yml

my_list:
  - saml_signer_14821_storm3ft_mc
  - saml_signer_14821_storm3ft_cm
  - saml_signer_14821_storm3ft_ds

Error

{"msg": "The conditional check 'delete_signer_cert_kdb_id is defined and delete_signer_cert_cert_id is defined' failed. The error was: error while evaluating conditional (delete_signer_cert_kdb_id is defined and delete_signer_cert_cert_id is defined): {{ item.my_list }}: 'item' is undefined\n\nThe error appears to have been in '/opt/app/ipa/roles/ipa_galaxy_roles/delete_signer_cert/tasks/main.yml': line 1, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: Delete signer certificate\n ^ here\n"}

Vladimir Botka
  • 58,131
  • 4
  • 32
  • 63
Rjitta
  • 1
  • 1

1 Answers1

0

You can use the module include_role. For example, given the role for testing

shell> cat roles/delete_signer_cert/tasks/main.yml 
- debug:
    msg: |
      delete_signer_cert_kdb_id: {{ delete_signer_cert_kdb_id }}
      delete_signer_cert_cert_id: {{ delete_signer_cert_cert_id }}

The play below

shell> cat pb.yml
- hosts: localhost

  vars:

    ids:
      - {kdb: pdsrv, cert: "ATTWiFiIssuingTest"}
      - {kdb: pdsrv, cert: "Entrust.net Secure Server Certification Authority"}
      - {kdb: pdsrv, cert: "Entrust.net Certification Authority (2048)"}
      - {kdb: pdsrv, cert: "Entrust.net Client Certification Authority"}

  tasks:

    - include_role:
        name: delete_signer_cert
      loop: "{{ ids }}"
      vars:
        delete_signer_cert_kdb_id: "{{ item.kdb }}"
        delete_signer_cert_cert_id: "{{ item.cert }}"

gives

shell> ansible-playbook pb.yml 

PLAY [localhost] ******************************************************************************

TASK [include_role : delete_signer_cert] ******************************************************

TASK [delete_signer_cert : debug] *************************************************************
ok: [localhost] => 
  msg: |-
    delete_signer_cert_kdb_id: pdsrv
    delete_signer_cert_cert_id: ATTWiFiIssuingTest

TASK [delete_signer_cert : debug] *************************************************************
ok: [localhost] => 
  msg: |-
    delete_signer_cert_kdb_id: pdsrv
    delete_signer_cert_cert_id: Entrust.net Secure Server Certification Authority

TASK [delete_signer_cert : debug] *************************************************************
ok: [localhost] => 
  msg: |-
    delete_signer_cert_kdb_id: pdsrv
    delete_signer_cert_cert_id: Entrust.net Certification Authority (2048)

TASK [delete_signer_cert : debug] *************************************************************
ok: [localhost] => 
  msg: |-
    delete_signer_cert_kdb_id: pdsrv
    delete_signer_cert_cert_id: Entrust.net Client Certification Authority

PLAY RECAP ************************************************************************************
localhost: ok=4    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 
Vladimir Botka
  • 58,131
  • 4
  • 32
  • 63