Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform Google部署管理器-BigTable示例_Google Cloud Platform_Google Cloud Bigtable_Google Deployment Manager - Fatal编程技术网

Google cloud platform Google部署管理器-BigTable示例

Google cloud platform Google部署管理器-BigTable示例,google-cloud-platform,google-cloud-bigtable,google-deployment-manager,Google Cloud Platform,Google Cloud Bigtable,Google Deployment Manager,我一直在尝试Google的Deployment Manager GitHub项目中提供的示例 它可以工作,但我不确定创建三个名为instance\u create、instance\u update和instance\u delete的实例的目的是什么 例如,从链接中获取: instance_create = { 'name': 'instance_create', 'action': 'gcp-types/bigtableadmi

我一直在尝试Google的Deployment Manager GitHub项目中提供的示例

它可以工作,但我不确定创建三个名为
instance\u create
instance\u update
instance\u delete
实例的目的是什么

例如,从链接中获取:

instance_create = {
      'name':
          'instance_create',
      'action':
          'gcp-types/bigtableadmin-v2:bigtableadmin.projects.instances.create',
      'properties': {
          'parent': project_path,
          'instanceId': instance_name,
          'clusters': copy.deepcopy(initial_cluster),
          'instance': context.properties['instance']
      },
      'metadata': {
          'runtimePolicy': ['CREATE']
      }
}
“操作”和“元数据”的用途是什么。“运行时策略”?我曾试图在文档中找到它,但失败得很惨。
为什么有三个“BigTable”实例?您是对的,文档中缺少信息,这些信息可以回答您关于这些参数的问题

但是,它有助于了解您链接的Depoyment Manager示例中发生了什么

首先,config.yaml中的下面一行是事情变得棘手的地方:

resources:
- name: my-bigtable
  type: bigtable.py
此行将调用
bigtable.py
python文件,该文件将部署的资源类型设置为
GenerateConfig
函数下的资源类型。看看这是怎么做到的

资源在其末尾返回为
{'resources':resources}
,它是在那里创建的资源列表中的资源变量

这些模板具有不同的名称标识符,它们由
“name”
标记设置。 因此,您没有在该文件中创建名为
instance\u create
instance\u update
instance\u delete
的三个不同实例,而是使用这些名称创建了三个模板,稍后将附加到
resources
列表中,然后返回config.yaml
resources.type
标记。 一旦使用create命令,部署管理器将依次构建和执行这些模板。请注意,它们可能会出现故障,这是由于

.yaml
文件格式中更容易看到此结构,例如,使用
jinja
构建,您发布的模板将是:

resources:
- action: gcp-types/bigtableadmin-v2:bigtableadmin.projects.instances.create
  name: instance_create
  metadata:
    runtimePolicy:
    - CREATE
  properties:
    clusters:
      initial:
        defaultStorageType: HDD
        location: projects/<PROJECT_ID>/locations/<PROJECT_LOCATION>
        serveNodes: 4
    instance:
      displayName: My BigTable Instance.
      type: PRODUCTION
    instanceId: my-instance
    parent: projects/<PROJECT_ID>
资源:
-操作:gcp types/bigtableadmin-v2:bigtableadmin.projects.instances.create
名称:实例创建
元数据:
运行时策略:
-创造
特性:
集群:
首字母:
defaultStorageType:HDD
地点:项目//地点/
serveNodes:4
实例:
displayName:我的BigTable实例。
类型:生产
实例ID:我的实例
家长:项目/
请注意,
properties
下的参数是(嵌套a和a)。请注意,properties下的InstanceId始终相同,因此模板在其上进行调用的BigTable实例始终相同

问题是,不仅您链接的示例创建了要在同一脚本中运行的各种模板,而且每个模板的资源类型也是如此

通常,模板资源是用
type
标记指定的,但由于您调用的是直接运行API调用的资源(即,不是只指定
gcp types/bigtableadmin-v2
,而是指定
bigtableadmin-v2:bigtableadmin.projects.instances.create
),使用
操作
标记。我在任何地方都没有发现这种用法上的差异,但需要这样指定。 如果资源以create/update/delete结尾,您将知道是否直接调用API“端点”

最后,我已经在我这边进行了调查,
metadata.runtimePolicy
与资源类型是API调用这一事实相关联(如前一点)。再一次,我在任何地方都没有找到这个文档。 但是,由于这是一项要求,因此必须始终在此字段中设置正确的值。它基本上可以归结为有
元数据。runtimePolicy
设置为该值,具体取决于您执行的API调用类型:

create->['create']

update->[“更改时更新”]

delete->['delete']

总结

  • 您不是在创建三个不同的实例,而是在同一个BigTable实例上创建三个不同的模板
  • 如果要调用API端点(创建/更新/删除),则需要将resource
    type
    标志更改为
    action
    ,而不仅仅是命名基本API
  • 调用其中一个重命名的端点时,需要使用
    metadata.runtimePolicy