aboutsummaryrefslogtreecommitdiff
path: root/nixops/scripts
diff options
context:
space:
mode:
authorIsmaël Bouya <ismael.bouya@normalesup.org>2020-08-27 23:53:36 +0200
committerIsmaël Bouya <ismael.bouya@normalesup.org>2020-08-27 23:53:36 +0200
commit1052bfda27ad0607cd4dc5dc91e2d8e8220c30c7 (patch)
treebb6335465082ec87ac6503f0fccecda7d89ad958 /nixops/scripts
parent7e214bf9e1bb58b83317db95dfb70dbeac0a4e28 (diff)
downloadNix-1052bfda27ad0607cd4dc5dc91e2d8e8220c30c7.tar.gz
Nix-1052bfda27ad0607cd4dc5dc91e2d8e8220c30c7.tar.zst
Nix-1052bfda27ad0607cd4dc5dc91e2d8e8220c30c7.zip
Simplify management of secrets in nixops
Diffstat (limited to 'nixops/scripts')
-rwxr-xr-xnixops/scripts/setup39
-rwxr-xr-xnixops/scripts/with_env9
2 files changed, 4 insertions, 44 deletions
diff --git a/nixops/scripts/setup b/nixops/scripts/setup
index 3b364ac..22f43ce 100755
--- a/nixops/scripts/setup
+++ b/nixops/scripts/setup
@@ -2,7 +2,6 @@
2 2
3set -euo pipefail 3set -euo pipefail
4 4
5RemoteRepo="gitolite@git.immae.eu:perso/Immae/Prive/Password_store/Sites"
6MAKEFILE_DIR="$( cd "$( dirname $( dirname "${BASH_SOURCE[0]}" ))" >/dev/null 2>&1 && pwd )" 5MAKEFILE_DIR="$( cd "$( dirname $( dirname "${BASH_SOURCE[0]}" ))" >/dev/null 2>&1 && pwd )"
7 6
8if ! which nix 2>/dev/null >/dev/null; then 7if ! which nix 2>/dev/null >/dev/null; then
@@ -21,43 +20,9 @@ if [ "${NIX_STORE:-/nix/store}" != "/nix/store" ]; then
21 exit 1 20 exit 1
22fi 21fi
23 22
24if [ -z "$NIXOPS_CONFIG_PASS_SUBTREE_REMOTE" \ 23gpg_keys=$(pass ls Nixops/GPGKeys | sed -e "1d" | cut -d" " -f2)
25 -o -z "$NIXOPS_CONFIG_PASS_SUBTREE_PATH" ]; then
26 cat <<-EOF
27 Two environment variables are needed to setup the password store:
28 NIXOPS_CONFIG_PASS_SUBTREE_PATH : path where the subtree will be imported
29 NIXOPS_CONFIG_PASS_SUBTREE_REMOTE : remote name to give to the repository
30 EOF
31 exit 1
32fi
33
34if ! pass $NIXOPS_CONFIG_PASS_SUBTREE_PATH > /dev/null 2>/dev/null; then
35 cat <<-EOF
36 /!\ This will modify your password store to add and import a subtree
37 with the specific passwords files. Choose a path that doesn’t exist
38 yet in your password store.
39 > pass git remote add $NIXOPS_CONFIG_PASS_SUBTREE_REMOTE $RemoteRepo
40 > pass git subtree add --prefix=$NIXOPS_CONFIG_PASS_SUBTREE_PATH $NIXOPS_CONFIG_PASS_SUBTREE_REMOTE master
41 Later, you can use pull_environment and push_environment scripts to
42 update the passwords when needed
43 Continue? [y/N]
44 EOF
45 read y
46 if [ "$y" = "y" -o "$y" = "Y" ]; then
47 pass git remote add $NIXOPS_CONFIG_PASS_SUBTREE_REMOTE $RemoteRepo
48 pass git subtree add --prefix=$NIXOPS_CONFIG_PASS_SUBTREE_PATH $NIXOPS_CONFIG_PASS_SUBTREE_REMOTE master
49 else
50 echo "Aborting"
51 exit 1
52 fi
53fi
54
55# Repull it before adding keys, just in case
56make -C $MAKEFILE_DIR pull_environment
57
58gpg_keys=$(pass ls $NIXOPS_CONFIG_PASS_SUBTREE_PATH/Nixops/GPGKeys | sed -e "1d" | cut -d" " -f2)
59for key in $gpg_keys; do 24for key in $gpg_keys; do
60 content=$(pass show $NIXOPS_CONFIG_PASS_SUBTREE_PATH/Nixops/GPGKeys/$key) 25 content=$(pass show Nixops/GPGKeys/$key)
61 fpr=$(echo "$content" | gpg --import-options show-only --import --with-colons | grep -e "^pub" | cut -d':' -f5) 26 fpr=$(echo "$content" | gpg --import-options show-only --import --with-colons | grep -e "^pub" | cut -d':' -f5)
62 gpg --list-key "$fpr" >/dev/null 2>/dev/null && imported=yes || imported=no 27 gpg --list-key "$fpr" >/dev/null 2>/dev/null && imported=yes || imported=no
63 # /usr/share/doc/gnupg/DETAILS field 2 28 # /usr/share/doc/gnupg/DETAILS field 2
diff --git a/nixops/scripts/with_env b/nixops/scripts/with_env
index dd0fecb..26e74b5 100755
--- a/nixops/scripts/with_env
+++ b/nixops/scripts/with_env
@@ -5,11 +5,6 @@ if [ -z "$NIXOPS" ]; then
5 exit 1; 5 exit 1;
6fi 6fi
7 7
8if [ -z "$NIXOPS_CONFIG_PASS_SUBTREE_PATH" ]; then
9 echo "Please set NIXOPS_CONFIG_PASS_SUBTREE_PATH to the password-store subtree path"
10 exit 1;
11fi
12
13TEMP=$(mktemp -d /tmp/XXXXXX-nixops-files) 8TEMP=$(mktemp -d /tmp/XXXXXX-nixops-files)
14chmod go-rwx $TEMP 9chmod go-rwx $TEMP
15 10
@@ -21,10 +16,10 @@ finish() {
21trap finish EXIT 16trap finish EXIT
22 17
23# pass cannot "just" list files in a directory without showing a tree :( 18# pass cannot "just" list files in a directory without showing a tree :(
24files=$(pass ls $NIXOPS_CONFIG_PASS_SUBTREE_PATH/Nixops/files | sed -e '1d' -e 's/^.* //') 19files=$(pass ls Nixops/files | sed -e '1d' -e 's/^.* //')
25 20
26for file in $files; do 21for file in $files; do
27 pass show "$NIXOPS_CONFIG_PASS_SUBTREE_PATH/Nixops/files/$file" > $TEMP/$file 22 pass show "Nixops/files/$file" > $TEMP/$file
28done 23done
29$NIXOPS set-args --argstr privateFiles "$TEMP" 24$NIXOPS set-args --argstr privateFiles "$TEMP"
30 25