Anonymous
Хотя я почти уверен что хватит уровня окружения
Anonymous
Я даже скажу грубое. Надеюсь не забанят - завязываете на локалхост - сродне одется гопой жопой на самотык
Anonymous
Вроде можно. Но практическая ценность сомнительная
𝚔𝚟𝚊𝚙𝚜
на правильность моих действий не претендую но если комуто понятна моя боль и есть идеи как это можно улучшить, буду рад выслушать
𝚔𝚟𝚊𝚙𝚜
Получается что:
в ролях - как
в инвентори - куда
в плейбуках - что
Anonymous
А если натурал - и кубер но подвезли ?
Vladislav 👻
Anonymous
Но отдам уважение товарищу выше
Anonymous
Система. И что важно с целостным подходом
Anonymous
Есть нюанс - это изобрели давно
Vladislav 👻
Anonymous
Но все равно круто
Vladislav 👻
Исключение только, если у вас кластер дева и прода и вы разделяете среды
Anonymous
В плане исключение
Anonymous
На каждый кластер делать группу
группы есть
вопрос именно в конкретном плейбуке, который заточен на localhost.
Это очевидно неверно, завтра я буду пробовать советы выше - как это сделать удобно для использования.
Anonymous
Это же как раз варс окружения решается
Anonymous
а может кто-то показать - как вы enviroment в inventory задаёте ?
Anonymous
Можем
Anonymous
Но завтра ))
Anonymous
👍
Vladislav 👻
Vladislav 👻
Второй метод
Anonymous
Второй метод
второй метод по этой ссылке или какой-то другой ?
https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html
Я и твой кот
Вопрос по доке ansible:
ansible-doc -a > ansible-doc-a.txt
less ansible-doc-a.txtИ там набрать &with_seq и нажать Enter.
Почему так подозрительно долго ищется?
Anonymous
Эм. Причём тут ансамбл?
Я и твой кот
Ну почти про ansible.
Anonymous
В девушке есть дырочка. В мальчике есть дырочка
Anonymous
Почти про секс
Я и твой кот
rocket_chat_mongodb_systemd у вас нет в переменных
Я и твой кот
@vsc1t - ^^^^^^^^^^^^^^^^
Я и твой кот
Дальше сами.
Viktor
Я и твой кот
замените выше debug на нужный вам модуль
Я и твой кот
и вроде всё ОК должно быть
Viktor
---
- name: variables
hosts: localhost
connection: local
vars:
rocket_chat_mongodb_dbpath_prefix: /abc/
rocket_chat_mongodb_logpath_prefix: /def/
rocket_chat_mongodb_vars:
- { rocket_chat_mongodb_configpath: '/etc/mongod_arbiter.conf', rocket_chat_mongodb_dbpath: '{{ rocket_chat_mongodb_dbpath_prefix }}rocket_chat_arbiterdb', rocket_chat_mongodb_logpath: '{{ rocket_chat_mongodb_logpath_prefix }}rocket_chat_arbiterdb.log',rocket_chat_mongodb_port: '2701'}
- { rocket_chat_mongodb_configpath: '/etc/mongod_primary.conf', rocket_chat_mongodb_dbpath: '{{ rocket_chat_mongodb_dbpath_prefix }}rocket_chat_primarydb', rocket_chat_mongodb_logpath: '{{ rocket_chat_mongodb_logpath_prefix }}rocket_chat_primarydb.log', rocket_chat_mongodb_port: '2702' }
- { rocket_chat_mongodb_configpath: '/etc/mongod_secondary.conf', rocket_chat_mongodb_dbpath: '{{ rocket_chat_mongodb_dbpath_prefix }}rocket_chat_secondarydb', rocket_chat_mongodb_logpath: '{{ rocket_chat_mongodb_logpath_prefix }}rocket_chat_secondarydb.log', rocket_chat_mongodb_port: '2703' }
tasks:
- name: show variables
debug:
msg: "Configpath: {{ item['rocket_chat_mongodb_configpath'] }}"
loop: "{{ rocket_chat_mongodb_vars }}"
...
Спасибо, но надо список одновременно, то что в - { ... }. Как достать список? Или это не список? :)
Я и твой кот
чуть поправил, а то там строки обрезались.
Я и твой кот
что значит одновременно?
Я и твой кот
луп по чему?
Viktor
Они в темплейт подставляются, луп по темплейту
Viktor
-{} - первый заход, -{} следующий и т.д.
Я и твой кот
@vsc1t
Я и твой кот
Там у вас вложенность лишняя - не знаю, как обойти. Поищите.
Я и твой кот
И jinja2 парсится на вашем хосте, и только потом грузится на другой хост. Потому у вас будут лищние данные.
Я и твой кот
Покопайтесь ещё. Чем смог - тем помог.
Sergey
Sergey
1. Используй pastebin, пожалуйста.
2. systemd умеет в template
3. {} и [] "обходить" не нужно: достаточно понимать, что это такое.
{} - mapping/dict/словарь, доступ по ключу ("то, что слева от двоеточия" )
Например, есть такой словарь:
key1: {key2: {key5: val1 }}
Как получить val1? Вот так:
key1['key2']['key5']
[] - sequence/list/список, доступ по номеру, т.е. дописываем номер элемента в квадратных скобках (нумерация с нуля)
Например, есть такой словарь:
key1: {key2: [val1, val2, val3]}
Как получить val1? Вот так:
key1['key2'][2]
Viktor
@tnt4brain , @paper_planes_squad Спасибо огромное! Продолжу попытки через пару часов :)
Sergey
Viktor
Сергей, а можно перебрать все элементы не зная их количество?
Сейчас 3 переменных, потом я допишу ещё 2 в Варс и мне нужно будет открывать плейбук, искать где применяется и добавлять [3], [4]
Что-то типо [*] или [0]..[len-1] есть? 🥴
Я и твой кот
Я и твой кот
Но есть ещё вариант, но сходу не помню.
Vladislav 👻
Vladislav 👻
Этот метод решает и вторую проблему, с монгой в рокет-чате...
Vladislav 👻
Никогда не понимал, почему все начинают писать через vars файлы и городить ужас, потом же просто ужас будет контролить это все...
Vladislav 👻
Альтернативная структура проекта
Vladislav 👻
Все раскидываем по енвайрменту и хорошо становится
Vladislav 👻
Наверно плохо выразился, решает косвенную проблему, чтобы не было ужаса в плейбуке
George
George
вообще идея со средами (а как еще назвать это?) - она блестящая
George
и она не ансибл-специфична
Vladislav 👻
Самое вкусное, это объединение энвайрментов, просто при запуске перечисляем и оно само из коробки, даже одинаковые группы сджойнит
George
эт да
Viktor
Добрый день. В .bashrc указана переменная (например, PROJECT_DIR=/Users/user/work). Как ее вытащить в плейбуку, чтобы можно было делать манипуляции в этой папке? Копировать в нее файлы, клонировать проект с гитхаба, использовать в конфигах nginx?
Timur
George
имеется в виду получить в плейбуке как переменную
George
чтоб потом можно было использовать путь к каталогу
George
мне очень странно, что мне это очевидно, а Вам нет, @tgadiev
Viktor
да, имеено так, как написал @gecube :)
George
мне лично видится ботвень с register )))) это как пока черновой вариант. Либо вычитать .bashrc, либо распечатать env, а потом грепнуть переменную
George
застрипать левую часть, оставить правую (после "=")
George
ну и дальше дело техники
George
потом можно отрефакторить и сделать красивее. наверняка ансибл умеет брать переменные из переменных окружения
George
типа ansible_vars[environment][PROJECT_DIR]