n-хостов, в конфиге на каждом хосте нужно перечислить ip всех хостов из группы, кроме собственного ip. собственно как из цикла исключить собственный ip хоста? спасибо
{% for ip in groups[keepalived_group_name] | map('extract', hostvars, ['ansible_eth1', 'ipv4', 'address']) | list | difference([ansible_eth1.ipv4.address]) %} типа так
прям как почувствовал, что я про keepalived =)
у меня как-то так hosts: " {%- set ips = [] %} {%- for host in groups[keepalived_group] %} {{- ips.append(dict(id=loop.index, host=host, ip=hostvars[host]['ansible_host'])) }} {%- endfor %} {{- ips -}}" keepalived_peer_ips: "{{ hosts | rejectattr('host', 'equalto', inventory_hostname ) |map(attribute='ip') | list }}"
и тка попробуем. спс
а можно чуть по подробнее? keepalived_peer_ips - это описанная переменная в defaults,например, а hosts это где ты это описал?
host это элемент списка. там любое слово можешь использовать
А нет я не прав. Не так посмотрел) ждём автора
у меня hosts это универсальная перменная, описана она в group_vars и дальше используется для разных ролей. Получается часть логики храниться в group_vars, наверно это не супер круто и в приниципе можно и в роль унести.
а keepalived_peer_ips ты уже непосредственно в jinja2 например вставляешь и получаешь все ip кроме хоста хозяина так сказать. верно?
да, в шаблоне это выглядит вот так unicast_peer { {{ keepalived_peer_ips | join('\n ') }} }
ага, спс, попробуем
а это не спроста ('\n ') ?=)
что красиво было) каждый адрес на новой строке и с отступами
понял...я просто с 2мя хостами тестирую и не заметил эффекта =)
у меня ещё приоритет для каждого сервера считается с помощью этого массива hosts keepalived_priority_max: 100 keepalived_priority: "{{ keepalived_priority_max - hosts | selectattr('host', 'equalto', inventory_hostname)| map(attribute='id') |first}}"
так я уже не стал усложнять, просто в host_vars для каждого хоста свою конкретику задал (state, priority и тд)
я делал так, что развернуть можно было указав только группу и vip. Кластеры keepalived на потоке))
а еще вопросик - у вас selinux откл в работе? а то при вкдюченном selinux падает на ошибку keepalived =(
а подскажи пжлст в конфиге keepalived.conf у вас unicast_src_ip указан?
unicast_src_ip {{ ansible_default_ipv4.address }}
Обсуждают сегодня