If you didn't want a default value and instead wanted to gracefully handle an invalid value you could do something like this:
- name: validate filename lookup value assert: that: - my_var in file_table.keys() fail_msg: "File lookup key '{{ my_var }}' is not valid" success_msg: "File lookup key '{{ my_var }}' is valid" - name: do my file-based task debug: msg: "File name is {{ artifacts[my_var] }}" The "assert" task will fail the playbook if any of the tests fail (you can list more than one test). If all the tests pass then the playbook continues to the next task. Walter -- Walter Rowe, Division Chief Infrastructure Services, OISM Mobile: 202.355.4123 On Jul 18, 2023, at 8:51 AM, 'Rowe, Walter P. (Fed)' via Ansible Project <ansible-project@googlegroups.com> wrote: Todd's dictionary lookup is elegant and flexible. I'd go with that model. It supports any number of choices and gracefully gives a default value. Walter -- Walter Rowe, Division Chief Infrastructure Services, OISM Mobile: 202.355.4123 On Jul 17, 2023, at 10:29 PM, Todd Lewis <uto...@gmail.com> wrote: Hello, David. You could use a lookup table implemented as a simple dict. If you only need it in one task, you can define it in that task's vars section as I've done below, or farther "up" in host_vars, group_vars, etc., as long as it's defined somewhere. Here's a simple demo. I'm mapping colors to veggies, but you could map to file names or whatever. Be sure to handle the "missing" case. [utoddl@tango ansible]$ cat select-artifact.yml --- - name: Select artifact based on value hosts: localhost gather_facts: false tasks: - name: Match an artifact based on a value ansible.builtin.debug: msg: "Value {{ item }} matches artifact {{ artifacts[item] | default('!missing!') }}." vars: artifacts: green: cucumbers red: tomatoes purple: cabage yellow: squash loop: - red - orange - yellow - green - blue - indigo - violet [utoddl@tango ansible]$ ansible-playbook select-artifact.yml PLAY [Select artifact based on value] ********************************************************* TASK [Match an artifact based on a value] ***************************************************** ok: [localhost] => (item=red) => { "msg": "Value red matches artifact tomatoes." } ok: [localhost] => (item=orange) => { "msg": "Value orange matches artifact !missing!." } ok: [localhost] => (item=yellow) => { "msg": "Value yellow matches artifact squash." } ok: [localhost] => (item=green) => { "msg": "Value green matches artifact cucumbers." } ok: [localhost] => (item=blue) => { "msg": "Value blue matches artifact !missing!." } ok: [localhost] => (item=indigo) => { "msg": "Value indigo matches artifact !missing!." } ok: [localhost] => (item=violet) => { "msg": "Value violet matches artifact !missing!." } PLAY RECAP ************************************************************************************ localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 Cheers, -- Todd On 7/14/23 2:00 PM, David Nadelson wrote: Hi All, I'm a DBA learning to use ansible to automate. I'm wondering if anyone can point me to docs on how to use ansible to select a file based on the value of a variable. i.e. if variable=x than choose 1.txt if variable=y then choose 2.txt. Thanks, David -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to ansible-project+unsubscr...@googlegroups.com<mailto:ansible-project+unsubscr...@googlegroups.com>. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/2927e3e7-9dae-26e1-d51c-e42a3acd6607%40gmail.com<https://groups.google.com/d/msgid/ansible-project/2927e3e7-9dae-26e1-d51c-e42a3acd6607%40gmail.com?utm_medium=email&utm_source=footer>. -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to ansible-project+unsubscr...@googlegroups.com<mailto:ansible-project+unsubscr...@googlegroups.com>. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/9B6013A3-11F0-4D69-B9E6-56BAEC15EA40%40nist.gov<https://groups.google.com/d/msgid/ansible-project/9B6013A3-11F0-4D69-B9E6-56BAEC15EA40%40nist.gov?utm_medium=email&utm_source=footer>. -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to ansible-project+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/8EAC318D-AF10-40AE-8787-0710A5BD552F%40nist.gov.