Как проверить, есть ли у сервера частный интерфейс в Ansible Playbook - PullRequest
0 голосов
/ 04 октября 2019

Ansible-playbook должен иметь определенные задачи, если сервер имеет частный сетевой интерфейс 10.xxx

Я думаю об использовании переменной фактов ansible_all_ipv4_addresses. Это выглядит так:

    "ansible_all_ipv4_addresses": [
        "10.1.2.3", 
        "some.public.network.interface"
    ]

Это работает, когда я определяю точный IP-адрес в условии, то есть:

- name: foo
  foo: bar
  when: '"10.1.2.3" in ansible_all_ipv4_addresses'

Но это не работает, когда я пытаюсь использовать любое регулярное выражение. Я попробовал регулярное выражение, например:

10.*
10.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}
10\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}

В каждом случае я получаю "skip_reason": "Conditional result was False"

Как мне написать правильное регулярное выражение или есть какой-либо другой способ определить, имеет ли сервер частный интерфейс 10. ххх

1 Ответ

0 голосов
/ 04 октября 2019

Использовать ipaddr filter .

Полагаю, вас интересует публичный / приватный фильтр. Из документации:

You can check if IP addresses or network ranges are 
accessible on a public Internet, or if they are in private 
networks:

# {{ test_list | ipaddr('public') }}
['192.24.2.1', '2001:db8:32c:faad::/64']

# {{ test_list | ipaddr('private') }}
['192.168.32.0/24', 'fe80::100/10']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...