我正在尝试使用Ansible AIO安装Openstack,我运行了bootstrap-ansible.sh
,bootstrap-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}
您能帮忙找出问题发生的位置以及如何解决问题吗?
答案 0 :(得分:1)
我刚刚在Docker上解决了同样的问题:)
'dict object'
指的是从user_variables.yml
文件创建的字典对象(可能是因为Ansible编译器使用Python,但我不确定)。
基本上,'ansible_ssh_host'
必须是user_variables.yml
中顶级对象的内部字段,要么设置不正确,要么调用不正确。
解决问题:
'ansible_ssh_host'
的值是否确实存在。 (对我而言,当我应该host : "a.b.c"
时,我正在做host : "a.b.x.c"
。'ansible_ssh_host'
是否拼写正确。user_variables.yml
是否没有语法错误:“---”在顶部,外层对象没有空格,内层配对从2个空格开始,任何外部调用变量都使用语法{{1 }} 希望这有帮助。
答案 1 :(得分:0)
我在从 Hashicorp Vault 提取机密时遇到了问题。
除了那个秘密之外的所有秘密都在起作用,我得到了'dict object' has no attribute 'git'
问题是秘密在 kebab-case
而不是 snake_case
。
Ansible 根本不喜欢这个,我花了很长时间才抓住它。