BIGTOP-1108. Solr 4.5.0 has been formally released and we should start using the...
authorRoman Shaposhnik <rvs@cloudera.com>
Fri, 4 Oct 2013 00:46:28 +0000 (17:46 -0700)
committerRoman Shaposhnik <rvs@cloudera.com>
Fri, 4 Oct 2013 20:18:52 +0000 (13:18 -0700)
bigtop-deploy/puppet/modules/solr/manifests/init.pp
bigtop-deploy/puppet/modules/solr/templates/jaas.conf [new file with mode: 0644]
bigtop-deploy/puppet/modules/solr/templates/solr
bigtop-deploy/puppet/modules/solr/templates/solr.xml [deleted file]
bigtop-deploy/puppet/modules/solr/tests/init.pp
bigtop-packages/src/common/hadoop/init-hdfs.sh
bigtop.mk

index 9163ce9..22c4d9e 100644 (file)
 # limitations under the License.
 
 class solr {
-  define solrcloud_config($confdir, $zk) {
-    exec { "ZK $title config upload":
-      command => "/bin/bash -c \"java -classpath '/usr/lib/solr/server/webapps/solr/WEB-INF/lib/*' org.apache.solr.cloud.ZkCLI -cmd makepath /solr -zkhost ${zk} ; java -classpath '/usr/lib/solr/server/webapps/solr/WEB-INF/lib/*' org.apache.solr.cloud.ZkCLI -cmd upconfig  -confdir ${confdir}/${title}/conf -confname $title -zkhost ${zk}/solr\"",
-      logoutput => true,
-    }
-  }
-  
-
-  define server($collections = ["solrcloud"], $port = "1978", $port_admin = "1979", $zk = "localhost:2181") {
+  define server($port = "1978", $port_admin = "1979", $zk = "localhost:2181", $root_url = "hdfs://localhost:8020/solr", $kerberos_realm = "") {
     package { "solr-server":
       ensure => latest,
     }
@@ -33,25 +25,34 @@ class solr {
         require => [Package["solr-server"]],
     }
 
-    file {
-      "/etc/solr/conf/solr.xml":
-        content => template("solr/solr.xml"),
-        require => [Package["solr-server"]],
-    }
-
-    # FIXME: perhap we have to provide a way to manage collection configs
-    solrcloud_config { $collections:
-      zk      => $zk,
-      confdir => "/etc/solr/conf",
-      require => [Package["solr-server"]],
+    exec { "solr init":
+      command => "/bin/bash -c '/usr/bin/solrctl debug-dump | grep -q solr.xml || /usr/bin/solrctl init'",
+      require => [ Package["solr-server"], File["/etc/default/solr"] ],
+      logoutput => true,
     }
 
     service { "solr-server":
       ensure => running,
-      require => [ Package["solr-server"], File["/etc/default/solr"], File["/etc/solr/conf/solr.xml"], Solrcloud_config[$collections] ],
-      subscribe => [Package["solr-server"], File["/etc/default/solr"], File["/etc/solr/conf/solr.xml"] ],
+      require => [ Package["solr-server"], File["/etc/default/solr"], Exec["solr init"] ],
+      subscribe => [Package["solr-server"], File["/etc/default/solr"] ],
       hasrestart => true,
       hasstatus => true,
     } 
+
+    if ($kerberos_realm) {
+      require kerberos::client
+
+      kerberos::host_keytab { "solr":
+        spnego => true,
+        require => Package["solr-server"],
+      }
+
+      file { "/etc/solr/conf/jaas.conf":
+          content => template("solr/jaas.conf"),
+          require => [Package["solr-server"]],
+      }
+
+      Kerberos::Host_keytab <| title == "solr" |> -> Service["solr-server"]
+    }
   }
 }
diff --git a/bigtop-deploy/puppet/modules/solr/templates/jaas.conf b/bigtop-deploy/puppet/modules/solr/templates/jaas.conf
new file mode 100644 (file)
index 0000000..aff0d5c
--- /dev/null
@@ -0,0 +1,24 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+Client {
+     com.sun.security.auth.module.Krb5LoginModule required
+     useKeyTab=true
+     useTicketCache=false
+     keyTab="/etc/solr.keytab"
+     principal="solr/<%= fqdn %>@<%= kerberos_realm %>";
+};
index ffab877..0f17ee9 100644 (file)
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+SOLR_LOG=/var/log/solr
 SOLR_PORT="<%= port %>"
 SOLR_ADMIN_PORT="<%= port_admin %>"
 SOLR_ZK_ENSEMBLE="<%= zk %>/solr"
-SOLR_LOG=/var/log/solr
-SOLR_DATA_DIR=/var/lib/solr/index
-# CATALINA_OPTS="-Dfoo=bar"
+SOLR_HDFS_HOME=<%= root_url %>/solr
+SOLR_HDFS_CONFIG=/etc/hadoop/conf
+
+<% if @kerberos_realm == "" %>
+SOLR_AUTHENTICATION_TYPE=simple
+SOLR_AUTHENTICATION_SIMPLE_ALLOW_ANON=true
+<% else %>
+SOLR_KERBEROS_ENABLED=true
+SOLR_KERBEROS_KEYTAB=/etc/solr.keytab
+SOLR_KERBEROS_PRINCIPAL="solr/<%= fqdn %>@<%= kerberos_realm %>"
+SOLR_AUTHENTICATION_KERBEROS_KEYTAB=/etc/solr.keytab
+SOLR_AUTHENTICATION_KERBEROS_PRINCIPAL="HTTP/<%= fqdn %>@<%= kerberos_realm %>"
+SOLR_AUTHENTICATION_KERBEROS_NAME_RULES=DEFAULT
+SOLR_AUTHENTICATION_JAAS_CONF=/etc/solr/conf/jaas.conf
+<% end %>
diff --git a/bigtop-deploy/puppet/modules/solr/templates/solr.xml b/bigtop-deploy/puppet/modules/solr/templates/solr.xml
deleted file mode 100644 (file)
index 66309f3..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<solr persistent="false">
-  <cores adminPath="/admin/cores" host="<%= fqdn %>" hostPort="<%= port %>" hostContext="${hostContext:}" zkClientTimeout="${zkClientTimeout:15000}">
-<% collections.each do |collection| %>
-    <core name="<%= collection %>_<%= fqdn.to_s.tr('.', '_') %>" shard="<%= collection %>_<%= fqdn.to_s.tr('.', '_') %>" collection="<%= collection %>"
-          instanceDir="<%= fqdn.to_s.tr('.', '_') %>/" schema="schema.xml" config="solrconfig.xml"/>
-<% end %>
-  </cores>
-</solr>
-
index 643abb5..cc3f73c 100644 (file)
@@ -14,8 +14,9 @@
 # limitations under the License.
 
 solr::server { "test-solr-server": 
-  collections => ["collection1", "solrcloud", "a", "b", "c"],
   port        => "1978",
   port_admin  => "1979",
   zk          => "localhost:2181",
+  root_url    => "hdfs://localhost:8020/solr",
+  kerberos_realm => "KRB.YOU.ORG",
 }
index bc96761..3a5fe36 100755 (executable)
@@ -34,6 +34,8 @@ su -s /bin/bash hdfs -c '/usr/bin/hadoop fs -chmod -R 1777 /var/log/hadoop-yarn/
 su -s /bin/bash hdfs -c '/usr/bin/hadoop fs -chown yarn:mapred /var/log/hadoop-yarn/apps'
 su -s /bin/bash hdfs -c '/usr/bin/hadoop fs -mkdir /hbase'
 su -s /bin/bash hdfs -c '/usr/bin/hadoop fs -chown hbase:hbase /hbase'
+su -s /bin/bash hdfs -c '/usr/bin/hadoop fs -mkdir /solr'
+su -s /bin/bash hdfs -c '/usr/bin/hadoop fs -chown solr:solr /solr'
 su -s /bin/bash hdfs -c '/usr/bin/hadoop fs -mkdir /benchmarks'
 su -s /bin/bash hdfs -c '/usr/bin/hadoop fs -chmod -R 777 /benchmarks'
 su -s /bin/bash hdfs -c '/usr/bin/hadoop fs -mkdir /user'
@@ -94,4 +96,4 @@ if [ "$1" = "-u" ] ; then
     su -s /bin/bash hdfs -c "/usr/bin/hadoop fs -chmod -R 755 /user/${USER}"
     su -s /bin/bash hdfs -c "/usr/bin/hadoop fs -chown ${USER} /user/${USER}"
   fi
-fi
\ No newline at end of file
+fi
index f7235d5..502573d 100644 (file)
--- a/bigtop.mk
+++ b/bigtop.mk
@@ -219,10 +219,8 @@ SOLR_RELEASE_VERSION=1
 SOLR_TARBALL_DST=solr-$(SOLR_BASE_VERSION)-src.tgz
 SOLR_TARBALL_SRC=$(SOLR_TARBALL_DST)
 SOLR_DOWNLOAD_PATH=/lucene/solr/$(SOLR_BASE_VERSION)
-#SOLR_SITE=$(APACHE_MIRROR)$(SOLR_DOWNLOAD_PATH)
-#SOLR_ARCHIVE=$(APACHE_ARCHIVE)$(SOLR_DOWNLOAD_PATH)
-SOLR_SITE=http://people.apache.org/~jpountz/staging_area/lucene-solr-4.5.0-RC3-rev1526423/solr/
-SOLR_ARCHIVE=$(SOLR_SITE)
+SOLR_SITE=$(APACHE_MIRROR)$(SOLR_DOWNLOAD_PATH)
+SOLR_ARCHIVE=$(APACHE_ARCHIVE)$(SOLR_DOWNLOAD_PATH)
 $(eval $(call PACKAGE,solr,SOLR))
 
 # Crunch