- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2020-12-12T13:21:04+00:00","","")
#author("2020-12-12T17:05:33+00:00","","")
#mynavi(Azureメモ)
#setlinebreak(on);
#html(){{
<style>
.images img {
border: 1px solid #333;
}
</style>
}}
* 概要 [#b8d6cc43]
#html(<div class="pl10">)
#TODO
#html(</div>)
* 料金 [#y044c341]
#html(<div class="pl10">)
https://azure.microsoft.com/ja-jp/pricing/details/private-link/
| サービス/詳細 | 料金 |h
| Private Link サービス | Private Link サービスに料金はかかりません |
| プライベート エンドポイント | ¥ 1.12 / 時間 |
| 受信データ処理量 | ¥ 1.12/GB |
| 送信データ処理量 | ¥ 1.12/GB |
#html(</div>)
* 目次 [#m1734f6a]
#contents
- 参考
-- [[Azure Database for PostgreSQL 用の Private Link - 単一サーバー>https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-data-access-and-security-private-link]]
-- [[ポータルを使用して Azure Database for PostgreSQL 単一サーバー用の Private Link を作成および管理する>https://docs.microsoft.com/ja-jp/azure/postgresql/howto-configure-privatelink-portal]]
-- [[CLI を使用して Azure Database for PostgreSQL 単一サーバー用の Private Link を作成および管理する>https://docs.microsoft.com/ja-jp/azure/postgresql/howto-configure-privatelink-cli]]
* VNet(仮想ネットワーク) 及び VM(仮想マシン) の作成 [#h9d49da3]
#html(<div class="pl10">)
#html(){{
<div id="tabs1">
<ul>
<li><a href="#tabs1-1">0_env.sh</a></li>
<li><a href="#tabs1-2">1_resources.sh</a></li>
</ul>
}}
// START tabs1-1
#html(<div id="tabs1-1">)
0_env.sh
#mycode2(){{
#!/bin/bash
# リソース名の接頭文字
PREFIX=XXXXXXXXXXX
# サブスクリプションID
subscriptionId=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
# リージョン
region=japanwest
resourceGroup=${PREFIX}Resources
vnetName=${PREFIX}VNet
vnetPrefix=10.1.0.0/16
nsgName=${vnetName}SecGrp
nsgPubRuleName=${nsgName}PubRule
nsgPubInboundPort="8086"
vmSubnetName=${PREFIX}VmSubnet
vmSubnetPrefix=10.1.1.0/24
exSubnetName=${PREFIX}ExSubnet
exSubnetPrefix=10.1.2.0/24
vmName=${PREFIX}Vm
vmImage=UbuntuLTS # "az vm image list -o table" で利用可能なイメージの一覧を確認可能
vmIpAddress=10.1.1.5
vmUser=sampleuser
}}
#html(</div>)
// END tabs1-1
// START tabs1-2
#html(<div id="tabs1-2">)
1_resources.sh
#mycode2(){{
#!/bin/bash
# 設定の読み込み
source 0_env.sh
# リソース作成
if [ "$1" == "--create" ]; then
# リソースグループの作成
echo az group create
az group create --name $resourceGroup --location $region
# NSG(ネットワークセキュリティグループの)作成
echo az network nsg create
az network nsg create --resource-group $resourceGroup --name $nsgName
# NSGルール(Public) SSH
echo "az network nsg rule create(ssh)"
az network nsg rule create \
--resource-group $resourceGroup --nsg-name $nsgName --name ${nsgPubRuleName}2 \
--access Allow --protocol Tcp --direction Inbound --priority 100 \
--source-address-prefix Internet --source-port-range "*" --destination-port-range "22"
# 仮想ネットワーク 及び サブネット作成
echo az network vnet create
az network vnet create \
--name $vnetName --resource-group $resourceGroup \
--address-prefixes $vnetPrefix --network-security-group $nsgName \
--subnet-name $vmSubnetName --subnet-prefixes $vmSubnetPrefix
# VNet統合用のサブネット
echo az vnet subnet create
az network vnet subnet create \
--name $exSubnetName \
--resource-group $resourceGroup \
--vnet-name $vnetName \
--address-prefixes $exSubnetPrefix
# ユーザディレクトリ配下のSSH鍵をバックアップ
bk_suffix=`date +%Y%m%d%H%M%S`
if [ -e ~/.ssh/id_rsa ]; then
mv ~/.ssh/id_rsa ~/.ssh/id_rsa_${bk_suffix}
fi
if [ -e ~/.ssh/id_rsa.pub ]; then
mv ~/.ssh/id_rsa.pub ~/.ssh/id_rsa.pub_${bk_suffix}
fi
# 仮想マシンの作成
echo az vm create
az vm create \
--resource-group $resourceGroup --name $vmName --image $vmImage --generate-ssh-keys \
--vnet-name $vnetName --subnet $vmSubnetName \
--private-ip-address $vmIpAddress --admin-username $vmUser \
--public-ip-address-dns-name `echo $vmName | tr '[A-Z]' '[a-z]'` \
--custom-data 2_setup_vm.sh
# ポート開放
#az vm open-port --resource-group $resourceGroup --name $vmName --port 80
# 生成されたSSH鍵を移動( --ssh-dest-key-path が効かない為 )
mkdir -p pem
if [ -e ~/.ssh/id_rsa ]; then
mv ~/.ssh/id_rsa ./pem/id_rsa_${vmName}
fi
if [ -e ~/.ssh/id_rsa.pub ]; then
mv ~/.ssh/id_rsa.pub ./pem/id_rsa_${vmName}.pub
fi
# バックアップしたSSH鍵を戻す
if [ -e ~/.ssh/id_rsa_${bk_suffix} ]; then
mv ~/.ssh/id_rsa_${bk_suffix} ~/.ssh/id_rsa
fi
if [ -e ~/.ssh/id_rsa.pub_${bk_suffix} ]; then
mv ~/.ssh/id_rsa.pub_${bk_suffix} ~/.ssh/id_rsa.pub
fi
fi
# リソース削除
if [ "$1" == "--delete" ]; then
echo az group delete
az group delete --name $resourceGroup
fi
}}
#html(</div>)
// END tabs1-2
#html(</div>)
// END tabs1
#html(<script>$(function() { $("#tabs1").tabs(); });</script>)
上記のシェルで VNet 及び VMを作成
#myterm2(){{
./1_resources_vm.sh --create
}}
#html(</div>)
* データベース作成 [#t958e7c9]
#html(<div class="pl10">)
** PostgreSQLサーバの作成 [#qbde4ed1]
#html(<div class="pl10">)
Azure Portal から 「Azure Database for PostgreSQL」 を以下の通り作成した。
※ 汎用(General Purpose) または メモリ最適化(Memory Optimized) 以上の価格レベルにする事。
※ &color(red){「Basic」 では Private Link 機能は利用できない。};
※ https://docs.microsoft.com/ja-jp/azure/postgresql/concepts-data-access-and-security-private-link
#html(<div class="images">)
#ref(pg01.png,nolink);
#html(</div>)
#html(</div>)
** Azureサービスへのアクセス許可 [#p077f6cc]
#html(<div class="pl10">)
Cloud Shell や VM からアクセスする為、Azureサービスへの
#html(<div class="images">)
#TODO
#html(</div>)
#html(</div>)
** ユーザ 及び データベースの作成 [#s11e8263]
#html(<div class="pl10">)
VMにSSH接続して 以下の通り DB 及び ユーザを作成する。
#myterm2(){{
psql "host=サーバ名.postgres.database.azure.com port=5432 dbname=postgres user=ユーザ名@サーバ名 password=管理者アカウントのパスワード sslmode=require"
psql (10.15 (Ubuntu 10.15-0ubuntu0.18.04.1), server 11.6)
:
postgres=> CREATE DATABASE sampledb1 ENCODING UTF8;
CREATE DATABASE
postgres=> CREATE USER user1 WITH PASSWORD 'DBユーザのパスワード';
CREATE ROLE
postgres=> GRANT ALL ON DATABASE sampledb1 TO user1;
GRANT
postgres=> \q
}}
作成したユーザで接続し直してアクセス確認用のテーブルを作成しておく
#myterm2(){{
psql "host=サーバ名.postgres.database.azure.com port=5432 dbname=sampledb1 user=user1@サーバ名 password=DBユーザのパスワード sslmode=require"
:
postgres=> create table sampletable1 (id integer, col1 integer, col2 integer, constraint sampletable1_pkc primary key (id));
CREATE TABLE
postgres=> insert into sampletable1 values(1, 10, 100);
INSERT 0 1
postgres=> insert into sampletable1 values(2, 20, 200);
INSERT 0 1
postgres=> \q
}}
#html(</div>)
#html(</div>)
* プライベートエンドポイントの作成 [#bf41e9c2]
#html(<div class="pl10">)
Azure portal から [Private Link] を検索/選択後、[プライベートエンドポイントの作成] を選択。
#TODO
#html(</div>)
* Private Link の構成 [#w4a9dd66]
#html(<div class="pl10">)
#TODO
#html(</div>)