Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

【初心者向け】API を使ってクラウドの管理を自動化しよう

143 views

Published on

2018年10月24日のエンジニアミートアップ第9回
「クラウド自動化の基礎」
富士通クラウドテクノロジーズ株式会社 竹内豪氏のLT資料

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

【初心者向け】API を使ってクラウドの管理を自動化しよう

  1. 1. Copyright 2018 FUJITSU CLOUD TECHNOLOGIES LIMITED 【初心者向け】API を使ってクラウ ドの管理を自動化しよう 富士通クラウドテクノロジーズ株式会社 竹内 豪 1 ニフクラ エンジニア ミートアップ 第 9 回 自動化事始め
  2. 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. 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. 4. Copyright 2018 FUJITSU CLOUD TECHNOLOGIES LIMITED API のメリット (1) ◼ コンパネから 20 台サーバーを作成したい 4 01. イメージ選択 02. サーバータイプ選択 03. サーバー設定 04. 入力内容確認 ×20回
  5. 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. 6. Copyright 2018 FUJITSU CLOUD TECHNOLOGIES LIMITED API のメリット (3) 6 ◼ 繰り返し行う操作を自動化 • → 工数削減 ◼ 自動化によるオペミス削減 • → 品質向上 ◼ 構成管理への応用 • → インフラをソースコードとして管理 (Infrastructure as a Code)
  7. 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. 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. 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. 10. Copyright 2018 FUJITSU CLOUD TECHNOLOGIES LIMITED FJCT におけるニフクラ API 活用事例 ◼ メイン機能利用 • オブジェクトストレージ操作 • メール送信 (HTTP 経由) • スクリプト実行 10 ◼ 構築自動化 • Computing サーバー作成 • RDB DB サーバー作成 • NAS NAS サーバー作成 ◼ 運用自動化 • Computing SSL 証明書更新 • RDB FW グループ設定変更 ◼ リソース監視 • Computing リソース監視 • RDB フェイルオーバー監視
  11. 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. 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. 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. 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. 15. Copyright 2018 FUJITSU CLOUD TECHNOLOGIES LIMITED まとめ ◼ ニフクラ各サービスでは API およびそれに 付随する SDK / CLI を提供しています ◼ API を有効活用することで構築・運用コスト を大幅に削減することが可能 ◼ ぜひニフクラの各種 API をご活用ください 15
  16. 16. Copyright 2018 FUJITSU CLOUD TECHNOLOGIES LIMITED 16

×