1.1.2.2. シェルスクリプトの準備をする¶
各種パッケージや関連モジュールをインストールする¶
以下のコマンドを実行し、「curl」のバージョンが表示されることを確認します(本項記載時の「curl」のバージョンは"7.61.1"です)。
# curl --version
curl 7.61.1 (x86_64-redhat-linux-gnu) libcurl/7.61.1 OpenSSL/1.1.1k zlib/1.2.11 brotli/1.0.6 libidn2/2.2.0 libpsl/0.20.2 (+libidn2/2.2.0) libssh/0.9.6/openssl/zlib nghttp2/1.33.0 Release-Date: 2018-09-05 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz brotli TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL
以下のコマンドを実行し、「jq」をインストールします。
# yum install jq
以下のコマンドを実行し、「jq」のバージョンが表示されることを確認します(本項記載時の「jq」のバージョンは"1.6"です)。
# jq --version
jq-1.6
以下のコマンドを実行し、「expect」をインストールします。
# yum install expect
以下のコマンドを実行し、「expect」のバージョンが表示されることを確認します(本項記載時の「expect」のバージョンは"5.45.4"です)。
# expect -v
expect version 5.45.4
スクリプトを作成する¶
名称 | 説明 |
/usr/local/sdpf/sdpf-token-create.sh | SDPF APIの実行に必要となるトークンを生成します。 |
名称 | 説明 |
/usr/local/sdpf/fic/fic-operation-check.sh | FICリソースの申し込み状況を確認します。 |
/usr/local/sdpf/fic/fic-router-check.sh | FIC-Routerの情報を一覧で取得します。 |
/usr/local/sdpf/fic/fic-snat-activate.sh | FIC-NATを有効化します。 |
/usr/local/sdpf/fic/fic-snat-policy.sh | FIC-NATの詳細設定をします。 |
/usr/local/sdpf/fic/fic-sdpf-connection.sh | FIC-Connection SDPF クラウド/サーバーを購入します。 |
/usr/local/sdpf/fic/fic-wasabi-connection.sh | FIC-Connection Wasabiオブジェクトストレージを購入します。 |
名称 | 説明 |
/usr/local/sdpf/wasabi/wasabi-account-create.sh | Wasabiアカウントを作成します。 |
名称 | 説明 |
/usr/local/sdpf/icgw/icgw-sim-group.sh | ICGWのSIMグループを登録します。 |
/usr/local/sdpf/icgw/icgw-wasabi-register.sh | ICGWのWasabi認証情報を登録します。 |
/usr/local/sdpf/icgw/icgw-storage-setting.sh | ICGWのストレージ機能を設定します。 |
名称 | 説明 |
/usr/local/sdpf/vsrx/vsrx1-initialization.sh | vSRX1号機の事前設定をします。 |
/usr/local/sdpf/vsrx/vsrx2-initialization.sh | vSRX2号機の事前設定をします。 |
/usr/local/sdpf/直下のシェルスクリプトを作成する¶
以下のコマンドを実行し、「sdpf-token-create.sh」を作成します。
注釈
- 「SDPFポータルのAPI鍵」および「SDPFポータルのAPI秘密鍵」については、「8.4. API鍵を新規生成/再生成する」をご参照ください。
- 「SDPFポータルのテナントID(グローバル)」については、「8.2. テナントIDを確認する」をご参照ください。
# mkdir /usr/local/sdpf # cd /usr/local/sdpf # touch sdpf-token-create.sh # chmod 700 sdpf-token-create.sh # vi sdpf-token-create.sh
#!/bin/bash curl -s -i \ -H "Content-Type: application/json" \ -d '{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "id": "default" }, "name": "<SDPFポータルのAPI鍵>", "password": "<SDPFポータルのAPI秘密鍵>" } } }, "scope": { "project": { "id": "<SDPFポータルのテナントID(グローバル)>" } } } }' https://api.ntt.com/keystone/v3/auth/tokens
/usr/local/sdpf/fic/直下のシェルスクリプトを作成する¶
以下のコマンドを実行し、「fic-operation-check.sh」を作成します。
# mkdir /usr/local/sdpf/fic # cd /usr/local/sdpf/fic # touch fic-operation-check.sh # chmod 700 fic-operation-check.sh # vi fic-operation-check.sh
#!/bin/bash token=`/usr/local/sdpf/sdpf-token-create.sh | grep X-Subject-Token | awk '{print $2}'` curl -s \ -X GET \ -H "X-Auth-Token: ${token}" \ -H "Content-Type: application/json" \ https://api.ntt.com/fic-eri/v1/operations | python3 -m json.tool
以下のコマンドを実行し、「fic-router-check.sh」を作成します。
# touch fic-router-check.sh # chmod 700 fic-router-check.sh # vi fic-router-check.sh
#!/bin/bash token=`./token-create.sh | grep X-Subject-Token | awk '{print $2}'` curl -s \ -X GET \ -H "X-Auth-Token: ${token}" \ -H "Content-Type: application/json" \ https://api.ntt.com/fic-eri/v1/routers | python3 -m json.tool
以下のコマンドを実行し、「fic-snat-activate.sh」を作成します。
注釈
- 「FIC-RouterのID」および「FIC-NATのID」については、「Flexible InterConnectを設定する」の「fic-snat-activate.sh」実行前に、「Flexible InterConnectを設定する」の「fic-router-check.sh」の実行結果の値を引用する必要があります。
# touch fic-snat-activate.sh # chmod 700 fic-snat-activate.sh # vi fic-snat-activate.sh
#!/bin/bash token=`/usr/local/sdpf/sdpf-token-create.sh | grep X-Subject-Token | awk '{print $2}'` curl -i -1 \ -X POST \ -H "X-Auth-Token: ${token}" \ -H "Content-Type: application/json" \ -d \ '{ "nat": { "userIpAddresses": [ "10.255.247.0/30", "10.255.247.4/30", "10.255.247.8/30", "10.255.247.12/30", "10.255.247.16/30", "10.255.247.20/30", "10.255.247.24/30", "10.255.247.28/30" ], "globalIpAddressSets": [ { "name": "src-set-01", "type": "sourceNapt", "numOfAddresses": 1 } ] } }' https://api.ntt.com/fic-eri/v1/routers/<FIC-RouterのID>/nats/<FIC-NATのID>/activate
以下のコマンドを実行し、「fic-snat-policy.sh」を作成します。
注釈
- 「FIC-RouterのID」および「FIC-NATのID」については、「Flexible InterConnectを設定する」の「fic-snat-activate.sh」実行前に、「Flexible InterConnectを設定する」の「fic-router-check.sh」の実行結果の値を引用する必要があります。
# touch fic-snat-policy.sh # chmod 700 fic-snat-policy.sh # vi fic-snat-policy.sh
#!/bin/bash token=`/usr/local/sdpf/sdpf-token-create.sh | grep X-Subject-Token | awk '{print $2}'` curl -i -1 \ -X PUT \ -H "X-Auth-Token: ${token}" \ -H "Content-Type: application/json" \ -d \ '{ "nat": { "sourceNaptRules": [ { "from": [ "group_1" ], "to": "group_2", "entries": [ { "then": [ "src-set-01" ] } ] } ], "destinationNatRules": [ ] } }' https://api.ntt.com/fic-eri/v1/routers/<FIC-RouterのID>/nats/<FIC-NATのID>
以下のコマンドを実行し、「fic-sdpf-connection.sh」を作成します。
注釈
- 「FIC-RouterのID」については、「Flexible InterConnectを設定する」の「fic-snat-activate.sh」実行前に、「Flexible InterConnectを設定する」の「fic-router-check.sh」の実行結果の値を引用する必要があります。
- 「SDPFポータルのテナントID(グローバル)」および「対象のSDPFクラウドのテナントID(jpXリージョン)」については、「8.2. テナントIDを確認する」をご参照ください。
- 「対象のSDPFクラウドのConnecting Point」については、「12.1. FIC-Connection SDPF クラウド/サーバー」の「12.1.1.3. Connecting Point」をご参照ください。
- 「SDPFポータルのAPI鍵」および「SDPFポータルのAPI秘密鍵」については、「8.4. API鍵を新規生成/再生成する」をご参照ください。
- 「接続帯域」については、「12.1.6. 提供帯域」をご参照ください。
# touch fic-sdpf-connection.sh # chmod 700 fic-sdpf-connection.sh # vi fic-sdpf-connection.sh
#!/bin/bash token=`/usr/local/sdpf/sdpf-token-create.sh | grep X-Subject-Token | awk '{print $2}'` curl -i -1 \ -X POST \ -H "X-Auth-Token: ${token}" \ -H "Content-Type: application/json" \ -d \ '{ "connection": { "name": "<コネクション名>", "tenantId": "<SDPFポータルのテナントID(グローバル)>", "source": { "routerId": "<FIC-RouterのID>", "groupName": "group_1", "routeFilter": { "in": "fullRoute", "out": "fullRoute" } }, "destination": { "interconnect": "<対象のSDPFクラウドのConnecting Point>", "qosType": "guarantee", "eclTenantId": "<対象のSDPFクラウドのテナントID(jpXリージョン)>", "eclApiKey": "<SDPFポータルのAPI鍵>", "eclApiSecretKey": "<SDPFポータルのAPI秘密鍵>" }, "bandwidth": "<接続帯域>", "primaryConnectedNwAddress": "10.0.0.44/30", "secondaryConnectedNwAddress": "10.0.0.48/30" } }' https://api.ntt.com/fic-eri/v1/router-to-ecl-connections
以下のコマンドを実行し、「fic-wasabi-connection.sh」を作成します。
注釈
- 「FIC-RouterのID」については、「Flexible InterConnectを設定する」の「fic-snat-activate.sh」実行前に、「Flexible InterConnectを設定する」の「fic-router-check.sh」の実行結果の値を引用する必要があります。
- 「SDPFポータルのテナントID(グローバル)」については、「8.2. テナントIDを確認する」をご参照ください。
- 「対象のWasabiのConnecting Point」については、「14.1. FIC-Connection Wasabiオブジェクトストレージ」の「14.1.1.3. Connecting Point」をご参照ください。
- 「接続帯域」については、「14.1.6. 提供帯域」をご参照ください。
# touch fic-wasabi-connection.sh # chmod 700 fic-wasabi-connection.sh # vi fic-wasabi-connection.sh
#!/bin/bash token=`/usr/local/sdpf/sdpf-token-create.sh | grep X-Subject-Token | awk '{print $2}'` curl -i -1 \ -X POST \ -H "X-Auth-Token: ${token}" \ -H "Content-Type: application/json" \ -d \ '{ "connection": { "name": "<コネクション名>", "tenantId": "<SDPFポータルのテナントID(グローバル)>", "source": { "routerId": "<FIC-RouterのID>", "groupName": "group_2", "routeFilter": { "in": "fullRoute" } }, "destination": { "interconnect": "<対象のWasabiのConnecting Point>", "qosType": "guarantee" }, "bandwidth": "<接続帯域>" } }' https://api.ntt.com/fic-eri/v1/router-to-wasabi-connections
/usr/local/sdpf/wasabi/直下のシェルスクリプトを作成する¶
以下のコマンドを実行し、「wasabi-account-create.sh」を作成します。
注釈
- 「SDPFポータルのテナントID(グローバル)」については、「8.2. テナントIDを確認する」をご参照ください。
# mkdir /usr/local/sdpf/wasabi # cd /usr/local/sdpf/wasabi # touch wasabi-account-create.sh # chmod 700 wasabi-account-create.sh # vi wasabi-account-create.sh
#!/bin/bash token=`/usr/local/sdpf/sdpf-token-create.sh | grep X-Subject-Token | awk '{print $2}'` curl -i -1\ -X POST \ -H "X-Auth-Token: ${token}" \ -H "Content-Type: application/json" \ https://api.ntt.com/ecl-objectstorage/tenants/<SDPFポータルのテナントID(グローバル)>/account
/usr/local/sdpf/icgw/直下のシェルスクリプトを作成する¶
以下のコマンドを実行し、「icgw-sim-group.sh」を作成します。
注釈
- 「SDPFポータルのテナントID(グローバル)」については、「8.2. テナントIDを確認する」をご参照ください。
# mkdir /usr/local/sdpf/icgw # cd /usr/local/sdpf/icgw # touch icgw-sim-group.sh # chmod 700 icgw-sim-group.sh # vi icgw-sim-group.sh
#!/bin/bash token=`/usr/local/sdpf/sdpf-token-create.sh | grep X-Subject-Token | awk '{print $2}'` curl \ -X POST \ -H "X-Auth-Token: ${token}" \ -H "Content-Type: application/json" \ -d'{ "name": "<グループ名>", "sims": [ "<SIMのID>" ] }' https://api.ntt.com/iot-c-icgw/v1/tenants/<SDPFポータルのテナントID(グローバル)>/groups
以下のコマンドを実行し、「icgw-wasabi-register.sh」を作成します。
注釈
- 「Wasabi IAMユーザーのアクセスキー」および「Wasabi IAMユーザーのシークレットキー」については、「IoT Connect Gatewayを設定する」の「icgw-wasabi-register.sh」実行前に、「Wasabiオブジェクトストレージを設定する」の「wasabi-iam-create.py」の実行結果の値を引用する必要があります。
- 「SDPFポータルのテナントID(グローバル)」については、「8.2. テナントIDを確認する」をご参照ください。
# touch icgw-wasabi-register.sh # chmod 700 icgw-wasabi-register.sh # vi icgw-wasabi-register.sh
#!/bin/bash token=`/usr/local/sdpf/sdpf-token-create.sh | grep X-Subject-Token | awk '{print $2}'` curl \ -X POST \ -H "X-Auth-Token: ${token}" \ -H "Content-Type: application/json" \ -d'{ "type": "aws-credentials", "name": "<認証情報名>", "description": "<説明>", "accessKeyId": "<Wasabi IAMユーザーのアクセスキー>", "secretAccessKey": "<Wasabi IAMユーザーのシークレットキー>" }' https://api.ntt.com/iot-c-icgw/v1/tenants/<SDPFポータルのテナントID(グローバル)>/authentications
以下のコマンドを実行し、「icgw-storage-setting.sh」を作成します。
注釈
- 「SIMのグループID」については、「IoT Connect Gatewayを設定する」の「icgw-storage-setting.sh」実行前に、「IoT Connect Gatewayを設定する」の「icgw-sim-group.sh」の実行結果の値を引用する必要があります。
- 「認証ID」については、「IoT Connect Gatewayを設定する」の「icgw-storage-setting.sh」実行前に、「IoT Connect Gatewayを設定する」の「icgw-wasabi-register.sh」の実行結果の値を引用する必要があります。
- 「SDPFポータルのテナントID(グローバル)」については、「8.2. テナントIDを確認する」をご参照ください。
# touch icgw-storage-setting.sh # chmod 700 icgw-storage-setting.sh # vi icgw-storage-setting.sh
#!/bin/bash token=`/usr/local/sdpf/sdpf-token-create.sh | grep X-Subject-Token | awk '{print $2}'` curl \ -X POST \ -H "X-Auth-Token: ${token}" \ -H "Content-Type: application/json" \ -d'{ "enabled": true, "name": "<接続名>", "entrypoint": { "path": "/*", "priority": 100 }, "destination": { "serviceType": "aws-s3", "endpoint": "s3.wasabisys.com", "authenticationId": "<認証ID>", "bucket": "<Wasabiバケット名>" }, "metadata": { "appendImsi": false, "appendImei": false, "appendMsisdn": false, "appendDeviceName": false, "customMetadata": [ ], "customTags": [ ] } }' https://api.ntt.com/iot-c-icgw/v1/tenants/<SDPFポータルのテナントID(グローバル)>/groups/<SIMのグループID>/storage
/usr/local/sdpf/vsrx/直下のシェルスクリプトを作成する¶
以下のコマンドを実行し、「vsrx1-initialization.sh」を作成します。
# mkdir /usr/local/sdpf/vsrx # cd /usr/local/sdpf/vsrx # touch vsrx1-initialization.sh # chmod 700 vsrx1-initialization.sh # vi vsrx1-initialization.sh
#!/bin/bash ssh-keygen -R 172.16.202.8 ssh-keyscan -t ed25519 172.16.202.8 >> ~/.ssh/known_hosts vsrx1_pw=`cat /etc/terrafrom/work/terraform.tfstate | jq '.resources[22].instances[0].attributes.password' | jq --raw-output` expect -dc " set timeout 10 spawn ssh root@172.16.202.8 \"cli\" expect \"Password:\" send \"${vsrx1_pw}\r\" expect \"root>\" send \"configure\r\" expect \"root#\" send \"set system login user sub-user class super-user\r\" expect \"root#\" send \"set system login user sub-user authentication plain-text-password\r\" expect \"New password:\" send \"<サブユーザーの変更パスワード>\r\" expect \"Retype new password:\" send \"<サブユーザーの変更パスワード>\r\" expect \"root#\" send \"set system root-authentication plain-text-password\r\" expect \"New password:\" send \"<rootユーザーの変更パスワード>\r\" expect \"Retype new password:\" send \"<rootユーザーの変更パスワード>\r\" expect \"root#\" send \"set system host-name vSRX1\r\" expect \"root#\" send \"set system services netconf ssh\r\" expect \"root#\" send \"set security zones security-zone trust interfaces ge-0/0/0.0 host-inbound-traffic system-services netconf\r\" expect \"root#\" send \"commit\r\" expect \"root#\" send \"exit\r\" "
以下のコマンドを実行し、「vsrx2-initialization.sh」を作成します。
# touch vsrx2-initialization.sh # chmod 700 vsrx2-initialization.sh # vi vsrx2-initialization.sh
#!/bin/bash ssh-keygen -R 172.16.202.9 ssh-keyscan -t ed25519 172.16.202.9 >> ~/.ssh/known_hosts vsrx1_pw=`cat /etc/terrafrom/work/terraform.tfstate | jq '.resources[23].instances[0].attributes.password' | jq --raw-output` expect -dc " set timeout 10 spawn ssh-keyscan 172.16.202.9 >> ~/.ssh/known_hosts spawn ssh root@172.16.202.9 \"cli\" expect \"Password:\" send \"${vsrx1_pw}\r\" expect \"root>\" send \"configure\r\" expect \"root#\" send \"set system login user sub-user class super-user\r\" expect \"root#\" send \"set system login user sub-user authentication plain-text-password\r\" expect \"New password:\" send \"<サブユーザーの変更パスワード>\r\" expect \"Retype new password:\" send \"<サブユーザーの変更パスワード>\r\" expect \"root#\" send \"set system root-authentication plain-text-password\r\" expect \"New password:\" send \"<rootユーザーの変更パスワード>\r\" expect \"Retype new password:\" send \"<rootユーザーの変更パスワード>\r\" expect \"root#\" send \"set system host-name vSRX1\r\" expect \"root#\" send \"set system services netconf ssh\r\" expect \"root#\" send \"set security zones security-zone trust interfaces ge-0/0/0.0 host-inbound-traffic system-services netconf\r\" expect \"root#\" send \"commit\r\" expect \"root#\" send \"exit\r\" "