Vladislav 👻
может
Если role__var, то уже не может
Timur
Ну да, у этого человека местами переуплотнённые области. Ну и что тут такого? Уберите его с рельсов и поедем дальше на паровозе.
Еще раз. Что именно вы пытаетесь сказать? Что вам не нравится роль? Ну, ок. Мне тоже не оч. Я иначе пишу. И что?
George
Еще раз. Что именно вы пытаетесь сказать? Что вам не нравится роль? Ну, ок. Мне тоже не оч. Я иначе пишу. И что?
Я просто пытаюсь понять по каким критериям ты определяешь хорошесть роли с галакси.
Timur
Я просто пытаюсь понять по каким критериям ты определяешь хорошесть роли с галакси.
По тому, насколько код соответствует best practice и принятым соглашениям
Timur
У этих товарищей все роли под их проекты заточены. Они их используют со своей структурой данных, как у них принято. Значит, им норм. Выглядеть может не очень, но код явно рабочий вполне.
Timur
Мы обычно пишем иначе. Наши роли вы тоже видели, вроде.
Timur
И ты такой код возьмёшь с galaxy в свой проект?
В сыром виде - вряд ли. Но если по-быстрому для каких-то тестовых нужд - то вполне.
Timur
Может быть нет. Дай ссылку.
https://galaxy.ansible.com/lean_delivery
tutunak
https://galaxy.ansible.com/lean_delivery
Что то нет префиксов
Timur
Где именно?
George
https://galaxy.ansible.com/lean_delivery
От нашего стиля сильно отличается.
Nikolay
Подскажите, как нормально экранировать команду mongo --host "{{ mongodb_host }}":"{{ mongodb_password }}" --eval 'db.createUser("{{'{'}}" user: "{{ mongodb_user }}", pwd: "{{ mongodb_password }}", roles: ["{{'{'}}"role: "root", db: "admin""{{'}'}}"]"{{'}'}}")'
tutunak
Где именно?
https://github.com/lean-delivery/ansible-role-aem-dispatcher/blob/48aaaf0788229b48bdf2ab4421c8dfc5eb6928e4/defaults/main.yml#L24
tutunak
https://github.com/lean-delivery/ansible-role-aem-dispatcher/blob/48aaaf0788229b48bdf2ab4421c8dfc5eb6928e4/defaults/main.yml#L18
tutunak
Ну и дальше
Timur
https://github.com/lean-delivery/ansible-role-aem-dispatcher/blob/48aaaf0788229b48bdf2ab4421c8dfc5eb6928e4/defaults/main.yml#L24
Это очень локальная роль. Там не все best_practice соблюдены, да
tutunak
Это очень локальная роль. Там не все best_practice соблюдены, да
А есть в которой соблюдены, ибо я взял первую попавшуюся и сразу в разрез твоим словам
Nikolay
Может тебе лучше модуль для монго юзеров?
А рутового юзера тоже создать можно с помощью него? У меня обычные юзеры создаются как раз через монго модуль
tutunak
Это очень локальная роль. Там не все best_practice соблюдены, да
Вот другое https://github.com/lean-delivery/ansible-role-aem-dispatcher/blob/48aaaf0788229b48bdf2ab4421c8dfc5eb6928e4/defaults/main.yml#L18
George
В версии апача это нормально, а вот тут вот: https://github.com/lean-delivery/ansible-role-aem-dispatcher/blob/48aaaf0788229b48bdf2ab4421c8dfc5eb6928e4/tasks/installApache.yml#L8: register: installed_packagesА потом у другой роли installed_packages поломаными будут.
Timur
https://github.com/lean-delivery/ansible-role-jenkins
tutunak
Ну, например, вот: https://github.com/lean-delivery/ansible-role-java
Тоже плохой пример, все префиксы разные https://github.com/lean-delivery/ansible-role-aem-dispatcher/blob/48aaaf0788229b48bdf2ab4421c8dfc5eb6928e4/defaults/main.yml#L18
Отделение Bereke Bank
Timur
Запускать чужую роль, не читая код - так себе практика
tutunak
https://github.com/lean-delivery/ansible-role-jenkins
А тут вообще префикс != названию роли
George
Тот, кто использует.
Т.е. код нельзя использовать, не вычитав. Вместо того, чтобы написать роль на 8 тасок человек вычитывает роль на 18 тасклистов с динамическими include'ами. 😱
George
Запускать чужую роль, не читая код - так себе практика
С программами это почему-то работает.
Timur
А тут вообще префикс != названию роли
Это неважно. Главное, что он единообразный и соответствует требованиям. Случайно между ролями не перепутаются.
Nikolay
А, значит все таки можно и рутового юзера создать, ок спасибо!
Timur
С программами это почему-то работает.
Ну, так пишите под каждую задачу программу на питоне, если вам так удобнее. Зачем вы мучаетесь с ансиблом?
Timur
С программами это почему-то работает.
С программами тоже бывают несовместимости библиотек, конфликты версий и т.п.
tutunak
Это неважно. Главное, что он единообразный и соответствует требованиям. Случайно между ролями не перепутаются.
ну в общем из 4 ролей, только одна для дженкинса удовлетворяет условиям что ты написал, я про "переменная с префиксом роли"
George
Ну, так пишите под каждую задачу программу на питоне, если вам так удобнее. Зачем вы мучаетесь с ансиблом?
Мы используем ансибл как исполнитель сайд-эффектов. Логика вся вынесена в приложения/модули/etc. Вот пример типовой роли у нас: --- - name: Save ssh keys for VM access delegate_to: '{{ hypervisor }}' copy: content: '{{ vm_ssh_key }}' dest: /tmp/{{ inventory_hostname }}.pub mode: '0644' - name: Clone VM image from golden image become: true delegate_to: '{{ hypervisor }}' command: | /usr/bin/qemu-img create \ -F qcow2 -f qcow2 \ -b {{ golden_image_file }} \ '{{ vm_image_file }}' \ {{ vm_image_size }} args: creates: '{{ vm_image_file }}' - name: Create ISO with cloud config become: true delegate_to: '{{ hypervisor }}' command: /usr/bin/create-config-drive --ssh-key /tmp/{{ inventory_hostname }}.pub --hostname {{ vm_name }} {{ vm_config_file }} args: creates: '{{ vm_config_file }}' - name: Define libvirt domain delegate_to: '{{ hypervisor }}' virt: command: define xml: '{{ lookup("template", "domain.xml.j2") }}' - name: Start domain delegate_to: '{{ hypervisor }}' virt: name: '{{ vm_name }}' state: running autostart: true - name: Info debug: msg: 'VM {{ vm_name }}, image {{ vm_image_file }} from {{ golden_image_file }}, IP: {{ ansible_host }}' Тыц, тыц, тыц. Вне проекта смысла не имеет. Никаких сложных when, вычислений и т.д.
George
Остальное всё такое же. Читается быстрее, чем пишется.
Timur
Мы используем ансибл как исполнитель сайд-эффектов. Логика вся вынесена в приложения/модули/etc. Вот пример типовой роли у нас: --- - name: Save ssh keys for VM access delegate_to: '{{ hypervisor }}' copy: content: '{{ vm_ssh_key }}' dest: /tmp/{{ inventory_hostname }}.pub mode: '0644' - name: Clone VM image from golden image become: true delegate_to: '{{ hypervisor }}' command: | /usr/bin/qemu-img create \ -F qcow2 -f qcow2 \ -b {{ golden_image_file }} \ '{{ vm_image_file }}' \ {{ vm_image_size }} args: creates: '{{ vm_image_file }}' - name: Create ISO with cloud config become: true delegate_to: '{{ hypervisor }}' command: /usr/bin/create-config-drive --ssh-key /tmp/{{ inventory_hostname }}.pub --hostname {{ vm_name }} {{ vm_config_file }} args: creates: '{{ vm_config_file }}' - name: Define libvirt domain delegate_to: '{{ hypervisor }}' virt: command: define xml: '{{ lookup("template", "domain.xml.j2") }}' - name: Start domain delegate_to: '{{ hypervisor }}' virt: name: '{{ vm_name }}' state: running autostart: true - name: Info debug: msg: 'VM {{ vm_name }}, image {{ vm_image_file }} from {{ golden_image_file }}, IP: {{ ansible_host }}' Тыц, тыц, тыц. Вне проекта смысла не имеет. Никаких сложных when, вычислений и т.д.
В таком варианте вообще непонятно зачем тут ансибл
Timur
Код на баше даже короче выйдет, скорее всего. И с тем же результатом
George
Код на баше даже короче выйдет, скорее всего. И с тем же результатом
Идемпотетность и удобство в отладке. Сайд-эффекты на ансибле кратно лучше баша.
Sergey
Мы используем ансибл как исполнитель сайд-эффектов. Логика вся вынесена в приложения/модули/etc. Вот пример типовой роли у нас: --- - name: Save ssh keys for VM access delegate_to: '{{ hypervisor }}' copy: content: '{{ vm_ssh_key }}' dest: /tmp/{{ inventory_hostname }}.pub mode: '0644' - name: Clone VM image from golden image become: true delegate_to: '{{ hypervisor }}' command: | /usr/bin/qemu-img create \ -F qcow2 -f qcow2 \ -b {{ golden_image_file }} \ '{{ vm_image_file }}' \ {{ vm_image_size }} args: creates: '{{ vm_image_file }}' - name: Create ISO with cloud config become: true delegate_to: '{{ hypervisor }}' command: /usr/bin/create-config-drive --ssh-key /tmp/{{ inventory_hostname }}.pub --hostname {{ vm_name }} {{ vm_config_file }} args: creates: '{{ vm_config_file }}' - name: Define libvirt domain delegate_to: '{{ hypervisor }}' virt: command: define xml: '{{ lookup("template", "domain.xml.j2") }}' - name: Start domain delegate_to: '{{ hypervisor }}' virt: name: '{{ vm_name }}' state: running autostart: true - name: Info debug: msg: 'VM {{ vm_name }}, image {{ vm_image_file }} from {{ golden_image_file }}, IP: {{ ansible_host }}' Тыц, тыц, тыц. Вне проекта смысла не имеет. Никаких сложных when, вычислений и т.д.
😂😆😂😆
Sergey
дайте этого нисколько
Sergey
башсибл :-D
George
Это мой ci'ный код. Виртуалки под тесты (в составе delegated провиженера для libvirt'а). Соседняя плейбука собирает golden image с помощью debootstrap'а.
George
башсибл :-D
Не совсем. Если присмотришься, то они идемпотентны. creates и всё такое.
Sergey
Совсем. Если файл пустой - тоже норм.
Timur
Идемпотетность и удобство в отладке. Сайд-эффекты на ансибле кратно лучше баша.
В этом вашем коде выше идемпотентность? 🙂 В каком месте?
Sergey
Ну я вот тож заинтересовался прям...
George
- name: Clone VM image from golden image become: true delegate_to: '{{ hypervisor }}' command: | /usr/bin/qemu-img create \ -F qcow2 -f qcow2 \ -b {{ golden_image_file }} \ '{{ vm_image_file }}' \ {{ vm_image_size }} args: creates: '{{ vm_image_file }}'Повторый запуск вернёт ok.
George
Ну а если файл пустой, но существует - тоже ок.
Так и copy с remote_src то же самое сделает. Вполне поведение для модуля.
Sergey
Нет
^^^ ++++
George
А, пересчитывает чексумму, да.
George
Хотя есть множество модулей, которые просто по существованию проверяют.
George
Например, если apt name=foo, то он не проверяет, что foo установлен, а проверяет, что foo со статусом installed в базе данных apt'а. (Т.е. если на место /bin/foo положили порнокартинку то никто переустанавливать пакет не будет).
Отделение Bereke Bank
@tgadiev leandelivery/docker-systemd:ubuntu-18.04 20.04 нету?
Отделение Bereke Bank
ок жалко)
Sergey
А, пересчитывает чексумму, да.
Вообще-то исходный мессидж был о том, что приведённый выше кусок ямла является башсиблом.
George
Нет, bashsible, это когда повторно нельзя запускать, потому что state безнадёжно испорчен.
Grek 🇺🇦
это что за покемон?
George
оу, оу, а как вы бы проверили что софт установлен?
Из пуристических соображений - debsums, а на практике - по базе апта, потому что так быстрее.
Sergey
Нет, bashsible, это когда повторно нельзя запускать, потому что state безнадёжно испорчен.
Не согласен как автор термина. Башсибл - это про императивность так-то, а не про испорченный стейт.
Aleksey
это что за покемон?
https://nixos.org/explore.html
Sergey
Ну, а, например, copy - это императивно или нет?
Декларативно, ибо описывает ситуацию "файл такой-то, лежит там-то, содержимое идентично воооон тому вот, права такие-то".