Git 仓库
把表单、变量文件、配置和 playbook 保存在 git 中
面向把表单、配置和 playbook 保存在 git 中的管理员:仓库可以包含什么,以及哪个来源优先。
仓库的用途
仓库是 AnsibleForms 克隆并保持更新的 git 远程仓库,每个仓库都有一些开关,用于说明它包含什么:
| 开关 | AnsibleForms 从中读取的内容 | 仓库中的文件夹 |
|---|---|---|
| 用于配置? | 包含类别、角色和常量的 config.yaml | 根目录 |
| 用于表单? | 表单文件(设计器也会把它们保存回该仓库)及其变量文件 | forms 或根目录;变量文件在 vars 中 |
| 用于 playbook? | 作业运行的 Ansible playbook | playbooks 或根目录 |
| 用于工作流? | 工作流文件,设计器也会把它们保存回该仓库 | 任意文件夹 |
| 用于清单? | 一个以仓库命名的清单,表单通过 inventory: 引用它 | 根目录: inventory.yaml 、 group_vars 、 host_vars |
没有子文件夹时,使用仓库根目录。一个仓库可以包含所有内容;如果拆分成多个仓库,只有用于 表单、用于工作流和用于清单可以在多个仓库上开启:其他开关只取第一个仓库, 并记录一条警告。
每个仓库都会被克隆到 REPO_PATH 下以其名称命名的子文件夹中。
一个仓库包含所有内容
单个仓库可以包含表单、变量文件、配置和 playbook,只需开启相应的开关,每类内容使用一个子文件夹。
forms-repo/
├── config.yaml # categories, roles and constants
├── forms/ # form files (*.yaml)
├── playbooks/ # Ansible playbooks and roles
└── vars/ # vars files used by forms
每种用途一个仓库
使用独立的仓库可以让各个团队负责自己的部分,每个仓库开启一个开关,文件直接放在根目录中。
| 仓库 | 开关 | 根目录中的内容 |
|---|---|---|
af-config | 用于配置? | config.yaml |
af-forms-network 、 af-forms-storage | 用于表单? | 各团队的表单文件,合并到一个列表中 |
af-playbooks | 用于 playbook? | playbook 和角色 |
只有表单可以来自多个仓库;配置和 playbook 各自只能来自一个仓库。变量文件来自第一个包含 vars 文件夹的表单仓库中的该文件夹。
仓库如何与本地文件夹结合
仓库内容会替代对应的本地文件夹;下表总结了每类文件从哪里读取。
| 内容 | 读取来源,以第一个匹配的为准 |
|---|---|
| 配置 | 1. 数据库,当配置保存在数据库中时( ENABLE_CONFIG_IN_DATABASE ) 2. 用于配置仓库中的 config.yaml 3. 没有仓库用于配置时,用于表单仓库中的 config.yaml 4. CONFIG_PATH |
| 表单 | 所有用于表单的仓库加上 FORMS_STAGING_PATH ;只有在没有这类仓库时才使用 FORMS_FOLDER_PATH |
| Playbook | 用于 playbook 的仓库,否则为 ANSIBLE_PATH |
| 变量文件 | 第一个包含 vars 文件夹的用于表单仓库中的该文件夹,否则为 VARS_FILES_PATH |
| 工作流 | 所有用于工作流的仓库加上 WORKFLOWS_PATH ,一起使用 |
来自多个仓库的表单会合并到一个列表中。当其中两个仓库包含同名表单时,保留先加载的那个, 并记录警告 skipping duplicate form <name> ,因此请保持表单名称在各仓库之间唯一。
故障排除
大多数问题会显示在拉取列以及显示上次拉取的输出(或显示上次推送的输出)中,其中包含 git 自己的 错误消息。
- 仓库克隆或拉取失败:认证、已知 主机和本地更改。
- 表单仓库尚未克隆:在首次克隆之前,设计器 无法保存。
- 卡在
running的仓库会被重置为failed:重启后,在下一次启动时;运行其 git 操作的节点 停止响应 2 分钟后,一分钟内;以及无论如何在 2 小时后。请再次运行拉取。
本节内容
每个主题都有单独的页面: