Хранилище Ansible в playbook с переменной ошибки tomcat_password не определено

Я новичок в ансибле. Я пытаюсь выполнить некоторую задачу развертывания в 142.23.9.23 с помощью ansible, используя jenkins. Я получаю сообщение об ошибке ниже. => {"msg": "Поле 'begin_pass' имеет недопустимое значение, которое включает неопределенную переменную. Ошибка была: 'tomcat_password' не определено"}.

Я также открыт для новых предложений.

Ниже приведены подробности

Каталог

ansible
   |---- group_vars
           |---- MAIN
                  |---- vault.yml
   |---- hosts
           |---- host-details.yml
   |---- roles
   |----- my-playbook.yml

мой-playbook.yml

- hosts: app-server
  tasks:
    - name: Print message
      debug: msg="test playbook version ansible_host = {{ ansible_host }}, ansible_ssh_user = {{ansible_ssh_user}}"
  vars_files:
    - group_vars/COMMON/vault.yml

host-details.yml


[app-server]
142.23.9.23 ansible_host=142.23.9.23 ansible_ssh_user=myuser ansible_become=yes ansible_become_user=myuser ansible_become_pass='{{ tomcat_password }}'

ansible-vault редактировать vault.yml

tomcat_password: password1
jenkins_password: password2

person soft developer    schedule 16.05.2020    source источник
comment
К сожалению, я не могу воспроизвести вашу ошибку; все работает, как ожидалось, в тестовом случае, который я создал из вашего описания. Однако можете ли вы использовать двойные кавычки вместо одинарных, как рекомендует официальная документация Ansible (например, "{{ tomcat_password }}"), и сообщить нам результат? Также, если это не сработает, я бы предложил включить эту переменную в ваше сообщение отладки: debug: msg="test playbook with tomcat_password = {{ tomcat_password }} ansible_host = {{ ansible_host }} ... "   -  person miwa    schedule 17.05.2020


Ответы (1)


Я думаю, вам следует убедиться, что вы понимаете, как работают group_vars и host_vars: https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html

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

Ваш инвентарь должен выглядеть примерно так:

[app-server]
142.23.9.23 ansible_host=142.23.9.23 ansible_ssh_user=myuser ansible_become=yes ansible_become_user=myuser ansible_become_pass='{{ tomcat_password }}'

[COMMON:children]
app-server

[MAIN:children]
app-server

Но в любом случае, пожалуйста, внимательно прочитайте, как провести инвентаризацию, так как это решит большинство ваших проблем.

person Sebcworks    schedule 16.05.2020
comment
хотел бы знать, это вход через ssh? - person soft developer; 16.05.2020