我的库存如下:
[Databases]
"DB1 - SQL 2012" ansible_host=DB1
"DB2 - SQL 2014" ansible_host=DB2
"DB3 - SQL 2017" ansible_host=DB3
我在多个任务中使用引号中的字符串作为{{inventory_hostname}},例如在vSphere中执行快照。关于ini清单中的Ansible文档,第一部分应该是";别名";不是inventoryhostname,而是alias不起作用,也许有人也可以解释这一点。
糟糕的是,我不能将剧本限制在一台主机上运行:
ansible-playbook test.yml --limit DB1 -->
[WARNING]: Could not match supplied host pattern, ignoring: DB1
ansible-playbook test.yml --limit "DB1 - SQL 2012" -->
Could not match supplied host pattern, ignoring: DB1
Could not match supplied host pattern, ignoring: -
Could not match supplied host pattern, ignoring: SQL
Could not match supplied host pattern, ignoring: 2012
我想正确的设置应该是这样的:
[Databases]
DB1_SQL-2012 invenvory_hostname="DB1 - SQL 2012" ansible_host=DB1
DB2_SQL-2014 inventory_hostname="DB2 - SQL 2014" ansible_host=DB2
我可以使用DB1_SQL-2012进行限制,但我希望保持库存尽可能干净。有人知道我如何将其限制为ansible_host,即使存在别名/inventory_hostname吗?
无论使用单独的文件还是一个文件作为清单:您决定使用"DB1 - SQL 2012"
这样的模式来唯一标识主机。虽然在我看来很奇怪,但这对Ansible来说是可以的。
但现在您想要通过查看定义的变量来缩写或标识主机。这被记录为无效。检查图案限制。