Здравствуйте уважаемые.
Пишу Вам т.к. у самого пока или знания или понимания не хватает.
Начал изучать ansible на досуге.
ansible --version -> ansible 2.8.1
Хочу настроить конфигурирование новых девайсов при помощи сего «чюда».
Затик на моменте отнесения девайса к региону. Из хостнейма витягиваю информацию об обозначении региона XX, но хочется добавить больше разума и проверять еще и по первим двум октетам IPv4.
vars:
regions: {
"MK": {"region": "MK", "ip": "172.44"},
"SP": {"region": "SP", "ip": "172.48"}
}
Вопрос. Как «обрезать» первые два октета
{{ ansible_default_ipv4.address.split('.')[0] }}.{{ansible_default_ipv4.address.split('.')[1] }}
Работает хорошо, но нельзя засунуть в when (я пока в jinja2 не умею :( )
- debug:
msg: "{{ item.key }} has region {{ item.value.region }} and ip {{ item.value.ip}}
when:
- "ansible_hostname.split('-')[0]|upper == item.value.region"
- "{{ ansible_default_ipv4.address.split('.')[0] }}.{{ansible_default_ipv4.address.split('.')[1] }} == item.value.ip" # не работает
loop: "{{ regions|dict2items }}"
Вот такое есть условие - с одним условием в when - отрабативает хорошо. Когда пробую добавить, что-то типа
"ansible_default_ipv4.address == item.value.ip"
- соот-нно ругается, говорит неверно (что не удивительно), т.к. работает не match, а точное соот-вие.
Если коротко - ниосилил.
Дома буду курить man
, но хочется и пообщатся с людьми знающими)