AzureでVantage Expressをデプロイメントする

著者 [Adam Tworkiewicz](adam.tworkiewicz@teradata.com)
最終更新日 2022年2月16日

:::note warn
警告
本記事はTeradata Corporationのサイト[Getting Started](https://quickstarts.teradata.com/index.html#getting-access-to-vantage)に掲載された内容を抄訳したものです。掲載内容の正確性・完全性・信頼性・最新性を保証するものではございません。正確な内容については、原本をご参照下さい。
また、修正が必要な箇所や、ご要望についてはコメントをよろしくお願いします。
:::

# 概要
このハウツーでは、Microsoft AzureでVantage Expressを実行する方法を説明します。Vantage Expressには、完全に機能するTeradata SQL Engineが含まれています。

::: note info
クラウド利用料を必要としない方法としては、[VMware](https://qiita.com/ykswi/items/ebe1d854c38db9bb0f51)、[VirtualBox](https://qiita.com/ykswi/items/ffadaa375add309f2075)、または[UTM](https://qiita.com/ykswi/items/94995954ae723185c2f7)を使用してVantage Expressをローカルにインストールする方法があります。
:::

# 前提条件
①	Azureのアカウント。ここで作成できます: [https://azure.microsoft.com/en-us/free/](https://azure.microsoft.com/en-us/free/)

②	azコマンドラインユーティリティがあなたのマシンにインストールされていること。インストール方法はこちらで確認できます: [https://docs.microsoft.com/en-us/cli/azure/install-azure-cli.](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli)

# インストール
①	デフォルトの地域をあなたに最も近い地域に設定します（地域を一覧表示するには、**az account list-locations -o table**を実行します）
```:SetAZ
az config set defaults.location=<location>
```
②	**tdve-resource-group**という新しいリソースグループを作成し、defaultsに追加します。
```:CreateResourceGroup
az group create -n tdve-resource-group
az config set defaults.group=tdve-resource-group
```
③	VMを作成するには、sshキーペアが必要です。まだ持っていない場合は、作成してください。
```:CreateKeyPair
az sshkey create --name vantage-ssh-key
```

④	プライベートキーへのアクセスを制限します。**path_to_private_key_file** を、前のコマンドで返された秘密鍵のパスに置き換えてください。
```:ChmodKeyFile
chmod 600 <path_to_private_key_file>
```
⑤	4CPU、8GBのRAM、30GBのOSディスク、60GBのデータディスクを搭載したUbuntu VMを作成します。

Windows
```:CreateInstance_Win
az disk create -n teradata-vantage-express --size-gb 60
az vm create `
  --name teradata-vantage-express `
  --image UbuntuLTS `
  --admin-username azureuser `
  --ssh-key-name vantage-ssh-key `
  --size Standard_F4s_v2 `
  --public-ip-sku Standard

$diskId = (az disk show -n teradata-vantage-express --query 'id' -o tsv) | Out-String
az vm disk attach --vm-name teradata-vantage-express --name $diskId
```
MacOS
```:CreateInstanceMac
az disk create -n teradata-vantage-express --size-gb 60
az vm create \
  --name teradata-vantage-express \
  --image UbuntuLTS \
  --admin-username azureuser \
  --ssh-key-name vantage-ssh-key \
  --size Standard_F4s_v2 \
  --public-ip-sku Standard

DISK_ID=$(az disk show -n teradata-vantage-express --query 'id' -o tsv)
az vm disk attach --vm-name teradata-vantage-express --name $DISK_ID
```

Linux
```:CreateInstanceLinux
az disk create -n teradata-vantage-express --size-gb 60
az vm create \
  --name teradata-vantage-express \
  --image UbuntuLTS \
  --admin-username azureuser \
  --ssh-key-name vantage-ssh-key \
  --size Standard_F4s_v2 \
  --public-ip-sku Standard

DISK_ID=$(az disk show -n teradata-vantage-express --query 'id' -o tsv)
az vm disk attach --vm-name teradata-vantage-express --name $DISK_ID
```

⑥	VMにsshします。**path_to_private_key_file** と **vm_ip** は環境に合わせて置き換えてください。
```:ReplaceFiles
ssh -i <path_to_private_key_file> azureuser@<vm_ip>
```

⑦	VMに入ったら、**root**ユーザーに切り替えます。
```:ChgUser
sudo -i
```

⑧	Vantage Expressのダウンロードディレクトリを用意する。
```:CreateDir
mkdir /opt/downloads
cd /opt/downloads
```
⑨	データディスクをマウントする。
```:MountDataStorage
parted /dev/sdc --script mklabel gpt mkpart xfspart xfs 0% 100%
mkfs.xfs /dev/sdc1
partprobe /dev/sdc1
export DISK_UUID=$(blkid | grep sdc1 | cut -d"\"" -f2)
echo "UUID=$DISK_UUID  /opt/downloads   xfs   defaults,nofail   1   2" >> /etc/fstab
```
⑩	VirtualBoxと7zipのインストール
```:InstallVirtualBox
apt update && apt-get install p7zip-full p7zip-rar virtualbox -y
```
⑪	Vantage Expressをダウンロードするためのcurlコマンドを取得します。

a)[Vantage Expessのダウンロードページ](https://downloads.teradata.com/download/database/teradata-express-for-vmware-player)にアクセスします（登録が必要です）。

b)最新のダウンロードリンク（例："Vantage Express 17.10"）をクリックします。ライセンス契約のポップアップが表示されます。まだライセンスに同意しないでください。

c)ブラウザでネットワークビューを開きます。例えば、ChromeでF12キーを押して、**ネットワーク**タブに移動します。

![画像１.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742714/12a16067-5874-fb50-e1ff-f9643f71ebee.png)

d)**同意する**ボタンをクリックしてライセンスに同意し、ダウンロードをキャンセルします。

e.ネットワークビューで、**VantageExpress**で始まる最後のリクエストを見つけます。その上で右クリックし、**コピー**→**cURLとしてコピー**を選択します。

![画像 2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2742714/a39b165a-b059-9cd5-fa82-d3f0240502ca.png)

⑫	sshセッションに戻り、curlコマンドを貼り付けて、Vantage Expressをダウンロードします。コマンドに **-o ve.7z** を追加すると、ダウンロードしたファイルを **ve.7z** という名前のファイルに保存します。HTTPヘッダをすべて削除する、などです。
```:curl
curl -o ve.7z 'http://d289lrf5tw1zls.cloudfront.net/database/teradata-express/VantageExpress17.10_Sles12_202108300444.7z?Expires=1638719978&Signature=GKBkNvery_long_signature__&Key-Pair-Id=********************'
```
⑬	ダウンロードしたファイルを解凍してください。数分かかります。
```:Unzip
7z x ve.7z
```

⑭	VirtualBoxでVMを起動します。コマンドはすぐに返ってきますが、VMのinitプロセスには数分かかります。
```:StartVM
export VM_IMAGE_DIR="/opt/downloads/VantageExpress17.10_Sles12"
DEFAULT_VM_NAME="vantage-express-17.10"
VM_NAME="${VM_NAME:-$DEFAULT_VM_NAME}"
vboxmanage createvm --name "$VM_NAME" --register --ostype openSUSE_64
vboxmanage modifyvm "$VM_NAME" --ioapic on --memory 6000 --vram 128 --nic1 nat --cpus 4
vboxmanage storagectl "$VM_NAME" --name "SATA Controller" --add sata --controller IntelAhci
vboxmanage storageattach "$VM_NAME" --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium  "$(find $VM_IMAGE_DIR -name '*disk1*')"
vboxmanage storageattach "$VM_NAME" --storagectl "SATA Controller" --port 1 --device 0 --type hdd --medium  "$(find $VM_IMAGE_DIR -name '*disk2*')"
vboxmanage storageattach "$VM_NAME" --storagectl "SATA Controller" --port 2 --device 0 --type hdd --medium  "$(find $VM_IMAGE_DIR -name '*disk3*')"
vboxmanage modifyvm "$VM_NAME" --natpf1 "tdssh,tcp,,4422,,22"
vboxmanage modifyvm "$VM_NAME" --natpf1 "tddb,tcp,,1025,,1025"
vboxmanage startvm "$VM_NAME" --type headless
vboxmanage controlvm "$VM_NAME" keyboardputscancode 1c 1c
```

⑮	Vantage Express VMにsshします。パスワードは**root**を使用します。
```:SshtoVM
ssh -p 4422 root@localhost
```
⑯	DBが稼働していることを確認する。
```:CheckDBState
pdestate -a
```
コマンドが返された場合、**PDE の状態は RUN/STARTED です。DBSの状態は、5：ログオンが有効 - システムが静止している、** つまりVantage Expressが起動したことを意味します。状態が異なる場合は、正しい状態になるまで **pdestate -a** を繰り返してください。

⑰	Vantage Expressが起動したら、**bteq** clientコマンドラインクライアントを起動します。BTEQ（発音：ビーテック）は、Teradata データベースに SQL クエリーを送信するために使用される、コマンドベースの汎用クライアントツールです。
```:StartBteq
bteq
```

⑱	bteqを起動したら、Vantage Expressインスタンスに接続します。パスワードを要求されたら、**dbc** と入力します。
```:LogontoDB
.logon localhost/dbc
```

# サンプルクエリの実行
①	dbcユーザーを使用して、HRという新しいデータベースを作成します。このクエリをコピー＆ペーストして、Enterキーを押して実行します。
```sql:CreateDataBase.sql
CREATE DATABASE HR
AS PERMANENT = 60e6, -- 60MB
    SPOOL = 120e6; -- 120MB
```
②	サンプルテーブルを作成し、データを挿入してクエリを実行してみましょう。まず、社員情報を保持するテーブルを作成します。
```sql:CreateTable.sql
CREATE SET TABLE HR.Employees (
   GlobalID INTEGER,
   FirstName VARCHAR(30),
   LastName VARCHAR(30),
   DateOfBirth DATE FORMAT 'YYYY-MM-DD',
   JoinedDate DATE FORMAT 'YYYY-MM-DD',
   DepartmentCode BYTEINT
)
UNIQUE PRIMARY INDEX ( GlobalID );
```
③	では、レコードを挿入してみましょう。
```sql:Insert.sql
INSERT INTO HR.Employees (
   GlobalID,
   FirstName,
   LastName,
   DateOfBirth,
   JoinedDate,
   DepartmentCode
)
VALUES (
   101,
   'Adam',
   'Tworkowski',
   '1980-01-05',
   '2004-08-01',
   01
);
```
④	最後に、データを取り出せるかどうか見てみましょう。
```sql:Select.sql
SELECT * FROM HR.Employees;
```
以下のような結果が得られるはずです。
|GlobalID|FirstName|LastName|DateOfBirth|JoinedDate|DepartmentCode|
|--------:|:---------|:----------|:-----------|:----------|--------------:|
|101|Adam|Tworkowski|1980-01-05|2004-08-01|1|

# オプション設定

・VMの停止と起動を行う場合は、Vantage Expressを自動起動に追加するとよいでしょう。 VMにsshし、次のコマンドを実行します。
```:AutoStart
sudo -i

cat <<EOF >> /etc/default/virtualbox
VBOXAUTOSTART_DB=/etc/vbox
VBOXAUTOSTART_CONFIG=/etc/vbox/autostart.cfg
EOF

cat <<EOF > /etc/systemd/system/vantage-express-17.10.service
[Unit]
Description=vm1
After=network.target virtualbox.service
Before=runlevel2.target shutdown.target
[Service]
User=root
Group=root
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
ExecStart=/usr/bin/VBoxManage startvm vantage-express-17.10 --type headless
ExecStop=/usr/bin/VBoxManage controlvm vantage-express-17.10 savestate
[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable vantage-express-17.10
systemctl start vantage-express-17.10
```
・インターネットから Vantage Express に接続する場合は、VM に対してファイアウォール・ホールを開く必要があります。また、デフォルトのパスワードは**dbc**ユーザに変更する必要があります。
①	**dbc**ユーザのパスワードを変更するには、VMに移動してbteqを起動します。
```:StartBteq
bteq
```

②ユーザー名とパスワードを**dbc**にして、データベースにログインします。
```:LogontoDB
.logon localhost/dbc
```
③**dbc** ユーザーのパスワードを変更します。
```sql:ChgPassword.sql
MODIFY USER dbc AS PASSWORD = new_password;
```

④これで、gcloudコマンドで1025番ポートをインターネットに開放することができます。
```:OpenPort1025
az vm open-port --name teradata-vantage-express --port 1025
```

# クリーンアップ

課金を停止するには、リソースグループに関連するすべてのリソースを削除します。
```:DeleteInstance
az group delete --no-wait -n tdve-resource-group
```

# 次のステップ

・[オブジェクトストレージに保存されているデータを問い合わせる](https://quickstarts.teradata.com/nos.html)

# さらに詳しく

・[Teradata® Vantage™ Express Installation and Configuration Guide (must be logged in to downloads.teradata.com)](https://downloads.teradata.com/download/files/7671/201588/3/B035-5948-051K-VantageExpress-17.10_SLES12.pdf?license=898/218656)

・[Teradata® Studio™ and Studio™ Express Installation Guide](https://docs.teradata.com/r/KEoAHNnh~EbZLtVJNRo0Sg/root)

・[Introduction to BTEQ](https://docs.teradata.com/r/jmAxXLdiDu6NiyjT6hhk7g/root)

#### Teradata Vantageへのお問合せ
[Teradata Vantage へのお問合せ](https://www.teradata.jp/About-Us/Contact)