You've got to fix a couple of things first.
* You're re-registering domain_vlan_policy_A and domain_vlan_policy_B,
which looks like a mistake to me. Are you using the same variable
name because you know you won't need the old values again, or is
that really an error? I'm asking because it may affect how you set
up your loops.
* Your template is looping over vlan_configs_A / vlan_configs_B, but I
don't see where those variables are being set.
Ignoring that, the basic idea is you'd put a loop: on an include_tasks:
or import_tasks: tasks with a vars: section that sets the domain policy
name and description, and do away with all the "_A" and "_B" in the
included file's tasks. That included file would be basically what you
posted, but with the issues above addressed.
- name: Include configure domain policy tasks
ansible.builtin.include:
file: what_you_posted_originally_almost.yml
vars:
domain_policy_name: "{{ item.name }}"
domain_policy_desc: "{{ item.desc }}"
loop:
- {name: '{{ name_of_vlan_comain_policy_A }}',
desc: '{{ description_of_vlan_domain_policy_A }}'}
- {name: '{{ name_of_vlan_comain_policy_B }}',
desc: '{{ description_of_vlan_domain_policy_B }}'}
That's nearly close enough to get you started I think.
On 1/29/24 11:29 AM, Tony Wong wrote:
can i get assistance with creating a loop for creating both A and B side.
- name: "Configure Domain VLAN Policy A"
vars:
api_info: &api_info
api_private_key: "{{ api_private_key }}"
api_key_id: "{{ api_key_id }}"
api_uri: "{{ api_uri | default(omit) }}"
validate_certs: "{{ validate_certs | default(omit) }}"
state: "{{ state | default(omit) }}"
cisco.intersight.intersight_rest_api:
<<: *api_info
resource_path: /fabric/EthNetworkPolicies
query_params:
$filter: "Name eq '{{ name_of_vlan_domain_policy_A }}'"
api_body:
Name: "{{ name_of_vlan_domain_policy_A }}"
Description: "{{ description_of_vlan_domain_policy_A }}"
Organization:
Moid: "{{ intersight_org.api_response.Moid }}"
Tags:
- Key: "configmode"
Value: "ansible"
- Key: "prefix"
Value: ""
register: domain_vlan_policy_A
- name: "Configure Domain VLAN Policy B"
cisco.intersight.intersight_rest_api:
<<: *api_info
resource_path: /fabric/EthNetworkPolicies
query_params:
$filter: "Name eq '{{ name_of_vlan_domain_policy_B }}'"
api_body:
Name: "{{ name_of_vlan_domain_policy_B }}"
Description: "{{ description_of_vlan_domain_policy_B }}"
Organization:
Moid: "{{ intersight_org.api_response.Moid }}"
Tags:
- Key: "configmode"
Value: "ansible"
- Key: "prefix"
Value: ""
register: domain_vlan_policy_B
- name: Print return information from the previous tasks
ansible.builtin.debug:
var: item.api_response.Moid
loop:
- "{{ domain_vlan_policy_A }}"
- "{{ domain_vlan_policy_B }}"
# Get Moid for domain_vlan_policy_A
- name: "Get Moid for Domain VLAN Policy A"
cisco.intersight.intersight_rest_api:
<<: *api_info
resource_path: /fabric/EthNetworkPolicies
query_params:
$filter: "Name eq '{{ name_of_vlan_domain_policy_A }}'"
register: domain_vlan_policy_A
# Create VLANs for Domain VLAN Policy A
- name: "Create VLANs for Domain VLAN Policy A"
cisco.intersight.intersight_rest_api:
<<: *api_info
resource_path: "/bulk/Requests"
api_body: |
{
"Verb": "POST",
"Uri": "/v1/fabric/Vlans",
"Requests": [
{% for vlan in vlan_configs_A %}
{
"ObjectType": "bulk.RestSubRequest",
"Body": {
"Name": "{{ vlan.name <http://vlan.name> }}",
"VlanId": {{ vlan.vlan_id }},
"SharingType": "None",
"PrimaryVlanId": 0,
"MulticastPolicy": "{{ multicast_policy.api_response.Moid }}",
"AutoAllowOnUplinks": false,
"IsNative": false,
"EthNetworkPolicy": "{{ domain_vlan_policy_A.api_response.Moid }}"
}
}{% if not loop.last %},{% endif %}
{% endfor %}
]
}
register: bulk_vlan_info_A
- name: Print return information for VLANs created with Domain VLAN
Policy A
ansible.builtin.debug:
var: bulk_vlan_info_A.api_response
# Get Moid for domain_vlan_policy_B
- name: "Get Moid for Domain VLAN Policy B"
cisco.intersight.intersight_rest_api:
<<: *api_info
resource_path: /fabric/EthNetworkPolicies
query_params:
$filter: "Name eq '{{ name_of_vlan_domain_policy_B }}'"
register: domain_vlan_policy_B
# Create VLANs for Domain VLAN Policy B
- name: "Create VLANs for Domain VLAN Policy B"
cisco.intersight.intersight_rest_api:
<<: *api_info
resource_path: "/bulk/Requests"
api_body: |
{
"Verb": "POST",
"Uri": "/v1/fabric/Vlans",
"Requests": [
{% for vlan in vlan_configs_B %}
{
"ObjectType": "bulk.RestSubRequest",
"Body": {
"Name": "{{ vlan.name <http://vlan.name> }}",
"VlanId": {{ vlan.vlan_id }},
"SharingType": "None",
"PrimaryVlanId": 0,
"MulticastPolicy": "{{ multicast_policy.api_response.Moid }}",
"AutoAllowOnUplinks": false,
"IsNative": false,
"EthNetworkPolicy": "{{ domain_vlan_policy_B.api_response.Moid }}"
}
}{% if not loop.last %},{% endif %}
{% endfor %}
]
}
register: bulk_vlan_info_B
- name: Print return information for VLANs created with Domain VLAN
Policy B
ansible.builtin.debug:
var: bulk_vlan_info_B.api_response
# Continue with other tasks as needed...
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/CALmkhkqs%3DENRapvNm%2BXSos2NBORVg4KnmzB%3DZ89OK0kiLwjRDg%40mail.gmail.com
<https://groups.google.com/d/msgid/ansible-project/CALmkhkqs%3DENRapvNm%2BXSos2NBORVg4KnmzB%3DZ89OK0kiLwjRDg%40mail.gmail.com?utm_medium=email&utm_source=footer>.
--
Todd
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/e07ad25e-30bb-4d0f-9c8b-af3c177d3cbd%40gmail.com.