MyTetra Share
Делитесь знаниями!
Как в Ansible преобразовать список в набор bash-переменных для выполнения внутри модуля shell
Время создания: 15.04.2022 12:27
Текстовые метки: ansible, список, bash, переменная, shell
Раздел: Компьютер - Linux - Оркестрация - Ansible
Запись: xintrea/mytetra_syncro/master/base/16500148648na84e1ih0/text.html на raw.github.com

Иногда нужно передать в модуль shell набор системных переменных, заданных в виде YAML списка. Как это можно сделать?


Пример возможного решения приведен ниже:



---

- hosts: ourHost


vars:


lines:

- "isProduction=true"

- "targetSPO=free"

- "themeSupport=default"



tasks:


- set_fact:

result: ""


- set_fact:

result: |

{{result}}

export {{line}}

loop: "{{lines}}"

loop_control:

loop_var: line


- name: Набор переменных

debug:

msg: '{{result}}'


- shell: |

# Установка переменных

{{result}}


# Проверка доступности значений переменных

varA=$user

echo variable A is $varA


register: shellResult


- name: Проверка значений

debug:

msg: '{{shellResult}}'



Данный код имеет список переменных lines. Далее происходит проход по данному списку и формирование bash-команд установки значений переменных. Затем эти bash-команды выполняются в задаче shell, причем команды установки значений переменных вызываются самыми первыми, а за ними можно писать код, который использует эти значения.


Естественно, данные переменные сохраняются в bash-среде только в текущей shell-задаче. При последующих вызовах shell-задач, надо в каждой вызывать команды установки переменных.


Так же в этом разделе:
 
MyTetra Share v.0.58
Яндекс индекс цитирования