]> gitweb.fluxo.info Git - hydra.git/commitdiff
Adding whereis action
authorSilvio Rhatto <rhatto@riseup.net>
Thu, 27 Mar 2014 23:50:40 +0000 (20:50 -0300)
committerSilvio Rhatto <rhatto@riseup.net>
Thu, 27 Mar 2014 23:50:40 +0000 (20:50 -0300)
TODO.md
share/hydra/whereis [new file with mode: 0755]

diff --git a/TODO.md b/TODO.md
index 2e634dbc2aff0ce79fe063889375e5e732a02e86..36b3632d8405d6a1aa3e290b609b7127c67d5a1c 100644 (file)
--- a/TODO.md
+++ b/TODO.md
@@ -5,7 +5,6 @@ Hydra
 -----
 
   - bootless: properly support `$subdevice` in parted or always use first partition (like `/dev/sdb1`).
-  - whereis: show where's a website, service or node might be (DNS repo, DNS lookup and node definition).
   - newkeys:
     - split SSH/OpenPGP check: just generate OpenPGP key if absent.
     - add 'all-ssh' and 'all-pgp' options to generate either all SSH or all OpenPGP keys.
diff --git a/share/hydra/whereis b/share/hydra/whereis
new file mode 100755 (executable)
index 0000000..5539b7c
--- /dev/null
@@ -0,0 +1,96 @@
+#!/bin/bash
+#
+# 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`"
+LAYER="$1"
+DOMAIN="`hydra $HYDRA config domain`"
+
+# Checks
+if [ -z "$LAYER" ]; then
+  echo "usage: $BASENAME <subdomain>"
+  exit 1
+elif [ -z "$DOMAIN" ]; then
+  echo "Please set 'domain' at $HYDRA hydra config."
+  exit 1
+fi
+
+# Puppet config
+echo "----------------------------------------------------------------------------------"
+echo "Puppet config at $PUPPET"
+echo "----------------------------------------------------------------------------------"
+echo ""
+
+# Is it a node?
+if [ -e "$PUPPET/manifests/nodes/$LAYER.pp" ]; then
+  echo "Defined as a node at $PUPPET/manifests/nodes/$LAYER.pp"
+
+  if [ -e "$PUPPET/hiera/production/domain/$DOMAIN/node/$LAYER.$DOMAIN.yaml" ]; then
+    echo "Configuration:"
+    echo ""
+    grep "nodo::role:"     $PUPPET/hiera/production/domain/$DOMAIN/node/$LAYER.$DOMAIN.yaml
+    grep "nodo::location:" $PUPPET/hiera/production/domain/$DOMAIN/node/$LAYER.$DOMAIN.yaml
+  fi
+fi
+
+# Is it a website?
+if [ -e "$PUPPET/manifests/classes/websites.pp" ] && \
+     grep -e "apache::site" "$PUPPET/manifests/classes/websites.pp" | grep -q "$LAYER" ; then
+  echo "Defined as a website on $PUPPET/manifests/classes/websites.pp:"
+  echo ""
+  sed -n -e "/apache::site { \"$LAYER\":/,/ }/ p" $PUPPET/manifests/classes/websites.pp
+fi
+
+# DNS config
+if [ -e "$HYDRA_FOLDER/dns/$DOMAIN.conf" ]; then
+  echo ""
+  echo "----------------------------------------------------------------------------------"
+  echo "DNS configuration at $HYDRA_FOLDER/dns/$DOMAIN.conf"
+  echo "----------------------------------------------------------------------------------"
+  echo ""
+
+  RESPONSE="`grep -e "^$LAYER " $HYDRA_FOLDER/dns/$DOMAIN.conf`"
+
+  # Turn off pathname expansion so expansion can work properly
+  set -f
+  if [ -z "$REPONSE" ]; then
+    RESPONSE="`grep -e '^* ' $HYDRA_FOLDER/dns/$DOMAIN.conf`"
+  fi
+
+  echo $RESPONSE
+fi
+
+# DNS
+echo ""
+echo "----------------------------------------------------------------------------------"
+echo "DNS response"
+echo "----------------------------------------------------------------------------------"
+echo ""
+dig +noauthority +nocomments +nocmd +nostats +noadditional $LAYER.$DOMAIN
+
+# GeoIP
+if which geoiplookup &> /dev/null; then
+  echo ""
+  echo "----------------------------------------------------------------------------------"
+  echo "GeoIP response"
+  echo "----------------------------------------------------------------------------------"
+  echo ""
+  geoiplookup $LAYER.$DOMAIN
+fi