aboutsummaryrefslogtreecommitdiffstats
path: root/sos/report/plugins/openshift.py
diff options
context:
space:
mode:
Diffstat (limited to 'sos/report/plugins/openshift.py')
-rw-r--r--sos/report/plugins/openshift.py156
1 files changed, 156 insertions, 0 deletions
diff --git a/sos/report/plugins/openshift.py b/sos/report/plugins/openshift.py
new file mode 100644
index 00000000..e31040c3
--- /dev/null
+++ b/sos/report/plugins/openshift.py
@@ -0,0 +1,156 @@
+# This file is part of the sos project: https://github.com/sosreport/sos
+#
+# This copyrighted material is made available to anyone wishing to use,
+# modify, copy, or redistribute it subject to the terms and conditions of
+# version 2 of the GNU General Public License.
+#
+# See the LICENSE file in the source distribution for further information.
+
+from sos.plugins import Plugin, RedHatPlugin
+import os.path
+
+
+# This plugin handles OpenShift Enterprise versions up to 2.x
+# which are based in the upstream code of OpenShift Origin M4
+# located here: https://github.com/openshift/origin-server
+#
+# For later of OpenShift Origin based on: https://github.com/openshift/origin
+# like OpenShift Enterprise 3.x see the origin.py plugin
+class Openshift(Plugin, RedHatPlugin):
+ """Openshift 2.x node and broker"""
+
+ plugin_name = "openshift"
+ profiles = ('virt', 'openshift')
+
+ # The 'broker' and 'node' options are obsolete but are maintained
+ # here for compatibility with external programs that call sosreport
+ # with these names.
+ option_list = [("broker", "Gathers broker specific files", "slow", False),
+ ("node", "Gathers node specific files", "slow", False)]
+
+ ruby = "ruby193"
+ vendor = "rh"
+ mco_config_dir = "/opt/%s/%s/root/etc/mcollective" % (vendor, ruby)
+
+ gear_base_dir = "/var/lib/openshift"
+ node_settings_dir = os.path.join(gear_base_dir, ".settings")
+ node_proxy_dir = os.path.join(gear_base_dir, ".httpd.d")
+ httpd_config_dir = "/etc/httpd/conf.d"
+
+ def is_broker(self):
+ return os.path.exists("/etc/openshift/broker.conf")
+
+ def is_node(self):
+ return os.path.exists("/etc/openshift/node.conf")
+
+ def setup(self):
+ self.add_copy_spec([
+ "/etc/openshift-enterprise-release",
+ "/var/log/openshift",
+ "/etc/openshift/*.conf",
+ "/etc/openshift/upgrade",
+ ])
+
+ self.add_cmd_output("oo-diagnostics -v")
+
+ if self.is_broker():
+ self.add_copy_spec([
+ "/etc/openshift/quickstarts.json",
+ "/etc/openshift/plugins.d/*.conf",
+ os.path.join(self.mco_config_dir, "client.cfg"),
+ "/var/www/openshift/broker/httpd/httpd.conf",
+ "/var/www/openshift/broker/httpd/conf.d/*.conf",
+ "/var/www/openshift/console/httpd/httpd.conf",
+ "/var/www/openshift/console/httpd/conf.d/*.conf",
+ ])
+
+ self.add_cmd_output([
+ "oo-accept-broker -v",
+ "oo-admin-chk -v",
+ "oo-mco ping",
+ ])
+
+ if self.is_node():
+ self.add_copy_spec([
+ "/etc/openshift/node-plugins.d/*.conf",
+ "/etc/openshift/cart.conf.d",
+ "/etc/openshift/iptables.*.rules",
+ "/etc/openshift/env",
+ os.path.join(self.httpd_config_dir,
+ "openshift-vhost-logconf.include"),
+ os.path.join(self.httpd_config_dir,
+ "openshift-http-vhost.include"),
+ os.path.join(self.httpd_config_dir,
+ "openshift_restorer.include"),
+ os.path.join(self.mco_config_dir, "server.cfg"),
+ os.path.join(self.mco_config_dir, "facts.yaml"),
+ os.path.join(self.node_settings_dir, "district.info"),
+ os.path.join(self.node_proxy_dir, "*.conf"),
+ os.path.join(self.node_proxy_dir, "aliases.txt"),
+ os.path.join(self.node_proxy_dir, "nodes.txt"),
+ os.path.join(self.node_proxy_dir, "idler.txt"),
+ os.path.join(self.node_proxy_dir, "sts.txt"),
+ os.path.join(self.node_proxy_dir, "routes.json"),
+ os.path.join(self.node_proxy_dir, "geardb.json"),
+ os.path.join(self.node_proxy_dir, "sniproxy.json"),
+ "/var/log/httpd/openshift_log",
+ "/var/log/mcollective.log",
+ "/var/log/node-web-proxy/access.log",
+ "/var/log/node-web-proxy/error.log",
+ "/var/log/node-web-proxy/websockets.log",
+ "/var/log/node-web-proxy/supervisor.log",
+ ])
+
+ self.add_cmd_output([
+ "oo-accept-node -v",
+ "oo-admin-ctl-gears list",
+ "ls -laZ %s" % self.gear_base_dir,
+ "ls -la %s" % self.node_proxy_dir
+ ])
+
+ def postproc(self):
+ # Redact broker's MongoDB credentials:
+ # MONGO_PASSWORD="PasswordForOpenshiftUser"
+ self.do_file_sub('/etc/openshift/broker.conf',
+ r"(MONGO_PASSWORD\s*=\s*)(.*)",
+ r"\1*******")
+
+ # Redact session SHA keys:
+ # SESSION_SECRET=0c31...a7c8
+ self.do_file_sub('/etc/openshift/broker.conf',
+ r"(SESSION_SECRET\s*=\s*)(.*)",
+ r"\1*******")
+ self.do_file_sub('/etc/openshift/console.conf',
+ r"(SESSION_SECRET\s*=\s*)(.*)",
+ r"\1*******")
+
+ # Redact passwords of the form:
+ # plugin.activemq.pool.1.password = Pa$sW0Rd
+ self.do_file_sub(os.path.join(self.mco_config_dir, "server.cfg"),
+ r"(.*password\s*=\s*)\S+",
+ r"\1********")
+ self.do_file_sub(os.path.join(self.mco_config_dir, "client.cfg"),
+ r"(.*password\s*=\s*)\S+",
+ r"\1********")
+
+ # Redact DNS plugin credentials
+ # Dynect DNS: DYNECT_PASSWORD=s0ME-p4$_w0RD._
+ plugin_dir = '/etc/openshift/plugins.d/'
+ self.do_file_sub(plugin_dir + 'openshift-origin-dns-dynect.conf',
+ r"(DYNECT_PASSWORD\s*=\s*)(.*)",
+ r"\1********")
+ # Fog cloud: FOG_RACKSPACE_API_KEY="apikey"
+ self.do_file_sub(plugin_dir + 'openshift-origin-dns-fog.conf',
+ r"(FOG_RACKSPACE_API_KEY\s*=\s*)(.*)",
+ r"\1********")
+ # ISC bind: BIND_KEYVALUE="rndc key"
+ self.do_file_sub(plugin_dir + 'openshift-origin-dns-nsupdate.conf',
+ r"(BIND_KEYVALUE\s*=\s*)(.*)",
+ r"\1********")
+ # LDAP authentication: AuthLDAPBindPassword "IShouldNotBeHere"
+ ldap_paths = '/var/www/openshift/(broker|console)/httpd/conf.d/.*'
+ self.do_path_regex_sub(ldap_paths,
+ r"(AuthLDAPBindPassword)\s*(.*)",
+ r"\1********")
+
+# vim: set et ts=4 sw=4 :