sacloud / terraform-provider-sakuracloud

Terraform provider for SakuraCloud
https://docs.usacloud.jp/terraform
Apache License 2.0
71 stars 22 forks source link

ルーターのパスワードが noneになる件 #455

Closed yamatosi closed 5 years ago

yamatosi commented 5 years ago

発生事象

ルーターのパスワード、シークレットパスワードがnoneになる事象が発生しております。 ご調査をお願いできますでしょうか。

yamamoto-febc commented 5 years ago

状況がわからないため現時点では回答しにくいです。 以下のような点をご提示いただくと回答できるかもしれません。

具体的な疑問点は以下の通りです。

1) ルーターのパスワード、シークレットパスワードとは何を指すか

(ルータとして利用している)sakuracloud_serverリソースのパスワードのことでしょうか?
それともVPCルータsakuracloud_vpc_routerリソースのことでしょうか?

2) シークレットパスワードがnoneとどのように判断したか

terraform showで確認 or ルーター側でなんらかのコマンド実行して確認した、など

3) sakuracloudプロバイダーとrandomプロバイダーをどのように使っているか

可能な範囲でtfファイルをご提示いただけると早いと思います。

4) randomプロバイダーがなぜ登場するのか

前項と重複しますが、なぜrandomプロバイダーが登場するのか、なぜrandomプロバイダーの各バージョンを確認したのかという背景がわかりません。

yamatosi commented 5 years ago

言葉足らずで大変申し訳ございません。 また、突然のご連絡にも関わらず、折り返しご返信いただきありがとうございます。

やりたいことは何か? どういう状態であるべきか/期待しているか(To-Be)

VPCルータsakuracloud_vpc_router(L2TP/IPsec)へ接続する際、 randomプロバイダーで生成したパスワードを使用したいです。

設定箇所は以下添付となりまして、ユーザ認証とコンピュータ認証で使用するそれぞれ異なるパスワードです。

スクリーンショット 2019-06-13 14 58 48

実際はどういう状態か(As-Is)

terraform実行後、randomプロバイダーでパスワードは生成されているものの、VPCルータsakuracloud_vpc_routerへの設定が正常終了していないためか、 パスワードに none と入力しないとVPCルータsakuracloud_vpc_routerに接続できません。

どういう操作をしたか

randomプロバイダーで生成したパスワードを使用してVPCルータsakuracloud_vpc_routerへ接続したいです。

これまでどのような調査/判断をしたか

2018/9/4 以降に作成したVPCルータsakuracloud_vpc_routerにおいて、パスワードが none になる事象が発生しています。 調査としては、randomプロバイダーのバージョンを最新の 2.1.2 以前に戻してみたり、sacloud/terraformは 0.14.0 を使用しておりましたので、 1.11.4 へバージョンアップしてみたりして調査いたしました。

具体的な疑問点は以下の通りです。

1) ルーターのパスワード、シークレットパスワードとは何を指すか (ルータとして利用している)sakuracloud_serverリソースのパスワードのことでしょうか? それともVPCルータsakuracloud_vpc_routerリソースのことでしょうか?

VPCルータsakuracloud_vpc_routerリソースのことでございます。

2) シークレットパスワードがnoneとどのように判断したか terraform showで確認 or ルーター側でなんらかのコマンド実行して確認した、など

実際にルーターに接続する際に none でないと接続できませんでした。

3) sakuracloudプロバイダーとrandomプロバイダーをどのように使っているか 可能な範囲でtfファイルをご提示いただけると早いと思います。

前述した回答内容で足りないようでしたら、準備いたします。

4) randomプロバイダーがなぜ登場するのか 前項と重複しますが、なぜrandomプロバイダーが登場するのか、なぜrandomプロバイダーの各バージョンを確認したのかという背景がわかりません。

randomプロバイダーのバージョン指定を設定しておらず、発生したのが2018/9/4 以降でしたので、安易にrandomプロバイダーのバージョンを疑ってしまいました。 ただ、リリース時期など未確認でございましたため、見当違いでしたら大変申し訳ございません。

yamamoto-febc commented 5 years ago

情報の補足をいただきありがとうございます! 再現するか確認してみます。

yamatosi commented 5 years ago

ご対応ありがとうございます。 よろしくお願いいたします。

yamamoto-febc commented 5 years ago

ひとまず以下3パターンで試してみましたが再現できませんでした。

各パターンにおいてL2TPのPre Shared Secret/ユーザーのパスワード共に任意の値 or ランダム値が設定され、VPN接続確立 ~ VPN経由でのpingでの疎通確認(クライアント〜VPCルータのプライベートNIC)が行えました。

利用したバージョンは以下の通りです。

$ terraform version
Terraform v0.12.1
+ provider.random v2.1.2
+ provider.sakuracloud v1.12.1

各パターンのtfファイルは以下の通りです。(パスワードなどは適当な値に変えています)

1: randomプロバイダーを利用しない場合(sakuracloudプロバイダー v1.11以降の書き方)

```hcl resource sakuracloud_switch "foobar" { name = "terraform-issue-455" } resource sakuracloud_vpc_router "foobar" { name = "terraform-issue-455" description = "https://github.com/sacloud/terraform-provider-sakuracloud/issues/455" plan = "standard" interface { switch_id = sakuracloud_switch.foobar.id ipaddress = ["192.168.11.1"] nw_mask_len = 24 } l2tp { pre_shared_secret = "presharedsecret" range_start = "192.168.11.21" range_stop = "192.168.11.30" } user { name = "username" password = "password" } } ```

2: randomプロバイダーを利用する場合(sakuracloudプロバイダー v1.11以降の書き方)

```hcl resource "random_string" "password" { length = 12 special = false } resource sakuracloud_switch "foobar" { name = "terraform-issue-455" } resource sakuracloud_vpc_router "foobar" { name = "terraform-issue-455" description = "https://github.com/sacloud/terraform-provider-sakuracloud/issues/455" plan = "standard" interface { switch_id = sakuracloud_switch.foobar.id ipaddress = ["192.168.11.1"] nw_mask_len = 24 } l2tp { pre_shared_secret = random_string.password.result range_start = "192.168.11.21" range_stop = "192.168.11.30" } user { name = "username" password = random_string.password.result } } ```

3: randomプロバイダーを利用する場合(sakuracloudプロバイダー v1.11以前の書き方)

```hcl resource "random_string" "password" { length = 12 special = false } resource sakuracloud_switch "foobar" { name = "terraform-issue-455" } resource sakuracloud_vpc_router "foobar" { name = "terraform-issue-455" description = "https://github.com/sacloud/terraform-provider-sakuracloud/issues/455" plan = "standard" } resource "sakuracloud_vpc_router_interface" "eth1" { vpc_router_id = sakuracloud_vpc_router.foobar.id index = 1 switch_id = sakuracloud_switch.foobar.id ipaddress = ["192.168.11.1"] nw_mask_len = 24 } resource "sakuracloud_vpc_router_l2tp" "l2tp" { vpc_router_id = sakuracloud_vpc_router.foobar.id vpc_router_interface_id = sakuracloud_vpc_router_interface.eth1.id pre_shared_secret = random_string.password.result range_start = "192.168.11.21" range_stop = "192.168.11.31" } resource "sakuracloud_vpc_router_user" "user1" { vpc_router_id = sakuracloud_vpc_router.foobar.id name = "username" password = random_string.password.result } ```

さらなる切り分けのために以下2点補足情報をいただけますでしょうか?

yamatosi commented 5 years ago

ご対応ありがとうございます。 御社の実行結果を確認させていただきます。

取り急ぎ以下についてご回答いたします。

この事象は再現可能か、再現可能であれば頻度はどれくらいか

現在は、 100%再発いたします。

利用しているtfファイル(必要に応じて名称やパスワードなどの項目はマスクしてください)

こちらすいません。 複雑な環境になっておりまして、少々お時間をください。

yamamoto-febc commented 5 years ago

100%再発するとなるとtfファイルの記載誤りの可能性もあると思います。

例えば以下のように書いた場合、ランダム文字列ではなく"none"という文字列を取得してしまいます。 (最新版のrandomプロバイダーの場合)

# 誤: random_stringのidは常にnoneという文字列
password = random_string.password.id

# 正: ランダム文字列はresultというattributeを参照
# password = random_string.password.result

この辺りを含めご確認ください。

yamatosi commented 5 years ago

承知致しました。 ご教授いただきありがとうございます。

yamatosi commented 5 years ago

お世話になっております。

https://github.com/sacloud/terraform-provider-sakuracloud/issues/455#issuecomment-501623577 こちらを実施し、noneにならず、randomプラグインで生成したパスワードで設定反映できました。 ご教授いただきまして誠にありがとうございました。

ただ、設定変更後のパスワードでVPN接続を試みているのですが、接続ができず、何か心当たりがあればご教授いただけないでしょうか。 度々、お手数をお掛けして申し訳ございませんが、よろしくお願いいたします。

yamamoto-febc commented 5 years ago

構成が不明なため一般的な回答となりますが、ルータ側/クライアント側の設定確認やログの確認などで原因を切り分けていくのが良いかと思います。

VPCルータのログはコントロールパネルから確認できますので、接続関連のログが出力されているか/認証エラーなどが出力されていないかなどをご確認ください。

参考までに、手元の環境で確認したところ以下のようなログが出力されておりました。

VPCルータ側/クライアント側共に意図した設定になっているにも関わらず接続できない場合はさくらのクラウドのユーザーサポートにお問い合わせいただいたほうが良いかと思います。

yamatosi commented 5 years ago

ご回答ありがとうございます。

VPCルータ側/クライアント側共に意図した設定になっているにも関わらず接続できない場合はさくらのクラウドのユーザーサポートにお問い合わせいただいたほうが良いかと思います。

大変失礼いたしました。 今後は問い合わせ内容によって、ユーザーサポートへも問い合わせさせていただきます。

一旦、ルーターを再作成したところ、接続できました。 この度は問い合わせにご対応くださり、誠にありがとうございました。

クローズとさせていただきます。