【发布时间】:2020-08-28 05:53:40
【问题描述】:
我想从我的 ansible-playbook 部署多个 VMS,所以我使用了 split 功能,我得到了 dict does not have user_inout 错误。请看我的代码。
代码:
- name: os system
pause:
prompt: |
Which os do you want to use?
1- Windows Server
2- CentOS_7
3- CentOs_8
4- Ubuntu
5- Others
register: os_system
- set_fact:
o_name: "{{ os_system.user_input.split(',') }}"
- name: Domain Decision
pause:
prompt: Do you want your PC in Domain
register: decision
when: 'item|string == "1"'
with_items:
- "{{ o_name }}"
- set_fact:
dec: "{{ decision.user_input.split(',') }}"
现在我真正的问题是,如果用户选择选项 1,2,那么它将被 set_fact 分割为 os_system,并根据该输入决定域决策,我的主要问题是,虽然任务位于 set_fact 的决定,它会给我这样的错误:
错误: 致命:[x.x.x.x]:失败! => { "msg": "任务包含一个带有未定义变量的选项。错误是:'dict object' has no attribute 'user_input'\n\n错误似乎在 '/home/x.x.x.x/sites/playbook.yml' : 第 82 行,第 6 列,但可能\n位于文件中的其他位置,具体取决于确切的语法问题。\n\n违规行似乎是:\n\n\n - set_fact:\n ^ here\n" }
如果我从任务域决策中删除循环,那么 set_fact 工作得非常完美。
【问题讨论】:
标签: python-3.x ansible vmware