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

More Related Content

What's hot

What's hot (20)

Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語るKubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
Kubernetes にこれから入るかもしれない注目機能!(2022年11月版) / TechFeed Experts Night #7 〜 コンテナ技術を語る
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本ぱぱっと理解するSpring Cloudの基本
ぱぱっと理解するSpring Cloudの基本
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
 
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
 
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
ベアメタルで実現するSpark&Trino on K8sなデータ基盤
ベアメタルで実現するSpark&Trino on K8sなデータ基盤ベアメタルで実現するSpark&Trino on K8sなデータ基盤
ベアメタルで実現するSpark&Trino on K8sなデータ基盤
 
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
KubernetesでGPUクラスタを管理したい
KubernetesでGPUクラスタを管理したいKubernetesでGPUクラスタを管理したい
KubernetesでGPUクラスタを管理したい
 
dm-writeboost-kernelvm
dm-writeboost-kernelvmdm-writeboost-kernelvm
dm-writeboost-kernelvm
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
 

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

マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方
CData Software Japan
 
20150704 MS Azure最新 - innovation egg 第4回
20150704 MS Azure最新 - innovation egg 第4回20150704 MS Azure最新 - innovation egg 第4回
20150704 MS Azure最新 - innovation egg 第4回
Keiji Kamebuchi
 
ニフティクラウドC4SA_ご紹介資料ver.1.1
ニフティクラウドC4SA_ご紹介資料ver.1.1ニフティクラウドC4SA_ご紹介資料ver.1.1
ニフティクラウドC4SA_ご紹介資料ver.1.1
Satoshi Ueno
 

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

Unityゲームにオンラインランキングとゴースト機能を追加しよう!
Unityゲームにオンラインランキングとゴースト機能を追加しよう!Unityゲームにオンラインランキングとゴースト機能を追加しよう!
Unityゲームにオンラインランキングとゴースト機能を追加しよう!
 
Microsoft open tech night 2020 feb18
Microsoft open tech night 2020 feb18Microsoft open tech night 2020 feb18
Microsoft open tech night 2020 feb18
 
技術選択とアーキテクトの役割
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
 
2016 06-30-deep-learning-archi
2016 06-30-deep-learning-archi2016 06-30-deep-learning-archi
2016 06-30-deep-learning-archi
 
2018 07-19dist
2018 07-19dist2018 07-19dist
2018 07-19dist
 
HashiCorp Terraform Enterprise 紹介
HashiCorp Terraform Enterprise 紹介HashiCorp Terraform Enterprise 紹介
HashiCorp Terraform Enterprise 紹介
 
ニフクラ mobile backend チームのCIツール活用事例紹介
ニフクラ mobile backend チームのCIツール活用事例紹介ニフクラ mobile backend チームのCIツール活用事例紹介
ニフクラ mobile backend チームのCIツール活用事例紹介
 
マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方
 
Deploy TypeScript with CodePipeline in Fargate
Deploy TypeScript with CodePipeline in FargateDeploy TypeScript with CodePipeline in Fargate
Deploy TypeScript with CodePipeline in Fargate
 
Introduction to NetOpsCoding
Introduction to NetOpsCodingIntroduction to NetOpsCoding
Introduction to NetOpsCoding
 
20150704 MS Azure最新 - innovation egg 第4回
20150704 MS Azure最新 - innovation egg 第4回20150704 MS Azure最新 - innovation egg 第4回
20150704 MS Azure最新 - innovation egg 第4回
 
仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践 仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践
 
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
 
OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向OpenStack Swiftとそのエコシステムの最新動向
OpenStack Swiftとそのエコシステムの最新動向
 
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座アイデアを形にする  ③3時間でアプリ公開!ゼロからのプログラミング講座
アイデアを形にする ③3時間でアプリ公開!ゼロからのプログラミング講座
 
[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005
 
[Oracle Innovation Summit Tokyo 2018] Fn Project: Next Generation Serverless ...
[Oracle Innovation Summit Tokyo 2018] Fn Project: Next Generation Serverless ...[Oracle Innovation Summit Tokyo 2018] Fn Project: Next Generation Serverless ...
[Oracle Innovation Summit Tokyo 2018] Fn Project: Next Generation Serverless ...
 
ニフティクラウドC4SA_ご紹介資料ver.1.1
ニフティクラウドC4SA_ご紹介資料ver.1.1ニフティクラウドC4SA_ご紹介資料ver.1.1
ニフティクラウドC4SA_ご紹介資料ver.1.1
 
ニフクラのサービス基盤運用におけるCIの取り組み
ニフクラのサービス基盤運用におけるCIの取り組みニフクラのサービス基盤運用におけるCIの取り組み
ニフクラのサービス基盤運用におけるCIの取り組み
 
IoTと業務システムをつなぐgRPC/RESTサービスの開発と運用
IoTと業務システムをつなぐgRPC/RESTサービスの開発と運用IoTと業務システムをつなぐgRPC/RESTサービスの開発と運用
IoTと業務システムをつなぐgRPC/RESTサービスの開発と運用
 

More from 富士通クラウドテクノロジーズ株式会社

More from 富士通クラウドテクノロジーズ株式会社 (20)

IPsec VPNとSSL-VPNの違い
IPsec VPNとSSL-VPNの違いIPsec VPNとSSL-VPNの違い
IPsec VPNとSSL-VPNの違い
 
弊社サービスを使って ノーコード開発してみた.pdf
弊社サービスを使って ノーコード開発してみた.pdf弊社サービスを使って ノーコード開発してみた.pdf
弊社サービスを使って ノーコード開発してみた.pdf
 
今から始めるUbuntu入門_202307.pdf
今から始めるUbuntu入門_202307.pdf今から始めるUbuntu入門_202307.pdf
今から始めるUbuntu入門_202307.pdf
 
非エンジニアがクラウド上にMinecraftサーバーを構築するまでの記録
非エンジニアがクラウド上にMinecraftサーバーを構築するまでの記録非エンジニアがクラウド上にMinecraftサーバーを構築するまでの記録
非エンジニアがクラウド上にMinecraftサーバーを構築するまでの記録
 
自宅k8s/vSphere入門
自宅k8s/vSphere入門自宅k8s/vSphere入門
自宅k8s/vSphere入門
 
FJcloud-Vの無料トライアルで雑にWordPressを入れてみた(リベンジ)
FJcloud-Vの無料トライアルで雑にWordPressを入れてみた(リベンジ)FJcloud-Vの無料トライアルで雑にWordPressを入れてみた(リベンジ)
FJcloud-Vの無料トライアルで雑にWordPressを入れてみた(リベンジ)
 
今さら聞けないバックアップの基礎
今さら聞けないバックアップの基礎今さら聞けないバックアップの基礎
今さら聞けないバックアップの基礎
 
DevOps with GitLabで始める簡単DevOps
DevOps with GitLabで始める簡単DevOpsDevOps with GitLabで始める簡単DevOps
DevOps with GitLabで始める簡単DevOps
 
自宅vSphereからニフクラに引っ越ししてみた
自宅vSphereからニフクラに引っ越ししてみた自宅vSphereからニフクラに引っ越ししてみた
自宅vSphereからニフクラに引っ越ししてみた
 
自宅インフラの育て方 第2回
自宅インフラの育て方 第2回自宅インフラの育て方 第2回
自宅インフラの育て方 第2回
 
NGINX App Protect on Hatobaで実現するセキュリティサービス公開 構築手順書
NGINX App Protect on Hatobaで実現するセキュリティサービス公開 構築手順書NGINX App Protect on Hatobaで実現するセキュリティサービス公開 構築手順書
NGINX App Protect on Hatobaで実現するセキュリティサービス公開 構築手順書
 
これから始めるエンジニアのためのクラウド超入門
これから始めるエンジニアのためのクラウド超入門これから始めるエンジニアのためのクラウド超入門
これから始めるエンジニアのためのクラウド超入門
 
「ネットワーク超入門 IPsec VPN編」
「ネットワーク超入門 IPsec VPN編」「ネットワーク超入門 IPsec VPN編」
「ネットワーク超入門 IPsec VPN編」
 
マネージドKubernetes、「Kubernetes Service Hatoba」を使ってみよう
マネージドKubernetes、「Kubernetes Service Hatoba」を使ってみようマネージドKubernetes、「Kubernetes Service Hatoba」を使ってみよう
マネージドKubernetes、「Kubernetes Service Hatoba」を使ってみよう
 
GitLabで始めるDevOps入門
GitLabで始めるDevOps入門GitLabで始めるDevOps入門
GitLabで始めるDevOps入門
 
GitLabのAutoDevOpsを試してみた
GitLabのAutoDevOpsを試してみたGitLabのAutoDevOpsを試してみた
GitLabのAutoDevOpsを試してみた
 
vSphere 7 へのアップグレードについて
vSphere 7 へのアップグレードについてvSphere 7 へのアップグレードについて
vSphere 7 へのアップグレードについて
 
VM 基盤運用チームの DevOps
VM 基盤運用チームの DevOpsVM 基盤運用チームの DevOps
VM 基盤運用チームの DevOps
 
緊急事態宣言解除後のセキュリティ・チェックリストを解説してみた
緊急事態宣言解除後のセキュリティ・チェックリストを解説してみた緊急事態宣言解除後のセキュリティ・チェックリストを解説してみた
緊急事態宣言解除後のセキュリティ・チェックリストを解説してみた
 
入社2年目社員から見た VDI(DaaS)の運用とセキュリティ
入社2年目社員から見たVDI(DaaS)の運用とセキュリティ入社2年目社員から見たVDI(DaaS)の運用とセキュリティ
入社2年目社員から見た VDI(DaaS)の運用とセキュリティ
 

【初心者向け】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
  • 16. Copyright 2018 FUJITSU CLOUD TECHNOLOGIES LIMITED 16