我是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
答案 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
但是无论如何,请仔细阅读如何进行库存清点,因为它可以解决您的大部分问题。