Nklya
В смысле редактор используешь нормальный, и он все меняет как надо
Mikhail
Vim, например
Sergey
всем привет у меня в проекте есть 4 роли, хочу одну делегировать на localhost, и поставить serial: 1 проблема в том что мне нужно записать пароли в файл, но учитывая что для всех хостов ансибл работает паралельно появляется race condition как это лучше сделать?
Запиши в простой формат типа хост-значение, к после завершения обоаботай: проставь номера и всё остальное. А вообще, судя по по описанию задачи, ты делаешь какую-то фигню.
Vladislav 👻
Vim, например
Кстати да, недавно меня научили феншую на эту тему
Dumitru
я добился такого, как это можно в один список соеденить? чтобы потом можно было в один файл записать на localhost
Ждун
сто раз наверное такое здесь задавали
Ждун
https://i.imgur.com/yBzpKqR.png
Ждун
вообще понять не могу что не так
Ждун
везде пробелы
Dmitry
Короче с бранчингом похоже все прокатывает. все inventory начинают жить в изначальной входной точке, форке dev, и потом путешествуют до самого прода по бранчам, пулл реквестам, и тестам
Nklya
Прикольно. Напиши статью, если будет время.
Dmitry
Но вообще, похоже что блок выровнен неправильно
Dmitry
Надо плейбук смотреть
Павел П.
Доброе утро! Помогите пожалуйста понять ЧЯДНТ: Нужно узнать версию установленного пакета и (для начала) вывести в debug: msg. Гугление говорит про такой способ: --- - hosts: all gather_facts: no tasks: - name: check package version command: 'dpkg --status mypackage | grep ^Version' register: packver - debug: var: packver.stdout но получаю: "stderr": "dpkg-query: ошибка: --status требует корректное имя пакета, «|» таковым не является: недопустимое имя пакета в описателе «|»: должно начинаться с латинской буквы или цифры\n\nИспользуйте параметр --help для вывода справки по запросам пакетов." пробовал передавать команду в разных кавычках - не помогло. Для модуля apt - Manages apt-packages не нашел возможности просто узнать версию пакета. Нужно экранировать символ | ? Или парсить регуляркой полный вывод dpkg --status ? Как решается задача обычно?)
Stefan
Доброе утро! Помогите пожалуйста понять ЧЯДНТ: Нужно узнать версию установленного пакета и (для начала) вывести в debug: msg. Гугление говорит про такой способ: --- - hosts: all gather_facts: no tasks: - name: check package version command: 'dpkg --status mypackage | grep ^Version' register: packver - debug: var: packver.stdout но получаю: "stderr": "dpkg-query: ошибка: --status требует корректное имя пакета, «|» таковым не является: недопустимое имя пакета в описателе «|»: должно начинаться с латинской буквы или цифры\n\nИспользуйте параметр --help для вывода справки по запросам пакетов." пробовал передавать команду в разных кавычках - не помогло. Для модуля apt - Manages apt-packages не нашел возможности просто узнать версию пакета. Нужно экранировать символ | ? Или парсить регуляркой полный вывод dpkg --status ? Как решается задача обычно?)
насколько я знаю shell нужно юзать со всякими пайпами амперсантами и тд
Stefan
а не command
Павел П.
спасибо! продолжу гугление
Stefan
спасибо! продолжу гугление
да просто попробуй заменить command на shell
matt
спасибо! продолжу гугление
The command module does not support extended shell syntax like piping and redirects (although shell variables will always work). If your command requires shell-specific syntax, use the shell module instead. Read more about the differences on the Working With Modules page.
matt
просто прочтите доку от корки до корки, и гуглить не понадобится
matt
https://docs.ansible.com/ansible/latest/user_guide/intro_adhoc.html#parallelism-and-shell-commands
Vladislav 👻
Тот же apt и yum прям из коробки умеют
Павел П.
Тот же apt и yum прям из коробки умеют
возможно, не нашел рабочих примеров с apt.
Vladislav 👻
В хелпе должно быть
Vladislav 👻
возможно, не нашел рабочих примеров с apt.
https://stackoverflow.com/a/47981494/2306987 попробуйте по аналогии с yum
Павел П.
https://stackoverflow.com/a/47981494/2306987 попробуйте по аналогии с yum
в его "results" нет версии. такое пробовал
Vladislav 👻
а дргуие модули?
Vladislav 👻
там есть еще как минимум debconf и package_facts
Павел П.
package_facts не завелся - возможно не установлен. debconf смотрю.
Asten
возможно, не нашел рабочих примеров с apt.
А для чего тебе версия пакета? Подозреваю чтобы дальше решить нужно ли его обновлять?
Victor
Для апта версию емнип можно указывать.
Vladislav 👻
для всего можно
cyber
Привет всем, поделитесь опытом , как вы решаете вопрос с тем что в шаблонах огромное количество jinja2 подстановок? Group_vars получается во много страниц и в конечном итоге никто не знает что какая переменная делает ?
cyber
Я подумал что можно использовать |default
cyber
Но возникла проблема с тем что default очень плохой работает со словарями
cyber
Прям отвратительно
Vladislav 👻
Vladislav 👻
не понимаю проблемы
cyber
Ахаха
cyber
Мы похоже в одной компании работает :)
Vladislav 👻
Это топ роль nginx в galaxy
Tadeusz
и компания эта centos-admin 😄
cyber
Это ужасно выглядит :)
Vladislav 👻
и компания эта centos-admin 😄
Опять нет, хотя и близко 😬
Vladislav 👻
Это ужасно выглядит :)
ничего ужасного, это гибкость, я немного поколдовал с ролью и переписал на свой феншуй и сейчас у меня тупо объявление массива vhosts и конфигурация по темплейту
Павел П.
А для чего тебе версия пакета? Подозреваю чтобы дальше решить нужно ли его обновлять?
Не совсем. Если версия 0.15 и ниже, ничего не делать. Если 0.15-0.20 - обновить до 15.хх где хх - последняя минорная для этой мажорной, и параллельно обновить еще пару приложений до совместимых версий Если выше 20й - обновить все три пакета до последних версий.
cyber
ничего ужасного, это гибкость, я немного поколдовал с ролью и переписал на свой феншуй и сейчас у меня тупо объявление массива vhosts и конфигурация по темплейту
Вот скажем у меня есть такая переменная company.cluster.product.db.port, я не хочу задавать ее принудительно , хочу что-то типа {{company.cluster.product.db.port | default('1521') }}
cyber
Чтобы сам разработчик мог в совсем темплейте ее указать
cyber
А я даже не думал об этом , пока не припрет переопределить
Asten
@the_asten есть совет как такое правильнее делать?)
да. правильно использовать модуль apt примерно так: - name: Install elasticsearch apt: name: ‘elasticsearch=6.4.2’ update_cache: yes
Asten
в такой записим ты описываешь состояние. т.е. анстибл поставит нужную версию пакета там где версия пакета на соответствует описанию
Asten
проверять версию а потом чтото делать это bash way
Asten
пиши про состояния
Павел П.
я не могу перейти в состояние 3 из состояния 1. нужно 1 довсести до 2, из 2 до 3. каждое состояние - это набор из 5 пакетов + конфиги.
Asten
пиши with_item и делай тоже самое
Asten
- name: Ensure Java8 is installed apt: name: '{{ item }}' with_items: - oracle-java8-set-default - oracle-java8-installer
Victor
пиши with_item и делай тоже самое
У человека МИГРАЦИИ
Asten
У человека МИГРАЦИИ
что мешает промигрировать до 1 версии потом до 2?
Павел П.
Victor
что мешает промигрировать до 1 версии потом до 2?
то что если ты запустишь плейбук на 2й, то он смигрирует до первой
Victor
а потом обратоно до второй
Asten
то что если ты запустишь плейбук на 2й, то он смигрирует до первой
это если с форсом, можно ж написать версию <2
Ivan
Нельзя разве писать when: версия такая-то?
Павел П.
что мешает промигрировать до 1 версии потом до 2?
ничего, так и планирую делать. Потому и завязываюсь на выяснение версий пакетов (состяний).
Asten
Нельзя разве писать when: версия такая-то?
2 чая этому господину) можно и так
Павел П.
Нельзя разве писать when: версия такая-то?
так и думаю) этот when получить и хотел
Victor
да, именно
Имхо, анзибл изначально под такое не то чтобы предназначен. Самый, опять же имхо, простой вариант, это определять какой-то факт - текущая версия. И если есть локальный плейбук или набор тасков в роли с помощью with_first_found запускать его. Но возможно будет много макаронин.
Ivan
2 чая этому господину) можно и так
Я позавчера начал в ансибл
Asten
Я позавчера начал в ансибл
доку осилит идущий (с)
Victor
ох вей, анзибл не умеет в while
Vladislav 👻
легче видеть дефолт, легче понимать, что можно переопределять