我正在尝试在虚拟机中安装和配置(使用Ansible)Cassandra,但我有以下问题:
失败! => {“已更改”:false,“failed”:true, “msg”:“AnsibleUndefinedVariable:'SimpleSnitch'未定义”}
第五个任务中出现此问题:“更改/etc/cassandra.yaml”
文件.yml是这样的:
- name: "add datastax cassandra debian repository"
apt_repository: repo='deb http://debian.datastax.com/community stable main'
- name: "Add datastax repo key"
apt_key: url=http://debian.datastax.com/debian/repo_key
- name: "Install cassandra"
apt: name=dsc30 state=latest update_cache=yes install_recommends=yes
- name: "Install cassandra-tools"
apt: name=cassandra-tools state=latest update_cache=yes install_recommends=yes
- name: "Change /etc/cassandra.yaml"
template: src=cassandra.yaml.j2 dest=/etc/cassandra/cassandra.yaml
- name: "Restart cassandra"
service: name=cassandra state=restarted
- name: stop cassandra
service: name=cassandra state=stopped
- name: clear test data
shell: rm -rf /var/lib/cassandra/data/system/*
- name: clear test data
shell: rm -rf /var/lib/cassandra/data/system_data/*
- name: start cassandra
service: name=cassandra state=started
- name: "Stop to back the Cassandra node"
pause: seconds=30
提前致谢
答案 0 :(得分:1)
这种错误通常意味着您忘记将字符串换成引号。问题不在你已粘贴的剧本文件中。在其他地方你设置cassandra.yaml.j2模板使用的某种snitch变量,而你忘记包装" SimpleSnitch"引号中的值,因此ansible错误地将其解释为未定义的变量名。
此外,即使对于开发群集,通常没有理由不养成使用Gossiping Property File小报的习惯。它的配置非常简单,并且可以让您在某天将配置迁移到prod集群。
答案 1 :(得分:0)
在 cassandra.yaml.j2 文件中,您在 endpoint_snitch:部分使用变量 SimpleSnitch 。出于这个原因,您遇到此错误:
FAILED! => {"changed": false, "failed": true, "msg":"AnsibleUndefinedVariable: 'SimpleSnitch' is undefined"}