Поскольку вывод ansible (результат playbook) не отличается от этого синтаксиса в 2.9.2, я бы использовал что-то подобное для того, чтобы перехватить ip как переменную:
import json
long_output = '''"(b'\nPLAY [localhost] **\n\nTASK [Creating abc] ***\nok: [localhost]\n\nTASK [debug] ***\nok: [localhost] => {\n "msg": "10.0.0.1"\n}\n\nPLAY RECAP ******\nlocalhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 \n\n', b"[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'\n[WARNING]: Found variable using reserved name: name\n")"'''
cut_string = json.loads(long_output.split("=> ")[1].split('PLAY RECAP')[0])
print(cut_string)
OUTPUT :
{'msg': '10.0.0.1'}
А затем выполните эту небольшую хитрость, чтобы перехватить все IP-адреса в виде списка: (Может быть, для будущего использования, если вы собираетесь запустить playbook более чем в одном месте назначения)
ip_addresses = [ip for ip in dict(cut_string).values()]
print(ip_addresses)
ВЫХОД:
['10.0.0.1']
Надеюсь, вы найдете это полезным.