Рейтинг:0

Ansible — определить переменные на основе условий с помощью if elif else

флаг in

У меня есть несколько ролей: haproxy, java, nginx, tomcat.

âââ ansible-test-host.yml
âââ гапокси
ââ java
âââ myplaybook.yml
— nginx
âââ кот

Базовый сборник игр: myplaybook.yml и выглядит следующим образом:

---
- хосты: test-local
  подключение: местное
  вары:
    java_версия: "1.8.0"

  роли:
    - Ява

Поэтому мое требование зависит от указанных ролей java/tomcat/nginx и т. д. У меня есть файл шаблона для заполнения. Скажем, моя логика заключается в следующем:

если 
    role == java, то в template.j2 я должен установить `JAVA_TOOL_OPTIONS= -Xmx10g -Xms5g` 
Элиф 
    role == tomcat, то в template.j2 я должен установить `JAVA_OPTS= -Xmx10g -Xms5g` 
еще    
    НИЧЕГО ТАКОГО 
конец

У меня есть другие основные сценарии для сортировки, но если я получу основу, я смогу это сделать.

То, что я пробовал в java-роли main.yml, находится здесь.

---
# файл задач для java
- имя: вывод магических переменных 'ansible_'
  отлаживать:
    сообщение: [
      "ansible_role_names = {{ ansible_role_names | по умолчанию ({}) }}",
      "ansible_dependent_role_names = {{ ansible_dependent_role_names }}",
      "ansible_play_role_names = {{ ansible_play_role_names | default([]) | join(',') }}"
    ]

- название: набор фактов
  set_fact:
     DEFAULT_VAR: >
                {% if "{{ ansible_play_role_names | default([]) | join(',') }}" == "java" %}
                JAVA_TOOL_OPTIONS
                {% elif "{{ ansible_play_role_names | default([]) | join(',') }}" == 'tomcat' %}
                CATALINA_OPTS
                {% еще %}
                НИЧЕГО ТАКОГО
                {% конец%}

- имя: вывод моей пользовательской переменной var-try1
  отлаживать:
    сообщение: >
        {% if "{{ ansible_play_role_names | default([]) | join(',') }}" == "java" %}
        JAVA_TOOL_OPTIONS
        {% еще %}
        НИЧЕГО ТАКОГО
        {% конец%}


- имя: вывести мою пользовательскую переменную - эхо 
  отлаживать:
    сообщение: "{{DEFAULT_VAR}}"

Мой вывод такой

ЗАДАЧА [java: вывести магические переменные 'ansible_'] ********************************************** ****************
ок: [127.0.0.1] => {
    "сообщение": [
        "ansible_role_names = ['java']",
        "ansible_dependent_role_names = []",
        "ansible_play_role_names = Java"
    ]
}

ЗАДАЧА [java: установить факты] ************************************************* ****************************************
хорошо: [127.0.0.1]

ЗАДАЧА [java: вывести мой пользовательский var-try1] ********************************************* *************************
ок: [127.0.0.1] => {
    "msg": " НИЧЕГО\n"
}

ЗАДАЧА [java: вывести мою пользовательскую переменную - эхо] ******************************************* *************************
ок: [127.0.0.1] => {
    "msg": " НИЧЕГО\n"
}

ОБЗОР ИГРЫ ******************************************************* ************************************************
127.0.0.1 : ok=5 изменено=0 недостижимо=0 не удалось=0 пропущено=0 спасено=0 проигнорировано=0   

Пожалуйста, помогите с указателями для достижения этого.

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

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