gpt4 book ai didi

Ansible 未加载 "all"组变量

转载 作者:行者123 更新时间:2023-12-01 21:56:42 25 4
gpt4 key购买 nike

我有一个非常简单的 Ansible 设置。

group_vars/all/main.yml:

symfony:
env: prod
owner: capistrano
cache_owner: files
cache_group: files
deploy_base: /opt/symfony
keep_count: 2

deploy.yml:

# ...
- name: roll forward latest release
symfony_preload: version="{{ symfony.deploy_version }}" deploy_base="{{ symfony.deploy_base }}"

事实上,这个模块确实可以工作,只是 Ansible 似乎没有正确加载变量。我这样调用 Ansible:

/usr/bin/ansible-playbook deploy.yml -i inventory/hosts \
-e deploy_hosts=stg-web \
-e symfony.deploy_version="$UPSTREAM_BUILD_NUMBER" \
-e symfony.env="stg"

这失败了:

TASK [roll forward latest release] *********************************************
fatal: [webserver1]: FAILED! => {"failed": true, "msg": "'symfony' is undefined"}

这里出了什么问题? Ansible 是否会从命令行用自己的变量清除我的变量?

最佳答案

需要 2 样东西:

  1. 在 ansible.cfg 中指定 hash_behaviour = merge
  2. 以 JSON 格式传递哈希 --extra-var:

    → ansible-playbook playbooks/variables-demo.yml -e '{"symfony": {"deploy_version": "y", "deploy_base": "/some/other"} }'

关于Ansible 未加载 "all"组变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36634191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com