NixOS в рамках NixOS? - PullRequest
       16

NixOS в рамках NixOS?

0 голосов
/ 03 декабря 2018

Я начинаю играть с развертываниями NixOS.Для этого у меня есть репозиторий с некоторыми определенными пакетами и configuration.nix для сервера.

Кажется, что тогда я смогу проверить эту конфигурацию локально (я также использую NixOS).Я полагаю, что это плохая идея изменить мой global configuration.nix, чтобы он указывал на сервер развертывания configuration.nix (кто знает, что это сломает);но есть ли безопасный и удобный способ «опробовать» сервер локально - то есть собрать его и либо загрузить на него, либо, лучше, запустить его как отдельный процесс?

Конечно, я вижу докер;может быть, нет ничего другого.Но у меня есть смутное ощущение, что Никс мог бы сделать это один.

Ответы [ 3 ]

0 голосов
/ 04 декабря 2018

Существует довольно стандартный способ сделать это, встроенный в систему по умолчанию.

А именно nixos-rebuild build-vm.Это займет ваш текущий файл конфигурации (по умолчанию / etc / nixos / configuration.nix , соберите его и создайте сценарий, позволяющий загружать конфигурацию в виртуальную машину.

после выполнения сценарияПосле завершения она оставит символическую ссылку в текущем каталоге. После этого вы можете выполнить загрузку, запустив ./result/bin/run-$HOSTNAME-vm, которая запустит загрузку вашей виртуальной машины, чтобы вы могли поиграться с ней.

TLDR;

  1. nixos-rebuild build-vm
  2. ./result/bin/run-$HOSTNAME-vm
0 голосов
/ 25 февраля 2019

nixos-rebuild build-vm - самый простой способ сделать это;Вы также можете импортировать конфигурацию в nixos-контейнер.

Это можно сделать с помощью чего-то вроде:

containers.mydeploy = {
  privateNetwork = true;
  config = import ../mydeploy-configuration.nix;
};

Обратите внимание, что вы не хотите указывать конфигурацию сети в mydeploy-configuration.nix, если он статический, так как это может вызвать конфликты с сетевой подсетью, созданной для контейнера.

0 голосов
/ 04 декабря 2018

Как вы, возможно, уже знаете, конфигурации системы могут без проблем сосуществовать в хранилище Nix.Проблема в том, что запускает более одной системы одновременно.Для этого вам потребуются инструменты изоляции или виртуализации, такие как Docker, VirtualBox и т. Д.

Docker

Docker не был разработан для запуска всей операционной системы внутри контейнера, поэтому он может нелучше всего подходит для тестирования развертываний на основе Nix OS , которые ожидают и предоставляют systemd и некоторые службы внутри своих подразделений развертывания. Несмотря на то, что вы не получите хорошего опыта Nix OS с Docker, Nix и Docker подходят друг другу.ОБНОВЛЕНИЕ: и «сырые» пакеты Nix, и NixOS работают в Docker.Например, Arion поддерживает образы из простых Nix, модулей NixOS и «обычных» образов Docker.

NixOps

Для развертывания Nix OS внутри NixOSЛучше всего использовать технологию, которая предназначена для запуска полной системы Linux внутри.

Это помогает иметь программу, которая управляет интеграцией для вас.В экосистеме Nix NixOps является первым кандидатом на это.Вы можете использовать NixOps с его бэкэндом VirtualBox или (в настоящее время экспериментальным) бэкэндом контейнера NixOS, или вы можете использовать none бэкэнд для развертывания на компьютерах, которые вы создали с помощью другого инструмента.

Тесты

Если ваша цель - запустить автоматизированные интеграционные тесты, вы можете использовать среду тестирования виртуальных машин NixOS.При этом используется виртуализация Linux KVM (expose / dev / kvm в песочнице) для запуска теста интеграции в сетях виртуальных машин, и он запускает их в качестве деривации.Он довольно эффективен, потому что не должен создавать образы виртуальных машин, поскольку он монтирует хранилище Nix в ВМ.Тесты, являющиеся деривациями, обеспечивают хороший рабочий процесс разработки.

Оптимизация хранилища Nix

Уникальная особенность Nix заключается в том, что вы часто можете повторно использовать хранилище Nix хоста, что позволяет монтировать файловую систему хоста вКонтейнер / VM - это хорошая возможность в вашем решении.Если вы создаете свои собственные решения, в зависимости от ваших потребностей, вы можете отложить эту оптимизацию, потому что она становится немного более сложной, если вы хотите, чтобы контейнер / vm мог изменять хранилище.Тесты NixOS решают эту проблему с помощью наложенной файловой системы в виртуальной машине.Другой подход может заключаться в пересылке сокета демона Nix.

...