Я новичок в Ansible, но я должен поддерживать набор playbooks, которые соответствуют службам, которые будут установлены в данной среде. Им нужно назначить порт, сертификаты и т. Д. Это приводит ко многим файлам со списками по существу всегда одинаковых имен и назначению им.
Во многих случаях я думаю, что могу легко повторно использовать имя_службы как переменную, но при сопоставлении с IP-адресами, портами или другими числовыми идентификаторами я еще не нашел способ детерминистически назначать им разные номера таким образом, чтобы это можно было воспроизвести, и, предпочтительно, оно остается То же самое, даже когда добавляются новые услуги. Я рассмотрел возможность использования базы данных SQLite для хранения сервисов и создания значений из их идентификаторов, но я понятия не имею, как интегрировать это с Ansible.
Я предполагаю, что назначение увеличивающихся номеров портов не является чем-то совершенно новым; это то, к чему ежедневно прибегают системные администраторы, поэтому должен быть какой-то способ сделать это.
Изменить : мы напрямую добавляем номера портов и т. Д., group_vars/all.yml
Как это:
ports:
service1:1024
service2:1025
service3:1026
Инвентарь создается автоматически, так как мы создаем дополнительные тюрьмы (BSD) и зависят от ролей, которые будут выполнены.
group_vars
или добавляете переменные прямо в файлы инвентаря. Также не ясно, как создается ваш инвентарь.Ответы:
Отказ от ответственности: я не использую Ansible.
Я бы использовал случайное «предсказуемое» число. Согласно Ansible doc, вы можете запустить генератор случайных чисел:
Так что в вашем случае для номера порта (я полагаю, непривилегированный) я бы пошел на переменную с чем-то вроде:
Максимум на 32767, чтобы избежать конфликта с любым портом, инициированным клиентом (см. Эфемерный порт для причины).
источник