从 Jenkins 作业执行时如何使用 Ansible Report Analysis (ARA)

How to Use Ansible Report Analysis (ARA) while executing from a Jenkins Job

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

% 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 -> 管理 Jenkins -> 配置系统:

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

  3. 在我的 Ansible 作业中 -> 执行 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

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

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

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

使用 Jenkins 运行 ARA 有不同的方法。

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

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

理想情况下,您希望每个作业都拥有一个数据库和一份报告,这样一切都是独立的——它现在比一个大型单体数据库的扩展性更好。

您可以自定义数据库的位置,方法是 this:

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

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

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

支持的前进方式很可能围绕 WSGI 中间件实施,以允许您加载 "arbitrary" 更好的 auto-scales 数据库。您可以在此处阅读更多相关信息: https://ara.readthedocs.io/en/latest/advanced.html#serving-ara-sqlite-databases-over-http

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

希望对您有所帮助!