4 ms·
People mentioned NixOps (I personally think it is weaker part of Nix, but it is still good for specific use cases) There's also another option, nixpkgs actuall
by takeda 6y ago
People mentioned NixOps (I personally think it is weaker part of Nix, but it is still good for specific use cases)
There's also another option, nixpkgs actually has a functionality to generate ec2 image, basd on your configuration.nix[1]
You can also generate other images[2]
[1] https://github.com/NixOS/nixpkgs/blob/master/nixos/maintainers/scripts/ec2/amazon-image.nix https://github.com/NixOS/nixpkgs/blob/master/nixos/maintaine...
[2] https://github.com/nix-community/nixos-generators https://github.com/nix-community/nixos-generators
edit: I believe you can use [2] even for AWS images, the raw and qcow2 should work on EC2 as well, the [1] is including some additional settings that make NixOS work better there, although there's nothing stopping you from adding these to your own configuration.nix
Also, this is not really a fault of Nix, but in EC2 if you import image it has to go through their conversion mechansim, which takes about 10 minutes :( A kind of workaround around it is to have another instance with attached extra EBS drive, use dd to write raw image on that disk. Then disconnect the EBS, create a snapshot of it and convert the snapshot to an AMI.
- elbear 6y agoI tried to use nixos-generators recently and the experience wa frustrating. For example, I tried to generate an image in the `do` format (DigitalOcean) and a few other formats. Every time, the script (`nixos-generate`) finished running and didn't produce any output.
- 1000101 6y agoHave you tried https://github.com/elitak/nixos-infect https://github.com/elitak/nixos-infect ? Works like a charm (with DO). It's a oneliner, you don't need to fiddle with anything. If it won't work from the user config option, just paste it in the live VPS and it will rebuild itself.
- elbear 6y agoI haven't. I was trying to use nixos-generators, because at some point I want to generate a custom, stripped down image of NixOS. But until then, I might use nixos-infect, if it gets me a running instance of DO quicker.
- 1000101 6y agoIt's super easy and works every time. You might want to change NIX_CHANNEL=nixos-19.09 to NIX_CHANNEL=nixos-20.03 since 19.09 is the previous stable version. I use nixos-infect along with Morph so I don't care about the custom images that much - a fresh/bare NixOS is all I need to build, push and deploy the actual configuration through Morph.
- elbear 6y agoDidn't know about Morph. Thanks!
- takeda 6y agoHmm frankly I did not use nixos-generator before writing this post, and only generated EC2 images. But I just tried, and it did work for me. The generated image was provided as the last line of the output. It looked like this: Making image hybrid... /nix/store/ra02s6nmhfklmsrmhkd960xdqpwghgak-nixos.iso/iso/nixos.iso What OS you run it on? I run this on NixOS 20.03 on VirtualBox, I needed to have "Enable Nested VT-x/AMD-V" since the process spins a qemu to finalize the image.
- elbear 6y agoWhen I didn't get any output, I ran it in Ubuntu 18 on a Linode VPS. But I tried to generate different formats: do, qcow, vmware.
- takeda 6y agoStrange that there was no output or even errors. BTW: I believe NixOS image generation can be run only on NixOS machine, because it needs to run a VM and that requires some kernel modules to be loaded. At least I never was able to made it work on OS X. The nixos-infect code though will turn your Ubuntu installation into NixOS, so you might try to boot to your Ubuntu machine, convert it to NixOS and I'm hoping then nixos-generate might start working. Note though that "do" didn't work either for me, and I didn't look to investigate why, I figured out that maybe it was because I was running it on machine on VirtualBox and not DO.
- 1000101 6y agoMorph is another great alternative to NixOps (well, it's not a replacement per se, but it's easier to use and lightweight in comparison to NixOps). It's basically just a really nice wrapper that allows you to easily deploy smaller herds of servers (~100 and less). I wholeheartedly recommend trying it out https://github.com/DBCDK/morph https://github.com/DBCDK/morph