系统信息发现和资产管理
项目描述
系统信息发现和资产管理
安装
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!
项目详情
下载文件
下载适合您平台的文件。如果您不确定要选择哪个,请了解更多关于 安装包 的信息。