AlexShmel🐝
ткните плз носом в установку 11 опенждк.
Timur
ткните плз носом в установку 11 опенждк.
https://github.com/lean-delivery/ansible-role-java
/warn
Хм, знаешь что интересно? Что когда я мержил на прод роль - install-python3 то все работало. И все тесты она прошла. А теперь, я в другом плейбуке ее использую - и вот именно эта роль выдает ошибку
ну вот, я убрал это роль и все прошло. Значит проблема в этой строке: - name: OS-specific tasks include_tasks: "{{ ansible_distribution|lower }}.yaml" Но вот какая? хз Плейбук стартует на cenots значит {{ ansible_distribution|lower }}.yaml должно вернуть centos.yaml и сделать инклуд с папки tasks
Timur
Installing OpenJDK 11 from web: - name: Install openjdk java hosts: all roles: - role: lean_delivery.java java_major_version: 11 java_tarball_install: true transport: web transport_web: https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz
Timur
аnsible-playbook tasks/main.yaml ???
Timur
Серьезно?
/warn
нет, там читай ниже чучуть
/warn
там линтеры все ломают почему-то
Timur
Какие линтеры?
Timur
Что у вас за плейбук вообще?
/warn
У меня есть есть install-python3 пару дней назад - он был смержован на прод, и прошел все тесты ( используем ansible-linter так как проект опен сорс, что б не накидали нам говна) Теперь у меня есть плейбук, в котором я использую этот install-python3 И ansible-linter выдает ошибку на этом плейбуке.
/warn
Да, этот
Timur
Какую ошибку?
/warn
Выдает ошибку: ERROR! no action detected in task. This often indicates a misspelled module name, or incorrect module path. The error appears to have been in '/home/zuul/src/review.opencontrail.org/Juniper/contrail-zuul-jobs/roles/install-python3/tasks/main.yaml': line 2, column 3, but may be elsewhere in the file depending on the exact syntax problem. The offending line appears to be: --- - name: os-specific tasks ^ here
Timur
Это не ошибка линта
Timur
Это ошибка основного синтаксиса
/warn
после этой команды: /bin/bash -c echo '* Ansible Syntax Check'; if test -d playbooks; then find playbooks -type f -regex '.*.ya?ml' -exec ansible-playbook --syntax-check -e@/home/zuul/src/review.opencontrail.org/Juniper/contrail-zuul-jobs/tests/secrets.yaml -i /home/zuul/src/review.opencontrail.org/Juniper/contrail-zuul-jobs/tests/inventory {} + > /dev/null; fi
Timur
Плейбук как у вас выглядит?
/warn
так он у меня стартует, и работает
/warn
вот что интересно
/warn
https://pastebin.com/kPB7zxJX
/warn
Вот так
/warn
Не я писал, это проверка всех плейбуков на синтаксис, до меня стояло и все работает
/warn
а вот именно на этой одной роли сломалось
Timur
https://pastebin.com/kPB7zxJX
Это код чего?
/warn
Плейбук как у вас выглядит?
это роль на которой дает ошибка
Timur
это роль на которой дает ошибка
А плейбук как выглядит?
/warn
А плейбук выглядит вот так: --- - hosts: builder roles: - install-python3 - install-contrail-api-client - python-black-linter - contrail-vcenter-fabric-manager-unit-tests
Timur
Так. И? Запуск этой плейбуки в режиме чека что дает?
/warn
ERROR! the role 'install-python3' was not found in /home/oleksandr/PycharmProjects/Juniper/contrail-zuul-jobs/playbooks/contrail-vcenter-fabric-manager/roles:/home/oleksandr/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles:/home/oleksandr/PycharmProjects/Juniper/contrail-zuul-jobs/playbooks/contrail-vcenter-fabric-manager The error appears to be in '/home/oleksandr/PycharmProjects/Juniper/contrail-zuul-jobs/playbooks/contrail-vcenter-fabric-manager/run.yaml': line 4, column 7, but may be elsewhere in the file depending on the exact syntax problem. The offending line appears to be: roles: - install-python3 ^ here
Timur
the role 'install-python3' was not found in ...
/warn
Но, это не совсем правильная ошибка. check пишет что не видит роль
Timur
Ни на какие мысли не наводит?
Timur
Да
/warn
Но плейбук стартует CI
Timur
Потому что плейбука не видит роль
/warn
в которой прописан путь к папке roles
/warn
и другие роли с той же папки ансибл видит
/warn
ну вот у меня стартуют роли: - install-python3 - install-contrail-api-client - python-black-linter - contrail-vcenter-fabric-manager-unit-tests
/warn
Они все в одной папке
/warn
и не видит только install-python3
/warn
Типа, есть такая архитектура: playbooks: - dir1/run.yaml - dir2/run.yaml - dir3/run.yaml roles: - role1 - role2 - role3 CI стартует эти плейбуки, и у нее в конфиге прописано что роли находится в /path/to/roles Поэтому --check и выдает ошибку.
/warn
Хм, он видит все другие роли
/warn
сам голову уже сломал себе
Timur
Значит, они еще где-то есть
Timur
Вы не следуете best practice в плане расположения ролей и плейбук, а потом удивляетесь, что что-то не так работает
/warn
Это best practice by Zuul. Все плейбуки стартует этот CI. Тем более, одна и та же роль используется по 30-40 раз в плейбуках, и каждый раз копировать - такая себе идея
/warn
Спасибо за помощь
Timur
Best practice для Ansible описан вот здесь: https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html#directory-layout
/warn
Ну, это CI, пайплайны которой пишутся на ansible
Timur
Ну, это CI, пайплайны которой пишутся на ansible
Ну, тогда смотрите в конфигурацию Zuul. Это уже внешняя обвязка над Ansible
/warn
Спасибо ещё раз!
Anonymous
dmitry будет жить. Поприветствуем!
Vladislav 👻
Можно как-то в jinja вывести int в восьмеричном формате?
Anonymous
Kasym Khafizov будет жить. Поприветствуем!
Womchik
when: my_var|default(false)|bool == true правильная проверка или нужно как-то иначе писать?
Vladislav 👻
Корректная, но можно проще
Vladislav 👻
when: my_var | defaults(false)
Vladislav 👻
Вроде тоже самое
Timur
Какое условие вам нужно?
Артём
when: my_var is defined and my_var
Timur
Если просто проверка my_var, которая принимает логическое значение, то when: my_var|bool
Womchik
просто |bool достаточно?
Timur
А, оно еще и не defined может быть?
Womchik
прекрасно
Womchik
меня больше волнует надо ли == True
Timur
Тогда можно так: when: - my_var is defined - my_var|bool
Timur
== True не нужно
Артём
меня больше волнует надо ли == True
на это линтер эрегирует.
Timur
Линтер это даже отдельной ошибкой считает
Womchik
спасибо