Rundeck 项目 SCM exportUuidBehavior“原始”覆盖我的工作 UUID

Posted

技术标签:

【中文标题】Rundeck 项目 SCM exportUuidBehavior“原始”覆盖我的工作 UUID【英文标题】:Rundeck Project SCM exportUuidBehavior "original" overwrites my job UUID 【发布时间】:2021-12-05 12:30:15 【问题描述】:

我在 Rundeck 中配置 SCM UUID 导入和导出行为时遇到问题。我想使用导入行为“存档”和导出行为“原始”。阅读 Rundeck 文档后,我期望这些行为不应该修改我的 git 存储库中作业的 UUID。但是,当我导出作业时,UUID 会在我的 git 存储库中被覆盖。

我找到了以下有关“归档”行为的文档:“Git SCM 插件:从存储库导入作业并“归档”原始 UUID 的能力。允许在同一个 Rundeck 服务器内的多个“非生产”项目之间共享一个 repo,并且仍然为生产项目维护静态 UUID。” https://docs.rundeck.com/docs/history/2_x/version-2.6.10.html

这准确地描述了我想要的,所以我想它一定是可能的,但是它不适合我。

我使用的是 Rundeck 3.3.10 版。

这是我的导入插件的配置:


   "url":git@github.com:***/***.git,
   "fetchAutomatically":"true",
   "pullAutomatically":"true",
   "dir":"/home/niek/rundeck/projects/UUID_test_2/scm",
   "filePattern":".*\\.yaml",
   "importUuidBehavior":"archive",
   "useFilePattern":"true",
   "strictHostKeyChecking":"no",
   "sshPrivateKeyPath":"keys/priv_key",
   "format":"yaml",
   "branch":"master",
   "gitPasswordPath":"",
   "pathTemplate":"$job.group$job.name.$config.format"

这是我的导出插件的配置:


   "url":git@github.com:***/***.git,
   "fetchAutomatically":"true",
   "pullAutomatically":"false",
   "_createBranch":"",
   "dir":"/home/niek/rundeck/projects/UUID_test_2/scm",
   "committerEmail":"$user.email",
   "baseBranch":"master",
   "committerName":"$user.fullName",
   "strictHostKeyChecking":"no",
   "sshPrivateKeyPath":"keys/priv_key",
   "branch":"master",
   "format":"yaml",
   "exportUuidBehavior":"original",
   "gitPasswordPath":"",
   "pathTemplate":"$job.group$job.name.$config.format"

如果有人可以帮助我,我将不胜感激。

编辑:

为了阐明我的最终目标,请使用我的 git 存储库中的以下作业定义:

- defaultTab: nodes
  description: ''
  executionEnabled: true
  id: test-uuid-job
  loglevel: INFO
  name: test_uuid
  nodeFilterEditable: false
  plugins:
    ExecutionLifecycle: null
  scheduleEnabled: true
  sequence:
    commands:
    - exec: uname -a
    keepgoing: false
    strategy: node-first
  uuid: test-uuid-job

此作业必须在不同的项目中可用,其中每个项目都有同一存储库的不同分支作为源。生产分支中作业的 UUID 不应更改,应保持“test-uuid-job”。但是,当我使用“归档”和“原始”行为从开发分支导入然后导出项目中的作业时,导出到 git 的 UUID 仍然是开发项目中导入作业的新分配的 UUID。虽然我希望它保持“test-uuid-job”。否则,当开发分支合并到生产分支时,UUID 也会在那里发生变化。

【问题讨论】:

【参考方案1】:

转到项目设置>设置SCM并禁用SCM导出,然后单击“配置”,将“导出UUID行为”设置为“保留”,向下滚动并单击“设置”按钮(配置已保存并再次启用 SCM)。

任何更改都会保留导出作业的 UUID。

【讨论】:

感谢您的回复 MegaDrive68k。但是将导出 UUID 行为设置为“保留”并不能解决我的问题。在我的 git 存储库中设置的 UUID 仍然被我的 rundeck 开发项目中新创建的 UUID 覆盖。 (我在帖子中进行了编辑以阐明我想要实现的目标。)【参考方案2】:

我自己找到了答案。

以将导入 UUID 行为设置为“归档”并将导出 UUID 行为设置为“原始”的 Rundeck 项目为例。导入项目中尚不存在的作业后,您首先需要执行以下步骤以使正确的行为生效:

在“作业”页面上,使用新作业的“操作”按钮再次导入作业 编辑作业并保存它而不做任何更改。

现在该作业不再有导出操作。如果您现在对作业进行编辑和更改,则将提供一个新的导出操作,该操作不会更改在 Git 存储库中设置的 UUID。

是的,这两个步骤似乎不应该做任何事情,但它确实有效。

【讨论】:

以上是关于Rundeck 项目 SCM exportUuidBehavior“原始”覆盖我的工作 UUID的主要内容,如果未能解决你的问题,请参考以下文章

RUNDECK安装

Rundeck 项目和作业在 2 个实例之间同步,后端为 mysql 集群

Rundeck:http 错误 500:以管​​理员身份登录时

如何将节点特定的 SSH 密钥与 Rundeck AWS EC2 资源插件一起使用?

安装和使用rundeck

Rundeck部署和基本使用