相关疑难解决方法(0)

Ansible.覆盖单个字典键

我正在使用ansible来管理生产以及流浪盒的配置.我有默认值的文件:group_vars/all.

---
env: prod
wwwuser: www-data

db:
    root_pwd: root_pwd
    pdo_driver: pdo_mysql
    host: localhost
    name: test
    user: test
    pwd: test
    charset: utf8

domain: somedomain
projectdir: /var/www/application
webrootdir: "{{ projectdir }}/web"
Run Code Online (Sandbox Code Playgroud)

host_vars/vagrantbox中我希望有类似的东西:

db:
    root_pwd: super_easy_password
Run Code Online (Sandbox Code Playgroud)

但是这个完全超越db dictrionary,而我想覆盖单键.怎么实现呢?

更新1 刚用ansible.cfg检查:

[defaults]
host_key_checking=false
hash_behaviour=merge
Run Code Online (Sandbox Code Playgroud)

groups_vars /所有

db:
    root_pwd: some_strong_pwd
    pdo_driver: pdo_mysql
    host: localhost
    name: dbname
    user: dbuser
    pwd: some password
    charset: utf8
Run Code Online (Sandbox Code Playgroud)

host_vars/vagrantbox

db:
    root_pwd: root
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

One or more undefined variables: 'dict object' has no attribute 'name'
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

python yaml ansible

26
推荐指数
3
解决办法
2万
查看次数

在 Ansible 中合并来自 group_vars 的嵌套变量

看起来 Ansible 无法从 group_vars 合并嵌套变量。我的结构是这样的 hosts.ini::

[common:children]
frontend
backend

[frontend]
server1

[backend]
server2
Run Code Online (Sandbox Code Playgroud)

groups-vars目录中我有:

common.yaml

start_of_nested variables:
  var1: value1
  var2: value2
Run Code Online (Sandbox Code Playgroud)

frontend.yaml

start_of_nested variables:
  var3: value3
  var4: value4
Run Code Online (Sandbox Code Playgroud)

backend.yaml

start_of_nested variables:
  var5: value5
  var6: value6
Run Code Online (Sandbox Code Playgroud)

当我检查server1变量时:

ansible server1 -m debug -a "var=hostvars[inventory_hostname]"
Run Code Online (Sandbox Code Playgroud)

我仅从以下位置获取变量frontend.yaml

"start_of_nested": {
            "var3": "value3",
            "var4": "value4"
}
Run Code Online (Sandbox Code Playgroud)

但我期待它们会与common.yaml变量合并,我会得到类似的东西

"start_of_nested": {
            "var1": "value1",
            "var2": "value2",
            "var3": "value3",
            "var4": "value4"
}
Run Code Online (Sandbox Code Playgroud)

Ansible 有没有办法合并group_vars它所属主机的嵌套变量?

ansible

7
推荐指数
0
解决办法
5187
查看次数

标签 统计

ansible ×2

python ×1

yaml ×1