1.1.2.2. シェルスクリプトの準備をする

本書中の設定値の「< >」の表記については、ご利用の環境により各自入力いただく箇所となります("<"から">"までを設定値に置き換えてください)。
各コマンドの実行については、rootユーザーに昇格して実行する前提で記載しています。

各種パッケージや関連モジュールをインストールする

  1. 以下のコマンドを実行し、「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
    
  2. 以下のコマンドを実行し、「jq」をインストールします。

    # yum install jq
    
  3. 以下のコマンドを実行し、「jq」のバージョンが表示されることを確認します(本項記載時の「jq」のバージョンは"1.6"です)。

    # jq --version
    
    jq-1.6
    
  4. 以下のコマンドを実行し、「expect」をインストールします。

    # yum install expect
    
  5. 以下のコマンドを実行し、「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/直下のシェルスクリプトを作成する

  1. 以下のコマンドを実行し、「sdpf-token-create.sh」を作成します。

    注釈

    # 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/直下のシェルスクリプトを作成する

  1. 以下のコマンドを実行し、「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
    
  2. 以下のコマンドを実行し、「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
    
  3. 以下のコマンドを実行し、「fic-snat-activate.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
    
  4. 以下のコマンドを実行し、「fic-snat-policy.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>
    
  5. 以下のコマンドを実行し、「fic-sdpf-connection.sh」を作成します。

    注釈

    # 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
    
  6. 以下のコマンドを実行し、「fic-wasabi-connection.sh」を作成します。

    注釈

    # 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/直下のシェルスクリプトを作成する

  1. 以下のコマンドを実行し、「wasabi-account-create.sh」を作成します。

    注釈

    # 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/直下のシェルスクリプトを作成する

  1. 以下のコマンドを実行し、「icgw-sim-group.sh」を作成します。

    注釈

    # 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
    
  2. 以下のコマンドを実行し、「icgw-wasabi-register.sh」を作成します。

    注釈

    # 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
    
  3. 以下のコマンドを実行し、「icgw-storage-setting.sh」を作成します。

    注釈

    # 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/直下のシェルスクリプトを作成する

  1. 以下のコマンドを実行し、「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\"
    "
    
  2. 以下のコマンドを実行し、「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\"
    "