Ich habe den größten Teil des Tages versucht, dieses Problem zu lösen und bisher gescheitert. Ich baue einige Spielbücher, um Funktionen in Splunk zu automatisieren, und versuche, eine Liste von Hosts aus einer Bestandsgruppe E.G. zu konvertieren.Ansible concat vars zu string
[search_head]
1.2.3.4
5.6.7.8
(Edited) Mein erwartet (gewünschtes) Ergebnis aus der Debug-Ausgabe des Spiels sein soll: https://1-2-3-4-ansible_nodename:8089, https://5.6.7.8-ansible_nodename:8089
ich mit dem folgende Textbuch mit einem laufenden Host dies abzuschließen bin versucht:
---
- name: Build search head list to initialize the captain
hosts: search_head
remote_user: ansible
vars:
inventory_file: ./inventory-ec2-single-site
search_head_uri: "{{ lookup('template', './bootstrap-sh-deployer.j2') }}"
pre_tasks:
- include_vars:
dir: 'group_vars'
extensions:
- yml
- yaml
tasks:
- name: dump array
debug:
msg: "{{ search_head_uri }}"`
Mit der Vorlage bootstrap-sh-deployer.j2
(Edited):
{%- set search_head_uri = [] %}
{% for host in groups['search_head'] %}
{%- if search_head_uri.append("https://" + [host][ansible_nodename] + ":8089") %}
{%- endif %}
{%- if not loop.last %}, {% endif -%}
{%- endfor %}
(Edited) jedoch die aktuellen Spielfehler mit: "msg": "the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: {{ lookup('template', './bootstrap-sh-deployer.j2') }}: 'list object' has no attribute u'ip-10-10-0-55'\n\nThe error appears to have been in '/Users/christophergarrett/dev/splunk-ansible/deploy_ec2_testing.yml': line 16, column 9, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n tasks:\n - name: dump array\n ^here\n"
Edit: Beitrag editiert Versuch zu reflektieren Host Fakten zu sammeln. Ursprünglich hatte ich versucht, die IP der Hosts aus der Inventardatei zu bekommen, die ich vorher hatte.
Ehrfürchtig hörte es auf, sich zu verirren. Jetzt versuche ich den 'ansible_nodename' von jedem Host in der'inventar' Datei zu bekommen. '{% - set search_head_uri = [true]%} {% für den Host in Gruppen ['search_head']%} {% - if search_head_uri.append (" https: // "+ [Host] [ansible_nodename] + ": 8089")%} {% endif -%} {% - wenn nicht loop.last%}, {% endif -%} {% - endfor%} ' – AlmostGosu
Fehler mit: ' fatal: [ 1.2.3.4]: AUSGEFALLEN! => { "failed": true, "msg": "Das Feld 'args' hat einen ungültigen Wert, der scheinbar eine undefinierte Variable enthält. Der Fehler war: {{lookup ('template', '. /bootstrap-sh-deployer.j2 ')}}:' Listenobjekt 'hat kein Attribut u'ip-1-2-3-4' \ n \ nDer Fehler scheint in '/ Users/christophergarrett/dev/splunk-ansible/deploy_ec2_testing.yml: Zeile 16, Spalte 9, kann aber abhängig vom genauen Syntaxproblem \ nwo anders in der Datei sein. \ n \ nDie folgende Zeile scheint zu sein: \ n \ n tasks: \ n - name : dump array \ n^here \ n " }' – AlmostGosu
Wenn Sie ein anderes Problem haben, stellen Sie bitte eine andere Frage. Denken Sie über den Grund nach, warum Sie "Host" in eckige Klammern eingeschlossen haben. – techraf