如何将本地角色与从 ansible-galaxy 加载的角色分开?
How to keep local roles separated from the ones loaded from ansible-galaxy?
我观察到从 galaxy 下载的角色安装在 roles/
目录中,我们已经有内部角色,因此很难区分外部角色和内部角色。
有没有办法把它们放在不同的目录中,这样我们就可以避免混淆?
在大多数情况下,我希望有一个正在更新星系的脚本,并且我们不会在内部修改它们。
我认为没有标准的方法可以做到这一点,但您可以利用 Ansibles 行为来发挥自己的优势。
Ansible 在两个位置搜索角色:
- 在
roles
相对于你的 playbook 的目录中
- 您在
ansible.cfg
中配置的路径
您现在需要做什么取决于您实际存储角色的位置。我们正在存储我们与剧本相关的角色,因此所有内容都在同一个 git 存储库中。
现在您可以define in your ansible.cfg
在其他文件夹中查找角色:
roles_path=./galaxy_roles
ansible-galaxy
将默认将角色安装到 roles_path
的第一个找到的路径中,因此如果您有多个角色路径,请确保首先添加 galaxy 文件夹。您不需要明确添加 roles
文件夹。默认情况下,Ansible 总是在 ./roles
文件夹内搜索角色,相对于 playbook。
或者您也可以指示 galaxy 安装到不同的位置:
ansible-galaxy install --roles-path=./galaxy_roles foo
如果您有 internal/custom 并不总是与剧本相关的角色,那么@udonhan 继承答案可能还不够,我的意思是全局角色。
您可以在 ansible.cfg 文件中管理多个角色路径,因此您可以在您的项目路径中定义一个 ansible.cfg 文件:
[defaults]
roles_path = ./roles:./roles_internal
“./roles”路径可用于 ansible-galaxy 个角色,“./roles_internal”可用于您的 internal/custom 个角色
现在当你执行
ansible-galaxy install -r requeriments.yml
Galaxy 角色默认安装在“./roles”中
注意:您必须确保未设置 ANSIBLE_ROLES_PATH 环境变量,否则它将覆盖 ansible.cfg 设置。用于测试:
unset ANSIBLE_ROLES_PATH
我观察到从 galaxy 下载的角色安装在 roles/
目录中,我们已经有内部角色,因此很难区分外部角色和内部角色。
有没有办法把它们放在不同的目录中,这样我们就可以避免混淆?
在大多数情况下,我希望有一个正在更新星系的脚本,并且我们不会在内部修改它们。
我认为没有标准的方法可以做到这一点,但您可以利用 Ansibles 行为来发挥自己的优势。
Ansible 在两个位置搜索角色:
- 在
roles
相对于你的 playbook 的目录中 - 您在
ansible.cfg
中配置的路径
您现在需要做什么取决于您实际存储角色的位置。我们正在存储我们与剧本相关的角色,因此所有内容都在同一个 git 存储库中。
现在您可以define in your ansible.cfg
在其他文件夹中查找角色:
roles_path=./galaxy_roles
ansible-galaxy
将默认将角色安装到 roles_path
的第一个找到的路径中,因此如果您有多个角色路径,请确保首先添加 galaxy 文件夹。您不需要明确添加 roles
文件夹。默认情况下,Ansible 总是在 ./roles
文件夹内搜索角色,相对于 playbook。
或者您也可以指示 galaxy 安装到不同的位置:
ansible-galaxy install --roles-path=./galaxy_roles foo
如果您有 internal/custom 并不总是与剧本相关的角色,那么@udonhan 继承答案可能还不够,我的意思是全局角色。
您可以在 ansible.cfg 文件中管理多个角色路径,因此您可以在您的项目路径中定义一个 ansible.cfg 文件:
[defaults]
roles_path = ./roles:./roles_internal
“./roles”路径可用于 ansible-galaxy 个角色,“./roles_internal”可用于您的 internal/custom 个角色
现在当你执行
ansible-galaxy install -r requeriments.yml
Galaxy 角色默认安装在“./roles”中
注意:您必须确保未设置 ANSIBLE_ROLES_PATH 环境变量,否则它将覆盖 ansible.cfg 设置。用于测试:
unset ANSIBLE_ROLES_PATH