Idem的Gitlab提供者插件
项目描述
idem的Gitlab提供者。
关于
使用idem管理Gitlab。
什么是POP?
此项目使用pop构建,它是Python实现的插件导向编程(POP)。POP旨在以新的方式结合计算历史中的概念和智慧,以解决现代计算问题。
更多信息
入门
先决条件
Python 3.9+
git (如果从源安装或为项目做出贡献)
安装
如果您想使用 idem-gitlab,您可以通过安装 PyPI 或源代码来使用它。
从 PyPI 安装
pip install idem-gitlab
从源代码安装
# clone repo
git clone git@gitlab.com/vmware/idem/idem-gitlab.git
cd idem-gitlab
# Setup venv
python3 -m venv .venv
source .venv/bin/activate
pip install pip==21 -e .
使用方法
凭证
idem-gitlab 推荐的认证方法是使用个人访问令牌。要创建个人访问令牌,请参阅 Gitlab 文档。创建一个格式如下 acount_file 文件
gitlab:
default:
token: <personal_access_token>
# Optional parameters
endpoint_url: https://gitlab.com
api_version: v4
sudo: <user>
owned: True
使用以下命令加密 acount_file
idem encrypt /path/to/acct_file
首次运行此命令时,将输出一个 ACCT_KEY,可以用于解密文件。将 ACCT_KEY 和 ACCT_FILE 放入环境变量中,idem 将自动查找并使用您的 Gitlab 配置文件。
export ACCT_KEY="<acct_key>"
export ACCT_FILE=/path/to/acct_file
一旦您的凭证就绪,您可以通过运行以下命令之一来测试它们
idem exec gitlab.version.get
idem exec gitlab.metadata.get
idem exec gitlab.avatar.get email="gitlab_user@example.com"
idem exec gitlab.namespace.get
idem exec gitlab.project.commit.get "<commit_sha/branch/tag/null>" project_id="<project_id>"
支持的资源
以下是目前由 idem-gitlab 支持的资源 REF。
gitlab.group
gitlab.group.member
gitlab.group.variable
gitlab.impersonation_token
gitlab.personal_access_token
gitlab.project
gitlab.project.branch
gitlab.project.member
gitlab.project.protected_branch
gitlab.project.protected_tag
gitlab.project.tag
gitlab.project.variable
gitlab.runner
gitlab.user
对于每个引用,都有用于创建、列表、获取、更新和删除操作的功能。
Idem-gitlab 使用“auto_state”合约将这组 CRUD 操作组合成现有和不存在状态。
示例
使用 idem exec 命令运行 CRUD 操作
idem exec gitlab.project.create path=new_project
idem exec gitlab.project.list
idem exec gitlab.project.get "<new_project_id>"
idem exec gitlab.project.update "<new_project_id>" repository_access_level=private
idem exec gitlab.project.delete "<new_project_id>"
根据现有资源创建 SLS 文件
idem describe gitlab.group > /srv/idem/gitlab/group.sls
idem describe gitlab.group.member > /srv/idem/gitlab/group_member.sls
idem describe gitlab.group.variable > /srv/idem/gitlab/group_variable.sls
idem describe gitlab.project > /srv/idem/gitlab/project.sls
idem describe gitlab.project.branch > /srv/idem/gitlab/branch.sls
idem describe gitlab.project.member > /srv/idem/gitlab/project_member.sls
idem describe gitlab.project.protected_branch > /srv/idem/gitlab/protected_branch.sls
idem describe gitlab.project.protected_tag > /srv/idem/gitlab/protected_tag.sls
idem describe gitlab.project.tag > /srv/idem/gitlab/tag.sls
idem describe gitlab.project.variable > /srv/idem/gitlab/project_variable.sls
idem describe gitlab.runner > /srv/idem/gitlab/runner.sls
idem describe gitlab.user > /srv/idem/gitlab/user.sls
创建一个包含所有其他文件的顶层 SLS 文件
# /srv/idem/gitlab/init.sls
include:
- group
- group_member
- group_variable
- project_member
- project
- branch
- protected_branch
- protected_tag
- tag
- project_variable
- runner
- user
运行“idem state”以有条件地强制执行对创建的任何文件的更改
idem state /srv/idem/gitlab
就是这样!您现在可以使用 idem-gitlab 来管理您的 Gitlab 资源。
测试
要使用 Gitlab docker 映像运行测试,首先运行
docker run -d -p 80:80 --env GITLAB_ROOT_PASSWORD=not_secure gitlab/gitlab-ce
对于测试,您可以使用测试的示例凭证文件
export ACCT_FILE=$PWD/example/credentials.yaml
使用 nox 运行测试套件
pip3 install nox
nox -p 3.11
自动生成
自动生成利用 pop-create 来解析 Gitlab API 并为新资源生成模块。要执行自动生成,首先您需要使用 autogen 扩展安装 idem-gitlab
pip3 install idem-gitlab[autogen]
接下来,运行 pop-create 生成当前目录中的模块
pop-create gitlab --directory $PWD --create-plugin auto_state
pop-create gitlab --directory $PWD --create-plugin tests
这些模块不会直接使用,它们可能需要手动更改以符合 idem-gitlab 的其余部分并使其可用。一旦您完全实现了新资源,提交一个 PR,我们将审查它,并希望将其添加到 idem-gitlab 的功能中!
路线图
参考 公开问题 以获取拟议的功能列表(和已知问题)。
致谢
Img Shields,使存储库徽章变得简单。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。