Использование переменных в шаблоне Jinja2 в ansible Playbook - PullRequest
0 голосов
/ 22 марта 2019

Любая идея, как мы можем использовать динамические переменные внутри шаблона Jinja2. Ниже приведены данные из моего шаблона Jinja2.

oracle.install.asm.diskGroup.disks=/dev/oracleasm/disks/DATA,/dev/oracleasm/disks/ARCH,/dev/oracleasm/disks/OCR

The variable values in the defaults/main.yml is.
     asm_disk_detail:
     - { name: 'OCR', path: '/dev/sde1' }
     - { name: 'DATA', path: '/dev/sdf1' }
     - { name: 'ARCH', path: '/dev/sdg1' }

Я пытаюсь использовать эти значения переменных для динамического прохождения во время запуска playbook. Эти значения должны автоматически заполняться в шаблоне. Пожалуйста, сообщите ..!

Ответы [ 2 ]

1 голос
/ 23 марта 2019

Используйте шаблонный модуль Ansible с Для цикла в вашем шаблоне.

{% for disk in asm_disk_detail %}
  disk name: {{ disk.name}}
  disk path: {{ disk.path }}
{% endfor %}
1 голос
/ 22 марта 2019

Да, это возможно.Файл main.yml будет получен автоматически при вызове ANSIBLE роли.Вам просто нужно написать файл шаблона jinja2 для того же.

Например, файл ниже:

Лучшим представлением файла main.yml будет

---
asm_disk_detail:
- name: OCR
  path: "/dev/sde1"
- name: DATA
  path: "/dev/sdf1"
- name: ARCH
  path: "/dev/sdg1"

jinja2 template: поддерживает цикл, поэтому вы можете применять with_items кПеременная выше asm_disk_detail и создайте файл конфигурации по мере необходимости.

Примечание: - Пожалуйста, попробуйте создать файл jinja2 с вашей стороны, если возникнут какие-либо проблемы, пожалуйста, кричите:)

=============== Шаблон воспроизведения и jinja2

playbook ->

---
- name: test
  hosts: localhost
  tasks:
    - name: test
      include_vars: vars.yml
    - name: jinja2
      template:
        src: template/template.yml
        dest: target/target.yml

jinja2 ->

{%- for item in asm_disk_detail -%}
{%- if not loop.last -%}
{{ item.path }}/{{ item.name }},
{%- else -%}
{{ item.path }}/{{ item.name }}
{%- endif -%}
{%- endfor -%}

вывод ->

oracle.install.asm.diskGroup.disks=/dev/sde1/OCR,/dev/sdf1/DATA,/dev/sdg1/ARCH
...