forked from Mirrors/nixos-infect
Add support for AWS Lightsail (#125)
Co-authored-by: Eric Litak <elitak@gmail.com>
This commit is contained in:
parent
263470891c
commit
e72cd89d99
2 changed files with 34 additions and 0 deletions
|
@ -19,6 +19,7 @@ This script has successfully been tested on at least the follow hosting provider
|
||||||
* [Cockbox](https://cockbox.org)
|
* [Cockbox](https://cockbox.org)
|
||||||
* [Google Cloud Platform](https://cloud.google.com/)
|
* [Google Cloud Platform](https://cloud.google.com/)
|
||||||
* [Contabo](https://contabo.com)
|
* [Contabo](https://contabo.com)
|
||||||
|
* [AWS Lightsail](https://aws.amazon.com/lightsail/)
|
||||||
* [Windcloud](https://windcloud.de/)
|
* [Windcloud](https://windcloud.de/)
|
||||||
* [Clouding.io](https://clouding.io)
|
* [Clouding.io](https://clouding.io)
|
||||||
|
|
||||||
|
@ -244,6 +245,13 @@ Tested on Cloud VPS. Contabo sets the hostname to something like `vmi######.cont
|
||||||
|------------|-----------------|-----------|----------|
|
|------------|-----------------|-----------|----------|
|
||||||
|Ubuntu | 22.04 |**success**|2022-09-26|
|
|Ubuntu | 22.04 |**success**|2022-09-26|
|
||||||
|
|
||||||
|
### AWS Lightsail
|
||||||
|
Make sure to set `PROVIDER="lightsail"`.
|
||||||
|
|
||||||
|
Setting a root ssh key manually is not necessary, the key provided as part of the instance launch process will be used.
|
||||||
|
|
||||||
|
If you run into issues, debug using the most similar ec2 instance that is on the Nitro platform. Nitro platform instances have a serial console that allow you to troubleshoot boot issues, and Lightsail instances are just EC2 with a different pricing model and UI.
|
||||||
|
|
||||||
### Windcloud
|
### Windcloud
|
||||||
Tested on vServer. The network configuration seems to be important so the same tweaks as for DigitalOcean are necessary (see above).
|
Tested on vServer. The network configuration seems to be important so the same tweaks as for DigitalOcean are necessary (see above).
|
||||||
#### Tested on
|
#### Tested on
|
||||||
|
@ -259,6 +267,7 @@ Requires the same static network settings that Digital Ocean does.
|
||||||
#### Tested on
|
#### Tested on
|
||||||
|Distribution| Name | Status | test date|
|
|Distribution| Name | Status | test date|
|
||||||
|------------|-----------------|-----------|----------|
|
|------------|-----------------|-----------|----------|
|
||||||
|
|Debian | 11.4 |**success**|2022-12-12|
|
||||||
|Ubuntu | 20.04 | success |2022-11-26|
|
|Ubuntu | 20.04 | success |2022-11-26|
|
||||||
|
|
||||||
### Clouding.io
|
### Clouding.io
|
||||||
|
|
25
nixos-infect
Executable file → Normal file
25
nixos-infect
Executable file → Normal file
|
@ -7,6 +7,13 @@ set -e -o pipefail
|
||||||
makeConf() {
|
makeConf() {
|
||||||
# Skip everything if main config already present
|
# Skip everything if main config already present
|
||||||
[[ -e /etc/nixos/configuration.nix ]] && return 0
|
[[ -e /etc/nixos/configuration.nix ]] && return 0
|
||||||
|
|
||||||
|
# Lightsail config is not like the others
|
||||||
|
if [ "$PROVIDER" = "lightsail" ]; then
|
||||||
|
makeLightsailConf
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
# NB <<"EOF" quotes / $ ` in heredocs, <<EOF does not
|
# NB <<"EOF" quotes / $ ` in heredocs, <<EOF does not
|
||||||
mkdir -p /etc/nixos
|
mkdir -p /etc/nixos
|
||||||
# Prevent grep for sending error code 1 (and halting execution) when no lines are selected : https://www.unix.com/man-page/posix/1P/grep
|
# Prevent grep for sending error code 1 (and halting execution) when no lines are selected : https://www.unix.com/man-page/posix/1P/grep
|
||||||
|
@ -76,6 +83,16 @@ EOF
|
||||||
[[ -n "$doNetConf" ]] && makeNetworkingConf || true
|
[[ -n "$doNetConf" ]] && makeNetworkingConf || true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
makeLightsailConf() {
|
||||||
|
mkdir -p /etc/nixos
|
||||||
|
cat > /etc/nixos/configuration.nix << EOF
|
||||||
|
{ config, pkgs, modulesPath, ... }:
|
||||||
|
{
|
||||||
|
imports = [ "\${modulesPath}/virtualisation/amazon-image.nix" ];
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
makeNetworkingConf() {
|
makeNetworkingConf() {
|
||||||
# XXX It'd be better if we used procfs for all this...
|
# XXX It'd be better if we used procfs for all this...
|
||||||
local IFS=$'\n'
|
local IFS=$'\n'
|
||||||
|
@ -318,6 +335,12 @@ infect() {
|
||||||
# Reify resolv.conf
|
# Reify resolv.conf
|
||||||
[[ -L /etc/resolv.conf ]] && mv -v /etc/resolv.conf /etc/resolv.conf.lnk && cat /etc/resolv.conf.lnk > /etc/resolv.conf
|
[[ -L /etc/resolv.conf ]] && mv -v /etc/resolv.conf /etc/resolv.conf.lnk && cat /etc/resolv.conf.lnk > /etc/resolv.conf
|
||||||
|
|
||||||
|
# Set label of root partition
|
||||||
|
if [ -n "$newrootfslabel" ]; then
|
||||||
|
echo "Setting label of $rootfsdev to $newrootfslabel"
|
||||||
|
e2label "$rootfsdev" "$newrootfslabel"
|
||||||
|
fi
|
||||||
|
|
||||||
# Stage the Nix coup d'état
|
# Stage the Nix coup d'état
|
||||||
touch /etc/NIXOS
|
touch /etc/NIXOS
|
||||||
echo etc/nixos >> /etc/NIXOS_LUSTRATE
|
echo etc/nixos >> /etc/NIXOS_LUSTRATE
|
||||||
|
@ -337,6 +360,8 @@ infect() {
|
||||||
/nix/var/nix/profiles/system/bin/switch-to-configuration boot
|
/nix/var/nix/profiles/system/bin/switch-to-configuration boot
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[ "$PROVIDER" = "digitalocean" ] && doNetConf=y # digitalocean requires detailed network config to be generated
|
||||||
|
[ "$PROVIDER" = "lightsail" ] && newrootfslabel="nixos"
|
||||||
if [[ "$PROVIDER" = "digitalocean" ]] || [[ "$PROVIDER" = "servarica" ]]; then
|
if [[ "$PROVIDER" = "digitalocean" ]] || [[ "$PROVIDER" = "servarica" ]]; then
|
||||||
doNetConf=y # some providers require detailed network config to be generated
|
doNetConf=y # some providers require detailed network config to be generated
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in a new issue