【问题标题】:undefined variable on ansible_factsansible_facts 上的未定义变量
【发布时间】:2022-10-08 23:18:06
【问题描述】:

我正在尝试等待服务启动,然后再继续我的剧本。我使用下面的文档作为起点。我使用什么服务来测试它并不重要,我不断收到相同的错误消息。我试图在调试输出和相同的输出中输入不同的知名服务。我已经打印出了整个 ansible_facts.services 并验证了我想要运行它的服务是否存在。我错过了什么?

https://sleeplessbeastie.eu/2022/01/12/how-to-wait-until-service-is-running-inside-ansible-playbook/

致命:[rke-master01]:失败! => {"msg": "任务包含一个选项 带有未定义的变量。错误是:“ssh”未定义\n\n 错误似乎在 '/Users/user1/Documents/Ansible/roles/rke2/tasks/main.yml':第 139 行, 第 7 列,但可能\n位于文件中的其他位置,具体取决于确切的 语法问题。\n\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[ssh] | to_nice_json }}"

【问题讨论】:

    标签: ansible


    【解决方案1】:

    当你写这个:

    msg:  "{{ temp__service_facts.ansible_facts.services[ssh] | to_nice_json }}"
    

    您正在尝试使用 temp__service_facts.ansible_facts.services 字典中查找一个值变量的值命名为ssh。没有这样的变量,所以你可以 'ssh is undefined` 错误。

    要引用文字字符串,请将其放在引号中:

    msg:  "{{ temp__service_facts.ansible_facts.services['ssh'] | to_nice_json }}"
    

    或者只是继续使用点表示法:

    msg:  "{{ temp__service_facts.ansible_facts.services.ssh | to_nice_json }}"
    

    这两种语法是等价的。

    【讨论】:

      猜你喜欢
      • 2018-05-13
      • 2015-09-11
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 1970-01-01
      • 2021-02-27
      • 2015-06-01
      • 2015-01-21
      相关资源
      最近更新 更多