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)获取元数据。

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