一个或多个未定义的变量:'dict object'没有属性'ansible_ssh_host'

时间:2016-07-28 11:09:28

标签: ansible openstack ansible-playbook

我正在尝试使用Ansible AIO安装Openstack,我运行了bootstrap-ansible.shbootstrap-aio.sh脚本和更新的openstack_user_config.yml, user_variables.yml文件,然后启动了run-playbook.sh脚本,它失败并出现以下错误:

  

任务:[openstack_hosts |删除主机文件条目脚本] *********************

     

致命:[] => {'msg':“AnsibleUndefinedVariable:一个或多个未定义的变量:'dict object'没有属性'ansible_ssh_host'”,'failed':True}

     

致命:[] => {'msg':“AnsibleUndefinedVariable:一个或多个未定义的变量:'dict object'没有属性'ansible_ssh_host'”,'failed':True}

您能帮忙找出问题发生的位置以及如何解决问题吗?

2 个答案:

答案 0 :(得分:1)

我刚刚在Docker上解决了同样的问题:)

'dict object'指的是从user_variables.yml文件创建的字典对象(可能是因为Ansible编译器使用Python,但我不确定)。

基本上,'ansible_ssh_host'必须是user_variables.yml中顶级对象的内部字段,要么设置不正确,要么调用不正确。

解决问题:

  1. 检查'ansible_ssh_host'的值是否确实存在。 (对我而言,当我应该host : "a.b.c"时,我正在做host : "a.b.x.c"
  2. 检查'ansible_ssh_host'是否拼写正确。
  3. 检查user_variables.yml是否没有语法错误:“---”在顶部,外层对象没有空格,内层配对从2个空格开始,任何外部调用变量都使用语法{{1 }}
  4. 希望这有帮助。

答案 1 :(得分:0)

我在从 Hashicorp Vault 提取机密时遇到了问题。 除了那个秘密之外的所有秘密都在起作用,我得到了'dict object' has no attribute 'git' 问题是秘密在 kebab-case 而不是 snake_case

Ansible 根本不喜欢这个,我花了很长时间才抓住它。