@pro_ansible

Страница 462 из 625
bebebe
09.05.2018
15:13:33
можно написать собственную оркестрацию, сделав один динамик инвентори и запуская в паралеллии другие - но я пока берегу себя от этой мысли

Nikita
10.05.2018
07:43:15
Всем привет, подскажте, а можно ли в модуле copy сделать так, чтобы при копировании файла создавалась директория куда он копируется?

Matvey
10.05.2018
07:44:55
нельзя

и в template нельзя

Google
Matvey
10.05.2018
07:45:42
одной таской создаёшь директорию, другой копируешь файл

Asten
10.05.2018
07:53:44
зато дерриктории создаются по всему пути

Nikita
10.05.2018
07:58:22
Ок, сенкс

А ещё вопрос, можно ли в ansible when: x is search() сделать отрицание? То есть если ли подстрока не найдена, тогда выполнить

bebebe
10.05.2018
08:42:09
Nikita
10.05.2018
08:44:27
is not более подробно http://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html
То есть вот такая конструкия должна работать?

when: (ansible_default_ipv4.address is not("192.168."))

bebebe
10.05.2018
08:45:14
when: (ansible_default_ipv4.address is not("192.168."))
не знаю, зачем круглые скобоки вокруг 192.168?

Nikita
10.05.2018
08:45:30
Чтобы or перечислять

Не, валится с ошибкой

bebebe
10.05.2018
08:48:10
Не, валится с ошибкой
when: element not in array

Nikita
10.05.2018
08:49:02
А он разве не элемент целиком будет искать?

bebebe
10.05.2018
08:49:30
в этом случае целиком

Google
bebebe
10.05.2018
08:50:08
вам нужен match если вы хотите более богато искать

Nikita
10.05.2018
08:50:29
Не, мне нужен search чтобы искать подстроку

Если я правильно доку прочитал

bebebe
10.05.2018
08:52:06
есть несколько способов array | select('match', '192.168') или array | join | match('192.168')

Nikita
10.05.2018
08:53:01
Эм…для меня, как для человека плохо знакомым с питоном, чет сложновато. Но я ща попробую.

bebebe
10.05.2018
08:55:04
Nikita
10.05.2018
08:55:19
То есть должно быть такое - debug: msg: "OK" when: ansible_default_ipv4 array | join | match('192.168') ?

bebebe
10.05.2018
08:56:24
Издалека похоже на правду

Nikita
10.05.2018
09:00:38
no filter named 'array'.

bebebe
10.05.2018
09:06:52
no filter named 'array'.
вы просто так что-ли копипастите

Nikita
10.05.2018
09:07:21
Да я уже почитал доку про фильтры

Я думал вы пример кинули

- debug: msg: "OK" when: ansible_default_ipv4.network.find('192.168') == -1 - debug: msg: "OK" when: ansible_default_ipv4.network.find('192.168') != -1

Вот так в итоге сделал

bebebe
10.05.2018
09:20:44
как вариант

Старый
10.05.2018
09:24:34
плейбуки с применением ооп это как?

Asomir
10.05.2018
09:24:43
Народ, я что-то туплю и невдопонимаю. Создал роль, заполнил, в гит не выкладывал, хочу ипортировать в Galaxy, - как это можно сделать? Или только вначале в гит, а потом через $ ansible-galaxy import github_user github_repo ?

Nklya
10.05.2018
09:30:09
гит или гитхаб?

сам по себе галакси это просто каталог, он не хранит роли

Google
Asomir
10.05.2018
09:49:09
сам по себе галакси это просто каталог, он не хранит роли
как всегда, вопрос был задан некорретно: я хотел использовать уже имеющуюся роль, но в ней мне нужно было поменять параметры по умолчанию и добавить свой темплейт. я это сделал прям внутри этой готовой роли, а так нельзя. я забыл твои учения. не меняем саму роль: просто добавляем в плейбуке то, что хотим в ней поправить (а моём случае добавить таску с копированием определённого темплейта) и в секции варс переопределяем переменные. спасибо тебе ещё раз!

Алексей
10.05.2018
09:59:52
bebebe
10.05.2018
11:47:26
кстати, коллеги, если тут есть ценители tmux'a и ansible то я пользуюсь таким вот методом что бы дебажить окружения https://github.com/metacoma/tmuxinator-jinja2 исходя из ansible переменных, генерируется темплейт для tmuxinator'а который генерирует tmux с нужными окнами

bebebe
10.05.2018
11:54:20
годнота, спасибо
я буду рад любому фидбеку (можно в ЛС)

Ivan
10.05.2018
11:57:23
я буду рад любому фидбеку (можно в ЛС)
Добавьте usage pattern в README.md пожалуйста, сходу не явно для чего инструмент

bebebe
10.05.2018
11:57:58
Добавьте usage pattern в README.md пожалуйста, сходу не явно для чего инструмент
если вы оформите это ишуем на гитхаб, я точно не забуду это сделать. заранее спасибо

Vadim
10.05.2018
12:05:21
я буду рад любому фидбеку (можно в ЛС)
А зачем tmuxinator? Можно проще - что-то вроде https://gist.github.com/hdknr/222067185374f4ff6626

(оно не работает на свежих энсиблах, но подход вроде проще некуда)

bebebe
10.05.2018
12:21:39
А зачем tmuxinator? Можно проще - что-то вроде https://gist.github.com/hdknr/222067185374f4ff6626
Я в том или ином виде советую ознакомиться с возможностями tmuxinator'а. У него уже есть богатая интеграция и богатая оркестрация tmux'a. Желаемая конфигурация уже абстрагирована и описывается в yaml файлах. То что я увидел по ссылке - скажем так маленький частный случай, который реализован в tmuxinator'e. что бы темплейтить переменные в тмуксинаторе, сначала использовал vanila jinja2, но уже работающая система переменных в ansible (group/host/inventory vars) http://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html позволяет существенно раскрыть всю красоту идеи

bebebe
10.05.2018
12:22:39
хмм, попробую реализовать через чистый ansible API
вот не то что бы не советую, но если есть упорное желание "пописать"...

Vadim
10.05.2018
12:24:04
вот не то что бы не советую, но если есть упорное желание "пописать"...
тащемта не хочется тащить tmuxinator еще в контейнер, вряд ли он получится такой же гибкий как tmuxinator

bebebe
10.05.2018
12:26:05
тащемта не хочется тащить tmuxinator еще в контейнер, вряд ли он получится такой же гибкий как tmuxinator
это же в общем случае дешево, при этом что рендеринг темплейта и генерация конфигурации может происходить отдельно, тмуксинатор может выплевывать набор shell команд который можно выполнинть удаленно, собственно как в примере и описано: cat tmuxinator-example.yml | tj2 | ssh hw2 bash - это может выполняться рабочией станции, это может вызываться из CI и через какой-нибудь shell in box, или другой webui terminal emulation шариться команде разработки. ну вы поняли

коллеги, скажите когда я утомлю. мой юзкейс: на разных проектах, CI, мне приготоавливает большое количество окружений, начиная от k8s, и заканчивая очень специфичными plan9 когда возникает проблема, я запускаю эту тулзу с нужным мне темплейтом, который открывает на части машин ping, на других (в том числе и коммутаторах) что то вроде tcpdump при этом эта система предполагает подставления переменных, например если мне нужно отдебажить в "сложной системе", k8s + calico + contrail + bgp + openwrt что-либо делаю что-то вроде cat k8s-contrail-stage3.yml | tj2 | ssh bastion-host bash - темплейт рендирится на моей машине, команды запускаются на хосте bastion tmux открывает 4 window, с 9 panes, где-то запущен ping, и по пути этого пинга открыто четыре tcpdump

как это использовать системным администраторам, или devops'ам и прочим SRE можно только фантазировать.

и наверное последнее по этой теме - я буду рад услышать ваши пожелания через github, и немного подпилить под ваши нужды, если что смело форкайте на этом этот оффтопик я прекращу. если хотите мы его продолжим в более другом месте

Google
Vadim
10.05.2018
12:46:05
нет, ну идея отличная, я просто не вижу смысла тащить tmuxinator

кстати, у tmux есть питоновское апи, имхо проще немного потащить заразы из пипа, чем передавать всё через пайпы

впрочем, с бастионом так просто не получится

Andrey
10.05.2018
12:47:06
кто бы собрал tmux для rhel 6

современный всмысле

bebebe
10.05.2018
12:47:32
@admins мы можем тут дальше продолжать эту тему?

Sin
10.05.2018
12:50:27
@admins мы можем тут дальше продолжать эту тему?
их тут вроде сейчас нет) как и других ,пишуших по теме, в данный момент.. не вижу проблемы) или кто-то ограничивает число символов? =)

bebebe
10.05.2018
13:06:10
кстати, у tmux есть питоновское апи, имхо проще немного потащить заразы из пипа, чем передавать всё через пайпы
я немного отвечу не в тему, но надеюсь вы поймете к чем я веду сам этот прототип как вы видите занимает меньше 100 строк, оригинального контента в виде еще_как_нибудь_заюзать_api на golang/ruby/python/haskell там нет. заняло у меня заделиверить на гитхаб - около 40 минут. + тмуксинатор это руби в котором уже с tmux'ом научились экспертизно общаться вплоть до того, что нужная конфигурация открываемых окон и запуск команд описывается в .yml + для таргет аудитории, я думаю это решение ближе, т.к. его можно разобрать на "квадратики" и модернизировать её любую часть не производя origin content, в виде использования еще N библиотек что бы склеить это правильно с api ansible и чего-нибудь еще.

кто бы собрал tmux для rhel 6
да,там где tmux'a нет, это немного больно. как вариант, можно генерировать такой же код для screen'а - если для него есть что-нибудь вроде screenator. так же можно генерировать конфигурацию для других терминл мультиплексоров, но это если комьюнити подхватит.

bebebe
10.05.2018
13:08:57
впрочем, с бастионом так просто не получится
вы про случай если пилить свое? то да. tmuxinator debug выплевывает на stdout последовательность shell команд которые нужно выполнить на удаленной машине или где-либо еще, с самим тмуксом идет общение через tmux сокет, в который прописывается "сценарии" поведения, открыть window, ввести команду, ввесли следующую, создать дополнительней tmux pane и т.д.

собственно это был основной аргумент не "рожать свое", а использовать готовое, это идеально подошло.

Vadim
10.05.2018
13:10:10
пусть цветут сотни цветов

bebebe
10.05.2018
13:10:50
да, форкайте с удовольствием, если что вмержу.

Nklya
10.05.2018
13:11:28
Там бы в ридми бы добавить зачем все это нужно, а то что то я не очень улавливаю

и гит криво настроен, коммиты серые

bebebe
10.05.2018
13:12:58
Там бы в ридми бы добавить зачем все это нужно, а то что то я не очень улавливаю
пролестните на пару сообщений вверх, я там описал один из юзкейсов (букв много, форвард выйдет большой)

и да, я дополню README реальными примерами.

Google
Vadym
10.05.2018
13:30:41
Всем доброго времени суток, кто знает как дописать строку в файл не стерая при этом ту информацию котора уже имееться в моем случаи файл squid.conf содержит строки acl localnet src айпи acl localnet src айпи acl localnet src айпи сюда нужно дописать

Vadim
10.05.2018
13:36:18
lineinfile с insertafter

Serj
10.05.2018
15:22:03
Парни, подскажите: нужно, с помощью плейбука генерировать случайную строку, записывать ее в файл на удаленном хосте (на разных хостах - на каждом уникальное значение) а по окончанию выполнения плейбука иметь файлик в формате - имя хоста: случайная строка, или хотябы такой выхлоп в терминал Такое возможно?

Alex
10.05.2018
15:23:39
да

bebebe
10.05.2018
17:43:39
@vrutkovs ^^^^

Vadim
10.05.2018
17:49:34
https://asciinema.org/a/W6uz52dy1nT1gy1w1ObE7BDSR вместо тысячи слов
выглядит круто, я начал тестировать свой велосипед, но у меня в контейнере tmux не поднимался

bebebe
10.05.2018
17:50:35
выглядит круто, я начал тестировать свой велосипед, но у меня в контейнере tmux не поднимался
я могу помочь, но сильно не советую, причины выше (фломастеры)

Vadim
10.05.2018
17:50:55
я могу помочь, но сильно не советую, причины выше (фломастеры)
если тебе это не интересно, зачем помогать? :)

bebebe
10.05.2018
17:51:31
мне интересен фидбек от пользователей (если они есть)

там нужно еще ansible vault прикрутить, вомзожно shellinabox, что бы автоматически делать маленький web сервер с tmux'ом внутри (чтобы через браузер смотреть) типа такого https://github.com/shellinabox/shellinabox/raw/master/misc/preview.gif?raw=true

Страница 462 из 625