#cassandra #ansible
#cassandra #ansible
Вопрос:
Я пытаюсь установить и предоставить (используя Ansible) Cassandra на виртуальной машине, но у меня следующая проблема:
СБОЙ! => {«изменено»: false, «сбой»: true, «сообщение об ошибке»: «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
Заранее спасибо
Ответ №1:
Такого рода ошибки обычно означают, что вы забыли заключить строку в кавычки. Проблема не в файле playbook, который вы вставили. Где-то еще вы устанавливаете какую-то переменную-снитч, используемую шаблоном cassandra.yaml.j2, и вы забыли заключить значение «SimpleSnitch» в кавычки, поэтому ansible ошибочно интерпретирует его как неопределенное имя переменной.
Кроме того, даже для кластеров разработчиков, как правило, нет причин не привыкать использовать Gossiping Property File snitch. Это очень просто настроить, и когда-нибудь вы сможете перенести свою конфигурацию в кластер prod.
Ответ №2:
В вашем файле cassandra.yaml.j2 вы используете переменную SimpleSnitch в разделе endpoint_snitch: . По этой причине у вас возникает эта ошибка: FAILED! => {"changed": false, "failed": true, "msg":"AnsibleUndefinedVariable: 'SimpleSnitch' is undefined"}
Комментарии:
1. Итак, что именно представляет собой переменная «endpoint_snitch»? И что я должен сказать?
2. Вы можете напрямую присвоить значение для «endpoint_snitch» в «cassandra.yaml». Для настройки «SimpleSnitch» просто поместите «endpoint_snitch: SimpleSnitch» в файл «cassandra.yaml». Нет необходимости использовать дополнительную переменную для этого.
3. Это работает, спасибо, чувак… Я также нашел ссылку с хорошим объяснением того, как настроить файл cassandra.yaml, я опубликую здесь в качестве ответа другим парням с такой же проблемой. Спасибо!