𝚔𝚟𝚊𝚙𝚜
не, твой плейбук работает, эт я значит где-то накосячил
Womchik
о как таки правильно
𝚔𝚟𝚊𝚙𝚜
моя ошибка была в неприведении типов slice indices must be integers or None or have an __index__ method
𝚔𝚟𝚊𝚙𝚜
myarr[0:(variable | int)] так работает
bebebe
да, есть такая неприятность
Андрей
ребята, как правильно посчитать яблоки? - set_fact: fruit_box: "[ 'апельсин', 'яблоко1', 'яблоко2', 'банан', 'киви', 'яблоко3']" - debug: msg: "{{ item }}" with_items: "{{ fruit_box}}" - name: Get number of apples. set_fact: apple_counter: "{% if 'яблоко' in item %}{{ apple_counter = apple_counter + 1 }}{% endif %}" with_items: "{{ fruit_box }}" - name: "apple_num" debug: msg: "{{apple_counter}}" ошибка "template error while templating string: expected token 'end of print statement', got '='. String: {% if 'яблоко' in item %}{{ apple_counter = apple_counter + 1 }}{% endif %}"}
Андрей
а, сделал)
Андрей
vars: apple_counter: 0 tasks: - set_fact: fruit_box: "[ 'апельсин', 'яблоко1', 'яблоко2', 'банан', 'киви', 'яблоко3', 'яблоко4']" - name: debug err_lines2 debug: msg: "{{ item }}" with_items: "{{ fruit_box}}" - name: Get number of apples. set_fact: apple_counter: "{% if 'яблоко' in item %} {% set apple_counter = apple_counter|int + 1 %} {% endif %}{{apple_counter}}" with_items: "{{ fruit_box }}" - name: "apple_num" debug: msg: "{{apple_counter}}" сюда написал и мысль пришла
Vadim
{{ fruit_box|select("equalto", "яблоко") | length }}
bebebe
пришел лесник и всех разогнал (с)
Vadim
чтите документацию
matt
почему при хранении инвентори в отдельных директориях не подтягиваются групповые переменные из "корня"?
matt
типа хосты в project/inventory/dev/hosts.ini, а переменные в project/group_vars/all/common.yml
Aleksey
https://github.com/ansible/ansible/blob/stable-2.7/changelogs/CHANGELOG-v2.7.rst
matt
што
matt
я хочу определить некоторые "глобальные" групповые переменные, и не дублировать их в каждом inventory/{dev,staging,production}
Victor
што
У тебя инвентори где?
matt
project/inventory/dev/hosts.ini
Victor
папка с инвентори
matt
мамка
Victor
директория
Victor
складка
matt
в project_name/inventory
Nklya
Почему бы их не засунуть в дефолтные переменные роли?
Victor
>project_name/inventory
Victor
А почему group_vars не в ней?
Vadim
https://docs.ansible.com/ansible/2.5/modules/include_vars_module.html
matt
а чо так можно было?
Victor
https://docs.ansible.com/ansible/2.5/modules/include_vars_module.html
Ну это обычно если по фактам нужно заинклудить.
matt
project/ └── inventory ├── dev ├── group_vars ├── production └── staging
matt
вот так?
matt
сейчас зачекаю
Vadim
project - inventory - кони - люди - дипломный проект
matt
не работает
Victor
не работает
с -vvv он тебе должен написать какие файлы в инвентори он запарсил
Victor
вей, не то
bebebe
когда-нибудь кто-нибудь должен обязательно спросить про версию ansible
matt
2.6.5
bebebe
у меня это выглядит так: /etc/ansible/inventory inventory.yaml host_vars/host.foobar.com.yml group_vars/somegroup.yml
Victor
OS?
matt
macOS 10.14
Victor
у меня это выглядит так: /etc/ansible/inventory inventory.yaml host_vars/host.foobar.com.yml group_vars/somegroup.yml
group_vars/group_name/part.yml - тоже валидное расположение, у меня так
Victor
Почитай https://github.com/ansible/ansible/issues/31755 возможно как-то к тебе относится
Victor
Хотя по версии вроде не должно
Pavel
не работает
если сделать group_vars в корне проекта (там где конфиг и плейбуки) и складывать туда общие инвентри для разных групп, должно работать
Pavel
просто у меня все это в хоуме, а не "/etc" а потом еще и в репе
Pavel
типа такого: ~/devops ansible group_vars inventory development group_vars host_vars hosts production group_vars host_vars hosts stage group_vars host_vars hosts keys log roles tools ansible.cfg
matt
как раз так и не работает
matt
из самого верхнего group_vars не применяются
Victor
из самого верхнего group_vars не применяются
естественно, потому что у тебя это не в инвентори
matt
я предполагал что оно наследоваться будет
Victor
mv ~/devops/ansible/group_vars ~/devops/ansible/inventory/group_vars должно решить твои проблемы
matt
не решает, я же писал)
Victor
Если ты указываешь инвентори как ~/devops/ansible/inventory
Victor
а если как ~/devops/ansible/inventory/stage , например, то он вообще ничего про это знать не будет
Pavel
из самого верхнего group_vars не применяются
только что создал group_vars/all.yml и сработало: ansible-playbook ./test_group.yml -i inventory/development/hosts
matt
я указываю его из текущего каталога, а-ля ap -i inventory/dev/hosts.ini playbooks/bootstrap.yml
Victor
я указываю его из текущего каталога, а-ля ap -i inventory/dev/hosts.ini playbooks/bootstrap.yml
Ну тогда он у тебя вообще ничего про групварсы не будет знать которые выше inventory/dev/
matt
блин
matt
неудобно сделано
Victor
неудобно сделано
Нормально сделано
Victor
иначе будет хаос, бардак и еще что-то
Victor
Ты можешь указывать два инветори бтв
Victor
Ты можешь объединить это все в один инвенори разбив хосты просто по группам
Victor
Или указывать в дефолте роли
Pavel
я указываю его из текущего каталога, а-ля ap -i inventory/dev/hosts.ini playbooks/bootstrap.yml
может потому что от тебя другого ожидают Best Practices: https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html#directory-layout
Victor
+1
matt
иначе будет хаос, бардак и еще что-то
бардак это когда ворох плейбуков и инвентори в корне лежит, а не по директориям
Victor
Ну если ты указываешь инвентори, а у тебя энзибл ищет не там, то это черевато странным поведением и проблемами с траблшутингом что и где
Pavel
бардак это когда ворох плейбуков и инвентори в корне лежит, а не по директориям
а в корне только плейбуки и конфиг, все инвентри по разным директориям, причем проды, девы, стажи отдельно даже по разным проектам.... а общее можно вынести в корневой "вар-групп"
Pavel
и никакого бардака, и для репозитория удобно - все в одной директории, только кей и лог исключить из версионирования....
matt
может я что-то не так делаю, но у меня по 20+ плейбуков в корне накапливается)
Pavel
если там только плейбуки
matt
проблема скорей в эстетичности
Pavel
циферки... )))