LoginSignup
1
2

More than 5 years have passed since last update.

z.com APIを用いてのデプロイ

Last updated at Posted at 2017-10-08

Z.com のセキュリティグループをAPIで変更してデプロイ

Z.comとは

https://z.com/jp/
GMOグループが去年始めた企業向け(?)クラウドサービス
基本的な機能は抑えて有り、料金もお手頃。
管理画面からインスタンス作成から削除等、使い方も簡単だがリリースして日が浅いからか痒い部分に手がとどかない
最近はブロックチェーン用のサービスも展開しており、今後の展開が面白そう

経緯

仕事で使った際に、CircleCIからの自動デプロイで手間取ったので備忘録兼、誰かの手助けになればと思い簡単にメモ
インフラ初心者なのと、メモ書き程度なので間違っていたりしても許してください

問題点

AWSへのCircleCIからのデプロイの場合、CodeDeployや、aws cliを用いてセキュリティグループに自IPを追加してのデプロイかと思われるのだが、
Z.comにはそのような機能は無く、あるのは豊富なAPI群
https://cloud.z.com/sg/ja/cloud/docs/

z.comクラウドのAPI利用方法

// トークン発行

curl -X POST \
-H "Accept: application/json" \
-d '{"auth":{"passwordCredentials":{"username":"【ID】","password":"【パスワード】"},"tenantId":"【テナントID】"}}' \
https://identity.jpt1.cloud.z.com/v2.0/tokens | jq .

// セキュリティグループ一覧取得

curl -X GET \
-H "Accept: application/json" \
-H "X-Auth-Token: 【発行したトークン】" \
https://networking.jpt1.cloud.z.com/v2.0/security-groups | jq .

// セキュリティグループ作成

 curl -X POST \
-H "Accept: application/json" \
-H "X-Auth-Token: 【発行したトークン】" \
-d '{"security_group": {"name": "【作りたいセキュリティグループ名】"}}' \
https://networking.jpt1.cloud.z.com/v2.0/security-groups | jq .

// セキュリティグループルール追加

curl -X POST \
-H "Accept: application/json" \
-H "X-Auth-Token: 【発行したトークン】" \
-d '{"security_group_rule": {"direction": "ingress", "ethertype": "IPv4", "security_group_id": "【対象セキュリティグループID】", "port_range_min": "1", "port_range_max": "65535", "protocol": "tcp", "remote_ip_prefix": "【対象CIDER】"}}' \
https://networking.jpt1.cloud.z.com/v2.0/security-group-rules | jq .

// IP指定なし

curl -X POST \
-H "Accept: application/json" \
-H "X-Auth-Token: 【発行したトークン】" \
-d '{"security_group_rule": {"direction": "ingress", "ethertype": "IPv4", "security_group_id": "【対象セキュリティグループID】", "port_range_min": "22", "port_range_max": "22", "protocol": "tcp"}}' \
https://networking.jpt1.cloud.z.com/v2.0/security-group-rules | jq .

// セキュリティグループルール削除

curl -X DELETE \
-H "Accept: application/json" \
-H "X-Auth-Token: 【発行したトークン】" \
https://networking.jpt1.cloud.z.com/v2.0/security-group-rules/【対象セキュリティグループルールID】 | jq .

// セキュリティグループ削除

curl -X DELETE \
-H "Accept: application/json" \
-H "X-Auth-Token: 【発行したトークン】" \
https://networking.jpt1.cloud.z.com/v2.0/security-groups/【対象セキュリティグループID】 | jq .

// ポート情報

curl -X GET \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: 【発行したトークン】" \
https://networking.jpt1.cloud.z.com/v2.0/ports | jq .

// 割当

curl -X PUT \
-H "Accept: application/json" \
-H "X-Auth-Token: 【発行したトークン】" \
-d '{"port": {"security_groups": ["【割り当てたいセキュリティグループID】", "【複数入力可能】"]}}' \
https://networking.jpt1.cloud.z.com/v2.0/ports/【対象ポートID】 | jq .

自分の場合はpushに紐付けてデプロイ先のインスタンスのセキュリティグループの許可群にデプロイ元のIPを追加→デプロイ→セキュリティグループ削除
というのを行うスクリプトを設置して、git pushから紐付けて自動デプロイを構築した。

今後改良していくとは思うが、中途半端ではありますがメモとして残しておきます。

1
2
0

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
2