修改Cassandra.yaml的程序化方法



我们在运行时创建了一个Cassandra群集,诸如" cluster-name"one_answers"种子"的IP地址之类的信息仅在运行时可用。cassandra.yaml是否有Java包装器,可以允许cassandra.yaml的固定器和获取器并将其保存到磁盘上?我知道我总是可以自己创建一个包装器,但想知道是否已经有一个。

是否有cassandra.yaml的Java包装器,可以允许cassandra.yaml的固定器和获取器并将其保存到磁盘?

不是我知道。虽然,这是一个OpenSource项目的好主意!

我过去做过几种不同的方式。一种是结合厨师和领事板的组合。从本质上讲,您的cassandra.yaml包含可变的位置持有人,当您的部署食谱运行时,默认属性(厨师(和特定于集群特定设置(consul-template(的组合填充。

我还使用sed(对于我们的几个非核心环境(使用了bash脚本。这是我写的脚本的摘录

#!/bin/bash
cp /etc/dse/cassandra/cassandra.yaml /etc/cassandra/conf
#set GossipingPropertyFileSnitch in cassandra.yaml
sed -i 's/endpoint_snitch: com.datastax.bdp.snitch.DseDelegateSnitch/endpoint_snitch: GossipingPropertyFileSnitch/' /etc/cassandra/conf/cassandra.yaml
#set truststore location
sed -i 's/truststore: /etc/dse/cassandra//truststore: /etc/cassandra/conf//g' /etc/cassandra/conf/cassandra.yaml
#set keystore location
sed -i 's/keystore: /etc/dse/cassandra//keystore: /etc/cassandra/conf//g' /etc/cassandra/conf/cassandra.yaml

本质上,您正在为特定的YAML属性设置进行正则备用。具体来说,我需要更新Snitch和密钥店/信托店的位置。它不是很漂亮,但可以工作。

最新更新