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
это если сервак за натом например
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
🧐
Anatoliy
узлов много, появляются новые, вместо старых.
конечно можно было бы в var_hosts прописать и поддерживать в актуальном состоянии, но это не неаш путь.
Anatoliy
а нужно это для роли которая настраивает firewall на нодах и в зависимости от сервиса, нужно будет применить определенные правила, где то на public интерфейсе, где то на private, а где то и там и там
Timur
Timur
И что значит «появляются»? Сами собой размножаются?
Anatoliy
к чему все эти вопросы Timur?
я понимаю куда ты клонишь, но вот не хочется мне делать инвентаризацию по интерфейсам на всех узлах. Мне кажется можно обойтись без этого. Или я не прав?
Timur
Timur
Потому что если создание тачек автоматизировано, то проще сразу все при создании тачки получать
Timur
И тогда это делается уже не на уровне беготни по интерфейсам внутри ос, а на уровне фактов инстанса в клауде
Egor
Egor
если у тебя инфы о наличии интерфейсов нет
Andor
сделай bootstrap плейбук который будет наполнять фактами саму тачку
Andor
а в нормальных полагайся что факты уже на месте
Andor
нафиг надо на ходу каждый раз вычислять какую-то магию
Andor
inventory != facts
Egor
и потом обрабатываешь то, что тебе надо
Egor
причём задача разовая, ибо после того, как 1 раз всё собрал - руками не надо что-то делать, сидишь и адекватно описываешь плейбуки и идемпотентно обновляешь конфиги ансиблом
Egor
не?
Egor
или я так и не проникся твоей болью?
Anatoliy
окей, вернёмся к самому началу )
как мне получить имя интерфейса, если известен ip.
т.е. нужен просто хитрый фильтр selectattr
Andor
А если интерфейсов с эти ip несколько, то вернуть список?
Anatoliy
не понял? как несколько, один ip на двух интерфесах?
Egor
несколько айпи на 1 интерфейсе
Egor
алиасы, вот это вот всё
Andor
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
Сейчас да, получается бд не знает кто из них она
inqfen
Просто смотрел примеры уровня поднять в композе на 1 машине, там нигде для контейнера имя не указывается, в hosts ничего не пишется и т.д
Buh
>hostname контейнера должен == хостнейму в dns
Как вариант да. Второй вариант прописать это в hosts
Egor
вариатов масса
Buh
Вот да
inqfen
Не, ну там fqdn, и имя инстанса = имени в dns, тогда просто хостнейм контейнеру сделаю, спасибо
Pavel
Ребят, есть у кого опыт настройки Huawei OLT 5608? Пытаюсь через paramiko_ssh и raw, но raw позволяет только одну команду, потом сессия завершается, если что-то кроме raw, то отправляется EOF и сессия завершается хостом.
Damir
Pavel
Albert
Albert
- 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