ansible - 如何修复 'ansible.utils.unsafe_proxy.AnsibleUnsafeText object' 没有属性 'value' 错误

标签 ansible ansible-2.x ansible-inventory ansible-template

我已经在不同的角色中定义了 nginx_upstreams 变量,该变量又使用了 geerlingguy.nginx 角色,并且我还指定了“名称”、“策略”和“服务器”,但是当我运行这个角色时,ansible 会抛出给定的错误下面就好像它无法访问为 nginx_upstream 定义的“名称”变量。

这是抛出错误的任务

- name: Create upstream files
  file:
    path: "{{ nginx_vhost_path }}/{{ item.name + '.conf' }}"
    state: touch
  with_items: "{{ nginx_upstreams }}"

这是在定义“nginx_upstreams”的地方使用的角色。
- name: "Configure specific nginx service for concert to connect on remote host"
  include_role:
    name: geerlingguy.nginx
  vars:
    #for configuration specific to each server
    nginx_upstreams:
      - name: SOME_UPSTREAM_NAME
        strategy: SOME_STRATEGY
        servers: "{{ SOME_SERVER }}"

这是我得到的错误-
fatal: [IP]: FAILED! => {"msg": "The task includes an option with an undefined variable. The error was: 'ansible.utils.unsafe_proxy.AnsibleUnsafeText object' has no attribute 'value'\n\nThe error appears to be in '/etc/ansible/roles/geerlingguy.nginx/tasks/vhosts.yml': line 29, column 3, but may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe offending line appears to be:\n\n\n- name: Create upstream files\n  ^ here\n"}

最佳答案

这是由最有可能循环使用的空白变量引起的。
仔细检查您的变量设置是否正确。

例如,如果您失败的任务是这样的:

- name: Ensure MySQL databases are present.
  mysql_db:
    name: "{{ item.name }}"
    collation: "{{ item.collation | default('utf8_general_ci') }}"
    encoding: "{{ item.encoding | default('utf8') }}"
    state: "{{ item.state | default('present') }}"
  with_items: "{{ mysql_databases }}"

添加调试任务:
---
- name: "Debug"
  debug:
    var: mysql_databases
- name: Ensure MySQL databases are present.
  mysql_db:
    name: "{{ item.name }}"
    collation: "{{ item.collation | default('utf8_general_ci') }}"
    encoding: "{{ item.encoding | default('utf8') }}"
    state: "{{ item.state | default('present') }}"
  with_items: "{{ mysql_databases }}"

然后在该 mysql 角色中搜索 atom(set_fact 可以轻松进行跨目录搜索)对于那个 var(在这种情况下 mysql_databases
您很可能将事实设置为空的代理对象

关于ansible - 如何修复 'ansible.utils.unsafe_proxy.AnsibleUnsafeText object' 没有属性 'value' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57333424/

相关文章:

ansible - 有什么方法可以让 Ansible 完全按照我给出的命令执行命令吗?

linux - 无法在ansible yml脚本中执行 block 模块

ansible - 使用 with_items 和寄存器进行迭代

如果库存仅为本地主机,则与多个组共享 ansible 变量

Ansible 模块停止和启动 `ssh` 服务

amazon-web-services - Ansible EC2 动态 list - 包含连字符的标签

python - Ansible 将字典项映射到列表

Ansible 服务任务失败,错误为 "Could not find the requested service XXX"

ansible - 如何从 Ansible 列表中删除项目?

Ansible delegate_to 任务尝试 ssh