Рейтинг:0

Сохранить отрендеренный Jinja в переменную

флаг cn
cov

Я хотел бы разделить некоторые шаблоны Jinja на несколько строк, чтобы строки не превышали 120 символов, и зарегистрировать переменную для удобного повторного использования. Есть ли способ сделать что-то вроде следующего? Есть ли для этого встроенный (или общественный) модуль? Если возможно, я хотел бы сделать это без использования временных файлов.

- jinja: "https://{{имя пользователя}}:{{ токен }}@hosting.com/organization"
  вары:
    имя пользователя: "{{ hashivault_secrets.value.data.USERNAME }}"
    токен: "{{ hashivault_secrets.value.data.TOKEN }}"
  зарегистрироваться: адрес

Таким образом, использование/повторное использование может выглядеть примерно так

   - пип:
       имя: мой-внутренний-пакет
     среда:
       PIP_EXTRA_INDEX_URL: "{{ URL-адрес }}"

В настоящее время я использую Ansible 2.9.

Рейтинг:1
флаг th

Вы можете просто установить var напрямую:

  вары:
    URL-адрес: https://{{имя пользователя}}:{{ токен }}@hosting.com/organization
    имя пользователя: "{{ hashivault_secrets.value.data.USERNAME }}"
    токен: "{{ hashivault_secrets.value.data.TOKEN }}"

Или вы можете использовать set_fact:

- set_fact:
    URL-адрес: https://{{имя пользователя}}:{{ токен }}@hosting.com/organization
  вары:
    имя пользователя: "{{ hashivault_secrets.value.data.USERNAME }}"
    токен: "{{ hashivault_secrets.value.data.TOKEN }}"

Основное практическое отличие (помимо задания переменных, не требующих дополнительной задачи) заключается в том, что переменные оцениваются во время использования, поэтому значение первого URL может измениться со временем, если hashivault_secrets меняется, при этом set_fact приведет к статическому значению, основанному на оценке шаблона во время set_fact задание выполняется. Оба поведения полезны, в зависимости от обстоятельств.

Рейтинг:0
флаг cn

Переменные могут быть определены как выражения, ссылающиеся на другие переменные. Позволяет разделить выражение до разумного размера.

Ключевое слово среды может применяться ко всем задачам игры. Это может ссылаться на переменные, определенные где угодно.

модуль_по умолчанию также может использоваться для предоставления значения для использования, когда ничего не предоставлено. Это, как правило, полезно для повторяющихся вещей, таких как кредиты API в целом. Для модуля pip дает альтернативу тому, как предоставить --extra-index-url, поскольку модуль предоставляет способ добавления произвольных аргументов.

group_vars/all/creds.yml или там, где вы хотите определить переменные конфигурации.

имя пользователя: "{{ hashivault_secrets.value.data.USERNAME }}"
токен: "{{ hashivault_secrets.value.data.TOKEN }}"
URL-адрес: https://{{имя пользователя}}:{{ токен }}@hosting.com/organization
среда:
   PIP_EXTRA_INDEX_URL: "{{ URL-адрес }}"

play.yml Вы не указали игру, но это хорошее место для использования ключевых слов области воспроизведения, которые будут применяться ко всем задачам. Я придумаю банальную пьесу, подстраивайся под то, что ты делаешь:

- хосты: thingapp

  среда: "{{ env }}"

  модуль_по умолчанию: 
    пункт: 
      extra_args: "--extra-index-url {{ url}}"

  роли:
     - веб сервер
     - питонприложение

роли/pythonapp/tasks/main.yml

   - пип:
       имя: мой-внутренний-пакет
Рейтинг:0
флаг in

Вы можете сделать это, используя set_fact.

- set_fact:
    URL: "https://{{ hashivault_secrets.value.data.ИМЯ ПОЛЬЗОВАТЕЛЯ}}: {{ hashivault_secrets.value.data.TOKEN }}@hosting.com/organization"

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.