
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
#язабан

Andrey
07.06.2018
09:49:42

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

Дмитрий
07.06.2018
09:52:22

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

Дмитрий
07.06.2018
09:54:53

Google

Sergey
07.06.2018
09:55:05
Ах да - и FHS тоже, судя по всему, нарушается.

Andrey
07.06.2018
09:56:39
Я не понимаю, почему вы думаете, что FHS тут каким-то боком и я нарушаю какой-то принцип
Мне нужно скопировать шаблонную директорию в tmp, сделать с ней какие-то действия, воспользоваться артефактом и удалить эту диру

Ilya
07.06.2018
09:58:13
unarchive:
решает твою проблему.

Sergey
07.06.2018
09:58:42

Arty
07.06.2018
09:58:51

Дмитрий
07.06.2018
10:00:09

Andrey
07.06.2018
10:00:42

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

Дмитрий
07.06.2018
10:02:53

Sergey
07.06.2018
10:03:08

Andrey
07.06.2018
10:03:51
писать модуль для копирования директории? Скрипт быстрее
вы так говорите, будто вы не ленивый тип :)
автоматизация сама по себе для ленивых

Sergey
07.06.2018
10:06:01

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

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

Yuryi
07.06.2018
10:39:38

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 или ещё где), или где-то в отдельном ш-скрипте и его как-то пробросить или ещё какой вариант