Создание production-сервера c Ansible

Автоматизация серверной инфраструктуры. Автоматическая установка Docker и Compose на виртуальную машину через Ansible. Подключение сертификатов Let's Encrypt.

Комментарии (86)
Arunas
2019-12-26 19:09

спасибо, очень поможет, очень хорошый урок.

Ответить
Руслан
2019-12-27 08:11

Отличный эпизод, как всегда. Огромная просьба рассмотреть возможность добавить в материалы настройку Github Actions для CI/CD.

PS: интересует также, имеются ли в Ваших курсах материалы по опыту правильной организации multi-tenant архитектуры на любом из фреймовоков? Либо в планах на будущее)

Спасибо еще раз за супер курс!

Ответить
Ruslan
2019-12-27 16:33

Тёзка, там заявлен Дженкинс. Видел на Ютубе CI/CD для Битбакета и для ГитЛаба тоже наверняка найдется.

Ответить
Руслан
2019-12-27 19:28

Руслан, спасибо, конечно, видел то что Jenkins заявлен. Просто Github Actions видется более перспективней в плане популярности в ближайшие время, хотелось на него перескочить в плане self-hosted CI/CD, не ставить на сервак java (Jenkins) или ruby (Gitlab CI).

Ответить
Ruslan
2019-12-28 09:50

А что с приватными репами, только за деньги, как и на самом Github ?

А вообщем, я о том, что нужно придерживаться плана. Я тоже могу написать, что сейчас большой downtime и давайте поднимем кластер для CI/CD без downtime.

Какие-то такие дополнения можно сделать в самом конце когда станет известно как делать: "Разработка аукциона на Slim и ReactJS" :)

Ответить
Paul
2019-12-28 22:39

Мощно!

Ответить
Алекс Про
2019-12-29 17:17

Снимайте, пожалуйста, видео на чёрной теме IDE!!!

Ответить
Deworker Pro
2019-12-29 18:34

Приведите пример видео с YouTube с красивой тёмной темой.

Ответить
Deworker Pro
2019-12-29 18:51

Эта нечёткая (пыльная)

Ответить
Иван
2020-01-23 19:49

Тема: ayu, темная подтема: mirage

Ответить
Deworker Pro
2020-01-23 20:18

Это для Visual Studio. Есть форк для PhpStorm?

Ответить
Иван
2020-01-23 23:40

Visual Studio Code, если быть точным, но и это частность - тема не принадлежит одной какой-то сущности.

Для Sublime Text 3 - есть точно, для PhpStorm - не знаю, должна быть.

Тема мощная и крутая, очень досадно будет, если не портирована.

Ответить
Алексей
2019-12-29 20:36

Все отлично. Но, хотелось бы краем глаза глянуть как вы настраивали реестр для докера. Сама установка вроде бы элементарна.

docker run --entrypoint ./auth/htpasswd registry:2 -Bbn registry passwd > ./auth/htpasswd

docker-compose.yml

version: "3.7" services:

registry:
    restart: always
    image: registry:2
    ports:
        - 5000:5000
    environment:
        REGISTRY_HTTP_TLS_CERTIFICATE: /certs/example.com.crt
        REGISTRY_HTTP_TLS_KEY: /certs/example.com.key
        REGISTRY_AUTH: htpasswd
        REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
        REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
    volumes:
        - ./registry:/var/lib/registry
        - ./auth:/auth
        - /etc/letsencrypt/live/example.com:/certs

Но с сертификатами у меня получился жуткий костыль. Из коробки докер с letsencrypt не заработал, хотя в документации пишут, что должен. Или, может, дело в версии убунты? У меня 16.04

Ответить
Deworker Pro
2019-12-30 05:47

Просто можно как с gateway закрыть сертификатами и htpasswd снаружи в Nginx:

version: '3'
services:
    nginx:
        image: nginx:alpine
        restart: always
        ports:
            - "80:80"
            - "443:443"
        volumes:
            - /etc/letsencrypt:/etc/letsencrypt
            - /var/www/html:/var/www/html
            - ./docker/nginx/conf.d:/etc/nginx/conf.d
            - ./htpasswd:/etc/nginx/auth/htpasswd
        depends_on:
            - registry
    registry:
        image: registry:2
        restart: always
        volumes:
            - registry:/var/lib/registry
volumes:
    registry:
Ответить
Роман
2020-01-12 16:44
  • ./docker/nginx/conf.d:/etc/nginx/conf.d

А в этом случае прокидываемый конфиг в контейнер как будет выглядеть? Самый базовый с ssl сниппетами и auth_basic_user_file /path/to/.htpasswd; в главном локейшене для nginx на домен registry.domain.com, к примеру, верно?

Ответить
Deworker Pro
2020-01-13 09:57

Да, примитивный с секцией server как приведённый в документации к registry, только переделанный для Let's Encrypt.

Ответить
Роман
2020-01-13 10:03

Спасибо!

Ответить
BMWist
2020-01-13 14:39

Было бы не плохо, если бы в одном уроке настройку registry сервера показали на этой же виртуалке, чтобы охватить все технологии, которые используется, мне было бы очень полезно ))

Ответить
Роман
2020-02-09 02:19

Дмитрий, я правильно понимаю что ваш кейс с оркестрацией сервера подразумевает абсолютно голый сервер? Если на удаленной машине, на которой я хочу поднять образы из реестра, уже стоит nginx и слушает 80 и 443 порты, то в этом случае не получится проброска этих портов для gateway в docker-compose-production и, как следствие образы не поднимутся. Завелось вместе с ssl только тогда, когда я сделал проброс незанятого порта, к примеру 5001 на 443 ("5001":"443", в докер композ прод), но для этого приходится добавлять порт на продакшене в строке браузера, для того чтобы происходило перенаправление в обработку докера на 443 порт. Хотел узнать, может есть какой-то лайфхак, чтобы разрулить эту ситуацию на уровне конфигов nginx, хотя пробовал разные варианты. Просто не хочется добавлять все время порт в строке браузера

Ответить
Deworker Pro
2020-02-09 12:40

Да, на сервере можно поднять только один Nginx на одном порту. Поэтому если уже стоит внешний Nginx, то можно в него добавить хост с proxy_pass localhost:5001

Ответить
Александр
2019-12-31 12:01

Курс супер. Но зачем так заморачиваться с сертификатами, если можно использовать Treafik. Он все это умеет из коробки.

Ответить
Руслан
2020-01-01 23:29

Александр, интересуют подробности других преимуществ Traefik vs nginx / haproxy etc. (кроме сертификатов) и опыт оптимальной установки/настройки?

Ответить
Александр
2020-01-02 18:26

Я только осваиваю. Но он много чего умеет. Про haroxy не слышал.

Ответить
Руслан
2020-01-02 20:21

Насколько понимаю, чтобы разобраться как обойтись средствами уже задействованного nginx, чем вводить дополнительный слой либо отдавать предпочтение одному из многих специализированных прокси-серверов/балансировщиков, уже заточенных под микросервисы и k8s (traefik, haproxy, envoy, kong и пр.). Последние конечно удобны разными плюшками из коробки, но на них можно будет легко мигрировать при необходимости и от нужд в этих плюшках конкретного проекта.

Ответить
Deworker Pro
2020-01-04 16:49

UPD 1: В Cron-задаче очистки Docker нужно добавить флаг "a":

docker system prune -af --filter "until=$((30*24))h"
Ответить
Ruslan
2020-01-06 13:54

А в эту чистку используемые контейнеры попадают, ведь проект может быть и год без изменений? Или это очищает только элементы из которых собирается наш контейнер?

Ответить
Deworker Pro
2020-01-06 17:27
$ docker system prune -a

This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all images without at least one container associated to them
  - all build cache
Ответить
Sergei
2020-01-06 16:22

ничего_не_понял_но_очень_интересно.jpg

Ответить
BMWist
2020-01-11 01:42

Буду переходить на vscale.io

Ответить
Сарибжанов Ильдар
2020-01-15 03:52

На мой взгляд идея ущербности установки с мануалов перед установкой скриптом - надумана.

Мы же сейчас говорим про разработчиков, которые разворачивание окружения производят раз в несколько месяцев, а то и реже. Что скрипт отдельный писать, что мануалы использовать итог один - всё равно придётся актуализировать скрипт под нужды. К тому же сам алгоритм инсталяции может поменяться, например, добавятся зависимости или платформа поменяется. Например, докер переедет go на rust и потребуется отдельно доставлять раст. А по итогу, чтобы починить свой шел придётся лезть в мануалы.

Я не говорю, что представленный материал не нужен, но я бы «продавал» его с позиции управления сложностью: производим декомпозицию алгоритма разворачивания сервера и уход от низкоуровневых абстракций (общение с терминалом) к высокому уровню - ансибл.

Спасибо за материал =)

Ответить
Deworker Pro
2020-01-15 09:49

Да, всегда приходится лазить в мануалы и любая автоматизация является оверхедом когда виртуалок и программистов в проекте не больше одной/одного. Тогда можно заходить и ставить софт и править конфиги вручную без скриптов, выполнить что-нибудь в БД без миграций и на локальном компьютере ставить тоже вручную.

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

Или когда мы пускаем на сервер другого сисадмина с фриланса, который не понятно что там по своим шпаргалкам ставит и настраивает. Сразу получаем проблемы с тем, что он мог что-то забыть на одной из них. И что он через неделю уйдёт, а нам не очень полную шпаргалку оставит. Или что-то сломает, а мы не узнаем что именно.

Так что как только виртуалок и программистов становится много, то автоматизация во всём очень помогает. И пусть все сисадмины тоже коммитят в tasks.yml.

Ответить
Руслан
2020-01-16 08:31

Подскажите, доступа к root нет, использую в качестве remote_user пользователя,

remote_user: deploy become: yes become_user: deploy

Пишет ошибку: Failed to lock apt for exclusive operation

Подскажите, как настроить без root доступа?

Ответить
Deworker Pro
2020-01-17 15:02

Задачи с apt запускайте только от root (через become без become_user).

Ответить
Arunas
2020-01-16 19:44

после успешного make site, в кроне хостинга (в /etc/cron.d/certbot) введётся команда "...certbot -q renew". Но как реально автоматом происходит certbot renew, если gateway (nginx) работает в докере, а сертификат продлен снаружи? как в этой ситуации, происходит автоматическое продление сертификата?

Ответить
Deworker Pro
2020-01-17 15:17

Как упомянули после деплоя, в cli.ini вместо хука service nginx restart нужно вписать перезапуск gateway вроде такого:

post-hook = /bin/sh -c 'cd /home/deploy/site && docker-compose restart gateway'
Ответить
Deworker Pro
2020-01-22 16:29

Например, в site/tasks добавить задачу добавления строки:

-   name: Add Certbot hook
    lineinfile:
        path: /etc/letsencrypt/cli.ini
        line: "post-hook = /bin/sh -c 'cd /home/deploy/site && docker-compose restart gateway'"
Ответить
Arunas
2020-01-22 17:12

в чем разница между этими вариантами? Ведь, в первом варианте, когда в provisioning/roles/certbot/files/cli.ini записываем renew-hook = /bin/sh -c 'cd /home/deploy/site && docker-compose restart gateway' , то при make site этот cli.ini пападает в /etc/letsencrypt/cli.ini (VM Debian у хостинга).

Ответить
Arunas
2020-01-22 17:26

у demo-auction.skucai.com деплоил (18-01-2020) проект, по первому варианту, и подожду 32 дней, посмотрю, продлится сертификат или нет.

Ответить
Arunas
2020-01-22 17:31

А как проверит cron: правильно введена команда? Теперь, после успешного деплое, в VM Debian /etc/cron.d/certbot есть такая: 0 /12 * root test -x /usr/bin/certbot -a ! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew . А с crontab -e видно: 0 1 * docker system prune -af --filter "until=$((3024))h"

Ответить
Deworker Pro
2020-01-22 17:37

Разница в том, что роль certbot будет общая для всех production и staging серверов. Им может быть нужен разный хук и одинаковый cli.ini может всем не подойти. Поэтому можно всем скопировать общий cli.ini без хука, а потом уже в ролях site и staging добавить им по своей строке. Зависит от ситуации.

Ответить
Arunas
2020-01-22 17:43

спасибо.

Ответить
Ruslan
2020-01-18 17:17

Я что-то совсем запутался. Registry требует установки перед ним вэбсервера или нет?

version: '3'

services:
  registry:
    image: registry:2
    restart: always
    ports:
      - "5000:5000"
    environment:
      REGISTRY_HTTP_TLS_CERTIFICATE: /certs/live/{{ registry_host }}/cert.pem
      REGISTRY_HTTP_TLS_KEY: /certs/live/{{ registry_host }}/privkey.pem
      REGISTRY_AUTH: htpasswd
      REGISTRY_AUTH_HTPASSWD_REALM: Registry
      REGISTRY_AUTH_HTPASSWD_PATH: /auth/password
      REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data
    volumes:
      - ./auth:/auth
      - ./data:/data
      - /etc/letsencrypt/:/certs:ro

Из этого конфига я подумал, что Registry может сам работать без вэба, но

docker push registry.mydomain.com/auction-gateway:master-1

И видно, что он лезет по https в папку V2 :

Get https://registry.mydomain.com/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
Ответить
Ruslan
2020-01-18 22:56

На это можно не отвечать. Я уже разобрался. В итоге у меня собралась рабочая среда из: WSL 2, CentOS и docker repository в одном контейнере без вэба впереди. А можно ли в конфигах nginx применять пересенные, чтоб не перебивать названия сайтов "deworker.pro" на свои? В 19и местах пришлось менять руками, так и запутаться можно.

Ответить
Deworker Pro
2020-01-19 05:59

Два варианта. Либо запускать его со своими сертификатами TLS_CERTIFICATE и htpasswd без внешнего Nginx, либо реестр запускать без сертификатов, настроив их в дополнительном Nginx.

Ответить
Ruslan
2020-01-19 09:20

Спасибо.

Мне понравился вариант, когда реро само за себя, если нужно на той же машине использовать вэб, то не нужно учитывать , что 80 и 443 уже используется.

Ответить
Иван
2020-01-23 19:52

Это тоже для новичков или курилка спецов по devops'у?
Вы не понимаете, что такое объяснение.
Объяснение, это не рассказ.

Ответить
Deworker Pro
2020-01-24 08:52

Здесь практика по разработке проекта.
Рассказывать что такое консоль, apt и cron здесь нет смысла.

Ответить
Иван
2020-01-24 13:50

Понял, спасибо.

Ответить
Роман
2020-02-05 15:48

https://i.imgur.com/GrKChZd.png

По команде ansible-playbook -i hosts.yml site.yml у меня на удаленной машине (Ubuntu 18.04) произошла ошибка на шаге Add Certbot repository. Видимо он не смог потом сделать apt-get update. Возможно попробовать другой repo: ?

Ответить
Роман
2020-02-05 16:14
-   name: Add Certbot repository
    apt_repository:
        repo: 'ppa:certbot/certbot'
        state: present
        update_cache: yes

-   name: Install Certbot
    apt:
        name: certbot
        state: present
        update_cache: yes

вот такой вариант прошел, кстати

Ответить
Deworker Pro
2020-02-05 16:16

Да, мы уже обсуждали под эпизодом про Xdebug.

Ответить
Дмитрий
2020-02-25 04:14

Я не понял, для того чтобы заработали поддомены надо ли предпринимать дополнительно что то или достаточно тех настроек nginx которые в контейнерах указаны?

Ответить
Deworker Pro
2020-02-25 09:12

Ещё нужно прописать A-записи с IP-адресом сервера в настройках DNS этих доменов и поддоменов.

Но это уже производится в панели управления регистратора, а не в проекте.

Ответить
Дмитрий
2020-02-25 09:21

На примере vscale, ip повторяет адрес основного домена? а порт нужно указать?

Ответить
Deworker Pro
2020-02-25 16:20

В панели управления регистратора или хостинга проставляем домену и поддомену одинаковую A-запись с одним IP-адресом нашей виртуалки. Или A-запись проставляем тоько домену, а с поддомена ссылаемся на домен через CNAME-запись.

Ответить
Дмитрий
2020-02-25 17:05

ошибка в таске Add Cert Repository, что тут можно предпринять?

upd: увидел ответ выше

Ответить
Тимур
2020-02-29 01:35

Дмитрий, привет После выпуска сертификата apache не останавливается (Debian 10) - в связи не получается сделать deploy так как nginx не запускается Иногда при запуске playbook для выпуска сертификата certbot дает ошибку, и после пользователь deploy не создается (в связи с чем не authorize не docker-login не работают). Если create-user раньше вытащить, ничего страшного? И еще: как сделать интерпритатор питона по умолчанию на 3 версию - в логах ловлю сообщения на прекращение поддержки старых версий

Ответить
Deworker Pro
2020-03-01 13:08

После выпуска сертификата apache не останавливается

Это со свежим кодом из репозитория с конструкцией wait_for?

Если create-user раньше вытащить, ничего страшного?

Ничего страшного. Можно ставить в любой последовательности. Для игнорирования ошибок можно добавить ignore_errors: true к задаче получения сертификатов.

как сделать интерпритатор питона по умолчанию на 3 версию

Они постепенно переходят и описывают это так.

Ответить
Дмитрий
2020-02-29 14:17

Столкнулся с проблемой. Если создать пароль nginx.htpasswd с параметром -B то nginx возвращает ошибку 500. Если этот параметр не применять, то всё хорошо. Образ был просто nginx.

Ответить
Deworker Pro
2020-03-01 13:15

Да, Nginx не поддерживает этот алгоритм.

Ответить
Deworker Pro
2020-03-01 13:29

UPD: Улучшили фрагмент с 26-й минуты про запуск Apache-сервера на использование конструкции wait_for.

Ответить
Александр
2020-03-09 14:30

Ошибка в make docker-login на шаге [Log into private registry]

fatal: [server]: FAILED! => {"changed": true, "cmd": "docker login -u ** -p *** registry.tiru.ru", "delta": "0:00:00.306697", "end": "2020-03-09 14:13:12.031002", "msg": "non-zero return code", "rc": 1, "start": "2020-03-09 14:13:11.724305", "stderr": "WARNING! Using --password via the CLI is insecure. Use --password-stdin.\nError response from daemon: Get registry.tiru.ru/v2/: dial tcp: lookup registry.tiru.ru on 188.93.16.19:53: no such host", "stderr_lines": ["WARNING! Using --password via the CLI is insecure. Use --password-stdin.", "Error response from daemon: Get registry.tiru.ru/v2/: dial tcp: lookup registry.tiru.ru on 188.93.16.19:53: no such host"], "stdout": "", "stdout_lines": []}

Ответить
Deworker Pro
2020-03-10 09:27

Поддомен не находит. Настройте его DNS-записи на хостинге или в панели регистратора.

Ответить
Александр
2020-03-14 08:56

Добрый день, а что именно написать в DNS , какой именно айпишник? Чтото гдето не найду момент по видео, какие записи вставлять. Да и в личном кабинете докерхаб про это не сказано.

Ответить
Deworker Pro
2020-03-14 11:52

В панели хостинга в настройках доменов создать A-запись с названием поддомена и вписать туда IP-адрес вашей виртуальной машины.

Ответить
Александр
2020-03-09 14:33

что не хватает ему не пойму, может надо в своем докер репозитории какие нить теги создать ? А то он пустой.

Ответить
Юрий
2020-03-09 16:39

Добрый вечер!!! после Check if server is running все обрубается и вылетает ошибка

fatal: [server]: FAILED! => {"changed": true, "cmd": "docker run -d --name apache -v /var/www/html:/usr/local/apache2/htdocs/ -p 80:80 httpd:2.4", "delta": "0:00:00.128552", "end": "2020-03-09 19:28:01.553707", "msg": "non-zero return code", "rc": 125, "start": "2020-03-09 19:28:01.425155", "stderr": "docker: Error response from daemon: Conflict. The container name \"/apache\" is already in use by container \"4ac2b371a956a4025e9415757d3b1578b2906ae308a63a45b5fa6a014edd3b9e\". You have to remove (or rename) that container to be able to reuse that name.\nSee 'docker run --help'.", "stderr_lines": ["docker: Error response from daemon: Conflict. The container name \"/apache\" is already in use by container \"4ac2b371a956a4025e9415757d3b1578b2906ae308a63a45b5fa6a014edd3b9e\". You have to remove (or rename) that container to be able to reuse that name.", "See 'docker run --help'."], "stdout": "", "stdout_lines": []}
Ответить
Юрий
2020-03-09 17:35

После повторного выполнения make site task path: /home/pamparam/PhpstormProjects/auction/provisioning/roles/site/tasks/generate_certificates.yml:15 skipping: [server] => {"changed": false, "skip_reason": "Conditional result was False"}

и здоровенная портянка

task path: /home/pamparam/PhpstormProjects/auction/provisioning/roles/site/tasks/generate_certificates.yml:19
skipping: [server] => (item={'failed': False, u'stat': {u'charset': u'binary', u'uid': 0, u'exists': True, u'attr_flags': u'', u'lnk_target': u'../../archive/auction.pamdev.ru/cert1.pem', u'woth': True, u'device_type': 0, u'mtime': 1583773134.6051612, u'block_size': 4096, u'inode': 154082, u'isgid': False, u'size': 41, u'executable': False, u'roth': True, u'isuid': False, u'readable': True, u'isreg': False, u'version': None, u'pw_name': u'root', u'gid': 0, u'ischr': False, u'wusr': True, u'writeable': True, u'isdir': False, u'blocks': 0, u'xoth': True, u'rusr': True, u'nlink': 1, u'issock': False, u'rgrp': True, u'gr_name': u'root', u'path': u'/etc/letsencrypt/live/auction.pamdev.ru/cert.pem', u'xusr': True, u'atime': 1583773134.6211607, u'lnk_source': u'/etc/letsencrypt/archive/auction.pamdev.ru/cert1.pem', u'mimetype': u'inode/symlink', u'ctime': 1583773134.6051612, u'isblk': False, u'xgrp': True, u'dev': 65025, u'wgrp': True, u'isfifo': False, u'mode': u'0777', u'islnk': True, u'attributes': []}, 'ansible_loop_var': u'item', 'item': u'auction.pamdev.ru', u'invocation': {u'module_args': {u'follow': False, u'get_checksum': True, u'path': u'/etc/letsencrypt/live/auction.pamdev.ru/cert.pem', u'checksum_algorithm': u'sha1', u'get_md5': False, u'get_mime': True, u'get_attributes': True}}, u'changed': False})  => {"ansible_loop_var": "item", "changed": false, "item": {"ansible_loop_var": "item", "changed": false, "failed": false, "invocation": {"module_args": {"checksum_algorithm": "sha1", "follow": false, "get_attributes": true, "get_checksum": true, "get_md5": false, "get_mime": true, "path": "/etc/letsencrypt/live/auction.pamdev.ru/cert.pem"}}, "item": "auction.pamdev.ru", "stat": {"atime": 1583773134.6211607, "attr_flags": "", "attributes": [], "block_size": 4096, "blocks": 0, "charset": "binary", "ctime": 1583773134.6051612, "dev": 65025, "device_type": 0, "executable": false, "exists": true, "gid": 0, "gr_name": "root", "inode": 154082, "isblk": false, "ischr": false, "isdir": false, "isfifo": false, "isgid": false, "islnk": true, "isreg": false, "issock": false, "isuid": false, "lnk_source": "/etc/letsencrypt/archive/auction.pamdev.ru/cert1.pem", "lnk_target": "../../archive/auction.pamdev.ru/cert1.pem", "mimetype": "inode/symlink", "mode": "0777", "mtime": 1583773134.6051612, "nlink": 1, "path": "/etc/letsencrypt/live/auction.pamdev.ru/cert.pem", "pw_name": "root", "readable": true, "rgrp": true, "roth": true, "rusr": true, "siz .....

проверил по этим адресам есть /etc/letsencrypt/live/auction.pamdev.ru/cert.pem но к доменам и поддоменам они не привязаны и make push не проходит так как стучится по https

Ответить
Deworker Pro
2020-03-10 09:39

Так как файлы уже есть, то при последующих запусках всегда будет skipping

К доменам и поддоменам они теперь должны привязываться в Nginx.

Ответить
Юрий
2020-03-10 15:54

да но в директории /etc/nginx/snippets/ файлов ssl.conf certbot.conf нет и nginx дальше не дает выполнить команды

Ответить
Deworker Pro
2020-03-12 09:35

А почему их там нет?

Ответить
Юрий
2020-03-12 14:04

пока сам не понимаю.. выполняю команду make site

ожидаю что должны появится но их нет

Ответить
Юрий
2020-03-12 17:19

вообще нет nginx

Ответить
Deworker Pro
2020-03-13 11:06

Ansible толлько устанавливает Docker с Certbot и генерирует сертификаты.

А сам проект с Nginx и PHP деплоится через make deploy после make build и make push.

Ответить
Deworker Pro
2020-03-10 09:36

Если в первый раз вылетела ошибка, то добавьте к командам запуска и остановки apache значения ignore_errors: yes и перезапустите снова.

Ответить
Александр
2020-03-14 10:18

Вобщем запнулся на этом уроке. Вторые выходные сижу на нем. выше писал про Error response from daemon: Get registry.tiru.ru/v2/: dial tcp: lookup registry.tiru.ru on 188.93.16.19:53: no such host"]

Создал поддомен registry.tiru.ru какие NS записи создавать, надоли сервак под этот домен, и если надо как его настроить. Откуда на вашем регистре поддомене nginx. Ни какой инфы в видосах не нашел, как смотреть дальнейшие видео нипонятно, тк на практике не выходит ничего. Спулил с гита ветку последней версии и откатывал на версию этого урока. Менял домен deworker.pro автозаменой на свой , не выходит. Дмитрий объясните по подробнее про домен registry.tiru.ru , тк хочется проверить вашу теорию на практике , своими ручками. А не просто поверить этой "теории"

Ответить
Deworker Pro
2020-03-14 12:05

Сам поддомен нужно создать в панели управления вашего хостинга, где вы регистрировали домен.

Там должно быть примерно так, но с вашими адресами:

Хост              |   Тип   |  Значение
---------------------------------------------
tiru.ru           |   A     |  31.184.254.199
registry.tiru.ru  |   A     |  31.184.254.199

Так поддомены создаются и привязываются к виртуальным машинам по их IP-адресам. И только после этого начинают открываться в браузере.

Ответить
Александр
2020-03-14 12:28

так и есть у меня сейчас

только ошибка не с айпишником 188.93.16.19 как раньше, а с моим 31.184.254.199

.......", "msg": "non-zero return code", "rc": 1, "start": "2020-03-14 12:35:45.822078", "stderr": "WARNING! Using --password via the CLI is insecure. Use --password-stdin.\nError response from daemon: Get registry.tiru.ru/v2/: dial tcp 31.184.254.199:443: connect: connection refused", "stderr_lines": ["WARNING! Using --password via the CLI is insecure. Use --password-stdin.", "Error response from daemon: Get registry.tiru.ru/v2/: dial tcp 31.184.254.199:443: connect: connection refused"], "stdout": "", "stdout_lines": []}

сертификат тоже чтоли нужен на этот домен сделать, походу.

Ответить
Deworker Pro
2020-03-14 18:45

Да, сделать сертификат и для него.

Ответить
Александр
2020-03-16 18:16

сделал не помогло , ...login attempt to registry.tiru.ru/v2/ failed with status: 404 Not Found".... ни какой формы авторизации нету по этому адресу как у Вас. Чтото я вобще не догоняю.

registry.tiru.ru", "delta": "0:00:00.529081", "end": "2020-03-16 18:12:43.121638", "msg": "non-zero return code", "rc": 1, "start": "2020-03-16 18:12:42.592557", "stderr": "WARNING! Using --password via the CLI is insecure. Use --password-stdin.\nError response from daemon: login attempt to registry.tiru.ru/v2/ failed with status: 404 Not Found", "stderr_lines": ["WARNING! Using --password via the CLI is insecure. Use --password-stdin.", "Error response from daemon: login attempt to registry.tiru.ru/v2/ failed with status: 404 Not Found"], "stdout": "", "stdout_lines": []}

Ответить
Deworker Pro
2020-03-16 18:29

Виртуалку и поддомен для реестра вы сделали.

Теперь осталось установить туда сам реестр по примерам из комментариев выше.

Ответить
Arunas
2020-03-18 15:47

после make deploy demo-auction.arsku.com/работает, а api.demo-auction.arsku.com кидает ошибку: 502 Bad Gateway.

команда docker logs --since 30s -f auction_api_1 даёт ответ:

2020/03/18 15:17:46 [error] 6#6: *66 connect() failed (113: Host is unreachable) while connecting to upstream, client: 172.18.0.7, server: , request: "GET / HTTP/1.0", upstream: "fastcgi://172.18.0.3:9000", host: "api.demo-auction.arsku.com"

как решить эту проблему?
правда, после ansible make site остался контейнер httpd:2.4 apache, я его остановил...

вид http://www.arvidija.lt/turinys.php?autoidpsl=16&puslapio_PVD=programming

Ответить
Deworker Pro
2020-03-20 13:28

Не запустился api-php-fpm.

Ответить
Arunas
2020-03-21 09:37

Да, передеплоил с другого компьютера и всё ок.

Ответить
Зарегистрируйтесь или войдите чтобы оставить комментарий