Filippo Giunchedi has uploaded a new change for review. https://gerrit.wikimedia.org/r/242548
Change subject: cassandra: ship systemd service file ...................................................................... cassandra: ship systemd service file this is a first step towards multi-instance, will merge in chunks Bug: T108306 Change-Id: Id95b5315ea5927e00397e85a06d1cd55516fdd44 --- A modules/cassandra/files/cassandra-tmpfiles.conf A modules/cassandra/files/cassandra.in.sh M modules/cassandra/manifests/init.pp M modules/cassandra/templates/cassandra-env.sh.erb A modules/cassandra/templates/initscripts/cassandra.systemd.erb 5 files changed, 73 insertions(+), 13 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/operations/puppet refs/changes/48/242548/1 diff --git a/modules/cassandra/files/cassandra-tmpfiles.conf b/modules/cassandra/files/cassandra-tmpfiles.conf new file mode 100644 index 0000000..6d49b10 --- /dev/null +++ b/modules/cassandra/files/cassandra-tmpfiles.conf @@ -0,0 +1,2 @@ +# this file is owned by puppet +d /var/run/cassandra 0755 cassandra cassandra diff --git a/modules/cassandra/files/cassandra.in.sh b/modules/cassandra/files/cassandra.in.sh new file mode 100644 index 0000000..b0f2624 --- /dev/null +++ b/modules/cassandra/files/cassandra.in.sh @@ -0,0 +1,28 @@ +# this file is similar to the stock /usr/share/cassandra/cassandra.in.sh +# but we are not setting CASSANDRA_CONF here, it'll be overridden +CASSANDRA_HOME=/usr/share/cassandra + +# The java classpath (required) +if [ -n "$CLASSPATH" ]; then + CLASSPATH=$CLASSPATH:$CASSANDRA_CONF +else + CLASSPATH=$CASSANDRA_CONF +fi + +for jar in /usr/share/cassandra/lib/*.jar; do + CLASSPATH=$CLASSPATH:$jar +done + +for jar in /usr/share/cassandra/*.jar; do + CLASSPATH=$CLASSPATH:$jar +done + +CLASSPATH="$CLASSPATH:$EXTRA_CLASSPATH" + + +# set JVM javaagent opts to avoid warnings/errors +if [ "$JVM_VENDOR" != "OpenJDK" -o "$JVM_VERSION" \> "1.6.0" ] \ + || [ "$JVM_VERSION" = "1.6.0" -a "$JVM_PATCH_VERSION" -ge 23 ] +then + JAVA_AGENT="$JAVA_AGENT -javaagent:$CASSANDRA_HOME/lib/jamm-0.3.0.jar" +fi diff --git a/modules/cassandra/manifests/init.pp b/modules/cassandra/manifests/init.pp index 13bb3ca..92e9203 100644 --- a/modules/cassandra/manifests/init.pp +++ b/modules/cassandra/manifests/init.pp @@ -472,20 +472,34 @@ ensure => 'absent', } - service { 'cassandra': - ensure => 'running', - enable => true, - hasstatus => true, - hasrestart => true, - # This module does not subscribe to its config files, - # as we would like to manage service restarts manually. - require => [ + file { '/etc/cassandra.in.sh': + ensure => present, + source => "puppet:///modules/${module_name}/cassandra.in.sh", + owner => 'cassandra', + group => 'cassandra', + mode => '0444', + require => Package['cassandra'], + } + + file { '/etc/tmpfiles.d/cassandra.conf': + ensure => present, + source => "puppet:///modules/${module_name}/cassandra-tmpfiles.conf", + owner => 'cassandra', + group => 'cassandra', + mode => '0444', + require => Package['cassandra'], + } + + base::service_unit { 'cassandra': + ensure => present, + template_name => 'cassandra', + systemd => true, + refresh => false, + require => [ File[$data_file_directories], - File['/etc/cassandra/cassandra-env.sh'], - File['/etc/cassandra/cassandra.yaml'], - File['/etc/cassandra/cassandra-rackdc.properties'], - File['/etc/cassandra/cassandra-topology.properties'], - File['/etc/cassandra/cassandra-topology.yaml'], + File["/etc/cassandra/cassandra-env.sh"], + File["/etc/cassandra/cassandra.yaml"], + File["/etc/cassandra/cassandra-rackdc.properties"], ], } } diff --git a/modules/cassandra/templates/cassandra-env.sh.erb b/modules/cassandra/templates/cassandra-env.sh.erb index b182f3c..70e1a8b 100644 --- a/modules/cassandra/templates/cassandra-env.sh.erb +++ b/modules/cassandra/templates/cassandra-env.sh.erb @@ -252,6 +252,9 @@ JVM_OPTS="$JVM_OPTS -XX:NumberOfGCLogFiles=10" JVM_OPTS="$JVM_OPTS -XX:GCLogFileSize=10M" +# used by cassandra-metrics-collector to report metrics for this instance +JVM_OPTS="$JVM_OPTS -Dcassandra.instance-id=<%= @hostname %>" + # Configure the following for JEMallocAllocator and if jemalloc is not available in the system # library path (Example: /usr/local/lib/). Usually "make install" will do the right thing. # export LD_LIBRARY_PATH=<JEMALLOC_HOME>/lib/ diff --git a/modules/cassandra/templates/initscripts/cassandra.systemd.erb b/modules/cassandra/templates/initscripts/cassandra.systemd.erb new file mode 100644 index 0000000..0f88b3d --- /dev/null +++ b/modules/cassandra/templates/initscripts/cassandra.systemd.erb @@ -0,0 +1,13 @@ +[Unit] +Description=distributed storage system for structured data +After=network.target + +[Service] +User=cassandra +PIDFile=/var/run/cassandra/cassandra.pid +LimitNOFILE=100000 +LimitMEMLOCK=infinity +Environment="CASSANDRA_INCLUDE=/etc/cassandra.in.sh" +Environment="CASSANDRA_CONF=/etc/cassandra" +Environment="CASSANDRA_INSTANCE=<%= @hostname %>" +ExecStart=/usr/sbin/cassandra -p /var/run/cassandra/cassandra.pid -- To view, visit https://gerrit.wikimedia.org/r/242548 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Id95b5315ea5927e00397e85a06d1cd55516fdd44 Gerrit-PatchSet: 1 Gerrit-Project: operations/puppet Gerrit-Branch: production Gerrit-Owner: Filippo Giunchedi <fgiunch...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits