summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/todo.rst1
-rwxr-xr-xshare/hydra/compile57
2 files changed, 58 insertions, 0 deletions
diff --git a/doc/todo.rst b/doc/todo.rst
index 7351c87..7c23e48 100644
--- a/doc/todo.rst
+++ b/doc/todo.rst
@@ -3,6 +3,7 @@ TODO
- init: version control in the superproject?
- metrics and alarms subsystem.
+- compile: known_hosts.
- deploy:
- fqdn match via local config lookup.
- fact collection.
diff --git a/share/hydra/compile b/share/hydra/compile
new file mode 100755
index 0000000..1dd7b07
--- /dev/null
+++ b/share/hydra/compile
@@ -0,0 +1,57 @@
+#!/bin/bash
+#
+# Compile configuration.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public
+# License along with this program. If not, see
+# <http://www.gnu.org/licenses/>.
+
+# Load
+source $APP_BASE/lib/hydra/functions || exit 1
+hydra_config_load
+
+# Global configuration
+CONFIG="$HYDRA_FOLDER/puppet/config/compiled.yaml"
+
+# Nodes
+NODES="`hydra $HYDRA nodes`"
+
+echo "Starting a fresh compiled config..."
+mkdir -p "`dirname $CONFIG`"
+echo "---" > $CONFIG
+echo "#" >> $CONFIG
+echo "# Compiled configuration." >> $CONFIG
+echo "# Do not edit this file. Use 'hydra $HYDRA compile' instead." >> $CONFIG
+echo "#" >> $CONFIG
+echo "compiled:" >> $CONFIG
+
+#
+# SSH
+#
+echo "Handling SSH keys..."
+echo " ssh:" >> $CONFIG
+
+# Known hosts
+# From facter
+#echo "Processing known_hosts entries..."
+#echo " hosts:" >> $CONFIG
+
+# Authorized keys
+#echo "Processing authorized_keys entries..."
+echo " keys:" >> $CONFIG
+
+for node in $NODES; do
+ echo "... for $node"
+ key="$(keyringer $HYDRA decrypt nodes/$node/ssh/id_rsa.pub 2> /dev/null)"
+ echo " $node: '$key'" >> $CONFIG
+done