0

我是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

我的剧本.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

主机详细信息.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
4

1 回答 1

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

但无论如何,请仔细阅读如何制作库存,因为它将解决您的大部分问题。

于 2020-05-16T11:17:20.903 回答