Test that a variable is a valid IP address

I’m trying to create a task that verifies a variable is a valid IP address. The task should pass if it is valid, and fail if it’s not.
I feel like I’m close, but not quite there with this:

`

  • name: Verify IP address
    assert: { that: “{{ requested_ip | ipaddr }}” }
    always_run: yes
    `

This task fails properly when the value is not an IP (ipaddr filter returns False), but if it IS an IP it tries to evaluate the ip itself and throws an error (ipaddr returns the IP itself):

TASK [Verify IP address] **************************** fatal: [localhost]: FAILED! => {“failed”: true, “msg”: “The conditional check ‘10.1.4.232 != False’ failed. The error was: error while evaluating conditional (10.1.4.232 != False): float object has no element 4”}

Any suggestions?

Thanks,
Ryan

According to the documentation, "that" has the same format as "when".
Since you shouldn't use curly brackets in "when" , you should probably not use them in "that".

Try
assert: { that: requested_ip | ipaddr }
and see if that fixes it.

Yep that was it, thanks a lot!

I have a case (IP with a space in a string)

vars:

requested_ip: ‘1 .2.3.4’ # note a space in a string

tasks:

  • name: Verify IP address
    assert: { that: “{{ requested_ip | ipaddr }}” }
    always_run: yes

This works, but it is not ‘all in one’

  • name: Verify IP address
    assert:
    that:
  • requested_ip | ipaddr
  • not ’ ’ in requested_ip

W dniu czwartek, 19 kwietnia 2018 09:19:38 UTC+2 użytkownik sirkubax napisał: