Kopioi Github identity tiedosto kohde koneelle:
scp ~/.ssh/github-id-rsa <kone>:
ssh <kone>
sudo su
mv github-id-rsa ~/.ssh/
chown root:root ~/.ssh/github-id-rsa
Lisää rootin ~/.ssh/config
tiedostoon:
Host github.com
User git
IdentityFile /root/.ssh/github-id-rsa
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
koti rakenna <kone>
Esim.
koti rakenna dellxps13
Debuggaus:
koti rakenna --debug <kone>
Flake lockin inputtien päivitys uusimpaan:
nix flake update
Kaikkien koneiden päivitys:
koti rakenna -t boot
Koneiden uudelleen käynnistys:
koti buuttaa
sudo reboot
Jos etäkone ei löydä pakettia cache.nixos.org:sta ja sen käännös epäonnistuu, paketin voi kokeilla asentaa läppärillä ja lähettää sen etäkoneelle ennen deployn uudelleenyritystä.
Esimerkkinä grafanan käännös feilaa kanto koneella:
nix shell --inputs-from . nixpkgs#grafana
which grafana
> /nix/store/bgxpkjnfx9dp3yyjvkcrmcpmga0qiy1w-grafana-10.2.6/bin/grafana
nix-copy-closure --to root@kanto /nix/store/bgxpkjnfx9dp3yyjvkcrmcpmga0qiy1w-grafana-10.2.6
Päivitä nix-kanava ja indeksi:
sudo nix-channel --add https://nixos.org/channels/nixos-24.05 nixos
sudo nix-channel --update
nix-index
Muokkaa flake.nix
tiedostossa inputs
osiossa vanhan version esim. 23.11
merkkijono arvoon 24.05
.
Päivitä lukkotiedosto:
nix flake update
Estä läppärin meneminen valmiustilaan jotta verkkoyhteys ei katkea kesken kaiken.
Testaa että päivitys onnistuu:
koti rakenna -t test <kone>
Lopuksi tee boot entry ja käynnistä kone uudelleen:
koti rakenna -t boot <kone>
koti buuttaa <kone>
Toista kullekkin koneelle.
nixos-rebuild list-generations
Poista vanhat sukupolvet profiilista (säästäen 20 viimeisintä):
sudo nix-env -p /nix/var/nix/profiles/system --delete-generations +20
Päivitä bootin lista sukupolvista:
sudo /run/current-system/bin/switch-to-configuration boot
sudo nix-collect-garbage --delete-older-than 30d
Huomaa, että kannattaa ensin poistaa vanhoja sukupolvia, jotta garbage collector pystyy poistaan myös niiden viittaamat tiedostot storesta.
Minulla on myös automaattinen puhdistus otettu käyttöön kaikilla NixOS koneilla joten tätä ei tarvitse välttämättä tehdä.
Salaisuudet on jaettu kahteen eri kansioon:
agenix
: Agenix työkalulla kryptatut salaisuudet, nämä ovat kryptattuna nix-storessa ja salaus puretaan vasta aktivointivaiheessa.encrypted
: Git-crypt työkalulla kryptatut salaisuudet, nämä on selkokielisenä nix-storessa. Salaus puretaan git pullin yhteydessä.
Tiedostot agenix
kansiossa joiden pääte on .age
ovat salattuja tiedostoja.
Uuden salatun tiedoston lisäys tapahtuu lisäämällä tiedostolle rivi agenix/secrets.nix
tiedostoon. Sen jälkeen luo tiedosto komennolla:
cd agenix
agenix -e <salaisuus>.age
Salatun tiedoston muokkaus tapahtuu samalla komennolla.
Salatun tiedoston poistaminen tapahtuu poistamalla sen .age
-tiedosto. Poista myös sen rivi agenix/secrets.nix
tiedostosta.
Jos muutat tiedostojen julkisia avaimia agenix/secrets.nix
tiedostossa, niin silloin tulee ajaa komento:
cd agenix
agenix --rekey
Kaikki tiedostot encrypted
kansiossa (ja alikansioissa) salataan ja puretaan automaattisesti git
komentojen yhteydessä.
Tiedostot voi halutessaan salata niin että tiedostot ovat salattuna levyllä käyttäen komentoa:
git crypt lock
Tiedostojen palautus kryptaamattomiksi tapahtuu komennolla:
git crypt unlock ./nixos-config.key
Avaintiedosto on salasanakannassa.
koti varmistukset listaa
koti varmistukset palauta <taltio> <kohde>
# Esimerkkiksi:
sudo koti varmistukset palauta taltio:kanto/grafana /var/lib/grafana
Yksittäinen palvelu:
sudo rsync-backup-<palvelu>.sh
# Esimerkkiksi:
sudo rsync-backup-grafana.sh
Kaikki palvelut:
sudo rsync-backup-all.sh