在Python脚本中使用.gitlab-ci.yml变量

问题描述 投票:0回答:1

例如,我需要从保管库获取数据库凭据以在 python 脚本中连接。 我正在使用 gitlab ci/cd 所以我可以使用 .gitlab-ci.yml 文件。 获取一些值并将其传递给 python 脚本的最佳方法是什么?

python gitlab gitlab-ci vault
1个回答
0
投票

您可以使用 GitLab CI/CD 环境变量和 GitLab 提供的 Vault 集成来做到这一点。

第 1 步:将 GitLab 与 Vault 集成,您有相关文档。

第 2 步:在 GitLab CI/CD 中定义环境变量:在 GitLab 项目设置中,导航到“设置”>“CI/CD”>“变量”。

为 Vault 地址、Vault 令牌以及连接到 Vault 并检索机密所需的任何其他变量定义环境变量。

第 3 步:配置 .gitlab-ci.yml:使用 before_script 部分设置环境,包括安装依赖项和配置任何必要的工具。

在脚本内部,使用 Vault CLI 或 GitLab Vault 集成从 Vault 检索数据库凭据。您可以使用步骤 2 中定义的环境变量通过 Vault 进行身份验证。

这是 CI CD yaml 的示例。

  stages:
  - deploy

before_script:
  # Install Vault CLI (if not already installed)
  - apk add --no-cache vault

deploy:
  stage: deploy
  script:
    # Authenticate with Vault using the provided token
    - vault login --token $VAULT_TOKEN $VAULT_ADDRESS
    # Retrieve database credentials from Vault
    - export DB_USERNAME=$(vault kv get -field=username secret/database)
    - export DB_PASSWORD=$(vault kv get -field=password secret/database)
    # Run Python script with database credentials as environment variables
    - python my_script.py --db-username=$DB_USERNAME --db-password=$DB_PASSWORD

这里我已将检索到的凭据作为环境变量或命令行参数传递给 Python 脚本。

通过此方式,您可以安全地从 Vault 检索敏感值,并将它们传递到 GitLab CI/CD 管道中的 Python 脚本,而无需在存储库或管道日志中公开它们。

© www.soinside.com 2019 - 2024. All rights reserved.