跳转到主要内容

系统信息发现和资产管理

项目描述

系统信息发现和资产管理

安装

pip install grainsv2

开发版安装

克隆 grains 仓库并使用pip安装

git clone https://gitlab.com/saltstack/pop/grains.git
pip install -e grains

执行

安装后,现在应该可以访问 grains 命令。

命令将没有输出,直到它被垂直扩展(详情见下文)。

测试

使用pip安装 requirements-test.txt 并运行pytest

pip install -r grains/requirements-test.txt
pytest grains/tests

垂直应用合并

扩展grains的说明

安装pop

pip install --upgrade pop

为项目创建一个新的目录

mkdir grains_{project_name}
cd grains_{project_name}

使用 pop-seed 生成扩展 grains 的项目结构

pop-seed -t v grains_{project_name} -d grains

  • “-t v” 表示这是一个垂直应用合并项目

  • “-d grains” 表示我们想要实现“grains”的动态名称

请注意,已经为您创建了一些结构。我们特别关注 grains_{project_name}/grains 中的新目录

将“grains”添加到requirements.txt

echo "grains" >> requirements.txt

创建GRAINS

  • 在“grains_{project_name}/grains”中创建一个新文件
    • 该目录已经由 pop-seed 创建。

    • 文件名是任意的。

    • 该目录中的每个文件及其子目录将被“同时”解析(在异步IO的范围内尽可能有意义)。

    • 相互依赖的GRAINS应在同一函数中分配。

    • 不要依赖收集器的递归策略来使GRAINS相互依赖。

    • 使用 hub.grains.init.wait_for(“grains”) 等待其他子生成GRAINS

  • 将您的项目添加到python路径
    • 或者,从项目的根目录运行“pip install -e .”
      • 你只需要这样做一次

  • 在此文件中创建一个具有描述性但任意的异步函数
    • 按照惯例,它应该以“load”开头

    • 除非你有非常充分的理由,否则请将其设置为异步。

    • 相互依赖的颗粒已经属于同一个函数,不要依赖同步编程来实现确定性

    • 使用 hub.grains.init.wait_for(“specific_grain”) 在继续之前显式等待外部颗粒变得可用

    • 颗粒可以像字典一样访问和赋值,但我们的惯例是使用命名空间

    • 使用 hub.grains.GRAINS._dict()copy.copy(hub.grains.GRAINS) 获取颗粒的JSON可序列化版本。

示例

async def load_my_grain(hub):
    hub.grains.GRAINS.new_grain = "Hello World!"

就这样!现在请验证你的颗粒是否可以从命令行收集

grains new_grain

输出

new_grain:
    Hello World!

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。

源分发

grainsv2-11.10.tar.gz (6.6 kB 查看散列)

上传时间

构建分发

grainsv2-11.10-py3-none-any.whl (6.4 kB 查看散列)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面