/dev/notes/pechorin.andrey
20 subscribers
40 photos
1 video
34 links
Download Telegram
#dev #bash #сомнения

Столько философских дум у меня вообще ничего не вызывало. Сидишь пишешь эти портянки на баше, и думаешь - а может нахер его, взять ruby или go и пусть себе дергают system вызовы? Потом думаешь - нет уж, допишу на баше, и абстрагирую. Упарываешься в абстрагирование на баше и понимаешь, что проще написать as is и забить, уж больно не уклюжэ все эти высоко-уровневые абстракции выражаются на баше. Да даже простые абстракции не очень удобно выражать. В общем, хрен знает.

Дописываю уже какую версию своего provise/backup/restore - скрипта для своих маленьких серваков с докером. И все это порой так неуклюже, если честно. Зато работает для меня и моих серваков.

Успокаиваю себе так - это hand crafted development, тут от души и уникально.

Программисты должны хотеть унифицировать, это как бы естественное желание — но баш, блин, это прям испытание воли для унификатора.

Наверное его нужно принять и очень сильно полюбить. После осознания команды test и отказа от if у меня как-то получше пошло.

P.S. - средства провизионинга ака ansible не предлагать, знаю, цель не развернуть, а в чем-то другом ... пока не понял в чем.
#dev #ansible #bash #гештальт_закрыт

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

Но поддерживать все эти вещи ... короче, я попробовал перевести пару своих хостов, их развертывание, бекапы и восстановление теперь уже на такую связки (уйдя от plain bash + restic): ansible -> bash + jinja2 templates

И о боги, как же проще теперь программировать bash логику с jinja, спасибо ansible.

При этом на хост:
- ansbile генерирует и заливает два скрипта: backup.sh и restore.sh, которые можно просто запустить (там уже все настроено)
- скрипт на бекап добавляется в крон
- после успешного или не успешного бекапа мне приходит уведомление в телегу :)

Так же смог зафигачить playbook с local action'ом: локальная тачка теперь бекапится каждую ночь (если ноутбук работает) с самыми hot данными, и раз в неделю делается archive бекап с всякими фотками/книгами и прочими cold данными.

Итого имеем (на мой вкус):
- закрытый гештальт на тему бекапов, как локальных так и хостовых.
- ansible это круто, и это мега правильно, потому что написов несколько тысяч строк кода на баше (и переписав несколько раз программу) ты приходишь для себя к некому майндсэту готовых паттернов (а баш дает большое разнообразие в выборе этих паттернов, поэтому выносит мозг) и по сути ansible все это заменяет давая тебе нужные reusable блоки.

Немного на тему безопасности:
- Немного подзабил и засвечиваю credentials данные в env переменных в скриптах, так делают все, но это очень плохо. В следующей итерации перепишу на такой способ доступный только в bash:

restic --password-file=<(echo $backup_storage_password)

- файл roles_webserver_tasks_main.yml не только настраивает сервер, но и делает namespace remapping, чтобы ваши контейнеры не имели доступа к руту хоста.

https://gist.github.com/pechorin/ebb3991a118d804b5a7bee20a47e599c
👍2
#dev #search

Перевод тут моментами не очень хорош, в плане смысловой передачи и описания последовательности процесса поиска, но важно не это.

Вроде ничего так, что github так подробно делится такими важными внутренними архитектурами и решениями — не каждый корпорат будет таким заниматься 🙂

https://habr.com/ru/company/skillfactory/blog/718350/