Artem
Добрый день. Подскажите, есть ли возможность запустить плейбук через скрипт питона? Нашел вот это https://docs.ansible.com/ansible/2.4/dev_guide/developing_api.html#python-api-2-0 но здесь нет ответа на вопрос: как запустить сам плейбук
Vladimir
Alexandr
Добрый день! Подскажите если возможность запустить 1 playbook на несколько хостов паралельно?
чтобы не прибегать к такому
ansible-playbook playbooks/PLAYBOOK_NAME.yml --limit "host1"
Lamobot
Lamobot
Alexandr
Alexandr
не могу в одну их запихнуть
Lamobot
Не понимаю, что мешает сделать ещё одну группу под вашу задачу - установки нескольких ролей.
Sergey
Timur
Alexandr
Deyvis
Никто не вкурсе, как узнать порядковый номер ноды в инвентори?
Timur
Timur
У ключей словаря нет четкого порядка
Timur
Поэтому задача определения порядкового номера ключа заведомо бессмысленна
Deyvis
они же идут в каком то порядке, один за другим
Deyvis
следовательно их можно рассчитать
Timur
Он не фиксирован
Timur
При одном запуске может один порядок быть, потом другой
Timur
Как исходная задача звучит?
Deyvis
добавлять днс записи из группы.
кафка будет tratata-1
эластик tratata-2
и тд тп
Timur
Deyvis
в днс сервер
Deyvis
плюс соотносить с их ip
Timur
Ну и? Зачем тут какой-то порядок?
Deyvis
потом что количество нод не фиксировано и постоянно меняется. я и пишу цикл, что бы при прогоне он соотносил ноду с ее порядковым номером
Timur
Timur
Зачем какие-то номера?
Deyvis
я тоже
Timur
Вам нужно обновить DNS записи для хостов группы?
Deyvis
добавить\обновить не суть важно.
есть иннвентори с группой в которой куча хостов, их количество будет постоянно меняться. их имена будут постоянно меняться и на них не стоит ориентироваться. вообще никакой статики кроме ip адреса.
требуется:
соотнести ноду с ее ip и даеть ей имя, типо node-1.
соотнести 2ю ноду и дать node-2 тд тп
Deyvis
т.е. blablanode ip: 1.1.1.1 превращается в днс запись node-1 1.1.1.1
Timur
Timur
И используйте это
Timur
Зачем что-то там считать при этом?
Deyvis
смысла в этом большого нет, для моего случая
Timur
Timur
Пока она выглядит как создание костылей на пустом месте
Timur
Что за ноды, зачем вам нумерация и что именно вы хотите сделать?
Deyvis
просто представьте, что есть список нод с рандомными именами и рядом их ip адреса.
требуется привести этот список в днс и сделать четкое именование с шаблонным началом, например node
Deyvis
и это требуется для ряда служб, что бы имена были типа node-1, node-2, node-3
Timur
Timur
В чем проблема-то?
Deyvis
не могу придумать, как это сделать.
что бы он взял любую ноду и назвал ее node-1 и вписал её же ip
взял следующую и назвал node-2
Deyvis
{% if index == 0 %}{% else %}{% endif %} горожу типо такого, но не так работает, как хотелось бы
Timur
Alex
как то так
{% for curr_host in groups[hosts_group] %}
curr_host{{ loop.index }}
{% endfor %}
Timur
Timur
lookup sequence есть
Timur
Deyvis
модуль который отправить имя в днс
Deyvis
он вполне понимает переменные
Timur
Например with_inventory_hostnames
Timur
В качестве номера используйте текущий индекс лупа (он генерируется автоматически)
Timur
Вот и получите нужные вам имена вида node-1, node-2 и т.п. для каждого хоста группы
Anonymous
Коллеги подскажите как решить красиво, генерирую ансиблом файл upstream для nginx . Переменная выглядит так nginx:
upstreams:
- { name: "node3210", server: server1, domain: "{{internal_domain}}", port: 3210, fail_timeout: 0, conf: "nginx-default-upstream.conf.j2"}
шаблогн выглядит пока так
upstream {{ item.name }} {
server {{item.server}}.{{item.domain}}:{{item.port}} fail_timeout={{item.fail_timeout}};
}
мыль чтобы в перменной для server передавать адрес многих апстримов, но как это завернуть внутрь я не оч понимаю
Anonymous
сам спросил, сам разобрался)
Anonymous
победил так - { name: "node3210", server: { "node-sbx01", "node-sbx02"}, domain: "{{internal_domain}}"}, port: 3210, fail_timeout: 0, conf: "nginx-multi-upstream.conf.j2"}
и конфиг
upstream {{ item.name }} {
{% for included in item.server %}
server {{included}}.{{item.domain}}:{{item.port}} weight=50 fail_timeout={{item.fail_timeout}};
{% endfor %}
}
Anonymous
теперь задача два чтьбы каждому серверу задать вес,. то есть я так понимаю я должен дополнительные перменные добавить в server: { "node-sbx01", "node-sbx02"} - массив в массиве какой то получается
Vladimir
Full
Привет, чат.
Я пришел к тебе с вопросом.
Ansible 2.8.
Есть один модуль, vmware_portgroup, я его использую примерно вот так:
- name: Add Portgroup
vmware_portgroup:
hostname: '{{ vsphere_host }}'
username: '{{ vsphere_user }}'
password: '{{ vsphere_password }}'
validate_certs: no
hosts: '{{ esxi_hosts }}'
switch_name: '{{ item.esxi_vswitch }}'
portgroup_name: '{{ item.portgroup_name }}'
vlan_id: '{{ item.vlan_id }}'
state: present
with_items: '{{ esxi_portgroups }}'
delegate_to: localhost
Full
Все исправно добавляется (ну почти), но есть нюанс. При добавлении портгруппы ансибл оверрайдит настройки "Teaming and failover". Сами настройки при этом не изменяются. Просто расставляются галки "Override" (картинка ниже). В результате я не могу менять эти настройки на уровне свича.
Вопросов, собственно, два:
1. Как сделать так, чтоб ансибл не трогал Teaming and failover"?
2. Как сделать unset для этих настроек?
Full
Full
В доке написано, что для teaming_policy есть default: {"inbound_policy": false, "load_balance_policy": "loadbalance_srcid", "notify_switches": true, "rolling_order": false}
Единственное, что я пробовал - передать пустой словарь в teaming_policy (teaming_policy: '{}'), но это никак не меняет поведение.
Alex
В AWS модулях есть специальное значение, забыл как называется
Alex
мб здесь что то аналогичное
Отделение Bereke Bank
Сори случайно
Igor
почему ансиблу может это не нравиться?
Igor
2.9.6, ошибка ERROR! unexpected parameter type in action: <type 'bool'>
Igor
если убрать пакеты из таски, оставить просто обновление кеша, всё ок. С {{item}} тоже ок.
Alex
update_cache это же параметр модуля
Alex
а не таска
Igor
точно, я его не подвинул. Спасибо, работает. 🤦♂️
Alex
а что за pkg? У модуля apt нет такого параметра
Igor
https://docs.ansible.com/ansible/latest/modules/apt_module.html