@devops_ru

Страница 3950 из 4568
Aleksandr
07.06.2018
09:46:12
что?? в ansible есть copy. вы просто в нём не разбираетесь, зато делаете выводы

это вы читать не умеете

в пределах хоста

и?

Google
Aleksandr
07.06.2018
09:46:12
я это прочитал

copy это копирование с мастер хоста

нет

Ну, на вскидку, репы которые нужно зачистить нужно удалить через модуль file или отключить не удаляя файла. По семействам линуксрв, версиям и ролям там просто рулить. Простота настройки достигается через директиву include, или как она сейчас называется.

вы не читаете документацию

https://docs.ansible.com/ansible/latest/modules/copy_module.html

Copies files to remote locations

Вот тоже сижу думаю)) copy вчем проблема то в пределах хоста?

remote_src If no, it will search for src at originating/master machine. If yes it will go to the remote/target machine for the src. Default is no. Currently remote_src does not support recursive copying.

Был чуть не прав, файл можно. Директорию нельзя Currently remote_src does not support recursive copying.

И то, файл стало можно скопировать в одной и 2.х версий

https://docs.ansible.com/ansible/latest/modules/synchronize_module.html

It is run and originates on the local host where Ansible is being run

Google
Aleksandr
07.06.2018
09:46:21
Я просто в первый раз слышу чтобы yum сам включал какие-то репы. Звучит дико.

перенесено из девопс_джобс, чтобы продолжить дискасс здесь

в общем, если у вас есть простое решение, как скопировать директорию в пределах хоста, я с удовольствием буду использовать его в своих плейбуках

delegate_to: "{{ inventory_hostname }}" указываете и будет запускаться на удалённом хосте

Andrey
07.06.2018
09:47:37
delegate_to требует установки rsync

Arty
07.06.2018
09:47:51
кошмар какой

Ilya
07.06.2018
09:48:05
это ужасно

Andrey
07.06.2018
09:48:20
не кошмар, а элементарное действие требует вдумчивого планирования

Arty
07.06.2018
09:49:14
рекурсивное копирование это не элементарное действие

Andrey
07.06.2018
09:49:16
то есть это может привести к тупому багу, который не всплывает у разработчика, потому что он тестировал на машинке с rsync

Ванько
07.06.2018
09:49:18
#язабан

Aleksandr
07.06.2018
09:50:06
Если вы будете управлять репами из одной роли, может и получится. Но потом вы подключите роль pgsql к серверу и придется кусок этой роли с условиями включать в роль накатки репо-файлов? Ведь нужно приготовить эту директорию до того, как начнут выполняться какие-либо процессы по установке/обновлению пакетов, иначе конфигурация может перестать быть повторяемой или вообще сломается :)

Sergey
07.06.2018
09:50:25
это так-то не винда, есть FHS, и там расписано, где что должно лежать

Andrey
07.06.2018
09:51:13
скопировать диру надо. Это не задача, а подзадача

Sergey
07.06.2018
09:51:34
Andrey
07.06.2018
09:52:30
эм. То есть вам нужен пример задачи, в которой понадобится копирование директории. То есть по вашему это очень редкий use case

Google
Sergey
07.06.2018
09:55:05
эм. То есть вам нужен пример задачи, в которой понадобится копирование директории. То есть по вашему это очень редкий use case
Это антипаттерн, если что. Я и пытаюсь понять - как выглядит задача, для решения которой требуется нарушить принцип DRY и реализовывать антипаттерн, чтобы потом с увеличенным ЧСВ писать в чат, что, мол, выбранный мною же инструмент полное говно и низачот.

Ах да - и FHS тоже, судя по всему, нарушается.

Andrey
07.06.2018
09:56:39
Я не понимаю, почему вы думаете, что FHS тут каким-то боком и я нарушаю какой-то принцип

Мне нужно скопировать шаблонную директорию в tmp, сделать с ней какие-то действия, воспользоваться артефактом и удалить эту диру

Ilya
07.06.2018
09:58:13
unarchive:

решает твою проблему.

Andrey
07.06.2018
10:00:42
Ansible - не система сборки ?
ну да. скажите это авторам docker:

Кейс так себе, напиши скрипт
как бы с этого и началось, что ansible провоцирует на написание скриптов

Sergey
07.06.2018
10:02:13
ну да. скажите это авторам docker:
А у меня не болит. Инфраструктура управляется ансиблом, никто не чинит хосты руками. Как-то так. Доставка - RPM. Ну и контейнеры доскера как-то по-другом собираются, стопудово. Там ещё доскерфайлы есть, вот это вот всё.

Дмитрий
07.06.2018
10:02:53
как бы с этого и началось, что ansible провоцирует на написание скриптов
Это изначально не его кейс. Он и не должен такие закрывать

Sergey
07.06.2018
10:03:08
как бы с этого и началось, что ansible провоцирует на написание скриптов
Скрипты вынуждены писать ленивые типы, которым не осилили в написание Ansible-модуля для своих грязных нужд.

Andrey
07.06.2018
10:03:51
писать модуль для копирования директории? Скрипт быстрее

вы так говорите, будто вы не ленивый тип :)

автоматизация сама по себе для ленивых

Sergey
07.06.2018
10:06:01
вы так говорите, будто вы не ленивый тип :)
У меня в репе с проектом лежит два модуля - для работы с RabbitMQ и для контейнеров systemd. Точно стоит дальше продолжать про лень?

Andrey
07.06.2018
10:06:57
лень руками пройтись, сделать и проверить. и повторить. и повторить. и..

ладно, это флуд уже

Google
Sergey
07.06.2018
10:07:48
Я сторонник очень простого подхода: не хвататет возможностей - допиши. Это будет эффективнее, чем хаять инструмент.

Andrey
07.06.2018
10:08:18
давайте сойдёмся на том, что я считаю, что копирование директории это банальная операция, которая должна поддерживаться в ansible, а вы, как истинные маководы упираетесь в "не поддерживается, значит никому не надо"

Я сторонник очень простого подхода: не хвататет возможностей - допиши. Это будет эффективнее, чем хаять инструмент.
тут более менее согласен. Просто моё "допиши" будет костылём, или просто неоттестированным решением в лучшем случае

Yuryi
07.06.2018
10:36:12
если команда внутри RUN одна и та же, то она не будет выполнятся во время второго запуска. Даже если у тебя в гите что-то новое
через RUN почему-то после запуска контейнера ни варки, ни папки в которую должно было склонить)) хотя подняло контейнер без ошибок\\

Andrey
07.06.2018
10:37:42
у меня через RUN работает. Тебе поможет такой ответ? Вот и я твоё "у меня через RUN не работает" не воспринимаю как нормальный вопрос.

Andrey
07.06.2018
10:40:33
эх

ты хочешь, чтобы: 1) выполнилась сборка 2) собранный файл сохранился 3) запустился томкат 4) собранный файл скопировался томкату

Yuryi
07.06.2018
10:43:08
йеп, всё верно

Andrey
07.06.2018
10:43:09
для 1) тебе нужен контейнер. В нём будет CMD со сборкой и копированием

для 3) тебе нужен контейнер с tomcat. Он не может быть в контейнере собрки, потому что там у тебя CMD сборки. (это не точно, но пока путь будет так)

для 2) и 4) тебе нужен общий volume для этих контейнеров. То есть как у тебя было раньше

я бы всё это сделал через один контейнер с multistage, а url репы передавал через build arg, чтоб не кэшировалось

но такое решение тоже нормальное, и ничем не хуже

Yuryi
07.06.2018
10:48:26
всё верно. Я пока не очень понимаю на каком этапе ошибка. Т.е. команды выполняются, происходит клон и компилинг, но это всё валится на какой-то другой слой (не туда куда я смотрю заходя в контейнер), или ничего из этого врпинципе не выполняется)))

Andrey
07.06.2018
10:49:12
оно выполняется, но сразу после завершения CMD у тебя контейнер останавливается

Yuryi
07.06.2018
10:49:35
но он же висит как UP в докер пс((

и в компоуз пс

Andrey
07.06.2018
10:50:24
ну я не знаю, что у тебя там за базовый образ, может у тебя там entrypoint ещё

Google
Andrey
07.06.2018
10:51:03
короче, учи матчасть. Ты залез в docker compose без понимания базовых вещей самого докера

рано

Yuryi
07.06.2018
10:51:45


Andrey
07.06.2018
10:53:22
у тебя другой

лень переписывать с картинки

Yuryi
07.06.2018
10:57:09
окей. Давай упростим задачу. когда клонирование и компил были в ране, я мог зайти в контейнер и файлы были. Насколько я нагуглил достать на хостую папку я их оттуда могу через docker cp, но я не понимаю куда мне эту команду засунуть. физически где мне её написать, в компоузере (в command, entrypoint или ещё где), или где-то в отдельном ш-скрипте и его как-то пробросить или ещё какой вариант

Страница 3950 из 4568