2017-09-26 2 views
1

私は、Terraformを使用してOVHのPublic CloudにいくつかのOpenstackインスタンスを展開しようとしています。ポイントは(今のところ)2つのネットワーク上に2つのインスタンスを持つことです。それぞれのインスタンスは外部IPアドレス(これは問題ではない)とプライベートネットワーク上の内部IPアドレス(私のトラブルを引き起こす)を持っている必要があります。OVHのOpenstackでTerraformを使用したプライベートネットワークの作成

マイテラフォームファイルには、次のとおりです。

resource "openstack_compute_keypair_v2" "keypair" { 
    provider = "openstack.ovh" 
    name  = "jpin" 
    public_key = "${file("~/.ssh/id_rsa.pub")}" 
    region  = "GRA3" 
} 

resource "openstack_networking_network_v2" "network_1" { 
    provider  = "openstack.ovh" 
    name   = "network_1" 
    admin_state_up = "true" 
    region   = "GRA3" 
} 

resource "openstack_networking_subnet_v2" "subnet_1" { 
    provider = "openstack.ovh" 
    name  = "subnet_1" 
    network_id = "${openstack_networking_network_v2.network_1.id}" 
    cidr  = "192.168.199.0/24" 
    ip_version = 4 
    region  = "GRA3" 
    enable_dhcp = true 
} 

resource "openstack_networking_port_v2" "port_1" { 
    provider  = "openstack.ovh" 
    name   = "port_1" 
    network_id  = "${openstack_networking_network_v2.network_1.id}" 
    admin_state_up = "true" 
    region   = "GRA3" 

    fixed_ip { 
    "subnet_id" = "${openstack_networking_subnet_v2.subnet_1.id}" 
    } 
} 

resource "openstack_networking_port_v2" "port_2" { 
    provider  = "openstack.ovh" 
    name   = "port_2" 
    network_id  = "${openstack_networking_network_v2.network_1.id}" 
    admin_state_up = "true" 
    region   = "GRA3" 

    fixed_ip { 
    "subnet_id" = "${openstack_networking_subnet_v2.subnet_1.id}" 
    } 
} 

resource "openstack_compute_instance_v2" "instance_1" { 
    provider  = "openstack.ovh" 
    name   = "instance_1" 
    security_groups = ["default"] 
    region   = "GRA3" 
    key_pair  = "${openstack_compute_keypair_v2.keypair.name}" 
    flavor_name  = "s1-2" 
    image_name  = "Debian 8 - Docker" 

    network = [ 
    { 
     name = "Ext-Net" 
    }, 
    { 
     port = "${openstack_networking_port_v2.port_1.id}" 
    }, 
    ] 
} 

resource "openstack_compute_instance_v2" "instance_2" { 
    provider  = "openstack.ovh" 
    name   = "instance_2" 
    security_groups = ["default"] 
    region   = "GRA3" 
    key_pair  = "${openstack_compute_keypair_v2.keypair.name}" 
    flavor_name  = "s1-2" 
    image_name  = "Debian 8 - Docker" 

    network { 
    port = "${openstack_networking_port_v2.port_2.id}" 
    } 
} 

{ 
    name = "Ext-Net" 
}, 

部分は私が外の世界にインスタンスを接続することができます。私の2つのインスタンスは、192.168.199.0/24ネットワークにIPアドレスを持つ必要がありますが、そうではありません。彼らはIPアドレスもこのネットワークに通信するルートも持っていません。しかし、私は、彼らが適切なIPアドレスを持っていることを知っている:そのスクリーンショットで

enter image description here

、instance_1は(予想通り)外にも接続されています。 instance_1とinstance_2の両方にプライベートIPアドレスがあります。しかし:

[email protected]:~# ip a 
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 
    link/ether fa:16:3e:b1:7c:ae brd ff:ff:ff:ff:ff:ff 
    inet 145.239.XXX.YY/32 brd 145.239.XXX.YY scope global eth0 
     valid_lft forever preferred_lft forever 

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 
    link/ether fa:16:3e:6a:87:8e brd ff:ff:ff:ff:ff:ff 

eth1がそのIPアドレス(192.168.199.2または0.3)を持っていません。 192.168.199.0/24サブネットへのルートはありません。

+0

私のために同じ問題 – Derp

+0

私たちがあなたを助けるためにあなたのterraformコードで新しい質問を提出する必要があります。私はそれを調べます –

+0

実際、OVHに関する記事の例は動作しませんhttps://docs.ovh.com/gb/en/public-cloud/how-to-use-terraform/、プライベートネットワークのIP doあなたの質問に書かれているように、インターフェイスに割り当てられません。そしておそらくそれが、OVHのgithub 'ovh/publiccloud-network/ovh'上のネットワークのための特別なモジュールがある理由です。 – Derp

答えて

1

数日後、すべてが機能しました。プロバイダのサポートが言っているにもかかわらず、それはバグのようです:私は何も変更していないと突然どこにも働いていない労働者。

EDIT:は、数週間後、私は次のコードになってしまった:コピー/貼り付けと

慎重に、私のcompute_instanceは、モジュール内にあるため、これらすべてのvar

resource "ovh_publiccloud_private_network" "network" { 
    provider = "ovh.ovh" 
    project_id = "${var.tenant_id}" 
    name  = "Private Network" 
    regions = "${values(var.regions)}" 
} 

resource "ovh_publiccloud_private_network_subnet" "subnet" { 
    provider = "ovh.ovh" 
    project_id = "${var.tenant_id}" 
    network_id = "${element(ovh_publiccloud_private_network.network.*.id, count.index)}" 

    start = FIRST_PRIVATE_IP 
    end  = LAST_PRIVATE_IP 
    network = PRIVATE_SUBNET 

    count  = "${length(var.regions)}" 
    region  = "${element(values(var.regions), count.index)}" 
} 

resource "openstack_compute_instance_v2" "compute_instance" { 
    provider   = "openstack.ovh" 
    region    = "${var.region_id}" 
    key_pair   = "${var.keypair}" 
    flavor_name   = "${var.instance_flavor}" 
    image_name   = "${var.instance_image}" 

    network = [ 
    { 
     name = "Ext-Net" 
    }, 
    { 
     name  = "${var.private_network}" 
     fixed_ip_v4 = MY_PRIVATE_IP 
    }, 
    ] 
} 

Iもうポートを使用していません。ポートの使用を停止する選択肢は、その問題とは関係ありません。

Debian 9以降、インスタンスはプライベートインターフェイスをインターネットに接続するためのインターフェイスとして構成しようとする可能性があります。どちらが動作しません。

+0

私はあなたのスニペットを使い、変数を置き換えたばかりです。私の3番目のインターフェースは 'DOWN'でもあり、IPアドレスが割り当てられていません。 – Derp

+1

DHCP設定を確認します。プライベートネットワークでそれを無効にして、手動でIPアドレスを割り当ててデバッグする必要があるかもしれません。もう一度コメントが新しい質問ではない場合は、新しい質問を開き、必要に応じてここにリンクを貼り付けてください –

関連する問題