It's the other way around from what you state in the subject.
Your debug task using the variable ansible_all_ipv4_addresses, which works.

But then when of your copy task uses
ansible_facts['ansible_all_ipv4_addresses'],
which gives the error.
Try using just ansible_all_ipv4_addresses in the when clause?


On Wed, 14 Dec 2022 at 00:31, Adrian Sevcenco <[email protected]> wrote:

> Hi! So, while i do use conditions like: ansible_facts[ 'distribution' ] ==
> 'CentOS'
> now i'm trying to use ansible_all_ipv4_addresses
>
> i have the following code:
>
> - debug:
>      msg: |
>        ansible_all_ipv4_addresses: {{ ansible_all_ipv4_addresses }}
>        _network_reduced: "{{ ansible_all_ipv4_addresses |
> ansible.utils.reduce_on_network('XX.XXX.XX.0/24') }}"
>        _result_lenght: "{{ ansible_all_ipv4_addresses |
> ansible.utils.reduce_on_network('XX.XXX.XX.0/24') | length }}"
>        _result_value: "{{ ( ansible_all_ipv4_addresses |
> ansible.utils.reduce_on_network('XX.XXX.XX.0/24') | length |
> int ) > 0 }}"
>
> - name: Chrony configuration 85
>    ansible.builtin.copy:
>      src: "{{ playbook_dir }}/../additions/chrony/chrony.conf.client_pub85"
>      dest: /etc/chrony.conf
>      mode: 0644
>      owner: root
>      group: root
>      backup: true
>      force: true
>    register: chrony_is_configured
>    when:
>      - ( ( ansible_facts['ansible_all_ipv4_addresses'] |
> ansible.utils.reduce_on_network( 'XX.XXX.XX.0/24' ) | length |
> int ) > 0 )
>
>
> the problem is that the debug see the ansible_all_ipv4_addresses while the
> when condition does not
> i get:
>
> Dec 14 2022 01:18:00 - chrony_cfg.yml -  - debug - OK - {"msg":
> "ansible_all_ipv4_addresses: ['XX.XXX.XX.21',
> '172.18.0.21']\n_network_reduced: \"['XX.XXX.XX.21']\"\n_result_lenght:
> \"1\"\n_result_value: \"True\"\n",
> "_ansible_verbose_always": true, "_ansible_no_log": null, "changed": false}
>
> Dec 14 2022 01:18:00 - chrony_cfg.yml - Chrony configuration 85 -
> ansible.builtin.copy - FAILED - {"msg": "The
> conditional check '( ( ansible_facts['ansible_all_ipv4_addresses'] |
> ansible.utils.reduce_on_network( 'XX.XXX.XX.0/24' )
> | length | int ) > 0 )' failed. The error was: error while evaluating
> conditional (( (
> ansible_facts['ansible_all_ipv4_addresses'] |
> ansible.utils.reduce_on_network( 'XX.XXX.XX.0/24' ) | length | int ) > 0
> )): 'dict object' has no attribute 'ansible_all_ipv4_addresses'. 'dict
> object' has no attribute
> 'ansible_all_ipv4_addresses'\n\nThe error appears to be in
> '/home/adrian/ansible/playbooks/tasks/pkg_chrony_task.yml':
> line 15, 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: Chrony configuration 85\n  ^ here\n",
> "_ansible_no_log": false}
>
> so, beside that i can check in my redis backend that
> 'ansible_all_ipv4_addresses' is present, the fact is that
> the debug task works ..
>
> So, does anyone have any idea what is going on?
> Thanks a lot!!
> Adrian
>
> --
> 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/514517aa-4361-c76a-1410-8523c13f7174%40gmail.com
> .
>
-- 
Sent from Gmail Mobile

-- 
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/CAF8BbLa-YT2JFrSgJxZPz3-yzav0V4AUz9y2T-UCmnx8grN1-A%40mail.gmail.com.

Reply via email to