vm/chef/cookbooks/cassandra/recipes/default.rb (59 lines of code) (raw):

# Copyright 2022 Google LLC # # Licensed 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. include_recipe 'openjdk11' include_recipe 'cassandra::ospo' apt_repository 'cassandra_repository' do uri node['cassandra']['repo']['uri'] components node['cassandra']['repo']['components'] keyserver node['cassandra']['repo']['keyserver'] distribution node['cassandra']['repo']['distribution'] trusted true end apt_preference 'cassandra' do pin "version #{node['cassandra']['apt_version']}" pin_priority '1000' end package 'cassandra' do :install end bash 'prepare_config_yaml_file' do code <<-EOH readonly conf_orig_file=/etc/cassandra/cassandra.yaml readonly conf_template_file=/etc/cassandra/cassandra.yaml.template cp "${conf_orig_file}" "${conf_template_file}" sed -i "s/seeds: \\"127.0.0.1:7000\\"/seeds: \\"\\${cassandra_seeds}\\"/" "${conf_template_file}" sed -i "s/^listen_address: localhost\\$/listen_address: \\${cassandra_internal_ip}/" "${conf_template_file}" sed -i "s/^rpc_address: localhost\\$/rpc_address: 0.0.0.0/" "${conf_template_file}" sed -i "s/^# broadcast_rpc_address: .*\\$/broadcast_rpc_address: \\${cassandra_internal_ip}/" "${conf_template_file}" sed -i "s/^cluster_name: .*\\$/cluster_name: '\\${cassandra_cluster_name}'/" "${conf_template_file}" sed -i "s/^max_hints_delivery_threads: .*\\$/max_hints_delivery_threads: 8/" "${conf_template_file}" sed -i "s/^concurrent_writes: .*\\$/concurrent_writes: \\${cassandra_concurrent_writes}/" "${conf_template_file}" sed -i "s/^# commitlog_total_space_in_mb: .*\\$/commitlog_total_space_in_mb: 2048/" "${conf_template_file}" sed -i "s/^#memtable_flush_writers: .*\\$/memtable_flush_writers: 2/" "${conf_template_file}" sed -i "s/^rpc_server_type: sync\\$/rpc_server_type: hsha/" "${conf_template_file}" sed -i "s/^# rpc_min_threads: .*\\$/rpc_min_threads: 16/" "${conf_template_file}" sed -i "s/^# rpc_max_threads: .*\\$/rpc_max_threads: 2048/" "${conf_template_file}" sed -i "s/^#concurrent_compactors: .*\\$/concurrent_compactors: 4/" "${conf_template_file}" sed -i "s/^compaction_throughput_mb_per_sec: .*\\$/compaction_throughput_mb_per_sec: 0/" "${conf_template_file}" sed -i "s/^endpoint_snitch: SimpleSnitch\\$/endpoint_snitch: GoogleCloudSnitch/" "${conf_template_file}" EOH end bash 'prepare_env_config_script' do code <<-EOH readonly env_orig_file=/etc/cassandra/cassandra-env.sh readonly env_template_file=/etc/cassandra/cassandra-env.sh.template cp "${env_orig_file}" "${env_template_file}" sed -i "s|# set jvm HeapDumpPath with CASSANDRA_HEAPDUMP_DIR|# set jvm HeapDumpPath with CASSANDRA_HEAPDUMP_DIR\nCASSANDRA_HEAPDUMP_DIR=\\${cassandra_mount_dir}/dumps|" "${env_template_file}" # Make sure that the file ends with new line. echo -e "\n" >> "${env_template_file}" # Additional JVM options to be appended to file. echo "JVM_OPTS=\\"\\$JVM_OPTS -XX:TargetSurvivorRatio=50\\"" >> "${env_template_file}" echo "JVM_OPTS=\\"\\$JVM_OPTS -XX:MaxDirectMemorySize=5g\\"" >> "${env_template_file}" echo "JVM_OPTS=\\"\\$JVM_OPTS -XX:+UseLargePages\\"" >> "${env_template_file}" EOH end # Set Java 11 package 'java-common' do :install end bash 'Set Java 11' do code <<-EOH update-java-alternatives -s java-1.11.0-openjdk-amd64 EOH end c2d_startup_script 'cassandra'