我有一堆ansible galaxy角色和一堆自定义角色。
问题是我无法使用Vagrantfile :ansible provisionner同时加载自定义角色和galaxy角色。
没有vagrant的情况下,这个命令可以正常工作,因为我添加了ANSIBLE_ROLES_PATH环境变量:
我可以看到Ansible自动加载
下面是目录结构,以便更好地了解情况:
问题是我无法使用Vagrantfile :ansible provisionner同时加载自定义角色和galaxy角色。
没有vagrant的情况下,这个命令可以正常工作,因为我添加了ANSIBLE_ROLES_PATH环境变量:
ANSIBLE_ROLES_PATH=./custom_roles ansible-playbook project.yml --inventory dev.ini -vvvv --ask-sudo-pass
我的 Vagrant 配置如下:
config.vm.provision :ansible do |ansible|
ansible.raw_arguments = ['--timeout=300']
ansible.playbook = "project.yml"
ansible.verbose = "vvv"
ansible.groups = {
"env-dev:children" => ["app-web", "app-db"],
"app-web" => ["my-app"],
"app-db" => ["my-app"],
}
end
我可以看到Ansible自动加载
./roles
中的角色,但由于版本控制 (./roles
在我的.gitignore
文件中),我无法向该目录添加自定义角色。下面是目录结构,以便更好地了解情况:
- roles/
- postgresql/...
- php/...
- custom_roles/
- my-role-1/...
- my-role-1/...
- .gitignore <- ignore ./roles
- project.yml
- roles.yml
- dev.ini
- Vagrantfile
ANSIBLE_ROLES_PATH
目录中吗? - Wtower.gitignore
文件中忽略ansible galaxy角色,并提交我的自定义角色。我不应该在忽略文件中单独列出每个角色。 - Clément Prévost