aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TODO.md3
-rw-r--r--share/config/templates/node/node.example.org.yaml2
-rw-r--r--share/config/templates/node/node.pp3
-rwxr-xr-xshare/hydra/folder23
-rwxr-xr-xshare/hydra/newnode79
-rwxr-xr-xshare/hydractl/puppet-initialize20
-rwxr-xr-xshare/hydractl/puppet-reset-agent3
-rwxr-xr-xshare/hydractl/puppet-setup-stored24
8 files changed, 153 insertions, 4 deletions
diff --git a/TODO.md b/TODO.md
index 0f16ed9..0d4933a 100644
--- a/TODO.md
+++ b/TODO.md
@@ -5,10 +5,9 @@ Hydra
-----
- bootless: properly support `$subdevice` in parted or always use first device (like `/dev/sdb1`).
- - puppet-setup-stored: configure storeconfigs database.
Hydractl
--------
- provision: config parser using a custom function with `include` directive, avoiding `source`.
- - backup-restore-site: fix parameters
+ - puppet-setup-stored: configure storeconfigs database.
diff --git a/share/config/templates/node/node.example.org.yaml b/share/config/templates/node/node.example.org.yaml
new file mode 100644
index 0000000..56d0213
--- /dev/null
+++ b/share/config/templates/node/node.example.org.yaml
@@ -0,0 +1,2 @@
+---
+nodo::role: 'vserver'
diff --git a/share/config/templates/node/node.pp b/share/config/templates/node/node.pp
new file mode 100644
index 0000000..976316b
--- /dev/null
+++ b/share/config/templates/node/node.pp
@@ -0,0 +1,3 @@
+node 'node.example.org' {
+ include nodo
+}
diff --git a/share/hydra/folder b/share/hydra/folder
new file mode 100755
index 0000000..20f0bbe
--- /dev/null
+++ b/share/hydra/folder
@@ -0,0 +1,23 @@
+#!/bin/bash
+#
+# Display hydra folder.
+#
+# 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
+
+# Display folder
+echo $HYDRA_FOLDER
diff --git a/share/hydra/newnode b/share/hydra/newnode
new file mode 100755
index 0000000..e6da2ad
--- /dev/null
+++ b/share/hydra/newnode
@@ -0,0 +1,79 @@
+#!/bin/bash
+#
+# Create new node 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
+
+# Parameters
+BASENAME="`basename $0`"
+NODE="$1"
+NODES="$HYDRA_FOLDER/puppet/manifests/nodes.pp"
+
+# Check configuration and parameters
+if [ -z "$NODE" ]; then
+ echo "usage: hydra $BASENAME <node>"
+ exit 1
+elif [ ! -e "$HYDRA_FOLDER/config/domain" ]; then
+ echo "fatal: please configure your domain at $HYDRA_FOLDER/config/domain"
+ exit 1
+elif [ ! -f "$NODES" ]; then
+ echo "fatal: nodes.pp not found"
+ exit 1
+elif grep -qe "^import \"nodes/$NODE.pp\"$" $NODES &> /dev/null; then
+ echo "fatal: node $NODE already defined"
+ exit 1
+fi
+
+# Domain
+DOMAIN="`cat $HYDRA_FOLDER/config/domain`"
+
+# Create node
+echo "import \"nodes/$NODE.pp\"" >> $NODES
+
+# Set YAML template
+if [ -e "$HYDRA_FOLDER/config/templates/node/node.example.org.yaml" ]; then
+ YAML="$HYDRA_FOLDER/config/templates/node/node.example.org.yaml"
+else
+ YAML="$APP_BASE/share/config/templates/node/node.example.org.yaml"
+fi
+
+# Set node template
+if [ -e "$HYDRA_FOLDER/config/templates/node/node.pp" ]; then
+ PP="$HYDRA_FOLDER/config/templates/node/node.pp"
+else
+ PP="$APP_BASE/share/config/templates/node/node.pp"
+fi
+
+# Copy YAML template
+mkdir -p $HYDRA_FOLDER/puppet/hiera/production/domain/$DOMAIN/node
+cp $YAML $HYDRA_FOLDER/puppet/hiera/production/domain/$DOMAIN/node/$NODE.$DOMAIN.yaml
+
+# Copy node template
+mkdir -p $HYDRA_FOLDER/puppet/manifests/nodes
+cp $PP $HYDRA_FOLDER/puppet/manifests/nodes/$NODE.pp
+
+# Edit the template
+sed -i -e "s/node/$NODE/g" $HYDRA_FOLDER/puppet/manifests/nodes/$NODE.pp
+sed -i -e "s/example.org/$DOMAIN/g" $HYDRA_FOLDER/puppet/manifests/nodes/$NODE.pp
+
+# Add to git
+(
+ cd $HYDRA_FOLDER/puppet
+ git add manifests/site.pp manifests/nodes/$NODE.pp hiera/production/domain/$DOMAIN/node/$NODE.$DOMAIN.yaml
+)
diff --git a/share/hydractl/puppet-initialize b/share/hydractl/puppet-initialize
new file mode 100755
index 0000000..3833e96
--- /dev/null
+++ b/share/hydractl/puppet-initialize
@@ -0,0 +1,20 @@
+#!/bin/bash
+#
+# Make puppet agent first connection with the master node.
+#
+# 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/>.
+
+puppet agent --server puppet.`facter domain` --pluginsync true --waitforcert 60 --digest-sha1 --test \
+ --ca_port 8141 --vardir /var/lib/puppet --ssldir /var/lib/puppet/ssl $*
diff --git a/share/hydractl/puppet-reset-agent b/share/hydractl/puppet-reset-agent
index 1aff2d8..2c7b724 100755
--- a/share/hydractl/puppet-reset-agent
+++ b/share/hydractl/puppet-reset-agent
@@ -18,5 +18,4 @@
/etc/init.d/puppet stop
rm -rf /var/lib/puppet/ssl
-puppet agent --server puppet.`facter domain` --waitforcert 60 --test --ca_port 8141 \
- --vardir /var/lib/puppet --ssldir /var/lib/puppet/ssl
+hydractl puppet-initialize
diff --git a/share/hydractl/puppet-setup-stored b/share/hydractl/puppet-setup-stored
new file mode 100755
index 0000000..8e04261
--- /dev/null
+++ b/share/hydractl/puppet-setup-stored
@@ -0,0 +1,24 @@
+#!/bin/bash
+#
+# Setup puppet stored configs.
+#
+# 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
+
+# TODO
+echo "TODO!"