Anatoliy
я делаю так, в цикле по всем интрфейсам нахожу публичный адрес. и вот не пойу, можно ли в нём же сохрнить имя интрфейса? или это делать новым обходом?
Anatoliy
- name: get public ip host debug: msg="adress - {{item}}" with_items: "{{ ansible_all_ipv4_addresses }}" when: item | ipaddr('public')
Anatoliy
скорее всего в районе дебага, нужен set_fact с хитрым фильтром, который вернет по ip имя интерфейса
Vitaly
это если сервак за натом например
Vitaly
Все от задачи зависит
Anatoliy
задача - вычеслить имя интерфейса по ip
Anatoliy
и на самом деле не важно публичный он или серый
Andor
Вычеслить па ойпи
Anatoliy
yes!
Anonymous
Коллеги подскажите такой вопрос, имеется необходимость сравнить одну переменную внутри шаблона j2 c другой, а вот как правильно сделать не до конца понимаю. Пример vars, task и самого шаблона тут https://pastebin.com/EXaxW0RR
Anonymous
задача проверить, что имя сервера совпадает с именем из массива переменных и проставить нужный ID
Vladislav 👻
Ненужны двойные фигурные в кейсе if
Lamobot
{% for zk_host in groups[zk_cluster_group]|sort %} server.{{ loop.index }}={{ zk_docker_container_name_prefix }}{{ loop.index0 }}.{{org_domain}}:2888:3888 {% endfor %}
Lamobot
Я так делаю в конфиге зукипера
Anonymous
да вижу помогает, спасибо
Jungo
добрео утро! подскажите пож-та где посмотреть информацию по выводу переменый в шаблонный файл - в заменой переменных в файле шаблоне? обычно делал local-exec echo но вот хочу попробовать этот способ с шаблонизатором
Egor
не совсем понял, что ты хочешь, ты хочешь посмотреть переменную, которая ляжет в шаблоне на замену, результат замены в итоговом файле или что?
Jungo
не совсем понял, что ты хочешь, ты хочешь посмотреть переменную, которая ляжет в шаблоне на замену, результат замены в итоговом файле или что?
создать инвентори для ансибла из терраформа) ой блин не в тот чат написал) надо в терраформ было
Fidelina
Привет :) Вопрос, как работать с переменными в ансибле? например действие: consul keygen Выхлоп: > +I4drdp2ecjypf3YkwkiM1FBgF55ZjJhDFNWZPIpbv8= Это выхлоп нужно записатьв переменную и позже использовать в конфиге /etc/consul.d/config.json "encrypt": "+I4drdp2ecjypf3YkwkiM1FBgF55ZjJhDFNWZPIpbv8=", Как тут можно лучше сделать?
Andor
register
Andor
для консула есть модуль, может он это уже умеет
Fidelina
🧐
Timur
задача - вычеслить имя интерфейса по ip
Для чего это требуется? Заранее интерфейсы на машине не известны?
Anatoliy
узлов много, появляются новые, вместо старых. конечно можно было бы в var_hosts прописать и поддерживать в актуальном состоянии, но это не неаш путь.
Anatoliy
а нужно это для роли которая настраивает firewall на нодах и в зависимости от сервиса, нужно будет применить определенные правила, где то на public интерфейсе, где то на private, а где то и там и там
Timur
И что значит «появляются»? Сами собой размножаются?
Anatoliy
к чему все эти вопросы Timur? я понимаю куда ты клонишь, но вот не хочется мне делать инвентаризацию по интерфейсам на всех узлах. Мне кажется можно обойтись без этого. Или я не прав?
Anatoliy
Инстансы в клауде?
ну что то да, а что то нет
Timur
Потому что если создание тачек автоматизировано, то проще сразу все при создании тачки получать
Timur
И тогда это делается уже не на уровне беготни по интерфейсам внутри ос, а на уровне фактов инстанса в клауде
Anatoliy
Потому что если создание тачек автоматизировано, то проще сразу все при создании тачки получать
это - "идеальный мир", к которому мы конечно же будем стремиться. Но сейчас это происходит так: есть такчка, с настроенной сетью, и нужно применить к ней роль. Инфы о наличии интерфейсов нет - это грустный факт.
Egor
если у тебя инфы о наличии интерфейсов нет
Andor
сделай bootstrap плейбук который будет наполнять фактами саму тачку
Andor
а в нормальных полагайся что факты уже на месте
Andor
нафиг надо на ходу каждый раз вычислять какую-то магию
Anatoliy
если у тебя инфы о наличии интерфейсов нет
конечно же есть inventory, в котором нет ни слова об интрефейсах типа br0, eth1 etc
Andor
inventory != facts
Egor
конечно же есть inventory, в котором нет ни слова об интрефейсах типа br0, eth1 etc
если у тебя есть точный список серваков, да ещё и доступ к ним, то что за задачу ты пытаешься решить? и всегда есть гетфактс, он тебе вернёт список всего, что нужно по системе
Egor
и потом обрабатываешь то, что тебе надо
Egor
причём задача разовая, ибо после того, как 1 раз всё собрал - руками не надо что-то делать, сидишь и адекватно описываешь плейбуки и идемпотентно обновляешь конфиги ансиблом
Egor
не?
Egor
или я так и не проникся твоей болью?
Anatoliy
окей, вернёмся к самому началу ) как мне получить имя интерфейса, если известен ip. т.е. нужен просто хитрый фильтр selectattr
Andor
А если интерфейсов с эти ip несколько, то вернуть список?
Anatoliy
не понял? как несколько, один ip на двух интерфесах?
Egor
несколько айпи на 1 интерфейсе
Egor
алиасы, вот это вот всё
Andor
не понял? как несколько, один ip на двух интерфесах?
Берёшь и назначаешь, линуксы это позволяют
inqfen
Посоны
inqfen
Кто собирал rs монги ансиблом? Имею такие траблы fatal: [ip-172-20-1-47.eu-central-1.compute.internal -> localhost]: FAILED! => { "changed": false, "invocation": { "module_args": { "arbiter_at_index": null, "chaining_allowed": true, "election_timeout_millis": 10000, "heartbeat_timeout_secs": 10, "login_database": "admin", "login_host": "mongo-testing-3.example.com", "login_password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER", "login_port": 27017, "login_user": "admin", "members": [ "mongo-testing-1.example.com", "mongo-testing-2.example.com", "mongo-testing-3.example.com" ], "protocol_version": 1, "replica_set": "rs", "ssl": false, "ssl_cert_reqs": "CERT_REQUIRED", "validate": true } }, "msg": "Unable to create replica_set: No host described in new configuration 1 for replica set rs maps to this node"
inqfen
При этом имена серверов нормально резолвятся и пробовал по ip - ошибка та же
Buh
К ансиблу никакого отношения. У тебя нода монги не понимает какой она имеет хостнейм из реплики сама. Некоторые в hosts хостнейм явно пишут чтобы починить. Возможно обратную зону dns надо указать, но там вариантов полно. Кстати еще вариант что порт не указан в конфиги реплики, тоже бывают спецэффекты
Buh
А еще вариант когда монга в конфиге посажена на localhost :) тоже бывает
inqfen
Не, монга на 0.0.0.0
inqfen
Сейчас да, получается бд не знает кто из них она
inqfen
Просто смотрел примеры уровня поднять в композе на 1 машине, там нигде для контейнера имя не указывается, в hosts ничего не пишется и т.д
Egor
А, то есть hostname контейнера должен == хостнейму в dns? Чтобы она могла сама себя разрезолвить
у неё должна быть возможность себя разрезолвить, любым способом, п оумолчанию, у всех в хостс кладётся айпишник + имя хоста (обычно), но бывает либо не fqdn, либо ещё что, либо положено не так и т.д.
Buh
>hostname контейнера должен == хостнейму в dns Как вариант да. Второй вариант прописать это в hosts
Egor
вариатов масса
Buh
Вот да
inqfen
Не, ну там fqdn, и имя инстанса = имени в dns, тогда просто хостнейм контейнеру сделаю, спасибо
Pavel
Ребят, есть у кого опыт настройки Huawei OLT 5608? Пытаюсь через paramiko_ssh и raw, но raw позволяет только одну команду, потом сессия завершается, если что-то кроме raw, то отправляется EOF и сессия завершается хостом.
Pavel
Не сталкивался, но разве это не то что ансибл и делает, открывает вам ssh сессию. запускает raw команду и закрывает сессию
Да, но на железке мне нудно выполнить последовательность команд, и в этом проблема
Albert
Albert
- raw: | command1 command2
Pavel
- raw: | command1 command2
Спасибо, попробую пока обойтись этим
Sergei
я слыхал тут в ансибле шарят, есть вопросик when: pushgateway_enabled is defined and pushgateway_enabled == "true" , так можно?
Vladislav 👻
можно
Vladislav 👻
иногда даже нужно
Vladislav 👻
но можно упростить конструкцию pushgateway_enabled == "true" в pushgateway_enabled
Sergei
а как ему сказать, чтоб он не проверял высоту буковок в -=true= ?
Vladislav 👻
а как объявлена pushgateway_enabled?
Vladislav 👻
как pushgateway_enabled: "true"?
Sergei
да, но вдруг я крайне криворук и напишу True. Попробую сделать |lower