Last active
December 7, 2019 15:52
-
-
Save ysaotome/f5a2b0e5babda027d990 to your computer and use it in GitHub Desktop.
ニフティクラウドのCLIツール( http://cloud.nifty.com/api/cli/ )を自動セットアップするスクリプトと使用例
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# setup NIFTY Cloud API Tools | |
( | |
USER=${USER} | |
HOME=${HOME} | |
ARC=$(/bin/uname -m) | |
## OpenJDKセットアップ | |
/usr/bin/yum -y install java-1.6.0-openjdk.${ARC} | |
## NIFTY Cloud API Tools の設定 | |
/usr/bin/wget -P ${HOME} 'http://cloud.nifty.com/api/sdk/NIFTY_Cloud_api-tools.zip' | |
/usr/bin/unzip -d ${HOME} ${HOME}/NIFTY_Cloud_api-tools.zip | |
/bin/rm -rf ${HOME}/NIFTY_Cloud_api-tools.zip | |
/bin/rm -rf ${HOME}/NIFTY_Cloud_api-tools/bin/*.cmd | |
/bin/chown -R ${USER}:${USER} ${HOME}/NIFTY_Cloud_api-tools/ | |
/bin/chmod 755 ${HOME}/NIFTY_Cloud_api-tools/bin/* | |
/bin/cat << _NCSSCONF_ >> ${HOME}/.bashrc | |
## NIFTY Cloud API Settings | |
export NIFTY_CLOUD_HOME=${HOME}/NIFTY_Cloud_api-tools/ | |
export PATH=\${PATH}:\${NIFTY_CLOUD_HOME}/bin | |
export JAVA_HOME=/usr/lib/jvm/jre | |
export JAVA_OPTS=-Duser.language=ja | |
_NCSSCONF_ | |
source ${HOME}/.bashrc | |
) 2>&1 | /usr/bin/tee /var/log/niftycloud-api-tools-installer.log |
コマンド利用例
- 利用可能なCLI API一覧
- オススメ引数
--headers
- 出力形式が 表形式 または 区切り文字による区切り形式 の場合、カラムヘッダを出力します。
リージョンの一覧を取得する
- コマンド
nifty-describe-regions --headers
- 実行結果例
$ nifty-describe-regions --headers
IdType Name Endpoint Messages Default
REGION east-1 east-1.cp.cloud.nifty.com true
REGION west-1 west-1.cp.cloud.nifty.com false
ゾーンの一覧を取得する
- コマンド
nifty-describe-availability-zones --headers
- 実行結果例
$ nifty-describe-availability-zones --headers
IdType Name State Region Messages SecurityGroupSupported Default
AVAILABILITYZONE east-11 available east-1 false false
AVAILABILITYZONE east-12 available east-1 true true
AVAILABILITYZONE east-13 available east-1 true false
ファイアウォールグループの設定情報を取得したい
全ての情報を取得
- コマンド
nifty-describe-security-groups --headers
- 実行結果例
$ nifty-describe-security-groups --headers
IdType GroupName GroupStatus GroupDescription GroupRuleLimitUpdate GroupLogLimitUpdate GroupLogFilterNetBios AvailabilityZone
GROUP SSHxDB applied 100 1000 false east-13
IdType GroupName IpProtocol FromPort ToPort InOut SourceType CidrIp
PERMISSION SSHxDB TCP 22 22 IN CIDR 0.0.0.0/0
IdType GroupName GroupStatus GroupDescription GroupRuleLimitUpdate GroupLogLimitUpdate GroupLogFilterNetBios AvailabilityZone
GROUP SSHxWEB applied 100 1000 false east-13
IdType GroupName IpProtocol FromPort ToPort InOut SourceType CidrIp
PERMISSION SSHxWEB TCP 22 22 IN CIDR 0.0.0.0/0
IdType GroupName IpProtocol FromPort ToPort InOut SourceType CidrIp
PERMISSION SSHxWEB TCP 80 80 IN CIDR 0.0.0.0/0
IdType GroupName IpProtocol FromPort ToPort InOut SourceType CidrIp
PERMISSION SSHxWEB TCP 443 443 IN CIDR 0.0.0.0/0
ファイアウォールグループ名「SSHxWEB」配下のルールを取得
- コマンド
nifty-describe-security-groups --filter "group-name=SSHxWEB" --headers
- 実行結果例
$ nifty-describe-security-groups --filter "group-name=SSHxWEB" --headers
IdType GroupName GroupStatus GroupDescription GroupRuleLimitUpdate GroupLogLimitUpdate GroupLogFilterNetBios AvailabilityZone
GROUP SSHxWEB applied 100 1000 false east-13
IdType GroupName IpProtocol FromPort ToPort InOut SourceType CidrIp
PERMISSION SSHxWEB TCP 22 22 IN CIDR 0.0.0.0/0
IdType GroupName IpProtocol FromPort ToPort InOut SourceType CidrIp
PERMISSION SSHxWEB TCP 80 80 IN CIDR 0.0.0.0/0
IdType GroupName IpProtocol FromPort ToPort InOut SourceType CidrIp
PERMISSION SSHxWEB TCP 443 443 IN CIDR 0.0.0.0/0
ファイアウォールグループを追加したい
ゾーン「east-13」へ、ファイアウォールグループ名「SSHxWEB」を追加する
- コマンド
nifty-create-security-group "SSHxWEB" --availability-zone "east-13"
- 実行結果例
$ nifty-create-security-group "SSHxWEB" --availability-zone "east-13"
GROUP SSHxWEB east-13
ファイアウォールルールを追加したい
※ルールを追加する前に事前にグループを作成しておく必要があります
- ファイアウォールグループ名「SSHxWEB」に以下のルールを適用する
インターネット(0.0.0.0/0)からの「80/TCP(http)」「443/TCP(https)」「22/TCP(ssh)」通信許可
ファイアウォールグループ「SSHxDMZ」からの全て(ANY)の通信許可
- コマンド
nifty-authorize-security-group-ingress "SSHxWEB" --protocol TCP --port-range 80 --in-out IN --source-subnet "0.0.0.0/0"
nifty-authorize-security-group-ingress "SSHxWEB" --protocol TCP --port-range 443 --in-out IN --source-subnet "0.0.0.0/0"
nifty-authorize-security-group-ingress "SSHxWEB" --protocol TCP --port-range 22 --in-out IN --source-subnet "0.0.0.0/0"
nifty-authorize-security-group-ingress "SSHxWEB" --protocol ANY --in-out IN --source-group "SSHxDMZ"
- 実行結果例
$ nifty-authorize-security-group-ingress "SSHxWEB" --protocol TCP --port-range 80 --in-out IN --source-subnet "0.0.0.0/0"
GROUP SSHxWEB
PERMISSION SSHxWEB TCP 80 80 IN CIDR 0.0.0.0/0
$ nifty-authorize-security-group-ingress "SSHxWEB" --protocol TCP --port-range 443 --in-out IN --source-subnet "0.0.0.0/0"
GROUP SSHxWEB
PERMISSION SSHxWEB TCP 443 443 IN CIDR 0.0.0.0/0
$ nifty-authorize-security-group-ingress "SSHxWEB" --protocol TCP --port-range 22 --in-out IN --source-subnet "0.0.0.0/0"
GROUP SSHxWEB
PERMISSION SSHxWEB TCP 22 22 IN CIDR 0.0.0.0/0
$ nifty-authorize-security-group-ingress "SSHxWEB" --protocol ANY --in-out IN --source-group "SSHxDMZ"
GROUP SSHxWEB
PERMISSION SSHxWEB ANY IN GRPNAME SSHxDMZ
イメージの一覧が取得したい
全てのイメージを取得する
- コマンド
nifty-describe-images --owner "all" --headers
- 実行結果例
$ nifty-describe-images --owner "all" --headers
IdType ImageID Name Owner OwnerAlias State Accessibility ProductCodes Architecture ImageType KernelId RamdiskId Platform RootDeviceType Description Redistributable AvailabilityZone
IMAGE 15224 Debian GNU_Linux 7.1 64bit other ニフティ株式会社 available public x86_64 machine debian disk Experimental Release true east-1.east-13
「Debian GNU_Linux 7.1 64bit」のイメージです。初期設定は予告なく変更される場合がありますので、ご了承ください。本イメージはOS層以上で随時発生する脆弱性について対応していない可能性がございます。お客様にて最新のパッケージにアップデートしていただくことを推奨いたします。
Debianの登録商標、アイコンの著作権はSoftware in the Public Interest, Inc.に帰属します。
・
・
・
自分が作成したイメージ(プライベート(バックアップ))一覧を取得する
- コマンド
nifty-describe-images --owner "self" --headers
- 実行結果例
$ nifty-describe-images --owner "self" --headers | grep private
IMAGE 12350 CentOS5LVM self ニフティクラウドユーザーブログライター available private x86_64 machine linux disk true east-1.east-12
IMAGE 16378 Ubuntu1310x8664 self ニフティクラウドユーザーブログライター available private x86_64 machine ubuntu disk true east-1.east-13
・
・
・
イメージを指定してサーバを作成する
※イメージを指定するために事前にサーバ情報内の「ImageID」を取得しておく必要があります。
※SSHキーを指定するために事前に設定するSSHキー名を取得しておく必要があります。
プライベートイメージ「Ubuntu1310x8664」からサーバを作成する(コピーする)
「Ubuntu1310x8664」の 「ImageID」を取得
- コマンド
nifty-describe-images --owner "self" --headers | grep Ubuntu1310x8664
- 実行結果例
* 以下の実行結果からイメージ「Ubuntu1310x8664」の「ImageID」は「16378」である事が判る
$ nifty-describe-images --owner "self" --headers | grep Ubuntu1310x8664
IMAGE 16378 Ubuntu1310x8664 self ニフティクラウドユーザーブログライター available private x86_64 machine ubuntu disk true east-1.east-13
SSHキーの一覧を取得する
- コマンド
nifty-describe-keypairs --headers
- 実行結果例
- 以下の実行結果からSSHキー名が「niftycloudTest」である事が判る
nifty-describe-keypairs --headers
IdType KeyPair Fingerprint
KEYPAIR niftycloudTest 88:7b:e4:19:94:6b:a7:89:91:52:6f:95:c2:00:09:6b:f0:ab:4c:57
「ImageID」が「16378」のプライベートイメージ「Ubuntu1310x8664 」をコピーする
- 引数の意味
--instance-id
作成するサーバー名--group
所属するファイアウォールグループ--key
設定するSSHキー名--instance-type
作成するサーバタイプmini | small | small2 | small4 | small8 | medium | medium4 | medium8 | medium16 | large | large8 | large16 | large24 | large32 | extra-large16 | extra-large24 | extra-large32 | double-large32 | double-large48 | double-large64
--accounting-type
課金タイプ1 (月額課金) | 2 (従量課金)
--availability-zone
作成するゾーン名--disable-api-termination
APIからのサーバー削除の可否true (削除不可) | false (削除可)
- コマンド
nifty-run-instances "16378" --instance-id "UbuntuTest" --group "SSHxWEB" --key "niftycloudTest" --instance-type "double-large32" --accounting-type "2" --availability-zone "east-13" --disable-api-termination "true" --headers
- 実行結果例
$ nifty-run-instances "16378" --instance-id "UbuntuTest" --group "SSHxWEB" --key "niftycloudTest" --instance-type "double-large32" --accounting-type "2" --availability-zone "east-13" --disable-api-termination "true" --headers
IdType GroupId
GROUP SSHxWEB
IdType InstanceId ImageId DnsName PrivateDnsName State KeyName LaunchIndex ProductCodes InstanceType LaunchTime AvailabilityZone KernelId RamdiskId MonitoringState IpAddress PrivateIpAddress IpAddressV6 PrivateIpAddressV6 SubnetId VpcId RootDeviceType Admin AccountingType IpType PrivateIpType Architecture Platform
INSTANCE UbuntuTest Ubuntu1310x8664 pending double-large32 2014-09-12T19:34:30+09:00 east-13 monitoring-disabled disk 2 static static x86_64 ubuntu
サーバの作成状況を確認
- コマンド
nifty-describe-instances
- 実行結果例
$ nifty-describe-instances
INSTANCE UbuntuTest 16378 creating east-13 disabled disk 0 0 static static
今のバージョンだと .bashrc に下記を追記する必要がありました。
export NIFTY_CLOUD_URL=https://west-1.cp.cloud.nifty.com/api/
これをしないと org.apache.http.client.ClientProtocolException: URI does not specify a valid host name
エラーが発生します。
また、URL は http://cloud.nifty.com/api/endpoint.htm を参考に、使っているリージョンと同じものを指定する必要があります。
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
ニフティクラウドコマンドラインツールの使い方
AccessKey/SecretAccessKeyを取得
APIツールのインストール
自動インストール(コマンド)
手動インストール
下記サイトからAPIツールをダウンロード頂き、ダウンロードしたファイルを、ローカルフォルダの任意のパスに展開します。
環境設定を実施します。
インストール結果を確認