Q: "Передача переменных в Ansible из сценария Py"
A: Можно использовать lookup, pipe, from_yaml и назначить вывод сценария переменной. Например, со сценарием
$ cat my_script
#!/bin/sh
printf 'AppName: my_AppName\n'
printf 'Host: my_Host\n'
printf 'SealID: my_SealID\n'
, книга воспроизведения
- hosts: localhost
vars:
my_var: "{{ lookup('pipe', 'my_script')|from_yaml }}"
tasks:
- debug:
var: my_var
- debug:
msg: "AppName [{{ my_var.AppName }}]"
дает
ok: [localhost] =>
my_var:
AppName: my_AppName
Host: my_Host
SealID: my_SealID
ok: [localhost] =>
msg: AppName [my_AppName]
Q: "Ansible 2.3 не имеет плагина lookup
. Какой будет альтернативный способ для этого? "
A: можно зарегистрировать выходные данные скрипта и объединить в словарь with_items . Например, игра ниже дает тот же результат
- hosts: localhost
tasks:
- script: my_script
register: result
- set_fact:
my_var: "{{ my_var|default({})|combine(item|from_yaml) }}"
with_items: "{{ result.stdout_lines }}"
- debug:
var: my_var
- debug:
msg: "AppName [{{ my_var.AppName }}]"
Примечания
Нет переменной modules
. Вероятно, это ошибка
- debug:
msg: "{{ result.stdout_lines }}"
with_items: "{{ modules }}"
Зарегистрированный вывод должен быть просто напечатан
- debug:
msg: "{{ result.stdout_lines }}"