【发布时间】:2023-04-08 02:38:01
【问题描述】:
尝试在我的模板中使用预定义变量时,我有点困惑。我的目的是我希望我的 template.xml 文件包含已在 vars yaml 文件中定义的正确信息。
例如,对于每个 namevm,每个模板都已经包含在 vars 文件中定义的每个信息。但不幸的是,当我运行我的 playbook 时,我收到以下错误消息,指出变量 'vmname' 未定义,我对此感到困惑。
你知道我错过了哪一部分吗?
TASK [createvm : modify db template] ********************************************
fatal: [127.0.0.1]: FAILED! => {
"msg": "The task includes an option with an undefined variable. The error was : 'list object' has no attribute 'vmname'. The offending line appears to be:\n\n\n- name: modify db template\n ^ here\n" }
我的剧本是什么样子的:
- name: Prepare DB component
hosts: 127.0.0.1
connection: local
roles:
- { role: "createvm" }
我的角色/createvm/tasks/main.yml 是什么样的:
- name: modify db template
template:
src: template.xml
dest: /home/synthesizer/{{ settings.vmname }}.xml
vars:
settings: "{{ dbserver }}"
- name: modify loadbalancer template
template:
src: template.xml
dest: /home/synthesizer/{{ settings.vmname }}.xml
vars:
settings: "{{ loadbalancer }}"
- name: modify forwarder template
template:
src: template.xml
dest: /home/synthesizer/{{ settings.vmname }}.xml
vars:
settings: "{{ forwarder }}"
这是角色/createvm/vars/main.yml 的样子:
loadbalancer:
- vmname: elbi1
memory: 1024
cpu: 2
- vmname: elbi2
memory: 2048
cpu: 3
forwarder:
- vmname: efwe1
memory: 1024
cpu: 1
- vmname: efwe2
memory: 4096
cpu: 3
dbserver:
- vmname: dibi1
memory: 1024
cpu: 3
- vmname: dibi2
memory: 2048
cpu: 1
最后这就是我的角色/createvm/templates/templates.xml 的样子:
<name>{{settings.vmname}}</name>
<memory unit='KiB'>{{settings.memory}}</memory>
<vcpu placement='static'>{{settings.cpu}}</vcpu>
【问题讨论】:
-
settings.namevm 对你有用吗?您可能需要检查 namevm 与 vmname 的使用情况。
-
@VladimirBotka 尝试更改为 settings.namevm 但仍然相同的错误列表对象没有属性“namevm”