我正在尝试从Ansible docs 站点最佳实践部分创建站点替代目录布局。
下面是我在~/ansible_proj/windows_setup
中创建的布局(windows_setup
是一个Python虚拟环境):
.venv
inventories/
production/
hosts
group_vars/
windows
windows.yml
vault
windows_configure.yml
roles/
role1/
role2/
role3/
role4/
.gitignore # this contains 1 line produced by: echo 'vault' >> .gitignore
当我尝试运行剧本windows_configure.yml
时,如建议的这里 (参见第一个示例),使用
$ (.venv) cd ~/ansible_proj/windows_setup
$ (.venv) user@sname: ~/ansible_proj/windows_setup$ ansible-playbook
-i production windows_configure.yml --ask-vault-pass
错误是
Unable to parse /.../production as an inventory source
production hosts list is empty, only localhost is available
我必须指出hosts
文件的路径,如下所示:
$ (.venv) user@sname: ~/ansible_proj/windows_setup$ ansible-playbook
-i inventories/production/hosts windows_configure.yml --ask-vault-pass
为了让这一切顺利进行。
Q1.如何使用替代目录布局来使用production
(如文档所建议的那样)而不是使用inventories/production/hosts
来运行播放簿
在相同的目录结构中,如果我将windows_configure.yml
放置在playbooks/
中,并运行:
$ (.venv) user@sname: ~/ansible_proj/windows_setup$ ansible-playbook
-i inventories/production/hosts playbooks/windows_configure.yml
--ask-vault-pass
那么我就得到了这个错误
ERROR: the role 'role1' was not found in /.../playbooks/roles:/.../playbooks
Q2.在这个替代目录结构中,是否可以将所有的剧本放置在playbooks
目录中?
编辑
我已经尝试过到当前目录 (~/ansible_proj/windows_setup
) (它也包含了剧本windows_configure.yml
)。这是ansible.cfg
[defaults]
inventory = ~/ansible_proj/windows_setup/inventories/production
roles_path = ~/ansible_proj/windows_setup
当我跑的时候
$ (.venv) cd ~/ansible_proj/windows_setup
$ (.venv) user@sname: ~/ansible_proj/windows_setup$ ansible-playbook
-i production windows_configure.yml --ask-vault-pass
同样的错误会出现。
Unable to parse /.../production as an inventory source
production hosts list is empty, only localhost is available
发布于 2017-11-01 09:47:21
适用于Q1.:
看来这个问题是在这个github问题中讨论的--解决方案是使用inventories/production
。我对此进行了测试(在当前目录中没有任何ansible.cfg
文件),并且它工作了:
$ (.venv) user@sname: ~/ansible_proj/windows_setup$ ansible-playbook
-i inventories/production windows_configure.yml --ask-vault-pass
Q2.
看起来符号链接可能是一种方法--我不想这样做,所以我把剧本留在了根目录下,而不是在playbooks
目录中。然而,一些基于符号链接的解决方案出现在这里:1、2。我不确定是否有别的办法解决这个问题。
https://stackoverflow.com/questions/47059733
复制相似问题