Ошибка предоставления cassandra с playbook ansible.(Vagrant VM)

#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, я опубликую здесь в качестве ответа другим парням с такой же проблемой. Спасибо!