如何使用 Google 部署管理器 (GCP) 创建网络和子网
How to Create a Network and SubNetwork using Google deployment-manager (GCP)
我刚开始研究 GCP 部署管理器,我正在创建一个文件来创建一个网络和一个子网。我使用 2 个不同的文件(每个文件一个)进行了测试并且工作正常。现在,当我结合网络和子网的创建时,有两个问题:
在创建过程中,当网络完成创建并开始子网步骤时,看起来网络信息还没有创建,我得到了找不到资源的错误。但是如果我 运行 再次更新,子网就会创建。
在删除过程中,部署管理器尝试先删除网络再删除子网,我收到消息 "resource is in use, you can't delete"。
所以,我想在这里获得有关这方面最佳实践的帮助。非常感谢。
我的配置:
main.yml
imports:
- path: network.jinja
- path: subnetwork.jinja
resources:
- name: network
type: network.jinja
- name: subnetwork
type: subnetwork.jinja
network.jinja
resources:
- type: gcp-types/compute-v1:networks
name: network-{{ env["deployment"] }}
properties:
routingConfig:
routingMode: REGIONAL
autoCreateSubnetworks: false
subnetwork.jinja
resources:
- type: gcp-types/compute-v1:subnetworks
name: subnetwork-{{ env["deployment"] }}
properties:
region: us-central1
network: https://www.googleapis.com/compute/v1/projects/XXXXXXXX/global/networks/network-{{ env["deployment"] }}
ipCidrRange: 10.10.10.0/24
privateIpGoogleAccess: false
您的问题很可能是因为 Deployment Manager 没有识别出您的资源之间存在依赖关系。这是我使用的有效 YAML:
resources:
- type: gcp-types/compute-v1:networks
name: network-mynet
properties:
routingConfig:
routingMode: REGIONAL
autoCreateSubnetworks: false
- type: gcp-types/compute-v1:subnetworks
name: subnetwork-mynet
properties:
region: us-central1
network: $(ref.network-mynet.selfLink)
ipCidrRange: 10.10.10.0/24
privateIpGoogleAccess: false
我认为主要区别在于,在此示例中,subnetworks
定义中的 network
元素使用了 Deployment Manager references。通过利用这种技术,我们有更多的声明性解决方案并且可以推导出关系。
我刚开始研究 GCP 部署管理器,我正在创建一个文件来创建一个网络和一个子网。我使用 2 个不同的文件(每个文件一个)进行了测试并且工作正常。现在,当我结合网络和子网的创建时,有两个问题:
在创建过程中,当网络完成创建并开始子网步骤时,看起来网络信息还没有创建,我得到了找不到资源的错误。但是如果我 运行 再次更新,子网就会创建。
在删除过程中,部署管理器尝试先删除网络再删除子网,我收到消息 "resource is in use, you can't delete"。
所以,我想在这里获得有关这方面最佳实践的帮助。非常感谢。
我的配置:
main.yml
imports:
- path: network.jinja
- path: subnetwork.jinja
resources:
- name: network
type: network.jinja
- name: subnetwork
type: subnetwork.jinja
network.jinja
resources:
- type: gcp-types/compute-v1:networks
name: network-{{ env["deployment"] }}
properties:
routingConfig:
routingMode: REGIONAL
autoCreateSubnetworks: false
subnetwork.jinja
resources:
- type: gcp-types/compute-v1:subnetworks
name: subnetwork-{{ env["deployment"] }}
properties:
region: us-central1
network: https://www.googleapis.com/compute/v1/projects/XXXXXXXX/global/networks/network-{{ env["deployment"] }}
ipCidrRange: 10.10.10.0/24
privateIpGoogleAccess: false
您的问题很可能是因为 Deployment Manager 没有识别出您的资源之间存在依赖关系。这是我使用的有效 YAML:
resources:
- type: gcp-types/compute-v1:networks
name: network-mynet
properties:
routingConfig:
routingMode: REGIONAL
autoCreateSubnetworks: false
- type: gcp-types/compute-v1:subnetworks
name: subnetwork-mynet
properties:
region: us-central1
network: $(ref.network-mynet.selfLink)
ipCidrRange: 10.10.10.0/24
privateIpGoogleAccess: false
我认为主要区别在于,在此示例中,subnetworks
定义中的 network
元素使用了 Deployment Manager references。通过利用这种技术,我们有更多的声明性解决方案并且可以推导出关系。