puppetdb的web前端
puppetboard的Python项目详细描述
木偶板
安装
木偶板现已打包并在PYPI上提供。
生产
木偶模块
spencer krum有一个傀儡模块,负责为您安装傀儡板。
您可以使用以下命令安装它:
< Buff行情>Puppet模块安装Puppet PuppetBoard
要了解如何使用EL7,请查看这些文档
手册
要安装它,只需发出以下命令:
$ pip install puppetboard
这将安装puppetboard并处理依赖项。如果您这样做,这个puppetboard将安装在python发行版的所谓site packages或dist packages中。
debian和ubuntu系统上的完整路径是/usr/local/lib/pythonx.y/lib/dist packages/puppetboard
,fedora上的完整路径是/usr/lib/pythonx.y/site packages/puppetboard
其中x和y被您的主要和次要python版本替换。
您需要此路径才能配置支持httpd和wsgi的应用程序服务器。
包
不久的将来将为您的操作系统提供本机软件包。
<表>< COLGROUP >< COL/>< COL/>< COL/><广告>Docker图像
在0.2.0版本的源代码中添加了一个dockerfiledockerfile。计划为0.2.x系列提供官方图像。
用法:
$ docker build -t puppetboard . $ docker run -it -p 9080:80 -v /etc/puppetlabs/puppet/ssl:/etc/puppetlabs/puppet/ssl \ -e PUPPETDB_HOST=<hostname> \ -e PUPPETDB_PORT=8081 \ -e PUPPETDB_SSL_VERIFY=/etc/puppetlabs/puppetdb/ssl/ca.pem \ -e PUPPETDB_KEY=/etc/puppetlabs/puppetdb/ssl/private.pem \ -e PUPPETDB_CERT=/etc/puppetlabs/puppetdb/ssl/public.pem \ -e INVENTORY_FACTS='Hostname,fqdn, IP Address,ipaddress' \ -e ENABLE_CATALOG=True \ -e GRAPH_FACTS='architecture,puppetversion,osfamily' \ puppetboard
要设置url前缀,可以使用可选的puppetboard url前缀。 环境变量。
开发
如果您想破解puppetboard,您应该分叉/克隆github存储库,然后通过:
$ pip install -r requirements-test.txt
建议您在专门为在puppetboard上工作而创建的virtualenv中执行此操作,以免污染您的全局python安装。
配置
以下说明将帮助您配置木偶板和httpd。
木偶
puppetboard是完全围绕puppetdb构建的,这意味着您的环境需要配置来实现这一点
为了让报表显示在puppetboard中,您需要配置环境以将这些报表存储在puppetdb中。请查看有关此的文档,特别是"启用报表存储"部分。
设置
puppetboard将查找由puppetboard_settings
环境变量指向的文件。文件必须与default\u settings.py相同,但应仅覆盖需要更改的设置。
您可以从pip安装puppetboard的路径或通过查看源代码签出来获取default\u settings.py的副本。
如果您在同一台机器上运行puppetdb和puppetboard,则提供的默认设置将足以让您启动,并且您不需要自定义设置文件。
假设您的webserver和puppetdb机器不相同,您至少需要更改以下设置:
puppetdb_主机
puppetdb_端口
默认情况下,当非本地客户端想要连接时,puppetdb要求使用ssl。因此,您还必须提供以下设置:
puppetdb_ssl_verify=/path/to/ca/keyfile.pem
puppetdb_key=/path/to/private/keyfile.pem
puppetdb_cert=/path/to/public/keyfile.crt
有关如何生成正确密钥的信息,请参阅PypupletDB文档。或者可以显式地指定协议to用于设置puppetdb_proto
变量。
其他可能不按特定顺序显示的设置:
密钥
:请参阅"烧瓶"文档中的"如何生成好的密钥"部分,以设置值。默认为os.random(24)生成的随机24字符字符串puppetdb_timeout
:默认为20秒,但可能需要增加此值。这取决于查询puppetdb时的结果有多大。在将来的版本中,当引入分页时,这种行为将发生变化。无响应的小时数
:自上次签入后节点被视为无响应的小时数。loglevel
:表示loglevel的字符串。它默认为'info'
,但可以更改为'warning'
或'critical'
以减少详细日志记录,或'debug'
以获取更多信息。启用查询
:默认设置为true
使查询选项卡显示在Web界面中,允许用户对puppetdb中的一组端点编写和执行任意查询。将此项更改为false
以禁用此项。请参见启用的查询端点
以微调允许的端点。enabled_query_endpoints
:如果enable_query
为true
,则允许微调可查询的puppetdb api的端点。它必须是已启用查询的puppetdb终结点字符串列表。有关可用端点的列表,请参见puppetboard.app
模块中的查询端点
常量。图形类型
:指定要显示的图形类型。默认是 派,另一个好的选择是甜甜圈。其他选择可以在这里找到: _ c3js_文档`图表事实
:告诉puppetboard在事实页上生成饼图的事实名称列表。由于某些事实值对于每个节点都是唯一的,例如ipaddress、uuid和序列号,以及结构化事实,因此不再能够为所有内容生成图表。inventory_facts
:用作列标题和要搜索以创建inventory页的事实名称的元组列表。如果未找到节点的事实,则会打印undef
。启用目录
:如果设置为true
则允许用户查看节点的最新目录。这包括所有托管资源、它们的文件系统位置以及它们之间的关系(如果可用)。默认为false
刷新率
:默认为30
等待索引页自动刷新的秒数。默认环境
:默认为"生产",顾名思义,加载按此环境值筛选的所有信息。报告计数
:默认值为10
要在节点或任何报告页上加载的报告数的限制。脱机模式
:如果设置为true
则从本地web服务器而不是cdn加载静态资产(jquery、语义ui等)。默认为false
启用每日报表图表
:查看仪表板和节点视图时启用每日图表图表。每日报表图表天数
:在每日报表图表上显示历史记录的天数。显示的度量
:显示节点摘要时要显示的度量。示例:'resources.total'
,'events.noop'
表计数选择器
:配置下拉列表以限制每页显示的主机数。小表计数
:查看节点时要显示的默认报告数。普通表计数lt显示报表和目录节点时要显示的节点数。
本地化时间戳
:基于本地服务器时间规范化时间。dev_listen_host
:用于dev.py开发。默认值为localhostdev_listen_port
:与dev.py一起用于开发。默认值为5000
傀儡企业
puppet enterprise维护一个证书白名单,允许证书从puppetdb访问数据。此白名单在/etc/puppetlabs/puppetdb/certificate whitelist中维护,您必须将证书名称添加到该文件中。
之后,您需要重新启动pe puppetdb
,现在您应该可以自由地查询puppetdb了。
开发
您可以在开发模式下运行它,只需执行:
$ python dev.py
使用puppetboard_settings
直接更改不同的设置或修补程序default_settings.py
。在为puppetboard提交修补程序时,请注意不要将本地更改包含在该文件中。如果未设置环境变量,请将settings.py文件放在将要使用的git存储库的基本目录中。
生产
要在生产中运行puppetboard,我们提供以下场景的说明:
- apache+mod_wsgi
- apache+mod_乘客
- nginx+uwsgi
- nginx+gunicorn
如果您通过不同的设置来部署puppetboard,我们欢迎向本节添加说明的pull请求。
在Linux发行版上安装
阿帕奇+mod_wsgi
首先,我们需要创建必要的目录:
$ mkdir -p /var/www/html/puppetboard
将puppetboard的default_settings.py
复制到新创建的puppetboard目录并命名文件settings.py
。此文件将在安装puppetboard的路径中可用,例如:/usr/local/lib/pythonx.y/lib/dist packages/puppetboard/default撸settings.py
更改需要更改的设置以匹配您的环境,并用删除或注释其余条目。
如果不需要更改任何设置,则可以完全跳过settings.py
文件的创建。
现在用新创建的puppetboard目录中的以下内容创建一个wsgi.py
from __future__ import absolute_import import os # Needed if a settings.py file exists os.environ['PUPPETBOARD_SETTINGS'] = '/var/www/html/puppetboard/settings.py' from puppetboard.app import app as application
确保Web服务器运行时的用户可以读取此文件。
烧瓶需要静态密钥,请参见烧瓶会话,以保护自己免受CSRF攻击。default\u settings.py中的default secret\u键生成一个随机的24个字符串,但是在httpd>;=2.4的情况下,每个请求都会重新生成该字符串。
要生成自己的密钥,请创建包含以下内容的python脚本并运行一次:
import os os.urandom(24) '\xfd{H\xe5<\x95\xf9\xe3\x96.5\xd1\x01O<!\xd5\xa2\xa0\x9fR"\xa1\xa8'
复制输出并将以下内容添加到wsgi.py
文件中:
application.secret_key = '<your secret key>'
我们需要做的最后一件事是配置apache。
下面是debian和ubuntu的配置示例:
<VirtualHost *:80> ServerName puppetboard.example.tld WSGIDaemonProcess puppetboard user=www-data group=www-data threads=5 WSGIScriptAlias / /var/www/html/puppetboard/wsgi.py ErrorLog /var/log/apache2/puppetboard.error.log CustomLog /var/log/apache2/puppetboard.access.log combined Alias /static /usr/local/lib/pythonX.Y/dist-packages/puppetboard/static <Directory /usr/local/lib/pythonX.X/dist-packages/puppetboard/static> Satisfy Any Allow from all </Directory> <Directory /usr/local/lib/pythonX.Y/dist-packages/puppetboard> WSGIProcessGroup puppetboard WSGIApplicationGroup %{GLOBAL} Order deny,allow Allow from all </Directory> </VirtualHost>
以下是Fedora的配置示例:
$ pip install puppetboard0
注意目录路径,它是pip安装puppetboard的路径;x.y必须替换为python版本。我们还将路径命名为/static
路径,这样apache将提供静态文件,如包含的css和javascript。
阿帕奇+摩托乘客
可以通过passenger运行python应用程序。乘客从第三版开始就支持这个,但它被认为是实验性的。自从4号乘客发布以来,这是该产品的"核心"功能。
在性能方面,它也留下了一些东西需要比mod_wsgi供电的解决方案。应用程序启动明显较慢阅读网页只需要一小部分时间。
首先,我们需要创建必要的目录:
$ pip install puppetboard1
将puppetboard的default_settings.py
复制到新创建的puppetboard目录并命名文件settings.py
。此文件将在安装puppetboard的路径中可用,例如:/usr/local/lib/pythonx.y/lib/dist packages/puppetboard/default撸settings.py
更改需要更改的设置以匹配您的环境,并用删除或注释其余条目。
如果不需要更改任何设置,则可以完全跳过settings.py
文件的创建。
现在用新创建的puppetboard目录中的以下内容创建一个 不幸的是,由于passenger的工作方式,我们还需要在 这意味着,即使可以在 现在只剩下配置apache: 注意 一个常见的python部署场景是使用uwsgi应用程序服务器(它也可以为rails/rack、php、perl和其他应用程序提供服务)并通过nginx甚至haproxy代理到它。 uwsgi有一个特性,每个实例都可以作为自己的用户运行。在本例中,我们将使用 首先,我们需要创建必要的目录: 将puppetboard的 更改需要更改的设置以匹配您的环境,并用 如果不需要更改任何设置,则可以完全跳过 现在用新创建的puppetboard目录中的以下内容创建一个wsgi.py
确保此文件归用户所有,并将uwsgi实例作为组运行。 现在我们需要启动uwsgi: 请随意将端口更改为 我们需要做的最后一件事是配置nginx来代理请求: 如果一切顺利,你现在应该可以进入木偶板。注意 因为nginx本机支持uwsgi协议,所以我们使用 nginx+gunicorn^^^^^^^^^^^^^^^^^^^^^^^^如果您愿意,可以使用gunicorn而不是uwsgi,过程差别不大。由于我们不能将 现在,使用gunicorn运行它: 由于我们可能希望在后台服务,并且我们需要 对于具有systemd的较新系统(例如centos7),可以使用以下服务文件( 以及相应的Gunicorn Config( 如果您想让用户在访问Puppetboard之前进行身份验证,可以使用以下配置片段之一。 在虚拟主机中: 在 这个项目还是很新的,所以你遇到问题并非不可想象。 对于错误报告,您可以提交一个问题。如果您需要帮助,请随时通过电子邮件或IRC联系维护人员。它们通常可以在ircnet和freenode中找到,并在puppetboard中空闲。 现在还有一个puppetboard频道,我们可以在这里闲逛,回答与pypuppetdb和puppetboard相关的问题。 还有一个谷歌小组交流问题和讨论。请注意,这个小组包含了其他木偶社区项目的讨论。 有些人已经开始在木偶板周围建造东西了。 Hunter Haugen提供了一个流浪设置: 我们欢迎对这个项目的贡献。但是,贡献者应该知道一些基本规则。 这个项目是在apache v2.0许可下授权的。因此,您的稿件一旦被接受,将自动包含在此许可证中。 写一些像样的提交消息。不要使用脏话,不要使用非格式化的提交消息作为"固定打字"。 提交消息的首选格式: 如果您想获得关于如何编写和格式化提交消息的更详细的指南,请通过tim pope查看本文。
使用puppetdb的puppetserver上的puppetboard puppet模块展示puppetboard功能的一个流浪项目。 这是木偶板的变更日志。 *使用信息将pypuppetdb需求更新为>;=0.2.1 *来自节点终结点的"最新报告"哈希和"最新报告"状态字段,这实际上不赞成使用来自编目终结点的"报告最新"函数*代码ID(当前未使用)*在"概述"页上添加自动刷新以每x秒重新加载页,默认值为30。这可以通过配置选项refresh_rate*在catalog_compare()页面中通过从基本表切换到固定表来进行配置。*在"状态计数"部分使用类似于Puppet Dashboard和Foreman的颜色
passenger\u wsgi.py
,因为此助手函数已被limit puppetdb分页函数替换。$ pip install puppetboard
2
passenger wsgi.py中配置日志记录,否则将不会记录应用程序启动问题。
设置中设置
此设置将优先于它。日志级别
。py$ pip install puppetboard
3
/static
别名路径,它是pip安装puppetboard的路径。这是必需的,以便apache能够提供静态文件,如包含的css和javascript。nginx+uwsgi
www data
用户,但您可以创建一个单独的用户来运行puppetboard并使用它。$ pip install puppetboard
4
default_settings.py
复制到新创建的puppetboard目录并命名文件settings.py
。此文件将在安装puppetboard的路径中可用,例如:/usr/local/lib/pythonx.y/lib/dist packages/puppetboard/default撸settings.py
删除或注释其余条目。
settings.py
文件的创建。$ pip install puppetboard
5
$ pip install puppetboard
6
9090
$ pip install puppetboard
7
/static
位置块,使nginx服务于静态文件,如包含的css和javascript。uwsgi pass
而不是传统的proxy pass
uwsgi_pass
与gunicorn一起使用,nginx配置文件将有一点不同:$ pip install puppetboard
8
$ pip install puppetboard
9
puppetboard_settings
作为一个环境变量,建议在supervisor下运行它。具有基本设置的管理器配置示例如下:$ docker build -t puppetboard .
$ docker run -it -p 9080:80 -v /etc/puppetlabs/puppet/ssl:/etc/puppetlabs/puppet/ssl \
-e PUPPETDB_HOST=<hostname> \
-e PUPPETDB_PORT=8081 \
-e PUPPETDB_SSL_VERIFY=/etc/puppetlabs/puppetdb/ssl/ca.pem \
-e PUPPETDB_KEY=/etc/puppetlabs/puppetdb/ssl/private.pem \
-e PUPPETDB_CERT=/etc/puppetlabs/puppetdb/ssl/public.pem \
-e INVENTORY_FACTS='Hostname,fqdn, IP Address,ipaddress' \
-e ENABLE_CATALOG=True \
-e GRAPH_FACTS='architecture,puppetversion,osfamily' \
puppetboard
0
/usr/lib/systemd/system/gunicorn@.service
):$ docker build -t puppetboard .
$ docker run -it -p 9080:80 -v /etc/puppetlabs/puppet/ssl:/etc/puppetlabs/puppet/ssl \
-e PUPPETDB_HOST=<hostname> \
-e PUPPETDB_PORT=8081 \
-e PUPPETDB_SSL_VERIFY=/etc/puppetlabs/puppetdb/ssl/ca.pem \
-e PUPPETDB_KEY=/etc/puppetlabs/puppetdb/ssl/private.pem \
-e PUPPETDB_CERT=/etc/puppetlabs/puppetdb/ssl/public.pem \
-e INVENTORY_FACTS='Hostname,fqdn, IP Address,ipaddress' \
-e ENABLE_CATALOG=True \
-e GRAPH_FACTS='architecture,puppetversion,osfamily' \
puppetboard
1
/etc/sysconfig/gunicorn/puppetboard.app\:app.conf
):$ docker build -t puppetboard .
$ docker run -it -p 9080:80 -v /etc/puppetlabs/puppet/ssl:/etc/puppetlabs/puppet/ssl \
-e PUPPETDB_HOST=<hostname> \
-e PUPPETDB_PORT=8081 \
-e PUPPETDB_SSL_VERIFY=/etc/puppetlabs/puppetdb/ssl/ca.pem \
-e PUPPETDB_KEY=/etc/puppetlabs/puppetdb/ssl/private.pem \
-e PUPPETDB_CERT=/etc/puppetlabs/puppetdb/ssl/public.pem \
-e INVENTORY_FACTS='Hostname,fqdn, IP Address,ipaddress' \
-e ENABLE_CATALOG=True \
-e GRAPH_FACTS='architecture,puppetversion,osfamily' \
puppetboard
2
安全性
阿帕奇
$ docker build -t puppetboard .
$ docker run -it -p 9080:80 -v /etc/puppetlabs/puppet/ssl:/etc/puppetlabs/puppet/ssl \
-e PUPPETDB_HOST=<hostname> \
-e PUPPETDB_PORT=8081 \
-e PUPPETDB_SSL_VERIFY=/etc/puppetlabs/puppetdb/ssl/ca.pem \
-e PUPPETDB_KEY=/etc/puppetlabs/puppetdb/ssl/private.pem \
-e PUPPETDB_CERT=/etc/puppetlabs/puppetdb/ssl/public.pem \
-e INVENTORY_FACTS='Hostname,fqdn, IP Address,ipaddress' \
-e ENABLE_CATALOG=True \
-e GRAPH_FACTS='architecture,puppetversion,osfamily' \
puppetboard
3
nginx
location/{}
块中,该块具有uwsgi_pass
指令:$ docker build -t puppetboard .
$ docker run -it -p 9080:80 -v /etc/puppetlabs/puppet/ssl:/etc/puppetlabs/puppet/ssl \
-e PUPPETDB_HOST=<hostname> \
-e PUPPETDB_PORT=8081 \
-e PUPPETDB_SSL_VERIFY=/etc/puppetlabs/puppetdb/ssl/ca.pem \
-e PUPPETDB_KEY=/etc/puppetlabs/puppetdb/ssl/private.pem \
-e PUPPETDB_CERT=/etc/puppetlabs/puppetdb/ssl/public.pem \
-e INVENTORY_FACTS='Hostname,fqdn, IP Address,ipaddress' \
-e ENABLE_CATALOG=True \
-e GRAPH_FACTS='architecture,puppetversion,osfamily' \
puppetboard
4
获取帮助
第三方
套餐
贡献
许可证
提交消息
$ docker build -t puppetboard .
$ docker run -it -p 9080:80 -v /etc/puppetlabs/puppet/ssl:/etc/puppetlabs/puppet/ssl \
-e PUPPETDB_HOST=<hostname> \
-e PUPPETDB_PORT=8081 \
-e PUPPETDB_SSL_VERIFY=/etc/puppetlabs/puppetdb/ssl/ca.pem \
-e PUPPETDB_KEY=/etc/puppetlabs/puppetdb/ssl/private.pem \
-e PUPPETDB_CERT=/etc/puppetlabs/puppetdb/ssl/public.pem \
-e INVENTORY_FACTS='Hostname,fqdn, IP Address,ipaddress' \
-e ENABLE_CATALOG=True \
-e GRAPH_FACTS='architecture,puppetversion,osfamily' \
puppetboard
5
示例
屏幕截图
更改日志
1.0.0
0.3.0
0.2.1
0.2.0
0.1.2
PuppetDB 3.2及更高版本提供0.1.1
0.1.0
templates/\u macros.html
status\u计数,如索引页和节点页上可用的内容,也可用于报表页和表。limit_reports
中的utils.py
已知问题
- 从json值事实呈现的事实值页不返回任何结果。要使用json值的事实(例如,通过事实集、事实路径和/或事实内容端点),需要更复杂的api
0.0.5
- 现在需要低于2.0的wtforms版本
- 在
dev.py
中添加烧瓶开发服务器
- 通过烧瓶添加CSRF保护保护物体。
- 允许用户在使用"限制报告"配置选项列出报告的页面上配置报告限制。
- 向用户添加资源清册页面,以便能够查看所有可用节点,并通过资源清册事实配置选项显示配置事实列表。
- 添加页面以查看节点的目录信息(如果启用,则默认为禁用)。可以使用"启用目录配置"属性进行更改。
- 新的配置选项"图表事实"允许用户选择哪些图表将在事实页上生成饼图。
- 将chart.js替换为c3.js和d3.js。
- 添加语义用户界面0.16.1并删除未使用的引导样式。
- 添加脱机模式配置选项以加载本地资产或从CDN服务加载。这在没有互联网接入的环境中非常有用。
0.0.4
- 修复包含事实的不同表的排序。
- 在
setup.py中修复许可证。许可证的长度不应超过200个字符。我们包括了像bdist_rpm这样的全授权绊倒工具。
0.0.3
这个版本引入了一些大的变化。最明显的一个是修改后的概述页,它收到了重大的爱。大部分工作是由朱利叶斯·赫特尔完成的。"节点"选项卡也进行了轻微的面部提升。
其他更改:
- 这个版本依赖于新的pypuppetdb 0.1.0。因此,SSL配置选项已更改:
puppetdb_ssl
已不存在,取而代之的是puppetdb_ssl_verify
它现在默认为true
。这只影响通过ssl连接puppetdb。- 如果同时提供puppetdb_cert和puppetdb_key,则会自动启用ssl。
- 已修复深度嵌套度量和查询结果的显示。
- 每个节点的平均资源度量现在显示为自然数。
- 已将指向该节点的链接添加到报表中。
- 报告中的一些问题已经解决。
- 添加了一个名为
unresponsive_hours
的新设置,该设置指示puppetboard在未签入时将节点显示为未报告的小时数。我们默认为2
小时。 - 现在可以通过单击事件来查看事件消息。
木偶板现在包装整齐,可在PYPI上使用。这将大大有助于减少人们必须遵循的复杂安装说明。
已添加了有关如何从PYPI安装以及如何配置httpd的更新安装说明。
0.0.2
在这个版本中,我们引入了一些新的东西。首先,我们现在需要pypuppetdb 0.0.4或更高版本,其中包括对puppetdb 1.5引入的v3 api的支持。
由于puppetdb 1.5中的更改,因此v2 api的pypuppetdb用户(无论puppetdb版本如何)将无法再查看报告或事件。
因此,以下设置已被删除:
puppetdb_实验版
添加了两个新设置:
puppetdb_api
:一个整数,默认为3
,表示我们要使用的api版本。启用查询
:一个布尔值,默认为true
,无论是否能够使用"查询"选项卡。
我们还添加了一些新功能:
- 由于在puppetconf期间与来自puppet labs的nick lewis一起完成了一些工作,我们现在在metrics选项卡中公开了puppetdb的所有度量。格式不是很漂亮,但这是一个开始。
- Spencer Krum在"事实"选项卡中添加了绘图功能。
- daniel lawrence添加了一个特性,这样节点视图上的事实就可以点击,并带您完成为您的基础设施查看该事实,并使"完整事实"列表中的节点可单击,以便您可以跳转到某个节点。
- 克拉夫斯·克拉夫森提供了一些关于如何与乘客一起操作木偶板的文档。
0.0.1
初始版本。