Изучив вопрос. А далее настроив некоторые для себя сценарии Ansible. Я теперь только через Ansible и Terraform настраиваю удалённые машины. Но для desktop машины - это до сих пор достаточно кривой, как мне кажется вариант. Не сильно лучше и прозрачнее представленного мной решения. В комментариях дали наводку на NixOS. Перехожу на неё, через годик узнаем насколько она действительно хороша.
Ставим докер, потом отрубаем интернет. На докер приходят готовые образы из местного registry. Звучит криво,поэтому обычно в закрытых системах не используется Docker. Скрипт его установки я использую для себя.
Например, для меня было важно, чтобы можно было передать команду, что конфигурирует машину к которой никто не имеет или не будет иметь доступа, кроме физического (air-gapped environment).
Непонятно, зачем вы делаете server.sh и desktop.sh именно контатенацией других скриптов.
Целью было генерировать отдельный единый файл скрипта. И распространять его примерно так же как делает это https://www.anaconda.com в виде Аnaconda3.sh
Никаких SSH и оркестрации, только bash и хардкор.
Гораздо красивее было бы запаковать все ваши инсталл скрипты в поддиректорию, а в server.sh и desktop.sh просто прописать вызов внешних скриптов через source или обычные запуски внешних процессов файл server.sh
Во-первых, мы для красоты создаём поддиректорию scripts:
Создадим папку scripts и все скрипты будем хранить там
Если посмотреть мой итоговый проект, то там предусмотрена команда run для запуска скриптов или готовых сборок через source
Или даже создать из них список и обрабатывать в цикле, с проверкой статуса каждого и суммарным итогом.
Это мы тут и сделали:
# Цикл по всем скриптам в папке
for i in $SCRIPTS_DIRECTORY/*.sh; do
[ -e "$i" ] || continue
script_name=$(basename "$i")
_checklist+="$script_name $script_name off "
done
В самом же проекте добавлено легирование, проверка статуса выполнения скрипта, обработка ошибок и многое другое.
Поэтому я и не рассматривал ситуации с использованием SSH, так как эта ниша давно занята известными решениями.
Про air-gapped environment вы заметили верно. Иногда мне приходится работать с оборудованием, что после настройки не будет иметь доступа в интернет вообще и SSH на них если и настраивается, но работает только в локальной сети для экстренных случаев.
Ansible - хороший инструмент, который я уже начал изучать, и который собираюсь использовать в ближайшее время.
Но
в данной статье не преследуется цель создать аналог новый Fabric или Ansible, но на чистом Bash. Тут я делюсь, своими заметками о том, что Bash тоже интересный и вполне рабочий инструмент, на котором можно создавать проекты.
в данной статье не преследуется цель создать аналог новый Fabric или Ansible, но на чистом Bash. Тут я делюсь, своими заметками о том, что Bash тоже интересный и вполне рабочий инструмент, на котором можно создавать проекты.
Мне иногда приходится писать на bash, и для себя я написал библиотеку-скрипт (https://github.com/dodo325/ohmylinux). Скрипт состоит из множества файлов так что я использую немного более продвинутый способ импорта:
Благодарю за наводку! Теперь пользуюсь NixOS.
Изучив вопрос. А далее настроив некоторые для себя сценарии Ansible. Я теперь только через Ansible и Terraform настраиваю удалённые машины. Но для desktop машины - это до сих пор достаточно кривой, как мне кажется вариант. Не сильно лучше и прозрачнее представленного мной решения.
В комментариях дали наводку на NixOS. Перехожу на неё, через годик узнаем насколько она действительно хороша.
А где в статье Open source?
Рассказываю:
Ставим докер, потом отрубаем интернет. На докер приходят готовые образы из местного registry. Звучит криво,поэтому обычно в закрытых системах не используется Docker. Скрипт его установки я использую для себя.
Вопрос на который каждый находит ответ сам.
Например, для меня было важно, чтобы можно было передать команду, что конфигурирует машину к которой никто не имеет или не будет иметь доступа, кроме физического (air-gapped environment).
Целью было генерировать отдельный единый файл скрипта. И распространять его примерно так же как делает это https://www.anaconda.com в виде Аnaconda3.sh
Никаких SSH и оркестрации, только bash и хардкор.
Во-первых, мы для красоты создаём поддиректорию
scripts
:Если посмотреть мой итоговый проект, то там предусмотрена команда run для запуска скриптов или готовых сборок через source
Это мы тут и сделали:
В самом же проекте добавлено легирование, проверка статуса выполнения скрипта, обработка ошибок и многое другое.
Поэтому я и не рассматривал ситуации с использованием SSH, так как эта ниша давно занята известными решениями.
Про air-gapped environment вы заметили верно. Иногда мне приходится работать с оборудованием, что после настройки не будет иметь доступа в интернет вообще и SSH на них если и настраивается, но работает только в локальной сети для экстренных случаев.
Благодарю, за то что указали на это. Поправил статью.
Ansible - хороший инструмент, который я уже начал изучать, и который собираюсь использовать в ближайшее время.
Но
Мне иногда приходится писать на bash, и для себя я написал библиотеку-скрипт (https://github.com/dodo325/ohmylinux). Скрипт состоит из множества файлов так что я использую немного более продвинутый способ импорта:
--source-only
- нужен потому, что сами эти файлы можно запускать для отладки отдельно. В самих же файлах расположено нечто подобное:П.с.
- такие скрипты сами по себе не будут автономны, требуется библиотека
Поэтому я и написал программу-builder для скриптов из нескольких файлов.
Хмм… Не знаю как у вас, но у меня Python 3 выдаёт исключительно True
Вы какой интерпретатор используете?