未定义错误变量为'tomcat_password'的剧本中的Ansible保管库

时间:2020-05-16 10:46:42

标签: ansible ansible-inventory ansible-vault

我是ansible的新手。我正在尝试通过jenkins的ansible在142.23.9.23中执行一些部署任务。 我遇到以下错误 失败! => {“ msg”:“字段'become_pass'具有无效值,其中包含未定义的变量。错误是:'tomcat_password'未定义”}。

我也愿意接受新的建议。

下面是详细信息

目录

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

my-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

1 个答案:

答案 0 :(得分:0)

我认为您应该确保您了解group_vars和host_vars的工作方式:https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html

这里的要点是,您的应用服务器是一个组,而不是主机,并且似乎不在MAIN或COMMON组中。您不必从group_vars强制包含var,只需在组中添加主机即可。

您的库存应更像这样:

[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

但是无论如何,请仔细阅读如何进行库存清点,因为它可以解决您的大部分问题。