inqfen
неважно, включен или выключен - он существует
Игорь
неважно, включен или выключен - он существует
я так понимаю этот ключ не может быть в ответе API, но может быть в запросе?
Игорь
в ответе только absent restarted running stopped, котрые так же валидны в запросе
inqfen
Это цель
inqfen
restarted - должен быть перезапущен, started - запущен - absent - удален, present - существовать, в любом состоянии
Игорь
в ответах видимо pending/restarting/running/stopped
inqfen
в ответах видимо pending/restarting/running/stopped
0 : pending 16 : running 32 : shutting-down 48 : terminated 64 : stopping 80 : stopped
Игорь
ну да, я поленился лезть
Игорь
это значения не имеет все равно
Игорь
невозможно понять, надо просто запомнить.
inqfen
Вообще ты юзаешь старый модуль
inqfen
https://docs.ansible.com/ansible/latest/collections/community/aws/ec2_instance_module.html А в новом как раз вполне однозначно написано - Goal state for the instances.
inqfen
Но вообще по моему опыту, как раз рулить инстансами за редкими исключаениями ансиблом неудобно
inqfen
Там еще различные косяки у модулей встречаются, которые приходится обрабатывать программированием на ансибле, что уже плохо
Игорь
разных
Игорь
в данном случае есть 1-10 иммутабельных инстансов, которые разом поднимаются и удаляются
inqfen
в смысле в ямле обрабатывать или свои модули писать?
В ямле, как раз уносить в модули куда благодатнее
Игорь
Sergey
90+ инстансов в 5 регионах.
inqfen
400+ в штуках 10) Таки - неудобно)
Игорь
Игорь
это даже не один экземпляр более-менее развесистого сайта
inqfen
Да размер не показатель, кому-то и при 1000+ будет норм, кому-то и с 10 не норм
inqfen
Одному вот надо создавать отдельные диски, потом цеплять их к инстансам у которых рут разделы меняются - второму не надо
Игорь
можно кейс для первого? зачем инстансу менять рутовый раздел?
inqfen
можно кейс для первого? зачем инстансу менять рутовый раздел?
Ну вот был 200, а потом нужен 100, а потом 50, а потом 300, бывает вполне и такое. Причем данные на нем не важны, а вот данные на подцепленном диске (или вообще на efs) это не трогает. Инстанс можно без проблем пересоздать - но вот в ансибле если ты скажешь - инстансу нужен новый размер рутового диска - он скажет пардон, он не меняется. Терраформ инстанс пересоздаст
inqfen
а если у тебя создано 10 дисков и 10 инстансов например (count, for_each) - он подцепит для пересоздавшихся и диски в том же порядке
Anonymous
пытаюсь сохранить факты делегированных машин на хостовую. Почему эта конструкция не работает? --- - name: gather setup: gather_subset: - '!all' - '!any' - hardware delegate_to: "{{ item }}" delegate_facts: true loop: "{{ servers }}" - name: print debug: msg: "{{ hostvars[servers].ansible_default_ipv4.address }}" loop: "{{ servers }}" В доках ансибла описана delegate_facts, сделанная специально для этого. Но нужные переменные во время второго таска отсутствуют
Timur
Всем привет! Ошибка при попытке установить модуль cisco.ios через ansible-galaxy: ERROR! Unexpected Exception, this is probably a bug: <urlopen error _ssl.c:1107: The handshake operation timed out>, я так понимаю проблема не у меня, кто сталкивался?
Div
это не ошибка ансибля. у вас проблемы с сертификатом. возможно вы за прокси с ssl\tls inspection сидите.
Anonymous
А вам не кажется, что вы собираете hardware факты, а хотите получить данные из network?
это да, но ансибл говорит об отсутствии переменной hostvars для делегированных серверов: he task includes an option with an undefined variable. The error was: \"hostvars['server1']\" is undefined\n\n
Vladimir
пускай безопасники смотрят чем занимаешься :)
Lamobot
это да, но ансибл говорит об отсутствии переменной hostvars для делегированных серверов: he task includes an option with an undefined variable. The error was: \"hostvars['server1']\" is undefined\n\n
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/setup_module.html Тогда возможно gather_subset неправильно составлен, там строка с модулями через запятую
Anonymous
пойду дальше гуглить в общем
Lamobot
неа, закоментил этот параметр, ошибка та же
И ещё, хосты, к которым вы обращаетесь всё равно должны быть в инвентаре
Lamobot
Там странное стопудово.....
Опыт не пропьешь! :)
Anonymous
а мне нельзя там ничего указывать, делаю роль, в которую массив с адресами приходит
Anonymous
в любом случае сейчас попробую добавить их в инвентори для проверки
Lamobot
а мне нельзя там ничего указывать, делаю роль, в которую массив с адресами приходит
Переделайте на передачу названия группы из инвентаря, хотя бы. И используйте groups[group_name] чтобы получить список хостов.
tutunak
А офф доки по ansible-test нет? Что зачем? В последних чейнж логах она фигурирует. Зачем оно нужно не могу понять
Fire
А офф доки по ansible-test нет? Что зачем? В последних чейнж логах она фигурирует. Зачем оно нужно не могу понять
нагуглил за 5 минут https://docs.ansible.com/ansible/latest/dev_guide/developing_collections.html#testing-collections
Anton
Господа, кто-нибудь управлял секьюрити группами ec2 через ансибл? Вы использовали прям такие конструкции, которые указаны в мануале? Как-то то, что создается через веб не равно тому, что создает ансибл
tutunak
нагуглил за 5 минут https://docs.ansible.com/ansible/latest/dev_guide/developing_collections.html#testing-collections
Спасибо, но поиск по доке у них ужасен. Либо я чет криво делаю
Fire
Так не работает)
Anonymous
я как-то неправильно обозначаю элемент листа или че? Почему он пытается обратиться к 'item', а не к элементу, указывающим на него? - name: dsgaerg debug: msg: - "{{ tosca_hash + hostvars.item[0].item[1] }}" with_nested: - "{{ groups['servers'] }}" - "{{ facts_params }}" ——— The task includes an option with an undefined variable. The error was: \"hostvars['item']\" is undefined\
Anonymous
@tnt4brain а как тогда? {"msg": "template error while templating string: expected name or number. String: {{ tosca_hash + hostvars.['item[0]'].['item[1]'] }}"} {"msg": "template error while templating string: expected name or number. String: {{ tosca_hash + hostvars.[item[0]].[item[1]] }}"}
Anonymous
ой ой внатуре
Viktor
Привет, мне бы хотелось в inventory1 задавать переменные из inventory2, inventory3, конкретно: redis_all_hosts: "{{ redis_dev_hosts + redis_prod_hosts }}", где redis_dev_hosts кладется в inventory2, redis_prod_hosts - в inventory3. У меня такое получится?
Viktor
Какую задачу решаешь?
У меня один redis-sentinel для двух окружений. Из inventory2 делаются редисы дева, из inventory3 редисы прода, инвентори1 смотрит на переменные из inv2, inv3 и апдейтит redis-sentinel
Lamobot
У меня один redis-sentinel для двух окружений. Из inventory2 делаются редисы дева, из inventory3 редисы прода, инвентори1 смотрит на переменные из inv2, inv3 и апдейтит redis-sentinel
Если там разные хосты и переменные, то почему разные инвентари? Можно указывать несколько -i параметров
Viktor
Если там разные хосты и переменные, то почему разные инвентари? Можно указывать несколько -i параметров
разделаю по dev/prod, отсюда и несколько инвентори. А все же из одного инвентори в другое импорта не существует? С ним было бы удобнее
Viktor
Или же, могу я задавать инвентори в самом плейбуке, а не в командной строке?
Lamobot
'open_ports' in firewall.keys() or 'access_ports' in firewall.keys()
Немного верну старую темку про проверку входит ли ключик в словарь. Вроде как можно без проблем проверять простым: '"key_name" in dict' Похоже что там неявные преобразования словаря в список ключей. Возможно зависит от версии питона/ансибла
Lamobot
Или же, могу я задавать инвентори в самом плейбуке, а не в командной строке?
https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#using-multiple-inventory-sources
Max
Ага, я тоже спрошу про разные инвентори и всё такое. Только больше в разрезе best practice. Собсно имею роли на раскатывание разных серверов, а так же плейбуки по управлению парком компов. Хочу несколько вещей: под каждую роль иметь свой инвентори с переменными; отдельные инвентори для разных плейбук; и один общий инвентори с глобальными переменными применимыми для всех хостов (например юзер, под которым хожу или пароль судо). И хочу это хранить в гите в отдельных репах. Чтобы получалось так - надо раскатить некий сервер - с гита стянул репу, ансиблу скормил и он всё сделал. При этом общие для всех переменные указываются в одном инвентори файле, а не в каждой репе отдельно. О таком даже документация говорит: https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html#organizing-host-and-group-variables Но есть пара "но". В документации общие (глобальные) переменные предлагается хранить в /etc/ansible/, который принадлежит root. наверное не оч круто в гите хранить такое и как это разворачивать (я ансибл запускаю на мастер-машине от юзера, а не от рута). Второй момент что мне приходится указывать два инвентори файла при запуске плейбука: с глобальными переменными и с локальными переменными (для роли). Было бы круто, если бы инвентори для конкретной роли как-то подключал (include) инветори с глобальными переменными. Как правильно делать-то? Пихать всё-всё-всё в один инвентори не хочу. Не проставил --limit и оно поехало на все серваки и компы?
Vladislav 👻
мы дублируем значения в группе all
Vladislav 👻
т.к. в группе можно иметь множество файлов, то общие файлы называются уникально и одинаково между инвентори
Vladislav 👻
симлинк на группу хреново, симлинк на каждый файл - лень
Anton
Господа, кто-нибудь управлял секьюрити группами ec2 через ансибл? Вы использовали прям такие конструкции, которые указаны в мануале? Как-то то, что создается через веб не равно тому, что создает ансибл
Неужели все для aws тераформ используют? Если сравнивать эталонный сервер через модуль ec2_group_info с теми, которые я создал через ансибл, то никаких отличий нет, но у модул ec2_group диф показывает дополнительные строчки Может так будет понятнее, в чем проблема. "ip_ranges": [ { "cidr_ip": "22.33.44.55/24" - }, + } + ], + "ipv6_ranges": [], + "prefix_list_ids": [], + "user_id_group_pairs": [] + }, + { + "ip_protocol": "-1", + "ip_ranges": [ { "cidr_ip": "11.22.33.44/32", "description": "prometheus" - }, + } + ], + "ipv6_ranges": [], + "prefix_list_ids": [], + "user_id_group_pairs": [] + },
Max
симлинк на группу хреново, симлинк на каждый файл - лень
как-то тоже сложно. по моей схеме нужно стянуть из гита два репа - с глобальными переменными и роль с локальными переменными. далее запустить плейбуку с указанием двух инвентори. т.к. глоабльные переменные хранятся в одном файле, то не будет такого, что в какой-то роли забыли поменять что-то
Yks
как можно избежать "the output has been hidden due to the fact that 'no_log: true” если оно во внешней роли? Пытался через екстраварс засетить log=true и no_log=false но чего то не помогает(
Yks
=(
Vitaly
Приветствую люди. Кто знает, Когда делаю так: - name: Setup java agents for jboss hosts: jboss roles: - { role: java_jboss, when: ansible_os_family == 'RedHat', become: yes} - { role: java_jboss_win, when: ansible_os_family == 'Windows'} То переменные из Windows роли доступны в Linux роли (несмотря на то что по when роль не должна была загрузиться.). В итоге это ломает плейбук Если делаю так: - name: Setup java agents for jboss hosts: jboss tasks: - include_role: name: java_jboss apply: become: yes when: ansible_os_family == "RedHat" - include_role: name: java_jboss_win when: ansible_os_family == "Windows" То все нормально, переменные не “шарятся” Это ожидаемое поведение? ansible 2.10