Alexandr
Когда докручу - скину сюда)
[Timansky]Timur Kumakbayev
https://ru.m.wikipedia.org/wiki/YAML
Oleg
👍
Nikita
Всем привет, можете подсказать, у меня есть дикт формата { “xxxxxx”: [{val: 1}, {val: 2}, {val: 3}, {val: 4}] }. xxxxxx заранее не известен, это случайная строка. Как мне получить значение xxxxxx или как я могу получить значение val: 4?
Igor
Привет.
Igor
Подскажите по конструкции.
Есть блок:
- block:
- name: task
.....
- name: task
.....
- name: task
.....
Как сделать так, чтобы если какая-то таска зафейлится - не прерывать выполнение всего плейбука, а прервать выполнение только дальше идущих тасок в блоке?
Igor
@tnt4brain я знаю ты должен знать =)
Ждун
rescue/always?
Ждун
как try catch
Ждун
rescue если выполнится успешно в блоке, то плейбук должен продолжить выполнение
Igor
Артём
- hosts: apphosts
tasks:
- name: Check application availability
command: /bin/app showmigrations --plan
args:
chdir: /appdir
register: auth_available
check_mode: false
- name: Check unapplied migrations
shell: «/bin/app showmigrations --plan | grep '\\[ \\]'"
args:
chdir: /appdir
register: auth_new_migrations
check_mode: false
run_once: true
- name: Apply migrations
command: /bin/app migrate
args:
chdir: /appdir
when: not ansible_check_mode and auth_new_migrations.rc == 0
run_once: true
Что скажут блюстители чистоты истинного ансибла?
Mikhail
в жизни еще не видел ничего прекраснее
Mikhail
особенно кавычки «
Alexander
Мало шела и команд
Alexander
Мне кажется надо написать шел скрипт и вызвать только его
Артём
Кавычки пожевало телеграмом.
Альтернативы шеллу, кроме «пиши свой модуль для джанго-приложений», есть?
Alexander
Будет 1 таск вместо 3
Timur
Артём
Затем, чтобы если надо будет это повторить на новых машинах для нового проекта, запуск ansible-playbook был единственным, что потребуется, кроме подготовки железа?
Артём
Абсолютно внезапно выяснилось, что всё уже написано до нас.
- name: Run migrations
django_manage:
command: migrate
app_path: …
virtualenv: …
И оно идемпотентно.
Max
:)
Timur
Max
https://pastebin.com/fk2NWUpM
Max
докер бежит, пользователь может делать все.
Max
торможу, учу молекулу.
Max
прикольно, хотя и не работает.
Max
нигде "no_log" не нахожу.
Timur
Max
molecule.yml ?
Timur
Да
Max
defaultный.
Timur
Max
:)
Timur
Покажите
Max
I know I know nothing,
Max
:)
Max
---
dependency:
name: galaxy
driver:
name: docker
lint:
name: yamllint
platforms:
- name: instance
image: centos:7
provisioner:
name: ansible
lint:
name: ansible-lint
verifier:
name: testinfra
lint:
name: flake8
Max
в статейке https://medium.com/@elgallego/molecule-2-x-tutorial-5dc1ee6b29e3
Max
чел добавил еще один instance, одноименный своей роли.
Timur
Сделайте так:
dependency:
name: galaxy
driver:
name: docker
lint:
name: yamllint
platforms:
- name: instance
image: centos:7
provisioner:
name: ansible
log: True
lint:
name: ansible-lint
verifier:
name: testinfra
lint:
name: flake8
Max
ок. т.е. лог тру.
Max
слушай, не надо меня во множественном числе, пугаюсь я так.
Max
Hoorray!
Max
failed: [localhost] (item={'name': 'instance', 'image': 'centos:7'}) => {"changed": false, "checksum": "99bf425df595f9603d6b09e627a0c750b04c0ee4", "item": {"image": "centos:7", "name": "instance"}, "msg": "Aborting, target uses selinux but python bindings (libselinux-python) aren't installed!"}
Max
:)
Timur
Max
np
Timur
Издержки воспитания и образования
Max
понимаю. тяжелый груз.
Timur
Timur
Timur
Нужны пакеты для selinux
Max
как говорится: если мн объясняют помедленней, я понимаю побыстрей.
Timur
libselinux-python нужон
Igor
Sergey
Sergey
А как делать?)
Да по плану, в общем-то. Хочешь - приходи (подключайся) завтра к воркшопу, вот будет вполне реальный кейс, разберём.
Sergey
Как звучит задача, что именно ты пытаешься обойти?
Артём
Ну не надо так о людях, просто поменял пути, выкладывая код на общее обозрение.
Timur
Max
@tgadiev а где я указываю инвентарь молекулы "?
Max
у меня тут virtualenv
Max
а проблема с библиотекой не в нем, и не в ос, а внутри контейнера.
Igor
Как звучит задача, что именно ты пытаешься обойти?
Задача такая:
1. Есть таска, проверяет существование файла. Если существует, надо прервать блок и продолжить выполнение тасок вне блока (например заливку конфигов к другому ПО, которое может зависеть от этого блока.
Max
found.
Timur
Timur
Он самой молекулой формируется, если точнее
Max
под provisioner?
Timur
На основе сценария
Max
тогда пакет нужно добавить в докерфайл, получается.
Timur
Igor
Timur
Ну, или сам докерфайл, да
Timur
А, не
Timur
Вы про selinux?
Max
da