Задать вопрос
  • В чем разница между docker-compose и gitlab ci services?

    docker-compose - это инструмент для создания композиции из докер-контейнеров
    gitlab ci services - это штука для поднятия каких-то сервисов доступных во время процесса ci/cd
    И то, и другое, позволяет управлять приложением из нескольких образов, верно?

    Нет, не верно - это делает только docker-compose

    Принципиально они предназначены для решения совершенно разных задач.

    Короче вы пытаетесь сравнить тёплое с мягким.

    Вот если у меня зависимость от СУБД, где её надо прописывать? В services? В .docker-compose.yml?

    Если эта зависимость возникает на этапе тестирования, то да - в services
    Если эта зависимость возникает на этапе работы в проде - тогда уже разбираться с продакшен окружением надо, а не с гитлабом, в том числе и с композом, если вы используете его.
    Ответ написан
    1 комментарий
  • Принимать ли job offer без обсуждения проекта?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    При получении job offer с европейской галлеры не дают ссылку на проект по security причинам. Лишь упоминается что это "хороший клиент" Время - 2 дня на подумать.


    Давать ссылку на проект и не должны. Но всего лишь "хороший клиент" недостаточно.
    Общее описание инфраструктуры, технологий должно быть. Например все живет на виртуалках, в докере или в облаке. Например какие языки используются и версии. Какие CI/CD инструменты. Дают ли Idea и тому подобные вещи. Они никак не связаны с NDA.
    А так - решать вам. В оффер условия работы вам сообщили, выбирайте что вам важнее.
    Ответ написан
    Комментировать
  • Как с помощью cron менять главную страницу сайта? каждый день новый html файл их 365?

    @rPman
    мини ликбез
    Есть два противоположных подхода к решению задачи, и выбор зависит от того, на сколько в принципе сложен сайт.

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

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

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

    Никто не мешает контент генерировать динамически и код стартовой страницы может выглядеть примерно так:
    <?php include date('d-m').'.html'; ?>где нужные страницы по дням лежат в файлах к примеру с именем вида 21-11.html

    можно попробовать совместить бонусы от статики, отдавая динамической страницей не саму страницу, а только редирект на ее статическое имя:
    <?php header('Location: http://www.example.com/'.date('d-m').'.html');?>
    тогда сразу в нужный момент времени при заходе на сайт будет автоматический редирект на нужную страницу, и при этом все будет быстро и красиво, но пользователям будет доступны страницы с предыдущих дней по их имени, и их придется как то скрывать, если это актуально (например средствами прав доступа или просто перемещая файлы в другой каталог отдельным скриптом, пусть и по крону)

    ну и вариант с кроном, когда файл index.html ежесуточно заменяется копией, команда в крон может быть примерно такой:
    cp /путь/до/исходных/файлов/`date +%m-%d`.html /путь/до/папки/веб/сервера/index.html
    Ответ написан
    5 комментариев
  • Как создать самоперезапускающийся сервис systemd?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    В systemd для этого существуют таймеры. Делают ровно то, что вам нужно.
    Ответ написан
    2 комментария
  • Что происходит на рынке труда в айти?

    alexgp13
    @alexgp13
    Руководитель ИТ-проектов
    Если честно, то на рынке ИТ все сейчас очень сложно. Причин несколько, а анализ легко растянется на полноценную статью, даже была мысль написать наХабр и Линкедин по этой теме. Постараюсь коротко пройтись по основным трендам.
    1. Доступность удаленной работы, соответственно регионы и Индия с низкими зарплатами ворвались на рынок.
    2. Миф о высокой зарплате. Когда то так было, сейчас курьер Яндекс-еды зарабатывает больше, чем средний программист. Про продажников даже не хочу говорить, знаю людей, легко имеющих и по миллиону в месяц.
    3. Мифы о легком старте. На самом деле точка входа в профессию достаточно высока, так как мало освоить навыки кодера, нужно еще иметь логическое мышление, знать математику, анализ, разбираться в предмете (физика для игр, экономика для 1С, производство для автоматизации и многое другое). И, возвращаясь к пунктам 1 и 2, за хорошую зарплату придется после пары месяцев курсов конкурировать с индусами, которые имеют по 10 лет опыта, с регионами, где есть специалисты с 20-летним опытом, готовые работать за зарплату джуна в Москве.
    4. Отдельно выделю сильно усложнившиеся программы, сложность разработки, несмотря на множество облегчающих жизнь инструментов, за последние годы выросла достаточно сильно.

    Как человек, проведший не один десяток собеседований (и изучивший пару сотен резюме) скажу, что рынок действительно перегружен людьми, которые ничего не понимают в ИТ, но окончили курсы и гонются за легкими деньгами. Найти среди этой кучи резюме хорошего специалиста становится сложно. Отдельная проблема - болтуны, у которых опять же хорошо подвешен язык, но нет понимания реальной работы ИТ. Когда к этому приложена низкая квалификация руководства, происходит беда - сотрудников много, зарплаты высокие, а реально всю работу тащит один старый сотрудник, который 90% времени занят мыслями что его не ценят и пора валить.

    Надеюсь, ответил достаточно понятно)
    Ответ написан
    4 комментария
  • Как сделать readinessProbe по тексту файла?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    вам не нужен cat и ненужный pipe - просто
    grep -q "app start" /app/log

    Но вы уверены, что это нормально - просматриивать целый лог файл каждую итерацию рединесс пробы?
    Может быть все-таки лучше в программу добавить дополнительный ендпоинт и проверять ее через http пробу?
    Ответ написан
    2 комментария
  • Cron сломался - не выполняются задания, что может быть?

    @galaxy
    Если ваши задания не пишут свои логи, то ошибки крон по умолчанию отправляет на почту. Адрес задается переменной MAILTO в crontab. Если не задавали, будет слать, скорее всего, на username@localhost.
    Проверяйте /var/spool/mail/username
    Ответ написан
    7 комментариев
  • Как обезопасить рабочую почту и яндекс диск для 5-6 пользователей?

    kotomyava
    @kotomyava
    Системный администратор
    Для начала, сама мысль использовать совместно один аккаунт, крайне вредна с точки зрения безопасности. Всё концептуально неправильно построено. Ну и, конечно, использование такого сервиса для каких-то важных вещей это тоже плохая идея.

    Ваша мысль не сработает. Изменить поведение сервиса вы не сможете.
    Ответ написан
    7 комментариев
  • Как работает докер и нужен ли он для веб-приложений?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Если контейнер содержит в себе веб-сервер, бд

    Во-первых, неправильно пихать и web-сервер, и БД в один контейнер. Во-вторых, вообще не стоит пихать БД в контейнер.

    Насколько вообще оправдано использование докера например при написании веб-приложения на python?

    На мой взгляд только тогда, когда предполагается эксплуатация этого приложения в автоматически масштабируемом окружении с десятками узлов. Если у вас одна VPS'ка, то контейнеры - это оверкилл. А для остального у Python есть свои средства виртуализации, которых вполне достаточно.
    Ответ написан
    Комментировать
  • Подходит ли Terraform для обновления AMI image?

    Время от времени нужно обновлять AMIs используемые в launch templates
    Явный намёк на иммутабельную (неизменяемую) инфраструктуру. Best practice подсказывает, что свежеиспечённый образ должен быть очищен от ненужного и установлено всё необходимое. Затем всё протестировано и проверено.

    Подходит ли Terraform для этого?
    Для развёртывания / обновления с новым AMI? Да.
    Для создания нового образа с требуемыми настройками? В принципе можно накрутить user data, но всё рано будет не тот фасон. Для этих целей больше подходит Ansible.
    Ответ написан
    Комментировать
  • Подходит ли Terraform для обновления AMI image?

    Viji
    @Viji
    DevOps Engineer
    Добрый, Терраформ не очень хорош, его как end user. Для обновления используйте packer - лучше всего внутри CI/CD pipeline. После обновления ami обновите launch template в терраформе,просто указывая (новую) версию ami для ec2 машин.

    Но... в терраформе можно указать user_data c баш скриптом для запуска во время инициации инстанса
    https://www.bogotobogo.com/DevOps/Terraform/Terraf...
    Ответ написан
    Комментировать
  • Отмена запуска отдельного этапа в Gitlab CI/CD?

    job:
      script: echo "Долгий тест!"
      rules:
        - if: '$CI_COMMIT_MESSAGE =~ /регулярка-стопслово/' 
          when: never
    Ответ написан
    2 комментария
  • Скрипт для автоматического git pull на удаленном сервере?

    akelsey
    @akelsey
    Для этого используются Gitlab-runner, разворачивается на сервере, создается нужный пайплайн, который при коммите в GIT будет делать всё сам.
    Гуглить в сторону .gitlab-ci.yml gitlab-runner ci/cd pipelines
    Ответ написан
    2 комментария
  • Почему у ping и nslookup могут быть разные результаты при обращении к DNS?

    suffix_ixbt
    @suffix_ixbt
    https://www.babai.ru/
    Ping может использовать различные способы получения IP-адреса (все перечислены в /etc/nsswitch.conf), например брать его в /etc/hosts.

    Nslookup всегда запрашивает только nameserver.
    Ответ написан
    Комментировать
  • Как обновлять структуру БД на рабочем сервере?

    denver14
    @denver14
    разработчик бэкенд и БД
    Да, миграции, всё верно. Посмотрите в сторону Flyway или Liquibase. Вторым не пользовался, только читал, поэтому вкратце расскажу про Flyway. Он бесплатный в базовой функциональности, а её вполне хватает.

    Миграции представляют собой SQL-файлы, названные по определённым правилам с указанием версии и краткого описания. Лично я вместо абстрактной версии использую текущие дату и время. Например, V20210601_1200__init.sql или V20210602_1015__alter_products.sql. Вручную файлы создавать скучно, я батник писал. Использование даты-времени позволяет создавать независимые миграции несколькими разработчиками параллельно и не особо обращать внимание на их порядок. Всё лежит в репозитории системы контроля версий вместе с остальным проектом.

    При обновлении ветки кода (на стенде или на проде) запускаем flyway migrate. Он сверяет содержимое подкаталога с миграциями со своей служебной таблицей. Новые миграции применяются по очереди. К сожалению, здесь нет возможности отката миграции, как во фреймворках Yii или Rails.

    Вкратце работа выглядит так:
    • В репозитории создаём подкаталог, скажем, db с конфигурационным файлом flyway.conf (точнее, конечно, в репозиторий идёт flyway.conf.example, а конкретный конфиг настраивается под каждый стенд БД локально)
    • Конфиг настраиваем на нужный экземпляр БД и подкаталог, где будут лежать файлы миграций, например db/migrations
    • Описываем текущее состояние в самой первой миграции, я её обычно зову init. Она должна с пустой схемы обеспечить накат структуры и справочников до текущего состояния. Иногда лучше миграции разбивать на две: структура отдельно, инсерты отдельно.
    • На тестовой базе выполняем flyway migrate и добиваемся того, чтобы миграция вкатывалась правильно. Откатывать придётся вручную, удаляя запись из служебной таблицы.
    • Если всё нормально, коммитим результаты, выполняем flyway migrate на проде и наслаждаемся :)


    По хорошему, конечно, вызывать механизм мигрирования нужно не руками, этим должен заниматься CI/CD (например, Jenkins) по факту обновления соответствующей ветки репозитория. Но для пробы процесса пока этого достаточно.
    Ответ написан
    Комментировать
  • Как сделать итерацию по серверам в Terraform?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Vitaly Karasik
    Евгений, я хочу это сделать Terraform

    Terraform - инструмент для провижининга инфраструктуры. tf управляет ресурсами инфраструктуры и хранит их состояние в стейте для того чтобы просчитывать изменения при изменении параметров или кода
    Пользователи на ваших серверах - это уже не инфраструктура, они никак не фигурируют (и не могут без костылей) в стейте tf, а значит именно управлять ими tf не будет.
    Вы, конечно, можете использовать костыль в виде null resource запускающего просто sh\posh\cmd скрипт, который откуда то возьмет данные для подключения к вашим серверам, данные о пользователях которых надо создать
    Терраформ этим ресурсом по сути не управляет, он только выполнит\перевыполнит(по триггерам на состояние других ресурсов в tf) ваш скрипт. О небезопасности хранения учетных данных таким образом думаю не стоит напоминать.
    Аналогично вместо скрипта может быть ансибл\шеф (возможно через провайдер) или что-то другое так же запускаемое терраформом (но стейт созданных "ресурсов"=пользователей хранить будет опять же не терраформ, а значит об управлении речь не идет)
    Не надо плоскогубцами забивать гвозди. Да, в некоторых случаях это возможно сделать, но это создает больше проблем чем решает
    Кстати, намек как плоскогубцами забить гвоздь содержится в описании null_resource - ссылка выше.
    Ответ написан
    8 комментариев
  • Как сделать платное отключение рекламы на Wordpress?

    ArchitectOfRuin
    @ArchitectOfRuin
    WordPress-энтузиаст, маркетолог, переводчик
    https://wordpress.org/plugins/advanced-ads/ - скрываете рекламу для пользователей с определенной ролью (нужно будет создать роли для разных юзеров).
    https://woocommerce.com/products/woocommerce-subsc... - сначала надо будет поставить WooCommerce. Потом с помощью этого дополнения сможете взимать деньги за отключение рекламы на месяц, на год и т.д. по подписке.
    Третий вариант посложнее. Делаете сообщество с помощью https://wordpress.org/plugins/paid-memberships-pro/, далее уже для участников убираете рекламу (в про-версии плагина есть такая опция).
    Ответ написан
    3 комментария
  • Как доказать клиенту, что не мы сломали сайт?

    @YahorDanchanka
    Frontend developer
    Используйте систему контроля версий (т.е. git). Вы всегда сможете посмотреть изменения, которые были сделаны и не занесены в production.
    Полезная команда для вашего случая git diff, которая выводит изменения в файлах, которые еще не были добавлены в индекс. Сравнение происходит с последним коммитом.
    Ответ написан
    Комментировать