FAQ/Bare Metal Deployment: Difference between revisions
imported>Grahamc Created page with "When it comes down to it, Nix is just a fairly basic build tool, and Nixpkgs brings some fancy build helpers. NixOS's [https://nixos.org/nixos/manual/index.html#sec-writing-m..." |
Phanirithvij (talk | contribs) m fix nix stable manual link |
||
| (3 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
NixOS's [https://nixos.org/nixos/manual/index.html#sec-writing-modules module system] | Non-Nix bare metal deployments are typically maintained with a "converging" configuration manager like Puppet or Chef. NixOS's [https://nixos.org/nixos/manual/index.html#sec-writing-modules module system] | ||
replaces these tools for per-host configuration mechanisms, | |||
like declaring various services, monitoring options, and configuration | like declaring various services, monitoring options, and configuration | ||
file contents. | file contents. This makes the installation and configuration of your deployment fully declarative. | ||
This module system can be used to easily create virtual machines | This module system can also be used to easily create virtual machines | ||
equivalent to the finally deployed image. This VM can then be used to | equivalent to the finally deployed image. This VM can then be used to | ||
run testing to ensure the service would behave as required. | run testing to ensure the service would behave as required. | ||
Hydra is the Nix ecosystem's build | Hydra is the Nix ecosystem's build server, which can provide a nice | ||
breakdown of dependencies and more naturally (when compared to Jenkins | breakdown of dependencies and more naturally (when compared to Jenkins | ||
etc.) understands the robust build dependency tree inherent to Nix's | etc.) understands the robust build dependency tree inherent to Nix's | ||
| Line 21: | Line 19: | ||
[https://hydra.nixos.org/job/nixos/trunk-combined/tested#tabs-constituents https://hydra.nixos.org/job/nixos/trunk-combined/tested#tabs-constituents]. | [https://hydra.nixos.org/job/nixos/trunk-combined/tested#tabs-constituents https://hydra.nixos.org/job/nixos/trunk-combined/tested#tabs-constituents]. | ||
The VMs that are | The VMs that are built from a machine's configuration can easily be | ||
integrated with [https://nixos.org/nixos/manual/index.html#sec-nixos-tests NixOS's test infrastructure] | integrated with [https://nixos.org/nixos/manual/index.html#sec-nixos-tests NixOS's test infrastructure] | ||
and Hydra to automatically verify package updates and system | and Hydra to automatically verify package updates and system | ||
| Line 27: | Line 25: | ||
These integration tests and builds can be robustly distributed across | These integration tests and builds can be robustly distributed across | ||
a build fleet using [https:// | a build fleet using [https://nix.dev/manual/nix/stable/advanced-topics/distributed-builds Nix's built in distributed build mechanism]. | ||
Unlike Jenkins and many other CI tools, the remote builders require no | Unlike Jenkins and many other CI tools, the remote builders require no | ||
additional setup or specific software installed, beyond the standard | additional setup or specific software installed, beyond the standard | ||
| Line 44: | Line 42: | ||
NixOS ecosystem, however can be accomplished using PXE-boot images and | NixOS ecosystem, however can be accomplished using PXE-boot images and | ||
auto-run boot up phases which run disk formatting steps. For some | auto-run boot up phases which run disk formatting steps. For some | ||
prior work, check out [ | prior work, check out [https://github.com/grahamc/packet-provision-nixos-ipxe/ https://github.com/grahamc/packet-provision-nixos-ipxe/]. | ||
The parts around system configuration and package installation is | The parts around system configuration and package installation is | ||
completely and thoroughly covered by the module system and system | completely and thoroughly covered by the module system and system | ||
configuration options that exist. | configuration options that exist. | ||