我正试图等待服务开始,然后继续我的剧本。我正在使用下面的文档作为起点。不管我用什么服务来测试这一点,我总是收到相同的错误消息。我尝试在调试输出和相同输出中输入不同的知名服务。我已经打印出了整个ansible_facts.services,并验证了我想要运行的服务就在那里。我遗漏了什么?
https://sleeplessbeastie.eu/2022/01/12/how-to-wait-until-service-is-running-inside-ansible-playbook/
失败!'/Users/jolim/Documents/Ansible/roles/rke2/tasks/main.yml':{"msg":“任务包含一个带有未定义变量的选项。错误是:'dict对象‘没有属性’rke2-server‘\n\n该错误出现在’/Users/jolim/Documents/Ansible/roles/rke2/tasks/main.yml‘:行139,第7列中,但可能\n在文件的其他地方,这取决于具体的语法问题。\n\n错误行显示为:\n\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所在的服务的输出是:
"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"
}, 发布于 2022-10-08 15:18:06
当你写这个时:
msg: "{{ temp__service_facts.ansible_facts.services[ssh] | to_nice_json }}"您正在尝试使用名为temp__service_facts.ansible_facts.services的变量的值在ssh字典中查找值。没有这样的变量,所以您可以将'ssh定义为“error”。
若要引用文字字符串,请将其放在引号中:
msg: "{{ temp__service_facts.ansible_facts.services['ssh'] | to_nice_json }}"或者继续使用点表示法isntead:
msg: "{{ temp__service_facts.ansible_facts.services.ssh | to_nice_json }}"这两个语法是等价的。
发布于 2022-10-08 21:17:25
发现了问题。看来rke2服务器名为rke2-server.service,因此我必须使用(services['rke2-server.service'])才能使它工作。
https://stackoverflow.com/questions/73998058
复制相似问题