1

只需按照以下步骤,当我通过命令行运行相同的作业时,我就可以生成报告:

% sudo su jenkins
% export ANSIBLE_CALLBACK_PLUGINS="/usr/lib/python2.7/site-packages/ara/plugins/callbacks"
% /bin/ansible-playbook -v -i /etc/ansible/my-inventory ./test-job.yaml`

但是,在通过 Jenkins 执行相同的作业时,我在生成 ARA 报告时遇到了一些问题。我做了以下事情:

  1. 在 $JENKINS_HOME/.bashrc 中:

    导出 ANSIBLE_CALLBACK_PLUGINS="/usr/lib/python2.7/site-packages/ara/plugins/callbacks" `

  2. 通过以下方式定义了以下环境变量:Jenkins UI -> Manage Jenkins -> Configure System:

    名称:ANSIBLE_CALLBACK_PLUGINS 值:/usr/lib/python2.7/site-packages/ara/plugins/callbacks

  3. 在我的 Ansible Job -> Execute shell 中,我指定了以下内容:

    导出 ANSIBLE_CALLBACK_PLUGINS="/usr/lib/python2.7/site-packages/ara/plugins/callbacks"

    /bin/ansible-playbook -v -i /etc/ansible/my-inventory ./test-job.yaml

这是 .ansible.cfg 的内容:

[default]
# the following lines added for ara callback_plugins configuration is required for the ARA callback
callback_plugins = /usr/lib/python2.7/site-packages/ara/plugins/callbacks

# action_plugins and library configuration is required for the ara_record and ara_read modules
action_plugins = /usr/lib/python2.7/site-packages/ara/plugins/actions
library = /usr/lib/python2.7/site-packages/ara/plugins/modules

[ara]
ARA_HOST = 0.0.0.0
ARA_PORT = 8443
4

2 回答 2

2

使用 Jenkins 运行 ARA 有多种方式。

回调将数据发送到数据库,Web 应用程序从该数据库中读取数据。

默认情况下,此数据库位于~/.ara/ansible.sqlite. 例如,这可能是/var/lib/jenkins/.ara/ansible.sqlite您从jenkins用户执行ansible-playbook命令的情况。

理想情况下,您希望每个作业拥有一个数据库和一份报告,以便一切都是自包含的——它比现在的一个大型单体数据库更好地扩展。

您可以通过执行以下操作自定义数据库的位置

export ARA_DATABASE="sqlite:///$WORKSPACE/$JOB_NAME.sqlite"

所有数据都在该数据库中自包含。如果您愿意,可以下载并在本地浏览。

您还可以生成静态 HTML 报告。虽然我们不使用 Jenkins,但这正是我们在 OpenStack 社区中所做的。对于任何 CI 作业,我们将日志上传到带有附加“ara”报告目录的服务器:

日志目录

阿拉报告

支持的前进方式可能是围绕 WSGI 中间件实现的,以允许您加载自动扩展更好的“任意”数据库。您可以在此处阅读更多相关信息: https ://ara.readthedocs.io/en/latest/advanced.html#serving-ara-sqlite-databases-over-http

如果您想在 Jenkins 服务器上运行 Web 应用程序,您也可以这样做。唯一要记住的是您的回调和您的 Web 应用程序都可以访问数据库。ara-manage runserver您可以使用该命令轻松尝试嵌入式 Web 服务器。

希望这可以帮助!

于 2018-03-14T03:46:39.787 回答
0

今天早上早些时候我刷新浏览器时,我能够看到我在夜间执行的所有工作的报告。这些夜间作业没有设置上述环境变量(第 3 项)。

export ANSIBLE_CALLBACK_PLUGINS="/usr/lib/python2.7/site-packages/ara/plugins/callbacks"

所以看起来通过遵循上面的第 1 和第 2 项,我能够通过 Jenkins 作业运行 ansible 任务并查看来自 ARA 的报告。

于 2018-03-13T12:39:33.260 回答