如何使用现有项目中的 ansible 私有角色?

如何使用现有项目中的 ansible 私有角色?

对于我最初的 ansible-awx 设置,我将我的角色、清单和剧本放入一个由 ssh 密钥身份验证保护的 GIT 存储库中。HTTPS 似乎在 Ansible-AWX 7.0 中被破坏了

我将 GIT 存储库作为项目导入到 ansible-awx

我已经设法引用剧本和清单。我该如何使用 GIT 存储库中的角色?

我尝试使用以下 requirements.yml:

- src: ansible-awx@<some azure devops repo>
  name: hosting
  scm: git

尝试运行将托管角色应用到我的库存的剧本时,无法解析托管角色。

我已经尝试了以下操作:

  • 将角色外包给不同的仓库
  • 在 src 中使用 git personal token

没有任何成功。

非常感谢您的帮助。

更新: 实际设置。1. 角色放置在单独的 GIT Repo 中

/
- defaults
- files
- handlers
- meta
- tasks
- templates
- vars
  1. 角色存储库已添加为具有正确凭据(SSH 密钥)的项目

产生的错误消息:

Identity added: /tmp/awx_5_kjl4ecco/artifacts/5/ssh_key_data (/tmp/awx_5_kjl4ecco/artifacts/5/ssh_key_data)
ERROR! the role 'celum-hosting' was not found in /var/lib/awx/projects/_8__cps_tc_git/playbooks/hosting/roles:/var/lib/awx/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles:/var/lib/awx/projects/_8__cps_tc_git/playbooks/hosting
The error appears to be in '/var/lib/awx/projects/_8__cps_tc_git/playbooks/hosting/playbook_applyhostingrole.yml': line 4, column 7, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
  roles:
    - { role: celum-hosting }
      ^ here

答案1

如果您的 git 路径中有一个剧本/,那么该剧本所需的角色必须位于/roles同一基本目录中的路径中。您无法“共享”角色。这是 Ansible 的一个“问题”。以前,工作目录可能是搜索路径的基础,roles但这是一种安全风险,已被删除。Ansible 始终在运行剧本的文件夹中查找角色文件夹。

因此 - 您不能在 AWX 中为角色设立一个 Git 存储库,为剧本设立另一个 Git 存储库,因为它将两者都放在不同的位置。

也许 - 您可以做的是将角色存储库作为剧本中的 Git 子模块,在这种情况下,签出剧本存储库也会签出角色存储库。但在这种情况下,您永远无法在剧本存储库中包含角色。

相关内容