在 ansible playbook 中使用 gitlab-ci vars

2023-12-11

我想使用 Ansible playbook 在 docker 容器内设置远程环境。该剧本将从 gitlab-ci 运行,其中包含我在 Gitlab CI/CD 配置中设置的变量。我怎样才能做到这一点?

这是我想使用的模板。我该如何设置user_id and password来自 CI/CD 变量?

tasks:
  - name: Run XYZ Container
    docker_container:
      name: XYZ
      restart_policy: on-failure
      image: xxxxxxxxxxx
      container_default_behavior: "compatibility"
      env:
        USER_ID= $USER_ID
        PASSWORD= $PASSWORD

由于 gitlab-ci 变量只是您作业中的环境变量,并且您的 ansible 控制器在该作业中运行,因此您可以使用env lookup从控制器读取它们。

请注意:

  1. the docker_container模块的env范围需要一个字典,而不是一个新行分隔的 bash 字符串,如示例中的环境变量定义。
  2. 作为一项安全措施,您应该在使用变量之前检查变量是否已定义(使用assert or fail任务)或使用默认值以防万一。我的示例使用默认值。有关提供默认值的更多信息,您可以查看可靠的文档(以及jinja2 原始文档明白这一点d是一个别名default)
tasks:
  - name: Run XYZ Container
    docker_container:
      name: XYZ
      restart_policy: on-failure
      image: xxxxxxxxxxx
      container_default_behavior: "compatibility"
      env:
        USER_ID: "{{ lookup('env', 'USER_ID') | d('defaultuser', true) }}"
        PASSWORD: "{{ lookup('env', 'PASSWORD') | d('defaultpass', true) }}"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ansible playbook 中使用 gitlab-ci vars 的相关文章

  • Ansible:权限被拒绝(公钥、密码)

    我无法连接到 Ansible 中的主机 这是错误 192 168 1 12 无法到达 gt 改变 假 msg 错误 SSH 在连接过程中遇到未知错误 我们建议您使用 vvvv 重新运行该命令 这会导致 将启用 SSH 调试输出以帮助诊断问题
  • Ansible Expect 模块无法匹配字符串/正则表达式脚本问题

    我正在尝试通过 Ansible 在 Vagrant 机器中自动安装脚本 我尝试了很多方法在网络上寻找解决方案 但文档和示例非常薄弱 我试图安装的脚本提示了我试图以编程方式回答的问题Ansible 期望模块 Ansible 任务 名称 运行
  • 当提交推送到另一个项目时触发项目的构建

    我在 gitlab 上使用 gitlab runner 机器有三个项目 A B C 项目 A 包含 gitlab ci yml 文件 当 A 上有提交时 该文件调用脚本来构建程序 build stage build script build
  • gitlab-ci.yml&docker-in-docker(dind)&curl 在共享运行器上返回连接被拒绝

    我正在尝试创建一个简单的 GitLab CI 在其中使用 docker compose up 启动一个容器 然后尝试使用curl 访问它 最后使用 docker compose down 将其拆除 docker compose up 旋转得
  • 用于下载文件的 S3 模块在 ansible 中不起作用

    这是为从 S3 存储桶 artefact test 下载文件而编写的 ansible 代码 name Download customization artifacts from S3 s3 bucket artefact test obje
  • 根据合并请求触发 gitlab-ci 中的作业

    是否可以仅根据合并请求从 gitlab ci 运行作业 现在 我们有一个包含大量测试的大型整体项目 但我们只想在合并到分支 master 之前运行测试 嗯 目前还没有内置 但是您自己也不是不可能 Gitlab 允许trigger https
  • 在 Docker 中使用私有模块构建 Go 应用程序

    我正在尝试在依赖于私有子模块的 docker 容器中构建一个 go 项目 我本来希望 mount type ssh会将我的 ssh 凭据传递给容器并且它会起作用 目前我可以在本地构建 只需制作GOPRIVATE变量集和git config
  • 无法将属性与数字进行比较。错误:“‘AnsibleUnsafeText’和‘int’实例之间不支持”

    getent database passwd debug var getent passwd dict2items selectattr value 1 gt 1000 map attribute key list 输出是 TASK deb
  • 如何使用Vault在Ansible中运行playbook api

    我有一本带有Vault的剧本 我可以运行它 ansible playbook info yml ask vault pass 现在 我想在 Ansible 中运行我的 playbook api 答案在如何使用Vault在Ansible v2
  • 附加到 group_vars 中的 Ansible 字典而不使用 hash_behaviour = merge

    我想定义一个字典变量 各个主机组可以将自己的密钥添加到其中在group vars中 不使用set fact 例如 像这样的东西 group vars ftp servers yml important ports ftp 21 group
  • Ansible 循环直到条件匹配。

    我想进行一系列 API 调用 每次调用后检查结果中的特定参数 如果它大于特定值 则将其保存在寄存器中并继续进一步执行剧本 基本上 我正在对 RHEV 进行 API 调用来检查存储域 然后我想检查存储域是否有足够的空间 如果有 则将该存储域i
  • 如何在不重建镜像的情况下更新源代码

    我在 GitLab 上创建了一个新的存储库 在其中为我的 Angular 项目构建了一个 docker 镜像 现在我在本地对源代码做了一些修改 有没有办法可以更新 docker 映像而不重建它 None
  • Ansible 和硬件检查

    我必须使用 ansible 检查 Linux 机器上的不同硬件和配置元素 我完全不确定如何做到这一点 RAM 磁盘空间 DNS CPU 我知道我几乎可以找到我想要的所有事实都在 ansible 中 但我不明白如何使用它 例如 我必须检查 R
  • 从 gitlab docker runner 启动声纳扫描仪

    我有一个 CI 工作流程 集成了 linting 作业和代码质量作业 我的 Linting 工作是一个 docker runner 从应用程序代码启动我的 eslint 脚本 然后我的代码质量工作应该启动声纳扫描仪泊坞窗实例 检查我的代码并
  • 在ansible中合并字典

    我目前正在构建一个使用 ansible 安装 PHP 的角色 并且在合并字典时遇到一些困难 我尝试了多种方法来做到这一点 但我无法让它像我想要的那样工作 A vars file my default values key value my
  • 如何更改 ansible_default_ipv4?

    我想将 ansible default ipv4 更改为指向 eth1 而不是 eth0 我可以在剧本中或通过 extra vars 选项来执行此操作吗 ansible 使用命令 https github com ansible ansib
  • gitlab 中的自动发行说明[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 任何人都可以帮助我在 git lab 中自动生成发行说明 有什么方法可以执行此操作 请告诉我 谢谢 您可以使用 API 列出里程碑中的
  • Ansible local_action 指令

    我对 Ansible 很陌生 有一个简单的问题来了解我的理解local action指示 这是否意味着该命令完全在本地执行 假设你有这样的东西 local action command which nginx register check
  • 有没有办法同时拥有加密和非加密的主机变量?

    如果我加密host vars 文件与ansible vault 除了清单文件中的主机变量之外 我似乎没有机会拥有未加密的主机变量 我错过了什么吗 事实证明 http docs ansible com ansible intro invent
  • gitlab-ci 的缓存虚拟环境

    我使用 Gitlab CI 脚本缓存了 Pip 包 所以这不是问题 现在我还想赶上Conda虚拟环境 因为它减少了设置环境的时间 我缓存了一个虚拟环境 不幸的是 最后需要很长时间才能缓存所有 venv 文件 我尝试仅缓存 CI PROJEC

随机推荐

  • 如何在flutter中通过自生成的签名证书进行SSL固定?

    我正在寻找 SSL pinning 并使用自行生成的证书在 flutter 中运行我们的 api 问题中没有足够的细节 所以这个答案基于一些假设 您的 API 是 HTTPS 您正在谈论验证服务器端自签名 HTTPS 证书 您正在使用pac
  • 将 Bouncy Castle 库与 .NET Compact Framework 结合使用

    我正在尝试使用充气城堡 v1 7在 Windows Mobile 6 5 设备上 我正在尝试执行以下代码 ISigner signer SignerUtilities GetSigner SHA256withRSA 使用 Bouncy Ca
  • 如何在 Android 中读取和解析日期和时间?

    我有一个日期和时间2011 02 28 07 00 52作为字符串 我如何读取它 然后将其解析为日期和时间 以将其与 Android 系统时间和日期进行比较 String time your string representing the
  • 将对象数组分成 4 组 - ios

    如何将对象数组拆分为对象数组的数组 假设我想分成 4 人一组 我该怎么做 a b c d e f g h gt a b c d e f g h 或者如果我指定要分成 3 组 那么结果应该是 a b c d e f g h 如果 h 不存在
  • Codeigniter mysql 左连接包括选择

    如何将左连接包含选择转换为codeigniter sql方法 谢谢 我只是想知道 SELECT c1 c1 id c1 c1 name c2 c2 id c2 c2 name c2 c2 type c2 c2 status f f id f
  • Shell 脚本在给定文件夹时打印出文件名[重复]

    这个问题在这里已经有答案了 我正在编写一个 shell 脚本 给定一个文件夹作为命令行参数 它将打印出其中文件 文件夹的名称 bin sh folder 1 for f in folder do echo f done 这仅打印出给定文件夹
  • 如何在seaborn中使用预先计算的平均值、中位数、百分位数等值创建箱线图?

    我想在seaborn或matplotlib中创建一个箱线图 我可以在其中手动输入箱线图的值 而不是从数据集计算这些值 我正在尝试将实际数据与目标值进行比较 因此我想将这些目标显示为箱线图 然后覆盖实际数据点的群图 例如 我有一个具有不同补偿
  • Scala 中的 MapView(<未计算>)

    我开始学习 Scala 但我发现了一个令人困惑的问题map 我的代码是这样的 val mymap Map 1 gt james 2 gt justin println mymap view mapValues x gt hi x print
  • 出于测试目的访问原始装饰函数

    我正在使用装饰器 render to来自django annoying包 在视图函数中 但问题是我想获取视图函数返回的原始字典用于测试目的 而不是HttpResponse装饰器返回的对象 装饰器使用 wraps from functools
  • JavaFX 2 TableView:根据单元格内的数据不同的单元格工厂

    我正在尝试使用表视图来渲染 编辑 键 值 对 因此该表应该有两列 键 和 值 Key只是一个普通的字符串 value可以是任何东西 我的问题是 行与行之间的值的数据类型可能不同 基本上 我想使用布尔值的复选框和列表的选择 我找到了一种通过设
  • 如何在 PyQt 中创建“色环”?

    我想创建一个如下所示的 QWidget QDialog 色环 or Windows 颜色选择器 我知道QColorDialog 但我不想使用它 我知道这是一个老问题但由于唯一的答案性能相当糟糕 这是我的版本 它使用两个叠加的渐变 而不是单独
  • 仅当源级别为 5.0 时注释才可用 语法错误 java

    我正在编译一个普通的java程序 Override注释 我从一些教程中从互联网下载了源代码 现在javac正在抱怨 annotations are only available if source level is 5 0 SO 或其他网站
  • 文本在 li 内垂直对齐

    ul li img src Content img pdf png Catalogue li li img src Content img pdf png Manual Data li li img src Content img pdf
  • Google 应用脚本触发器 ID 格式

    我正在开发 Google 电子表格项目 通过脚本添加 删除基于时间的触发器 所有触发的触发器都将运行一个函数 该函数将检查其 Id 并相应地运行函数 我正在保存启动触发器并使用此代码保存它的 id function startTimer r
  • Altair 中的平行坐标

    我想做一个具有多个 y 轴的平行坐标图 我已经找到了如何在 Vega Lite 中做到这一点here但我还没有找到使用 Altair 的方法 只有一个非常简单的例子其中所有 y 轴都相同 有什么办法吗这个情节在牵牛星 请注意 这种图表不是
  • 真实用户ID、有效用户ID和保存用户ID之间的区别

    我已经知道真实用户ID 它是系统中用户的唯一编号 在我的系统上 我的uid is echo UID 1014 另外两个ID代表什么 以及有什么用有效用户id and 已保存的用户 ID我们在系统中的什么地方使用它们 区分真实用户 ID 和有
  • 在iOS7半透明导航栏中获取正确的颜色

    如何为 iOS 7 中的半透明导航栏获得正确的颜色 导航栏只是将给定的颜色调整为更亮的颜色 更改颜色的亮度或饱和度也无法提供正确的结果 有人有同样的烦恼吗 看看 Facebook 它似乎以某种方式起作用 他们有自己的颜色和半透明的导航栏 编
  • SSIS 循环遍历 Excel 工作表

    我正在使用SSIS2012 我试图将大约25个excel文件 每个文件包含大约70个 变量 表 导入到SQLserver2008中 我已经构建了它 以便它将循环遍历所有 Excel 工作表并导入第一个工作表 但这没有用 我如何循环所有 Ex
  • 将文件直接上传到 GAE 应用的 Google Cloud Storage

    我正在考虑从 Blobstore 切换到 Google Cloud Storage 以处理项目中的图像上传等问题 因为 Google 称 Blobstore 为 取代 在 Blobstore 中 多部分表单将直接提交 上传 到 Blobst
  • 在 ansible playbook 中使用 gitlab-ci vars

    我想使用 Ansible playbook 在 docker 容器内设置远程环境 该剧本将从 gitlab ci 运行 其中包含我在 Gitlab CI CD 配置中设置的变量 我怎样才能做到这一点 这是我想使用的模板 我该如何设置user