More Related Content
Similar to 【初心者向け】API を使ってクラウドの管理を自動化しよう (20)
More from 富士通クラウドテクノロジーズ株式会社 (20)
【初心者向け】API を使ってクラウドの管理を自動化しよう
- 1. Copyright 2018 FUJITSU CLOUD TECHNOLOGIES LIMITED
【初心者向け】API を使ってクラウ
ドの管理を自動化しよう
富士通クラウドテクノロジーズ株式会社
竹内 豪
1
ニフクラ エンジニア ミートアップ 第 9 回 自動化事始め
- 2. Copyright 2018 FUJITSU CLOUD TECHNOLOGIES LIMITED
自己紹介
◼ 名前: 竹内 豪
◼ GitHub: @tily (https://github.com/tily)
• ニフクラ関連プログラム
• Ruby ライブラリ
• 自作 Web サービス 等…
◼ 担当業務:
• Computing → iPaaS (Automation・RDB) →
IoT (Script・Timer) → Computing (イマココ)
• SDK・ドキュメント自動生成 (β)
• FJCT エンジニアタスクフォース副委員長
参考: https://bit.ly/2CZdgkh
2
- 3. Copyright 2018 FUJITSU CLOUD TECHNOLOGIES LIMITED
API / SDK / CLI とは?
◼ API (Application Programming Interface)
• プログラムを書くためのインタフェース仕様
• ここでは “Web API” のことを指している
3
◼ SDK
(Software
Development Kit)
• API を利用するために
用意されたライブラリ
• API サーバーにリクエ
ストを送るクライアン
トの役割を果たすため、
「クライアント」と呼
ばれることも多い
◼ CLI
(Command Line Interface)
• API をコマンドラインから使
えるようにしたもの
• SDK よりも手軽に利用する
ことが可能
- 4. Copyright 2018 FUJITSU CLOUD TECHNOLOGIES LIMITED
API のメリット (1)
◼ コンパネから 20 台サーバーを作成したい
4
01. イメージ選択 02. サーバータイプ選択
03. サーバー設定 04. 入力内容確認
×20回
- 5. Copyright 2018 FUJITSU CLOUD TECHNOLOGIES LIMITED
API のメリット (2)
5
◼ API を使えば一発で実行可能
from nifcloud import session
client = session.get_session().create_client("computing")
for i in range(20):
instance_id = "server%02d" % (i + 1)
print(f"Creating {instance_id}")
client.run_instances(
InstanceId=instance_id,
ImageId="89",
KeyName="something",
)
waiter = client.get_waiter("instance_running")
waiter.wait(InstanceId=[instance_id])
print(f"Created {instance_id}")
※後述の nifcloud-sdk-python (開発者プレビュー版で記述)
- 6. Copyright 2018 FUJITSU CLOUD TECHNOLOGIES LIMITED
API のメリット (3)
6
◼ 繰り返し行う操作を自動化
• → 工数削減
◼ 自動化によるオペミス削減
• → 品質向上
◼ 構成管理への応用
• → インフラをソースコードとして管理
(Infrastructure as a Code)
- 7. Copyright 2018 FUJITSU CLOUD TECHNOLOGIES LIMITED
ニフクラ各サービス API のご紹介
◼ Computing
• サーバー
• ディスク
• SSH キー
• OS イメージ
• ロードバランサー
• マルチロードバランサー
• ファイアウォール
• SSL 証明書
• 利用状況
• アップロード
• 付替 IP アドレス
• 追加 NIC
オートスケール
• 基本監視
• プライベート LAN
• ルーター
• VPN ゲートウェイ
• サーバーセパレート
7
◼ NAS
• NAS サーバー
• NAS ファイアウォール
• モニタリング
◼ スクリプト
• スクリプト実行
◼ 専有エンドポイント
• 専有エンドポイント
• 専有エンドポイント FW グループ
• モニタリング
◼ RDB
• DB サーバー
• オプション
• DB スナップショット
• DB パラメーターグループ
• イベント
• イベント通知
• DB ログ
• モニタリング
• 証明書
◼ DNS
• ゾーン操作
• レコード操作
◼ ESS
• 送信元メアド管理
• 送信元ドメイン管理
• メール送信
• 利用状況確認
• DKIM 設定管理
• 配信ログ取得
◼ オブジェクトストレージ
• バケット操作
• オブジェクト操作
https://cloud.nifty.com/api/
- 8. Copyright 2018 FUJITSU CLOUD TECHNOLOGIES LIMITED
ニフクラ公式 SDK・CLI
◼ SDK (https://cloud.nifty.com/api/sdk/)
• ニフクラ Computing SDK for Java
• ニフクラ RDB・DNS・ESS SDK for Java
• ニフクラ オブジェクトストレージ SDK for Java
• ニフクラ RDB・DNS SDK for PHP
◼ CLI (https://cloud.nifty.com/api/cli/)
• ニフクラ Computing CLI
8
→ 対応サービス拡充・対応言語拡充を検討中!
- 9. Copyright 2018 FUJITSU CLOUD TECHNOLOGIES LIMITED
ニフクラ SDK for Python (開発者プレビュー版)
◼ 特長
• ニフクラの複数サービスに対応 (Computing / RDB /
NAS / Script)
• 付属のデバッグ CLI でコマンドラインから動作確認
が可能
• AWS SDK JSON 互換によるデータ駆動の仕組みを採
用
◼ 紹介ブログ記事
• https://blog.pfs.nifcloud.com/nifcloud_sdk_pytho
n
9
- 10. Copyright 2018 FUJITSU CLOUD TECHNOLOGIES LIMITED
FJCT におけるニフクラ API 活用事例
◼ メイン機能利用
• オブジェクトストレージ操作
• メール送信 (HTTP 経由)
• スクリプト実行
10
◼ 構築自動化
• Computing サーバー作成
• RDB DB サーバー作成
• NAS NAS サーバー作成
◼ 運用自動化
• Computing SSL 証明書更新
• RDB FW グループ設定変更
◼ リソース監視
• Computing リソース監視
• RDB フェイルオーバー監視
- 11. Copyright 2018 FUJITSU CLOUD TECHNOLOGIES LIMITED
API を利用した構築自動化 (ansible-role-nifcloud)
◼ ansible-role-nifcloud
• https://github.com/nifcloud/ansible-role-
nifcloud
• ansible から API を利用したニフクラリソースの管
理が可能
• 現在は Computing サーバー / FW グループ / ロー
ドバランサー / 増設ディスクに対応
◼ 利用イメージ
• (次スライド参照)
11
- 12. Copyright 2018 FUJITSU CLOUD TECHNOLOGIES LIMITED
API を利用した構築自動化 (利用イメージ)
12
- name: Start server
local_action:
module: nifcloud
access_key: "YOUR ACCESS KEY"
secret_access_key: "YOUR SECRET ACCESS KEY"
endpoint: "jp-west-1.computing.api.nifcloud.com"
instance_id: "web001"
state: "running"
image_id: "26"
key_name: "dummykey"
security_group: "webfw"
instance_type: "mini"
availability_zone: "west-11"
accounting_type: "2"
ip_type: "static"
startup_script: "roles/infrastructure/template/startup_script"
startup_script_vars:
dummy_var: "DUMMY"
network_interface:
- network_id: net-COMMON_GLOBAL
ipAddress: "0.0.0.0"
- 13. Copyright 2018 FUJITSU CLOUD TECHNOLOGIES LIMITED
API を利用した運用自動化
自分のチームでは細々とした運用の自動化は
nifcloud-sdk-python に同梱されている
nifcloud-debugcli で行っています。
13
## API キーとデフォルトリージョンの設定
$ export AWS_ACCESS_KEY_ID=<Your NIFCLOUD Access Key ID>
$ export AWS_SECRET_ACCESS_KEY=<Your NIFCLOUD Secret Access Key>
$ export AWS_DEFAULT_REGION=jp-east-1
## 利用可能なサービスの一覧を表示
$ nifcloud-debugcli help
## 指定されたサービスで利用可能な API の一覧を表示
$ nifcloud-debugcli computing help
## 指定されたアクションで利用可能なパラメーターの一覧を表示
$ nifcloud-debugcli computing create-key-pair help
## 実際にコマンドを実行 (下記は料金が発生しない SSH キー作成の API を実行しています)
$ nifcloud-debugcli computing create-key-pair --key-name foobar123 --password foobar123
- 14. Copyright 2018 FUJITSU CLOUD TECHNOLOGIES LIMITED
API を利用した運用自動化
14
## lb001 に他部署から依頼のあった IP 許可 (5 つ) を投入
nifcloud-debugcli computing set-filter-for-load-balancer ¥
--load-balancer-name lb001 ¥
--load-balancer-port 443 ¥
--instance-port 8080 ¥
--ip-addresses '[
{"IPAddress": “XXX.YYY.ZZZ.1"},
{"IPAddress": “XXX.YYY.ZZZ.2"},
{"IPAddress": “XXX.YYY.ZZZ.3"},
{"IPAddress": “XXX.YYY.ZZZ.4"},
{"IPAddress": “XXX.YYY.ZZZ.5"},
{"IPAddress": “XXX.YYY.ZZZ.6"},
]'
◼ 作業手順書にも下記のように書くだけでよい
• → 工数削減・オペミス削減
- 15. Copyright 2018 FUJITSU CLOUD TECHNOLOGIES LIMITED
まとめ
◼ ニフクラ各サービスでは API およびそれに
付随する SDK / CLI を提供しています
◼ API を有効活用することで構築・運用コスト
を大幅に削減することが可能
◼ ぜひニフクラの各種 API をご活用ください
15