sud*_*a90 6 ansible ansible-role
我是ansible的新手,正在探索相关角色。文档链接
我没有碰到过的文档是requirements.yml文件的放置位置。
例如,如果我site.yml看起来像这样:
---
- name: prepare system
hosts: all
roles:
- role1
Run Code Online (Sandbox Code Playgroud)
而且,可以说
通常,ansible星系具有以下结构:
??? 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
Run Code Online (Sandbox Code Playgroud)
依赖项已添加到中meta/main.yml。假设,role1在此文件中标记的依存关系如下(role2同样如此):
dependencies:
- role: role2
- role: role3
Run Code Online (Sandbox Code Playgroud)
而且,我还有一个requirements.yml看起来像的文件:
---
- src: some git link1
version: master
name: role2
- src: some git link2
version: master
name: role3
Run Code Online (Sandbox Code Playgroud)
我的问题:如何将这个requirements.yml文件放置在role1上?
我了解需要通过命令安装要求,
ansible-galaxy install -r requirements.yml -p roles/
Run Code Online (Sandbox Code Playgroud)
而且,我可以对role1执行此操作,但是如何对role2自动执行此操作?是否需要以这种方式手动解决并安装后续的依赖项,还是有更好的选择?
从技术上讲,requirements.yml只要您在ansible-galaxy install命令中反映正确的路径,就可以将文件放置在任意位置。
同时,如果您想从Ansible Tower / Awx中运行剧本,建议您遵循Ansible Tower的要求,然后将requirements.yml文件放入<project-top-level-directory>/roles/requirements.yml
关于角色之间的依赖关系,ansible-galaxy在安装过程中遇到角色时,它们可以自己跟随它们。因此,您无需在requirements.yml顶级中指定所有它们。您只需要在每个外部角色中正确指定依赖项即可。
meta/main.yml角色1dependencies:
- 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
Run Code Online (Sandbox Code Playgroud)
meta/main.yml角色2dependencies:
- 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
Run Code Online (Sandbox Code Playgroud)
roles/requirements.yml---
- src: https://my.scm.com/my-ansible-roles/role1.git
scm: git
version: master
name: role1
Run Code Online (Sandbox Code Playgroud)
为了尽可能详尽,这就是我现在通常在项目中所做的工作,以处理本地以及仅本地/项目角色的依赖关系
ansible-project-dir
???? roles
| ???? locally-versionned-role1
| ???? locally-versionned-role1
| ???? ...
| ???? requirements.yml
| ???? .gitignore
???? ansible.cfg
???? playbook1.yml
???? playbook2.yml
Run Code Online (Sandbox Code Playgroud)
ansible.cfg我roles通过设置强制角色搜索和下载在本地目录中roles_path = roles,因此用户ansible-galaxy install无需-p参数即可使用。
roles/requirements.yml上面已经讨论过了。只需将对顶级外部组件(即,在项目中未版本化)的依赖项列出为银河角色名称或git uris。如果您需要完全签出这些角色以稍后对它们进行git commit / 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-versionned-role*/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1290 次 |
| 最近记录: |