From 5dadea310cc0522c2bf6a6a7771c6889f0ad39e0 Mon Sep 17 00:00:00 2001 From: Erik Arvstedt Date: Wed, 26 Feb 2020 17:11:22 +0100 Subject: [PATCH] add deploy-nixops.sh --- examples/deploy-nixops.sh | 41 +++++++++++++++++++++++++++++++++++ pkgs/nixops/release.nix.patch | 11 ++++++++++ 2 files changed, 52 insertions(+) create mode 100755 examples/deploy-nixops.sh diff --git a/examples/deploy-nixops.sh b/examples/deploy-nixops.sh new file mode 100755 index 0000000..a50aba2 --- /dev/null +++ b/examples/deploy-nixops.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +set -euo pipefail + +# This script demonstrates how to setup a VirtualBox nix-bitcoin node with nixops. +# Running this script leaves no traces on your host system. + +# This demo is a template for your own experiments. +# Feel free to modify or to run nix-shell and execute individual statements of this +# script in the interactive shell. + +if [[ ! -v IN_NIX_SHELL ]]; then + echo "Running script in nix shell env..." + exec nix-shell --run "${BASH_SOURCE[0]}" +fi + +# Cleanup on exit +cleanup() { + set +e + if nixops list | grep -q bitcoin-node; then + nixops destroy --confirm -d bitcoin-node + fi + rm -rf $tmpDir +} +trap "cleanup" EXIT + +tmpDir=/tmp/nix-bitcoin-nixops +mkdir -p $tmpDir + +# Don't write nixops and VirtualBox data to the $USER's home +export HOME=$tmpDir + +# Disable interactive queries and don't write to the $USER's known_hosts file +export NIXOPS_SSH_OPTS="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" + +nixops create nixops/node.nix nixops/node-vbox.nix -d bitcoin-node +nixops deploy -d bitcoin-node + +# Connect to node +nixops ssh bitcoin-node systemctl status bitcoind + +# Cleanup happens at exit (see above) diff --git a/pkgs/nixops/release.nix.patch b/pkgs/nixops/release.nix.patch index c54432a..734159b 100644 --- a/pkgs/nixops/release.nix.patch +++ b/pkgs/nixops/release.nix.patch @@ -43,3 +43,14 @@ ('destDir', 'string'), ('user', 'string'), ('group', 'string'), + +--- a/nixops/ssh_util.py ++++ b/nixops/ssh_util.py +@@ -278,6 +278,7 @@ class SSH(object): + + 'timeout' specifies the SSH connection timeout. + """ ++ flags = shlex.split(os.getenv('NIXOPS_SSH_OPTS', '')) + flags + master = self.get_master(flags, timeout, user) + flags = flags + self._get_flags() + if logged: