Написание кода для проверки ipaddress, поскольку ipaddr зависит от python -netaddr, мы не можем гарантировать, что целевой ansible сервер установил его. Это из "поваренной книги регулярных выражений", длинная, но хорошо работающая.
- name: validate cluster -> topology_source_ip
fail:
msg: "topology_source ({{topology_source_ip}}) is not a valid IP address."
when:
- topology_source_ip is not regex('(?i)^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}?(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$')
- topology_source_ip is not regex('(?i)^(?:(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}|(?=(?:[A-F0-9]{0,4}:){0,7}?[A-F0-9]{0,4}$)(([0-9A-F]{1,4}:){1,7}|:)((:[0-9A-F]{1,4}){1,7}|:)?|(?:[A-F0-9]{1,4}:){7}:|:(:[A-F0-9]{1,4}){7})$')
Я хочу разбить длинные строки на "стандартные" строки (<= 80 символов). Я гуглил, но не могу найти решение для упаковки длинных повторных паттернов в ansible playbook. Любая идея? </p>
В Python это может быть:
r=re.compile(
r'^(?:(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}|(?=(?:[A-F0-9]{0,4}:){0,7}?'
r'[A-F0-9]{0,4}$)(([0-9A-F]{1,4}:){1,7}|:)((:[0-9A-F]{1,4}){1,7}|:)?'
r'|(?:[A-F0-9]{1,4}:){7}:|:(:[A-F0-9]{1,4}){7})$'
,re.IGNORECASE
)
r.match("c10d:100::24")