繁体   English   中英

Ansible“gcp_compute_instance”模块不会将外部 IP 分配给 VM 实例

[英]Ansible "gcp_compute_instance" module won't assign External IP to VM instance

- name: Create Disk
  gcp_compute_disk:
    name: "{{app_name}}-disk"
    size_gb: 50
    source_image: "{{source_image}}"
    zone: "{{ gcp_zone }}"
    project: web-project
    auth_kind: "{{ gcp_cred_kind }}"
    state: present
  register: disk

- name: Reserve IP Address
  gcp_compute_address:
    name: "{{app_name}}-address"
    region: "{{region}}"
    project: vpc-project
    auth_kind: "{{ gcp_cred_kind }}"
    state: present
  register: address

- name: Create VM Instance
  gcp_compute_instance:
    name: "{{app_name}}-vm"
    machine_type: "{{instance_type}}"
    disks:
    - auto_delete: true
      boot: true
      source: "{{disk}}"
    network_interfaces:
    - subnetwork: 
        selfLink: "{{subnetwork}}"
        access_configs:
        - name: External NAT
          nat_ip: "{{ address }}"
          type: ONE_TO_ONE_NAT
    zone: "{{ gcp_zone }}"
    project: web-project
    auth_kind: "{{ gcp_cred_kind }}"
    state: present
  register: instance

VPC 存在于“vpc-project”中,并与“web-project”共享,后者没有自己的网络。

地区:us-west1 地区:us-west1-b

当我运行代码时,它使用其他项目 VPC 成功创建了 VM,并为其分配了一个内部 IP。

但是,它不会将外部 IP 分配给它。 我已确认地址已创建且位于正确的区域,但它只是闲置在那里。

只是为了测试,我让它在项目 local.network 中创建了一个外部地址和一个 VM,但它仍然没有为其分配公共地址。

我错过了什么吗?

John 和 Ferregina 是正确的 - 来自一个项目的外部 IP 不能分配给另一个项目中的资源。 我相应地改变了剧本。

然而,这不是我痛苦的原因。 这是一个与剧本相关的问题。 由于某种原因,在剧中使用“selfLink”导致它完全忽略了关于“access_configs”的整个部分。

我改变了它:

network_interfaces:
- subnetwork: 
    selfLink: "{{subnetwork}}"
    access_configs:
    - name: External NAT
      nat_ip: "{{ address }}"
      type: ONE_TO_ONE_NAT

对此:

network_interfaces:
- subnetwork: "{{subnetwork_info.resources[0]}}"
  access_configs:
  - name: External NAT
    nat_ip: "{{ external_address }}"
    type: ONE_TO_ONE_NAT

它奏效了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM