gpt4 book ai didi

ansible - 为什么我不能提示要由多个剧本共享的变量(可使用1.6.5)

转载 作者:行者123 更新时间:2023-12-03 13:20:02 25 4
gpt4 key购买 nike

我已经提炼了一部有三部戏的剧本。目标是在一个游戏中从提示中收集数据库密码,然后在其他两个游戏中使用相同的密码。

---

- name: database password
hosts:
- webservers
- dbservers
vars_prompt:
- name: "db_password"
prompt: "Enter Database Password for databse user root"
default: "root"

- hosts: dbservers
tasks:
- command: echo {{db_password | mandatory }}


- hosts: webservers
tasks:
- command: echo {{db_password | mandatory }}

它失败,如下所示。
Enter Database Password for databse user root [root]: 

PLAY [database password] ******************************************************

GATHERING FACTS ***************************************************************
ok: [vc-dev-1]

PLAY [dbservers] **************************************************************

GATHERING FACTS ***************************************************************
ok: [vc-dev-1]

TASK: [command echo {{db_password | mandatory}}] ***************************
fatal: [vc-dev-1] => One or more undefined variables: 'db_password' is undefined

FATAL: all hosts have already failed -- aborting

PLAY RECAP ********************************************************************
to retry, use: --limit @.../playbook2.retry

vc-dev-1 : ok=3 changed=0 unreachable=1 failed=0

最佳答案

我发现以下使用set_fact将用户输入的变量分配给具有playbook作用域的变量的解决方法。似乎var_prompt变量与事实变量和其他变量不同,它的作用域受到限制,因此提示内容不是整个剧本。我不确定这是功能还是错误。

---

- name: database password
hosts:
- webservers
- dbservers
vars_prompt:
- name: "db_password"
prompt: "Enter Database Password for databse user root"
default: "root"
tasks:
- set_fact:
db_root_password: "{{db_password}}"

- hosts: dbservers
tasks:
- command: echo {{db_root_password | mandatory }}


- hosts: webservers
tasks:
- command: echo {{db_root_password | mandatory }}

关于ansible - 为什么我不能提示要由多个剧本共享的变量(可使用1.6.5),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24444964/

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