Mam skrypt, którego wyjście jest echem następującym formacie
<variable_1>;<variable_2>;<variable_3>
etcJak zdobyć zmienne z ansibl wyniku
chcę użyć tych zmiennych i uruchomieniu kwerendy mysql do aktualizacji DB jak tak
mysql -u<user> -p<password> -h<host> -e'insert into test_table values ("variable_1","variable_2","variable_3")'
Mój poradnik ansibli wygląda tak.
---
- hosts: infoServers
sudo: yes
gather_facts: no
tasks:
- name: gather info
script: get_hostdata.sh
register: result
- name: print result
local_action: command mysql -uuser -ppassword -h192.168.101.10 ansible_db -e'insert into test_table values ("{{ item[0] }}","{{ item[1] }}","{{ item[3] }});'
with_items: [ result.stdout.split(';')[0], result.stdout.split(';')[1], result.stdout.split(';')[2] ]
ERROR: Syntax Error podczas wczytywania skryptu YAML, test_variables.yml
Zasadniczo chcę, aby być w stanie wykorzystać wyjście polecenia powłoki, podzielić ją na kilka zmiennych i mieć możliwość korzystania z tych w dalsze działania ansibli. Czy możesz wskazać mi, jak poprawnie uzyskać dostęp do zmiennych?
Dziękuję
Dziękuję za wyjaśnienie. Mam jeszcze jedną wątpliwość - co zrobić, jeśli chcę przypisać wartość result.stdout.split ("; ') [1] do innej zmiennej (np. Var_1), a następnie użyć var_1 później, aby sprawdzić niektóre warunki itp., Co byłoby poprawny sposób na wykonanie tego –
Możesz to zrobić poprzez zadanie [set_fact] (http://docs.ansible.com/set_fact_module.html): set_fact: var1: result.stdout.split (';') [1] var2: result.stdout.split (';') [2] itd. –
Próbowałem tego rozwiązania w najnowszej wersji ansibla i wciąż mówiłem "obiekt listy nie ma elementu 1". Z całą pewnością robi to jako wiersz, zanim wydrukowałem tę samą instrukcję split (bez odwołania do tablicy) za pomocą debugowania i wypisuję wynik jako 3 osobne wpisy ... czego mi brakuje? – dsutherland