[英]undefined variable on ansible_facts
在继续我的剧本之前,我正在尝试等待服务启动。 我使用下面的文档作为起点。 无论我使用什么服务来测试它,我都会收到相同的错误消息。 我尝试在调试 output 和相同的 output 中输入不同的知名服务。我已经打印出整个 ansible_facts.services 并验证我想要运行它的服务在那里。 我错过了什么?
https://sleeplessbeastie.eu/2022/01/12/how-to-wait-until-service-is-running-inside-ansible-playbook/
致命的:[rke-master01]:失败:=> {“msg”。 “该任务包含一个带有未定义变量的选项:错误是。‘dict object’没有属性‘rke2-server’\n\n错误似乎在‘/Users/jolim/Documents/Ansible/roles/rke2/ tasks/main:yml',第 139 行,第 7 列。但可能\n位于文件的其他位置,具体取决于具体的语法问题:\n\n违规行似乎是:\n\n\n - name: services dump\ n ^ 这里\n"}
- name: "Wait until rke2-server service is running"
ansible.builtin.service_facts:
register: temp__service_facts
# until: temp__service_facts.ansible_facts.services.rke2-server.state == 'running'
# retries: 10
# delay: 6
- name: services dump
debug:
msg: "{{ temp__service_facts.ansible_facts.services['rke2-server'].state }}"
rke2-server所在服务的output为:
"rke2-agent.service": {
"name": "rke2-agent.service",
"source": "systemd",
"state": "stopped",
"status": "disabled"
},
"rke2-server.service": {
"name": "rke2-server.service",
"source": "systemd",
"state": "running",
"status": "enabled"
},
当你写这个时:
msg: "{{ temp__service_facts.ansible_facts.services[ssh] | to_nice_json }}"
您正在尝试使用名为ssh
的变量的值在temp__service_facts.ansible_facts.services
字典中查找值。 没有这样的变量,所以你可以'ssh
is undefined'错误。
要引用文字字符串,请将其放在引号中:
msg: "{{ temp__service_facts.ansible_facts.services['ssh'] | to_nice_json }}"
或者继续使用点符号 isstead:
msg: "{{ temp__service_facts.ansible_facts.services.ssh | to_nice_json }}"
这两种语法是等价的。
发现了问题。 看起来 rke2-server 被称为 rke2-server.service 所以我必须使用(services['rke2-server.service'])
来让它工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.