Search
Write a publication
Pull to refresh
2
0
Send message

Благодарю за наводку! Теперь пользуюсь NixOS.

Изучив вопрос. А далее настроив некоторые для себя сценарии 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). Скрипт состоит из множества файлов так что я использую немного более продвинутый способ импорта:

SCRIPTPATH="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
. $SCRIPTPATH/lib/logs.sh --source-only
. $SCRIPTPATH/lib/sysinfo.sh --source-only

--source-only - нужен потому, что сами эти файлы можно запускать для отладки отдельно. В самих же файлах расположено нечто подобное:

main() {
    print_logo
    log_info     "info"
    log_success  "success"
    log_warning  "warning"
    log_debug    "debug"
    log_error    "error"
    log_critical "critical"
}
if [ "${1}" != "--source-only" ]; then
    main "${@}"
fi

П.с.

  • - такие скрипты сами по себе не будут автономны, требуется библиотека

Поэтому я и написал программу-builder для скриптов из нескольких файлов.

Хмм… Не знаю как у вас, но у меня Python 3 выдаёт исключительно True


Вы какой интерпретатор используете?

Information

Rating
Does not participate
Registered
Activity