0_env.sh
#!/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
1_resources.sh
#!/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
上記のシェルで VNet 及び VMを作成
./1_resources_vm.sh --create
Azure Portal から 「Azure Database for PostgreSQL」 を以下の通り作成した。