Issue
Some plugins like, the yum and apt modules can take lists directly to their options, this is more optimal than looping over the task. See each action’s documentation for details, for now here is an example:
- name: optimal yum
yum:
name: "{{list_of_packages}}"
state: present
- name: non optimal yum, not only slower but might cause issues with interdependencies
yum:
name: "{{item}}"
state: present
loop: "{{list_of_packages}}"
I was trying to do this
- name: Install libvirt
yum:
name: '"@Virtualization Hypervisor" "@Virtualization Client"'
But it fails saying that @Virtualization Hypervisor @Virtualization Client
isn't available. Removing the surround single quote or all quotes won't work either. How to approach this?
Currently I'm using the non-optimal solution but I would like to install both groups in one shot.
- name: Install libvirt
yum:
name: "{{ item }}"
state: present
loop:
- "@Virtualization Hypervisor"
- "@Virtualization Client"
Solution
In your example, you are not passing "a list of packages". You are passing a single string:
- name: Install libvirt
yum:
name: '"@Virtualization Hypervisor" "@Virtualization Client"'
A list would look something like this:
- name: Install libvirt
yum:
name:
- "@Virtualization Hypervisor"
- "@Virtualization Client"
Of if you prefer, the following is identical:
- name: Install libvirt
yum:
name: ["@Virtualization Hypervisor", "@Virtualization Client"]
Answered By - larsks Answer Checked By - Terry (WPSolving Volunteer)