@devops_ru

Страница 3968 из 4568
AlexAnder
17.06.2018
01:31:57


#!/usr/bin/env bash Есть 5 однотипных скриптов на башике. Отличаются они лишь набором команд, которые нужно выполнить - COMMANDS_TO_RUN Можно ли как то избавиться от дублирования и вынести из этих скриптов всю остальную логику, кроме COMMANDS_TO_RUN ? Т.е. хотелось бы избавиться от дублирования

AlexAnder
17.06.2018
01:35:47
скрипты для обычного ангулар проекта на баше) Ansible - оверхед думаю

Google
Deep Sea
17.06.2018
01:35:56
импортить дублирующийся код через source?

AlexAnder
17.06.2018
01:36:03
мб нужно что-то типо такого 2_install.sh: bash ./templates/header.sh ... echo install && yarn install ... bash ./templates/footer.sh ---- 4_script.sh: bash ./templates/header.sh ... echo script && yarn run test ... bash ./templates/footer.sh

импортить дублирующийся код через source?
не подскажешь чем отличается source от bash ? т.е. source script.sh bash script.sh ./script.sh

Deep Sea
17.06.2018
01:37:27
не подскажешь чем отличается source от bash ? т.е. source script.sh bash script.sh ./script.sh
bash запускает скрипт в отдельном процессе, а соурс как часть текущего скрипта

типа как cat + eval

AlexAnder
17.06.2018
01:37:40
ну не знаю) ковырять энсибл для фронтендера это чересчур)) мне докера и баша пока хватает :D

типа как cat + eval
ок понял, благодарю

Антон
17.06.2018
01:38:00
Тебе только главный шедулер написать, а окружение можно тянуть через --limit например. Пихаеш в крон и вуаля

AlexAnder
17.06.2018
01:39:12
мне и так уже на работе в девопсы предлагали свичнуться, мол их мало у нас, а если и в энсибл еще смогу, так и без моего согласия переведут )))

Sergey
17.06.2018
02:43:14
Фронтендер в devops?

Жди бяды

Google
Антон
17.06.2018
03:54:20
Фронтендер в devops?
Какой чат, такие и предложения) этож чат с уклоном в девопс)

Banschikov
17.06.2018
10:45:34
Привет! Есть стадия build в которой модифицируется файл index.html. Хочу передать этот файл в следущую стадию docker_build. Передаю как авртефакт. Но в тоге после сборки образа, там лежит не модицированный. Подскажите как правильно скормить Dockerfile мой файл?

Deep Sea
17.06.2018
10:46:46
как копируете?

Banschikov
17.06.2018
10:48:21
Nik
17.06.2018
10:48:32
Gitlab CI
Передаешь артефактом?

Sergey
17.06.2018
10:48:40
dapp

Nik
17.06.2018
10:48:44
Покажи ci.yml

Sergey
17.06.2018
10:48:44
ты понел)0

Nik
17.06.2018
10:49:04
Передаешь артефактом?
Увидел что артефактом)

Banschikov
17.06.2018
10:49:13
Передаешь артефактом?
artifacts: paths: - index.html

Nik
17.06.2018
10:49:13
Но ci все равно покажи

Banschikov
17.06.2018
10:49:52
как копируете?
Там все банально FROM nginx:latest COPY index.html /usr/share/nginx/html/ CMD ["nginx", "-g", "daemon off;"]

Matvey
17.06.2018
10:55:02
как решить проблему рассинхронизации данных в микросервисной архитектуре? существует сервис А с локальной базой данных A' - сервис пользователей существует сервис B с локальной базой данных B' - сервис аватарок пользователей бизнес-логика следующая: - в сервисе A, в бд A', создается новый пользователь - после успешного создания пользователя, получаем его id - в сервисе B создаем, в бд B', создаем аватарку, привязывая id пользователя к ней при хорошем стечении обстоятельств все хорошо. но могут возникать следующие случаи: 1. - в A -> A' создается запись, получаем id - запрос в сервис B не состоялся - сервис B возвращает 500 ошибку 2. - в A -> A' создается запись, получаем id - делаем запрос в сервис B - B не может записать данные в B' - база данных остановлена 3. - в A -> A' создается запись, получаем id - сервис A аварийно завершил работу, и не успел обратиться в сервис B по итогу бизнес-логика не завершена полностью. A -> A' содержит пользователя, но в B -> B' для него нет аватарки.

Banschikov
17.06.2018
10:55:42
Но ci все равно покажи
Dockerfile выше кидал

Nik
17.06.2018
10:56:49
Для начала нужен depends на предидущий шаг.

test: stage: test dependencies: - build

В твоём случае билд зависим на пакинг

Edgar
17.06.2018
10:57:14
как решить проблему рассинхронизации данных в микросервисной архитектуре? существует сервис А с локальной базой данных A' - сервис пользователей существует сервис B с локальной базой данных B' - сервис аватарок пользователей бизнес-логика следующая: - в сервисе A, в бд A', создается новый пользователь - после успешного создания пользователя, получаем его id - в сервисе B создаем, в бд B', создаем аватарку, привязывая id пользователя к ней при хорошем стечении обстоятельств все хорошо. но могут возникать следующие случаи: 1. - в A -> A' создается запись, получаем id - запрос в сервис B не состоялся - сервис B возвращает 500 ошибку 2. - в A -> A' создается запись, получаем id - делаем запрос в сервис B - B не может записать данные в B' - база данных остановлена 3. - в A -> A' создается запись, получаем id - сервис A аварийно завершил работу, и не успел обратиться в сервис B по итогу бизнес-логика не завершена полностью. A -> A' содержит пользователя, но в B -> B' для него нет аватарки.
хэндлить эти кейсы, делать очереди. с 3им кейсом без вариков, имхо

Nik
17.06.2018
10:58:10
Пока каждый стейдж он работает с чистым репо. И потому у тебя в билде не правленный индекс

Google
Matvey
17.06.2018
10:58:18
@EdgarSedov спасибо. можно подробный план действий по построению очередей?

Sergey
17.06.2018
10:58:58
как решить проблему рассинхронизации данных в микросервисной архитектуре? существует сервис А с локальной базой данных A' - сервис пользователей существует сервис B с локальной базой данных B' - сервис аватарок пользователей бизнес-логика следующая: - в сервисе A, в бд A', создается новый пользователь - после успешного создания пользователя, получаем его id - в сервисе B создаем, в бд B', создаем аватарку, привязывая id пользователя к ней при хорошем стечении обстоятельств все хорошо. но могут возникать следующие случаи: 1. - в A -> A' создается запись, получаем id - запрос в сервис B не состоялся - сервис B возвращает 500 ошибку 2. - в A -> A' создается запись, получаем id - делаем запрос в сервис B - B не может записать данные в B' - база данных остановлена 3. - в A -> A' создается запись, получаем id - сервис A аварийно завершил работу, и не успел обратиться в сервис B по итогу бизнес-логика не завершена полностью. A -> A' содержит пользователя, но в B -> B' для него нет аватарки.
надо просто сделать чтобы кейсы не возникали)

Matvey
17.06.2018
10:59:39
чаще всего, наверное, такого происходить не будет, но всегда есть риск )

Nik
17.06.2018
10:59:53
Dockerfile выше кидал
https://docs.gitlab.com/ce/ci/yaml/README.html#dependencies

Edgar
17.06.2018
10:59:54
@EdgarSedov спасибо. можно подробный план действий по построению очередей?
ну вот создал ты юзера в а. добавляешь в очередь задание на создание автарки в сервисе б. в задании хендлишь фейлы, и перезапускаешь его через некоторое время, например

Matvey
17.06.2018
11:01:06
@EdgarSedov а если в момент перезапуска задания, в сервисе A пользователя заблокировали, и аватарка ему больше не нужна?

Edgar
17.06.2018
11:01:26
в теории, можешь конечно почекать очередь на невыполненные задания, но это гемор, имхо

Banschikov
17.06.2018
11:02:06
https://docs.gitlab.com/ce/ci/yaml/README.html#dependencies
Понял! Спасибо, попробуем

Nik
17.06.2018
11:02:20
Просто контейнер с nginx. Не клади туда индекс

Простого монитоуй ему волюм, на который клади индекс

А то контейнер ради одного файла - оверкилл

Banschikov
17.06.2018
11:03:47
А вообще надо делать прямее
Да мне нужно просто показать hello world и все

Matvey
17.06.2018
11:05:00
@EdgarSedov не могу придумать каких-то изъянов ) это должно работать, спасибо

Banschikov
17.06.2018
11:05:07
А то контейнер ради одного файла - оверкилл
Слушай, шас попробовал перезапустить пайплайн. Все равно забирает изнаяальную версию из репозитрия

Edgar
17.06.2018
11:06:46
@EdgarSedov не могу придумать каких-то изъянов ) это должно работать, спасибо
изъяны могут появляться при параллельной обработке. Например, первый воркер взял задание на добавление аватарки, но не успел добавить, а второй уже взял на удаление

Matvey
17.06.2018
11:08:42
в таком случае должен быть какой-то сбобрщик мусора бесхозных данных. но эти данные могут начать использоваться в других записях еще до выполнения этого сборщика

Edgar
17.06.2018
11:09:02
обычно это хендлится локами

Matvey
17.06.2018
11:09:29
а как это? ) блокировками на уровне бд?

Google
Nik
17.06.2018
11:09:31
Слушай, шас попробовал перезапустить пайплайн. Все равно забирает изнаяальную версию из репозитрия
Я ща с телефоном и не вспомню, по этому для дебага сделай ls -lah на сборке- посмотрим какие папки/файлы ему доступны

Aleksey
17.06.2018
11:09:38
как решить проблему рассинхронизации данных в микросервисной архитектуре? существует сервис А с локальной базой данных A' - сервис пользователей существует сервис B с локальной базой данных B' - сервис аватарок пользователей бизнес-логика следующая: - в сервисе A, в бд A', создается новый пользователь - после успешного создания пользователя, получаем его id - в сервисе B создаем, в бд B', создаем аватарку, привязывая id пользователя к ней при хорошем стечении обстоятельств все хорошо. но могут возникать следующие случаи: 1. - в A -> A' создается запись, получаем id - запрос в сервис B не состоялся - сервис B возвращает 500 ошибку 2. - в A -> A' создается запись, получаем id - делаем запрос в сервис B - B не может записать данные в B' - база данных остановлена 3. - в A -> A' создается запись, получаем id - сервис A аварийно завершил работу, и не успел обратиться в сервис B по итогу бизнес-логика не завершена полностью. A -> A' содержит пользователя, но в B -> B' для него нет аватарки.
https://habr.com/post/413817/ там конешно избыточно но можно подчерпнуть идеи

Matvey
17.06.2018
11:10:01
спасибо, буду читать

Banschikov
17.06.2018
11:21:26
Я ща с телефоном и не вспомню, по этому для дебага сделай ls -lah на сборке- посмотрим какие папки/файлы ему доступны
Ок.Да смотрел уже. Все имеется. cat index.html показывает все правильно. Но во время сборки все равно копирует дефолтный из репозитория

Nik
17.06.2018
11:22:10
Ок.Да смотрел уже. Все имеется. cat index.html показывает все правильно. Но во время сборки все равно копирует дефолтный из репозитория
Вот не может быть. Ты делаешь кат на файл- катается нужный. А когда копируешь - уже не тот? Все в одном стейдже?

Aleksey
17.06.2018
11:26:31
а скачай артефакт и глянь какой он там

Banschikov
17.06.2018
11:31:13
а скачай артефакт и глянь какой он там
Качал. Артефакт который и должен быть

Aleksey
17.06.2018
11:38:03
Качал. Артефакт который и должен быть
build лог этой стадии можно весь

Banschikov
17.06.2018
11:38:28
Aleksey
17.06.2018
11:41:13
build лог этой стадии можно весь
а как проверяйте образ ?

я думаю вы забываете делать docker pull image

т.к. у вас одинаковое имя образа

Banschikov
17.06.2018
12:09:26
я думаю вы забываете делать docker pull image
docker image build --pull -t "$IMAGE_NAME:$BUILD_TAG" -t $IMAGE_NAME .

Aleksey
17.06.2018
12:10:46
docker image build --pull -t "$IMAGE_NAME:$BUILD_TAG" -t $IMAGE_NAME .
по логам имедж обновляется в речестри.

на той машине где вы проверяйте перед запуском сделайте docker pull

docker кеширует образы и не обновляет пока его явно не попросить об этом

Banschikov
17.06.2018
12:12:47
docker кеширует образы и не обновляет пока его явно не попросить об этом
Я в конце делаю docker image rm -f $(docker image inspect -f '{{.Id}}' "$IMAGE_NAME:$BUILD_TAG")

Aleksey
17.06.2018
12:13:34
и что. я сейчас говорю не про сборку. сборка работает на все 100

https://pastebin.com/EE4XLdwZ 63 строка образ обновился

Google
Aleksey
17.06.2018
12:15:20
192.168.0.30:5000/root/hello-world:master

так как вы проверяйте ? комманду плиз

Banschikov
17.06.2018
12:19:21
https://pastebin.com/EE4XLdwZ 63 строка образ обновился
Вообщем сейчас понял что проблема не с dockerfile. Тема такая. У меня 2 ветки: Master и Developer Когда идет пуш в Master, в реджистри по итогу 2 образа заливается. Один с тегом latest. а другой с тегом master. В Developer похожая ситуация, только один образ заливается с тегом developer

it m
17.06.2018
14:50:48
приветствую всех. подскажите, умеет ли MTMproxy работать через другой прокси ? или только iptables извращаться ?

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