We’re sorry, but because of the conflict underway in Ukraine, HashiCorp is prohibiting availability of our products and services in Russia and Belarus.
UPD: ну, а вообще, если загружаемый файл изменяется после загрузки, т.е есть `rpmsign` перед `createrepo`, то правильнее загружать файл в отдельную папку… и после подписи складывать в нужное место.
ваш github.com/slytomcat/URLshortener/blob/dev/docker-compose.yml завелся без особых проблем. Ищите проблему у себя в хосте, или компоуз файле. Может быть на хоcте что-то уже висит на 8080, или не хватает `ports: — 8080:8080`. или в ./cnfr.json не 8080 порт))))
У меня мнение совсем не скромное. Мы должны, обязаны, понимать как работают инструменты, которыми пользуемся.
Что такое в пакер билдере amazon-ebssurrogate я знаю.
Понятно, что всякие условия гонки могут возникать… и лучше всего триггер вешать на один файл.
Но это уже можно дать на откуп автоматизации. Если что-то билдит и заливает десятки файлов, то ничего не стоит сделать одно касание файлу-маркеру.
Быстрейшим способом очистить такую директорию является rsync с пустой директорией.
А rm * подвесит вам шелл. Если рсинка под рукой нет я бы попробовал find -delete или даже "rm -r .".
Нет, rsync не является быстрейшим.
unlink perl-a быстре, на выбор:
"проблема" в том, что это хабр, или мне бы хотелось, что бы это оставалось Хабром… хотелось бы верить, что аудитория сама может открыть гитхаб и прочитать configure && make && make install, а в статьях будет что-то новое.
В любом случае, make install — единственный минус.
Спасибо, я обязательно попробую modsecurity )
шел 2019 год… yum install gcc gcc-c++ && make install) сборочный мусор на рабочих серверах)))
почему нельзя просто написать nginx-modsecurity.spec,
отправить его в https://copr.fedorainfracloud.org/,
и через 10 имнут получить свой репозиторий со своим динамическим модулем modsecurity?
Статья короткая получится, точно!!
По теме минимизации размеров, забыли самое главное. Это scratch образы.
И в этом деле лучше всего проявляются особеннности Golang, где размер образа равен размеру бинарника.
FROM golang:alpine as go_builder
COPY app /app
WORKDIR /app
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
FROM scratch
COPY --from=go_builder /app .
ENTRYPOINT ["/app"]
Итак, что бы проксировать http(s) в localhost:8080 вы выбрали такой путь:
Nginx, возможно даже из сторонних репозиториев, конфиги, установка sertbot и какие-то там подтверждения соглашений, ручные правки, кроны…
Предлагаю заменить этот паровоз на два элемента systemd+traefik. Без каких-либо ручных правок файлов.
Алгоритм автоматизации:
скопировать юнит-файл
скопировать бинарник traefik
cкопировать конфиг traefik
установка вашего или любого другого сервиса на local host:8080 ( кстати, а почему не на сокете?)
Красиво, понятно? А у вас так же, как в источнике.
Серьезно, дали бы какому-то стажеру запустить ваш неработающий плейбук (роль).
Вместо MD5STAT.exists надо MD5STAT.stat.exists.
Халтура, одним словом.
Какой смысл переходить на декларативный язык описания, и при этом продолжать тянуть за собой вот такие паровозы?
Как такое поддерживать? Вспоминаются однострочники на перле.
И мы идем дальше.
Заметьте, там нет " when: sudochg.changed or MD5STAT.stat.exists == false". Не нужно больше.
Целых два блока, нужены лишь для одного, не допустить ошибку типа grep:: No such file or directory
И они нам теперь тоже не нужны:
Далее, поговорим про MD5, и зачем его пишут файл.
Это делают для простоты проверки контрольных сумм. Скорее всего "некий процесс, который запускается раз в неделю и проверяет контрольную сумму файла " выглядит так:
Очень толсто!
Указанные вами специалисты рекомендуют SELinux в enforced режиме, и это во многом решает подобные проблемы.
[root@test ~]# useradd -u 2147483649 testuser
(Tue Dec 11 15:32:29:453761 2018) [sss_cache] [confdb_get_domains] (0x0010): No domains configured, fatal error!
Could not open available domains
useradd: sss_cache exited with status 2
useradd: Failed to flush the sssd cache.
(Tue Dec 11 15:32:29:468971 2018) [sss_cache] [confdb_get_domains] (0x0010): No domains configured, fatal error!
Could not open available domains
useradd: sss_cache exited with status 2
useradd: Failed to flush the sssd cache.
[root@test ~]# grep testuser /etc/passwd
testuser:x:2147483649:1003::/home/testuser:/bin/bash
[root@test ~]# su - testuser
[testuser@test ~]$ pwd
/home/testuser
[testuser@test ~]$ systemd-run -t /bin/bash
(pkttyagent:9334): GLib-GObject-WARNING **: 15:33:21.538: value "-2147483647" of type 'gint' is invalid or out of range for property 'uid' of type 'gint'
**
ERROR:pkttyagent.c:156:main: assertion failed: (polkit_unix_process_get_uid (POLKIT_UNIX_PROCESS (subject)) >= 0)
Running as unit: run-u23561.service
Press ^] three times within 1s to disconnect TTY.
[testuser@test ~]$ id
uid=2147483649(testuser) gid=1003(testuser) groups=1003(testuser) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[testuser@test ~]$ echo hello > /test.txt
-bash: /test.txt: Permission denied
[testuser@test ~]$ rpm -q polkit
polkit-0.115-2.fc29.x86_64
[testuser@test ~]$ logout
[root@test ~]# ausearch -c '(bash)' --raw
type=AVC msg=audit(1544538801.747:9383): avc: denied { open } for pid=9337 comm="(bash)" path="/dev/pts/11" dev="devpts" ino=14 scontext=system_u:system_r:init_t:s0 tcontext=unconfined_u:object_r:user_devpts_t:s0 tclass=chr_file permissive=0
https://discuss.hashicorp.com/t/access-to-releases-hashicorp-com-is-denied/36348
https://team.vk.company/vacancy/21231/
Возникала ли необходимость инвалидации кеша, отдельных файлов?
я про это и говорил
> и лучше всего триггер вешать на один файл.
>… касание файлу-маркеру.
если развернуть эту мысль (псевдокод, возможны ошибки):
как-то так
UPD: ну, а вообще, если загружаемый файл изменяется после загрузки, т.е есть `rpmsign` перед `createrepo`, то правильнее загружать файл в отдельную папку… и после подписи складывать в нужное место.
Думаете json темплейт для пакера будет короче? Вангую, что будет минимум в 3 раза больше по количеству строк
У меня мнение совсем не скромное. Мы должны, обязаны, понимать как работают инструменты, которыми пользуемся.
Что такое в пакер билдере amazon-ebssurrogate я знаю.
Имхо, как-то все переусложнено у вас, скриптами, бесконечными циклами… пакетами в репозитории.
profit?
Понятно, что всякие условия гонки могут возникать… и лучше всего триггер вешать на один файл.
Но это уже можно дать на откуп автоматизации. Если что-то билдит и заливает десятки файлов, то ничего не стоит сделать одно касание файлу-маркеру.
Нет, rsync не является быстрейшим.
unlink perl-a быстре, на выбор:
истоки
4.х не знаю, а 5.2.17 есть ((((
а еще, можно писать кастомные фильтры, под каждый чих)
Посмотрел, да. Не убедительно.
в EPEL есть libmodsecurity-devel-3.0.2, это ваш раздел номер 3, ничего собирать не надо.
вот официальная вика https://github.com/SpiderLabs/ModSecurity/wiki
в том числе
"Nginx Connector" тоже имеет вику, которая приводит нас сюда https://www.getpagespeed.com/server-setup/nginx/install-modsecurity-nginx-module-on-centos-7 откуда легко получить и spec для сборки своего, или готовые пакеты, двухмесячной давности:
п.с. c openssl-1.1.1 у меня не собралось, придется багрепортить.
"проблема" в том, что это хабр, или мне бы хотелось, что бы это оставалось Хабром… хотелось бы верить, что аудитория сама может открыть гитхаб и прочитать
configure && make && make install
, а в статьях будет что-то новое.В любом случае,
make install
— единственный минус.Спасибо, я обязательно попробую modsecurity )
шел 2019 год… yum install gcc gcc-c++ && make install) сборочный мусор на рабочих серверах)))
почему нельзя просто написать nginx-modsecurity.spec,
отправить его в https://copr.fedorainfracloud.org/,
и через 10 имнут получить свой репозиторий со своим динамическим модулем modsecurity?
Статья короткая получится, точно!!
По теме минимизации размеров, забыли самое главное. Это
scratch
образы.И в этом деле лучше всего проявляются особеннности Golang, где размер образа равен размеру бинарника.
Итак, что бы проксировать http(s) в localhost:8080 вы выбрали такой путь:
Nginx, возможно даже из сторонних репозиториев, конфиги, установка sertbot и какие-то там подтверждения соглашений, ручные правки, кроны…
Предлагаю заменить этот паровоз на два элемента systemd+traefik. Без каких-либо ручных правок файлов.
Алгоритм автоматизации:
Да, этот кусок, тоже, пример плохого тона, и вспоминается вот этот заголовок:
Но, и это можно красиво переписать ансиблом:
Как видите, все читается, и нет ничего сложного.
Если что-то "сложное", то берем в руки питона и делаем filter_plugins.
Ребята, Вам не стыдно такое переводить?)
Структура папок:
Красиво, понятно? А у вас так же, как в источнике.
Серьезно, дали бы какому-то стажеру запустить ваш неработающий плейбук (роль).
Вместо MD5STAT.exists надо MD5STAT.stat.exists.
Халтура, одним словом.
А теперь про культуру.
Какой смысл переходить на декларативный язык описания, и при этом продолжать тянуть за собой вот такие паровозы?
Как такое поддерживать? Вспоминаются однострочники на перле.
Сравните:
и мой вариант:
И мы идем дальше.
Заметьте, там нет " when: sudochg.changed or MD5STAT.stat.exists == false". Не нужно больше.
Целых два блока, нужены лишь для одного, не допустить ошибку типа grep:: No such file or directory
И они нам теперь тоже не нужны:
Далее, поговорим про MD5, и зачем его пишут файл.
Это делают для простоты проверки контрольных сумм. Скорее всего "некий процесс, который запускается раз в неделю и проверяет контрольную сумму файла " выглядит так:
Тогда файл надо генерировать так:
А в плейбуке будет так:
И два блока set_fact: теперь тоже можно удалить.
Очень толсто!
Указанные вами специалисты рекомендуют SELinux в enforced режиме, и это во многом решает подобные проблемы.