outcompute / cloudmetadata
从169.254.169.254跨服务商实例获取元数据JSON。
1.5.1
2018-09-21 12:03 UTC
This package is not auto-updated.
Last update: 2024-09-14 19:53:19 UTC
README
这是一个简单的PHP库,可以从实例内部的链接本地地址(http://169.254.169.254)获取元数据。
- 支持 AWS、Azure、DigitalOcean 以及 Google Cloud。
- 结果可以缓存在文件中。
- 重启后总是刷新元数据。
169.254.169.254是一个链路本地地址,你可以在这里了解更多信息:这里。
安装
将以下行添加到你的composer.json文件中,
"outcompute/cloudmetadata": "1.5.0"
然后运行。
$ composer update
如果你不想使用composer,你必须包含所有文件,例如这样
include_once('src/Cache/AbstractCache.php'); include_once('src/Cache/File.php'); include_once('src/CacheFactory.php'); include_once('src/Provider/AbstractProvider.php'); include_once('src/Provider/AWS.php'); include_once('src/Provider/Azure.php'); include_once('src/Provider/DigitalOcean.php'); include_once('src/Provider/GCP.php'); include_once('src/ProviderFactory.php'); include_once('src/TemplateParser/Base.php'); include_once('src/TemplateParser/AWS.php'); include_once('src/TemplateParser/Azure.php'); include_once('src/TemplateParser/DigitalOcean.php'); include_once('src/TemplateParser/GCP.php'); include_once('src/TemplateParserFactory.php'); include_once('src/MetaData.php');
如何使用
无缓存
<?php include_once('vendor/autoload.php'); $metaObject = new OutCompute\CloudMetaData\MetaData(); $metaData = $metaObject->get(); var_export($metaData); ?>
带缓存(目前只提供'文件')
<?php include_once('vendor/autoload.php'); $cache = OutCompute\CloudMetaData\CacheFactory::factory('File'); $cache->directory = dirname(__FILE__); $metaObject = new OutCompute\CloudMetaData\MetaData($cache); $metaData = $metaObject->get('json'); var_export($metaData); ?>
模板化响应
如果你有跨云部署并以任何方式使用元数据,那么将元数据以一致的方式呈现将很有帮助。已添加对模板的支持,允许你指定模板和令牌。提供了一些示例令牌。常见的和供应商无关的令牌在 src/TemplateParser/Base.php
中处理,而供应商特定的令牌则在 src/TemplateParser
中的特定处理程序中解析。
模板必须存储在模板目录中,并且文件名作为 OutCompute\CloudMetaData\MetaData()::get()
的第二个参数提供。
<?php include_once('vendor/autoload.php'); $metaObject = new OutCompute\CloudMetaData\MetaData(); $metaData = $metaObject->get('json', 'basic.json'); var_export($metaData); ?>
令牌不必遵循它们包含的模板的层次结构,可以是任何字符串,只要它们在任何解析器中处理即可。目前支持的令牌集似乎遵循基本.json中的层次结构,以点(.)作为分隔符,但这不是严格的要求。
然而,如果你正在为存储库做出贡献,那么如果令牌遵循某种结构将会很好。
待办事项
- 添加其他云提供商,例如:Linode等。
- 添加测试用例
- 一般改进
- 支持各种配置的模板,并扩展支持的令牌集
许可证
MIT