Рабочий процесс для управления bash rc's в облачных средах

Раньше я не редактировал bashrc на своих облачных серверах. Серверы меняются слишком часто, и усилия кажутся нецелесообразными. Я также не хочу загружать свой локальный bashrc на каждый облачный сервер, потому что в моем локальном bashrc есть много вещей, которые имеют смысл только для моей локальной машины. Но у меня есть определенные псевдонимы и т.д., которые я хотел бы иметь на всех моих облачных серверах. Есть несколько способов справиться с этим:

  1. Написать один bashrc для облачных серверов, а затем всегда заменять им bashrc по умолчанию. Недостатки: если я запущу сервер с другой операционной системой, на которой установлен другой bashrc, я переопределю его содержимое при загрузке?
  2. Я создаю отдельный файл с моими псевдонимами и т.д. и загружаю его на свои серверы, а затем добавляю строку в конец существующего bashrc, которая является источником этого дополнительного файла. Минусы: немного больше усилий.
  3. Просто копировать-вставлять каждый раз, когда я запускаю новый сервер. Минусы: много усилий.

У кого-нибудь есть хорошее решение или рекомендация? Спасибо.

0
задан 4 July 2021 в 17:00

1 ответ

Это моя установка (высокие начальные накладные расходы, низкие текущие усилия)

  1. Создайте репозиторий git для хранения файлов конфигурации и напишите небольшой сценарий установки для их установки.

    Например Вы можете клонировать свой репозиторий в ~/src/my_config, и сценарий установки перезапишет (или символику) ~/.bashrc на ~/src/my_config/.bashrc

    Это делает работу в новых средах довольно простой: вам просто нужно

    git клонировать $repo_url
    ./my_config/установить.sh
    

    Это не совсем так: на удаленной машине вам также нужно будет ssh-keygen и добавить новый открытый ключ в свою учетную запись на хосте git.

  2. создайте каталог ~/.bash.d. Добавьте это в файл .bashrc

     для файла в ~/.bash.d/*.bash; делать
     если [[ -r "$file" ]]; тогда
     . "$file"
     fi
    Договорились
    

    Это позволяет поместить такие вещи, как определение приглашения, в отдельный файл: ~/.bash.d/prompt.bash. Мне нравится это, чтобы мой .bashrc был маленьким, так как я использую тонны функций в своей интерактивной оболочке.

  3. Для каждой среды создайте каталог ~/.bash.d/$(имя_узла). Добавьте это в файл .bashrc

     в ~/.bash.d/$(имя хоста)/*.bash; делать
     если [[ -r "$file" ]]; тогда
     . "$file"
     fi
    Договорились
    

    Все вещи, которые строго локальны для конкретной машины, могут быть разделены.

    Здесь отлично работают символические ссылки: если все серверы AWS используют одну и ту же настройку, вы можете создать ~/.bash.d/AWS и связать с ним все конкретные имена хостов.

Эта система очень хорошо сработала для меня. Я добавляю что-то новое, отодвигаю изменения в git, а на удаленных системах в git pull, чтобы подобрать новый код.


1
ответ дан 28 July 2021 в 11:22

Другие вопросы по тегам:

Похожие вопросы: