2016-10-18 3 views
-1

Ich versuche zu installieren und Bereitstellung (mit ansible) Cassandra in einer virtuellen Maschine, aber ich habe die Folge Ausgabe:.Fehler Bestimmung cassandra mit Textbuch ansible (Vagrant VM)

FAILED! => {"changed": false, "failed": true, "msg":"AnsibleUndefinedVariable: 'SimpleSnitch' is undefined"}

dieses Problem occrus in der fünfte Aufgabe: "Change /etc/cassandra.yaml"

Die Datei .yml ist wie folgt:

- 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 

Vielen Dank im Voraus

Antwort

1

Diese Art von Fehler bedeutet normalerweise, dass Sie vergessen haben, eine Zeichenfolge in Anführungszeichen zu schreiben. Das Problem liegt nicht in der Playbook-Datei, die Sie eingefügt haben. An anderer Stelle setzen Sie eine Art Snitch-Variable, die von der Vorlage cassandra.yaml.j2 verwendet wird, und Sie haben vergessen, den "SimpleSnitch" -Wert in Anführungszeichen zu schreiben, so dass es von anisible fälschlicherweise als nicht definierter Variablenname interpretiert wird.

Auch für dev-Cluster gibt es im Allgemeinen keinen Grund, sich nicht an die Gewohnheit zu gewöhnen, den Gossiping Property File snitch zu verwenden. Es ist sehr einfach zu konfigurieren und bringt Sie in eine gute Position, um Ihre Konfiguration eines Tages zu einem Produktcluster zu migrieren.

0

In Ihrem cassandra.yaml.j2 Datei, verwenden Sie eine Variable SimpleSnitch bei endpoint_snitch: Abschnitt. Aus diesem Grund haben Sie diesen Fehler: FAILED! => {"changed": false, "failed": true, "msg":"AnsibleUndefinedVariable: 'SimpleSnitch' is undefined"}

+0

Also, was ist genau die Variable "endpoint_snitch"? Und was soll ich sagen? –

+0

Sie können den Wert für "endpoint_snitch" direkt an "cassandra.yaml" zuweisen. Für die 'SimpleSnitch' Konfiguration, setzen Sie einfach "endpoint_snitch: SimpleSnitch" in die "cassandra.yaml" Datei. Keine Notwendigkeit, eine zusätzliche Variable für diesen zu verwenden. –

+0

Es funktioniert, danke Alter ... Ich fand auch einen Link mit einer guten Erklärung, wie man eine cassandra.yaml Datei konfiguriert, ich werde hier als Antwort auf die anderen Leute mit dem gleichen Problem posten. Vielen Dank! –