3

概括

我有一个 ansible 剧本,它做了一些很棒的事情。这很有效,因为我已经设置了 ssh 以允许我在我的服务器上传播令人敬畏的东西。我想设置 jenkins 以在成功构建结束时自动提供令人敬畏的功能。

这失败了,因为 jenkins 没有我所拥有的 ssh 能力。如何使用 ansible 和 jenkins 实现应用程序的持续交付?

选项:授权项目插件

https://wiki.jenkins-ci.org/display/JENKINS/Authorize+Project+plugin

我安装了这个插件,这样如果我触发工作,它就会像我一样运行。

  • 在配置全局安全性下启用“以触发构建的用户身份运行”
  • 在我的项目中启用了“配置构建授权”和“以触发构建的用户身份运行”
  • 添加了构建步骤以运行 shell 命令whoami

控制台输出说:

由用户我的名字开始

以我的名义奔跑

在工作空间中构建我的路径

+ 哇哇

詹金斯

我会在那里期待我的用户名,而不是詹金斯。

更新:我确实了解到这个插件是为 jenkins 应用程序授权而设计的,而不是系统身份验证。jenkins 用户需要sudo user作为任何脚本执行的一部分。

选项:给 jenkins 用户 NOPASSWD sudo

jenkinsacct 是系统账号,默认没有tty 。我可以使它成为一个完整的用户帐户,授予 sudo 访问权限等,但这似乎比冒充用户帐户更大的安全问题。

选项:码头工人

选项:ansible 塔


  • 詹金斯 1.617 版
  • 授权项目插件版本 1.1.0
4

1 回答 1

3

在 Jenkins 中,我通常检查我的 ansible playbook 文件夹并使用 jenkins shell 命令运行它。

您可以做的是将您的私有 ssh 密钥放在与您的剧本相同的文件夹中,并添加一个 ansible.cfg 文件,您可以在其中定义用户和 ssh_key 位置。

[defaults]
hostfile = hosts
remote_user = userXX
private_key_file = .ssh_key
host_key_checking = False

祝你好运!

于 2015-12-22T14:45:04.273 回答