1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

conoha用にterraformファイル作成

Last updated at Posted at 2019-05-04

はじめに

terraformを使ってconohaでinstance生成でinstance生成が出来た。
これらの情報を元に勉強用instance生成のためのterraform資材を作成する

- machine specs
  • OS : MacBook
  • terraform: v0.11.13
  • cloud : conoha VPS

Menu

本ページでは以下の内容をやっていきます。

  • terraform変数管理
    • access_key等の情報は別ファイルで持たせる
    • image_id/auth_url等はtfファイルで管理
  • 足りてない機能の拡充
    • セキュリティグループ&ルール(port22のみ解放)を追加(tfファイル更新)
  • 動作確認
    • applyによるリソース作成
    • ssh接続確認
    • destoryによる削除

結論

最低限の変数化とtfファイルの作成は行えた。
セキュリティグループはドキュメントが充実してたので100割パクリでいけたのが嬉しい。:laughing:

- 今後の課題
  • ぅーん。これじゃGUI行かないとIPわからんちん
    • 一応、stateファイル見ればconohaからの情報(instanceのID, IPaddress等)が判る
  • image/flavorは切り替えやすい様に別ファイルで定義してスイッチ出来る様にしたい。(centOSもつかいたいねん)
  • SecurityGroupとかは毎回作らずに使いまわしたい。
    • 「有れば作らない」、「Destroy時には削除しない。」
  • id_rsaファイルとかはinstance生成時に配置とかしておきたい
    • 多分user_dataとかいうので頑張るんだと思う。
      • ただ、ird_rsa.pubの情報もあんまgithubとかで管理したくないんよな。さてどうするか。
  • moduleって何?レベルなので他の何かをもう少し覚える。
  • ベストプラクティクスなのがあるはずなので探してみる。

terraformの変数管理

前述の方針に則り、以下の様にファイルを用意した。

- variable.tf作成

要点はmapを使用して分類ごとに定義する。

variable.tf
variable "general_setting" {
  type = "map"

  default = {
    path_pub_key = "~/.ssh/id_rsa.pub"
    auth_url = "https://identity.tyo2.conoha.io/v2.0"
  }
}

variable "conoha_config" {
  type = "map"

  default = {
    image_id  = "de03b36d-21d8-4e58-9b8e-24581dda86fa"
    flavor_id = "d92b02ce-9a4f-4544-8d7f-ae8380bc08e7"
  }
}
- .conoha.rc作成

current dirにrc fileを作成。
APIキー等を定義してそれらをsourceコマンドで読み込んで使用する。

~/.terraform/.conoha.rc
azuki@maki-mac:~/Deployments/terraform$ cat ~/.terraform/.conoha.rc
export TF_VAR_C_TENANT_ID=XXXXXXXXXXXXX
export TF_VAR_C_USER_NAME=YYYYYYYYYY
export TF_VAR_C_PASSWORD=DDDDDDDDDDDDDDDD
azuki@maki-mac:~/Deployments/terraform$

セキュリティ設定

openstack_networking_secgroup_rule_v2を元に作成。

- グループ追加

デフォルトで勝手に付いてくるruleは削除する様に設定

add_security_group_resource
resource "openstack_networking_secgroup_v2" "azuki_sec_group" {
  name        = "azuki_sec_group"
  delete_default_rules = true
  description = "My neutron security group"
}
- ルール追加

ポート番号22のみ許可。つまりping(icmp)は受け付けないはず

add_security_roles
resource "openstack_networking_secgroup_rule_v2" "azuki_secgroup_rule01" {
  direction         = "ingress"
  ethertype         = "IPv4"
  protocol          = "tcp"
  port_range_min    = 22
  port_range_max    = 22
  remote_ip_prefix  = "0.0.0.0/0"
  security_group_id = "${openstack_networking_secgroup_v2.azuki_sec_group.id}"
}
- ルール適用

security_groupsに前述で定義しているgroup名を定義する

resource_deploy_instance
resource "openstack_compute_instance_v2" "deploy_basic_instance" {
  name        = "azuki-vps"
  image_id    = "${lookup(var.conoha_config, "image_id")}"
  flavor_id = "${lookup(var.conoha_config, "flavor_id")}"
  key_pair    = "terraform-keypair"

  security_groups = [
    "azuki_sec_group",
  ]

  metadata {
    instance_name_tag = "azuki-vps"
  }
}

動作確認

- applyによるリソース作成

sec_group&ruleの作成及びkeypairとinstance作成の計4Resource無事成功。

finish_terraform_apply
Apply complete! Resources: 4 added, 0 changed, 0 destroyed.
azuki@maki-mac:~/Deployments/terraform$
- ssh接続確認

ssh接続OK。pingは想定通り失敗してくれた。:relaxed:

ssh_connect
azuki@maki-mac:~/Deployments/terraform$ ssh root@118.27.8.155
Welcome to Ubuntu 16.04.5 LTS (GNU/Linux 4.4.0-141-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

0 packages can be updated.
0 updates are security updates.


root@118-27-8-155:~# exit
logout
Connection to 118.27.8.155 closed.
azuki@maki-mac:~/Deployments/terraform$
check_ping_NG
azuki@maki-mac:~/Deployments/terraform$ ping -c 5 -W 5 118.27.8.155
PING 118.27.8.155 (118.27.8.155): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3

--- 118.27.8.155 ping statistics ---
5 packets transmitted, 0 packets received, 100.0% packet loss
azuki@maki-mac:~/Deployments/terraform$
- destroyによるリソース削除

sec_group&ruleの作成及びkeypairとinstance削除の計4Resource無事成功。

finish_terraform_destroy

Destroy complete! Resources: 4 destroyed.
azuki@maki-mac:~/Deployments/terraform$
azuki@maki-mac:~/Deployments/terraform$

参考ページ

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?