gpt4 book ai didi

ansible - 在哪里放置用于 Ansible 的 requirements.yml 并使用它来解决依赖关系?

转载 作者:行者123 更新时间:2023-12-04 11:46:55 25 4
gpt4 key购买 nike

我是 ansible 的新手,正在探索依赖角色。 documentation link

我没有遇到文档是 - 在哪里放置 requirements.yml文件。

例如,如果我的 site.yml看起来像这样:

---
- name: prepare system
hosts: all
roles:
- role1

而且,让我们说
  • role1 依赖于 role2 和 role3
  • role2 依赖于 role4 和 role5

  • 通常,ansible-galaxy 具有以下结构:
    └── test-role
    ├── defaults
    │   └── main.yml
    ├── files
    ├── handlers
    │   └── main.yml
    ├── meta
    │   └── main.yml
    ├── README.md
    ├── tasks
    │   └── main.yml
    ├── templates
    ├── tests
    │   ├── inventory
    │   └── test.yml
    └── vars
    └── main.yml

    依赖项被添加到 meta/main.yml .假设,role1 在此文件中标记了依赖项,例如(对于 role2 也是如此):
    dependencies: 
    - role: role2
    - role: role3

    而且,我还有一个 requirements.yml文件看起来像:
    ---    
    - src: some git link1
    version: master
    name: role2
    - src: some git link2
    version: master
    name: role3

    我的问题:
    我把这个放在哪里 requirements.yml角色1的文件?

    我知道需要通过命令安装要求,
    ansible-galaxy install -r requirements.yml -p roles/

    而且,我可以为角色 1 执行此操作,但是如何为角色 2 实现自动化?是否需要以这种方式手动解析和安装连续的依赖项,还是有更好的方法?

    最佳答案

    从技术上讲,你可以把你的 requirements.yml只要您在 ansible-galaxy install 中反射(reflect)了正确的路径,就可以将文件放在任何您喜欢的位置。命令。
    同时,如果您想从 Ansible Tower/Awx 运行您的剧本,我建议您坚持使用 Ansible Tower requirements并把您的 requirements.yml文件在 <project-top-level-directory>/roles/requirements.yml关于角色之间的依赖关系,ansible-galaxy在安装过程中遇到它们时,能够自行跟踪它们。所以你不需要在 requirements.yml 中指定所有这些。 ,只有顶级的。您只需要在每个外部角色中正确指定您的依赖项。
    meta/main.yml对于角色 1

    dependencies:
    - src: https://my.scm.com/my-ansible-roles/role2.git
    scm: git
    version: master
    name: role2
    - src: https://my.scm.com/my-ansible-roles/role3.git
    scm: git
    version: master
    name: role3
    meta/main.yml角色2
    dependencies:
    - src: https://my.scm.com/my-ansible-roles/role4.git
    scm: git
    version: master
    name: role4
    - src: https://my.scm.com/my-ansible-roles/role5.git
    scm: git
    version: master
    name: role5
    roles/requirements.yml
    ---    
    - src: https://my.scm.com/my-ansible-roles/role1.git
    scm: git
    version: master
    name: role1
    为了尽可能详尽,这就是我现在通常在我的项目中处理本地依赖项以及本地/项目唯一角色的方法
    基本项目结构
    ansible-project-dir
    └─── roles
    | └─── locally-versioned-role1
    | └─── locally-versioned-role2
    | └─── ...
    | └─── requirements.yml
    | └─── .gitignore
    └─── ansible.cfg
    └─── playbook1.yml
    └─── playbook2.yml
    ansible.cfg我在本地强制角色搜索和下载 roles通过设置目录 roles_path = roles ,所以用户可以使用 ansible-galaxy install没有 -p范围。 roles/requirements.yml上面已经讨论过了。只需列出对顶级外部(即项目中未进行版本控制)的依赖项作为星系角色名称或 git uris。如果您需要完全 check out 这些角色以便稍后对它们进行 git commits/push,您可以使用 ansible-galaxy install -g -f -r roles/requirements roles/.gitignore
    # Ignore everything in roles dir
    /*
    # Except:
    # the .gitignore file
    !.gitignore
    # the requirements file
    !requirements.yml
    # Readme if you have one
    !README.md
    # and any specific role we want to version locally
    !locally-versioned-role*/


    关于ansible - 在哪里放置用于 Ansible 的 requirements.yml 并使用它来解决依赖关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55773505/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com