<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic check_point.gaia.cp_gaia_radius_server doesn't work in a loop in Ansible</title>
    <link>https://community.checkpoint.com/t5/Ansible/check-point-gaia-cp-gaia-radius-server-doesn-t-work-in-a-loop/m-p/242095#M831</link>
    <description>&lt;P&gt;We have a simple compliance ansible role that checks if the radius servers on the nodes are correctly configured. If this is not the case, the role will add the radius servers accordingly.&lt;/P&gt;&lt;P&gt;Here is a snippet of the role:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;vars:

  radius_server:
    - address: "10.10.10.1"
      port: "1812"
      priority: "10"
      timeout: "3"
    - address: "10.10.10.2"
      port: "1812"
      priority: "20"
      timeout: "3"
  radius_default_shell: "cli"
  radius_super_user_uid: "0"

tasks:
  - name: Get RADIUS servers settings
    check_point.gaia.cp_gaia_radius_server_facts:
    register: radius
    tags:
      - always

  - name: Add missing RADIUS servers
    check_point.gaia.cp_gaia_radius_server:
      default_shell: "{{ radius_default_shell }}"
      super_user_uid: "{{ radius_super_user_uid }}"
      servers:
        - priority: "{{ item.priority }}"
          address: "{{ item.address }}"
          port: "{{ item.port }}"
          timeout: "{{ item.timeout }}"
          secret: "{{ radius_secret }}"
    loop: "{{ radius_server }}"
    when: &amp;gt;
      item.address not in (radius.ansible_facts.servers |default([]) | map(attribute='address') | list)
    register: added_servers&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The task iterates through the radius_servers vars correctly:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;TASK [cp_compliance_radius : Add missing RADIUS servers] ************************************************************************************************************************************************************
changed: [gaia_node1] =&amp;gt; (item={'address': '10.10.10.1', 'port': '1812', 'priority': '10', 'timeout': '3'})
changed: [gaia_node1] =&amp;gt; (item={'address': '10.10.10.2', 'port': '1812', 'priority': '20', 'timeout': '3'})&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;but instead of adding each server, the module overwrites the radius entries leaving only the last one in the loop active in the configuration:&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;show configuration

add aaa radius-servers priority 20 host 10.10.10.2 port 1812 secret ***** timeout 3
set aaa radius-servers default-shell /etc/cli.sh
set aaa radius-servers super-user-uid 0&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Versions:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;check_point.gaia              5.0.1

ansible [core 2.15.12]
python version = 3.9.19 (main, May 16 2024, 08:45:40) [GCC 8.5.0 20210514 (Red Hat 8.5.0-22)]
jinja version = 3.1.4
libyaml = True

OS: Gaia R81.20&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 24 Feb 2025 07:53:17 GMT</pubDate>
    <dc:creator>Mechanix</dc:creator>
    <dc:date>2025-02-24T07:53:17Z</dc:date>
    <item>
      <title>check_point.gaia.cp_gaia_radius_server doesn't work in a loop</title>
      <link>https://community.checkpoint.com/t5/Ansible/check-point-gaia-cp-gaia-radius-server-doesn-t-work-in-a-loop/m-p/242095#M831</link>
      <description>&lt;P&gt;We have a simple compliance ansible role that checks if the radius servers on the nodes are correctly configured. If this is not the case, the role will add the radius servers accordingly.&lt;/P&gt;&lt;P&gt;Here is a snippet of the role:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;vars:

  radius_server:
    - address: "10.10.10.1"
      port: "1812"
      priority: "10"
      timeout: "3"
    - address: "10.10.10.2"
      port: "1812"
      priority: "20"
      timeout: "3"
  radius_default_shell: "cli"
  radius_super_user_uid: "0"

tasks:
  - name: Get RADIUS servers settings
    check_point.gaia.cp_gaia_radius_server_facts:
    register: radius
    tags:
      - always

  - name: Add missing RADIUS servers
    check_point.gaia.cp_gaia_radius_server:
      default_shell: "{{ radius_default_shell }}"
      super_user_uid: "{{ radius_super_user_uid }}"
      servers:
        - priority: "{{ item.priority }}"
          address: "{{ item.address }}"
          port: "{{ item.port }}"
          timeout: "{{ item.timeout }}"
          secret: "{{ radius_secret }}"
    loop: "{{ radius_server }}"
    when: &amp;gt;
      item.address not in (radius.ansible_facts.servers |default([]) | map(attribute='address') | list)
    register: added_servers&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The task iterates through the radius_servers vars correctly:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;TASK [cp_compliance_radius : Add missing RADIUS servers] ************************************************************************************************************************************************************
changed: [gaia_node1] =&amp;gt; (item={'address': '10.10.10.1', 'port': '1812', 'priority': '10', 'timeout': '3'})
changed: [gaia_node1] =&amp;gt; (item={'address': '10.10.10.2', 'port': '1812', 'priority': '20', 'timeout': '3'})&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;but instead of adding each server, the module overwrites the radius entries leaving only the last one in the loop active in the configuration:&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;show configuration

add aaa radius-servers priority 20 host 10.10.10.2 port 1812 secret ***** timeout 3
set aaa radius-servers default-shell /etc/cli.sh
set aaa radius-servers super-user-uid 0&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Versions:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;check_point.gaia              5.0.1

ansible [core 2.15.12]
python version = 3.9.19 (main, May 16 2024, 08:45:40) [GCC 8.5.0 20210514 (Red Hat 8.5.0-22)]
jinja version = 3.1.4
libyaml = True

OS: Gaia R81.20&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 24 Feb 2025 07:53:17 GMT</pubDate>
      <guid>https://community.checkpoint.com/t5/Ansible/check-point-gaia-cp-gaia-radius-server-doesn-t-work-in-a-loop/m-p/242095#M831</guid>
      <dc:creator>Mechanix</dc:creator>
      <dc:date>2025-02-24T07:53:17Z</dc:date>
    </item>
  </channel>
</rss>

