#author("2020-08-15T06:48:47+00:00","","") #mynavi(Azureメモ) #setlinebreak(on); * 概要 [#scb27b26] #html(<div class="pl10">) #html(</div>) * 目次 [#e9344851] #contents - 関連 -- [[Azureメモ]] -- [[Azure App Service に Grafana をデプロイ]] -- [[Azure VM上のGrafanaをカスタムドメインで公開]] * TODO [#kb552ad8] #html(<div class="pl10">) ・仮想マシン ・docker ・InfluxDB ・マウント設定(データディレクトリ) ・Grafana ・マウント設定(ローカルDB) ・マウント設定(pluginsディレクトリ) #html(</div>) * 作成する環境 [#j6868bd3] #html(<div class="pl10">) 下図のような環境を構築する。 #TODO #html(</div>) * リソースの作成 [#s32d67cc] #html(<div class="pl10">) いつも通りシェル化しておく。(最終的には ARM に移行) #html(){{ <div id="tabs1"> <ul> <li><a href="#tabs1-0">0_env.sh</a></li> <li><a href="#tabs1-1">1_vm_resources.sh</a></li> <li><a href="#tabs1-2">2_vm_setup.sh</a></li> </ul> }} // START tabs1-0 #html(<div id="tabs1-0">) #mycode2(){{ #!/bin/bash PREFIX=リソース名の頭に付ける接頭文字 subscriptionId=サブスクリプションID region=japanwest # リソースグループ resourceGroup=${PREFIX}Resources # 仮想ネットワーク vnetName=${PREFIX}VNet vnetPrefix=10.1.0.0/16 # セキュリティグループ名 nsgName=${vnetName}SecGrp nsgPubRuleName=${nsgName}PubRule # 仮想マシンを配置するサブネット vmSubnetName=${PREFIX}VmSubnet vmSubnetPrefix=10.1.1.0/24 # 仮想マシンの情報 vmName=${PREFIX}Vm vmImage=UbuntuLTS vmIpAddress=10.1.1.5 vmUser=sample }} #html(</div>) // END tabs1-0 // START tabs1-1 #html(<div id="tabs1-1">) #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 # 仮想ネットワーク 及び サブネット作成 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 # 仮想マシンの作成 rm -rf ~/.ssh/id_rsa rm -rf ~/.ssh/id_rsa.pub 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_vm_setup.sh # ポート開放 az vm open-port --resource-group $resourceGroup --name $vmName --port 3000 # 生成されたSSH鍵を退避しておく mkdir -p pem if [ -e ~/.ssh/id_rsa ]; then mv ~/.ssh/id_rsa ./pem/id_rsa_${vmName} mv ~/.ssh/id_rsa.pub ./pem/id_rsa_${vmName}.pub fi fi # リソース削除 if [ "$1" == "--delete" ]; then echo az group delete az group delete --name $resourceGroup fi }} #html(</div>) // END tabs1-1 // START tabs1-2 #html(<div id="tabs1-2">) #mycode2(){{ #!/bin/bash apt-get update apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" apt-get update apt-get install -y docker-ce docker-ce-cli containerd.io curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose mkdir /tmp/influx_docker && cd /tmp/influx_docker cat <<_EOCONF_ >influxdb.conf [meta] dir = "/var/lib/influxdb/meta" [data] dir = "/var/lib/influxdb/data" engine = "tsm1" wal-dir = "/var/lib/influxdb/wal" [http] enabled = true flux-enabled = true _EOCONF_ cat <<_EOYML_>docker-compose.yml version: "3" services: influxdb: image: influxdb:1.8 hostname: influxdb_for_grafana container_name: influxdb_for_grafana volumes: - ./data/influxdb:/var/lib/influxdb - ./influxdb.conf:/etc/influxdb/influxdb.conf ports: - "8086:8086" grafana: image: grafana/grafana:7.1.1 hostname: grafana_sample container_name: grafana_sample ports: - "3000:3000" volumes: - ./data/grafana:/var/lib/grafana environment: GF_SECURITY_ADMIN_PASSWORD: admin _EOYML_ mkdir -p data/influxdb && chmod 777 data/influxdb mkdir -p data/grafana && chmod 777 data/grafana # start influxdb docker-compose up -d # wait until influxdb starts while [ true ]; do sleep 10 x=`sudo docker exec -i influxdb_sample influx --execute "show databases" 2>&1` if [ "$?" == "0" ]; then break fi done # create sample database and sample user. docker exec -i influxdb_sample influx --execute "create database sampledb" docker exec -i influxdb_sample influx --execute "create user sample with password 'sample' WITH ALL PRIVILEGES" }} #html(</div>) // END tabs1-2 #html(</div>) // END tabs1 #html(<script>$(function() { $("#tabs1").tabs(); });</script>) ** リソースを作成 [#h492e87b] #myterm2(){{ ./1_vm_resources.sh --create }} ** リソースを削除 [#q9822b32] #myterm2(){{ ./1_vm_resources.sh --delete }} #html(</div>) * 動作確認 [#n9269eef] #html(<div class="pl10">) VMのIPアドレスを確認 #myterm2(){{ az vm list-ip-addresses -o table }} あとは http://確認したアドレス:3000 にアクセスして動作を確認するだけ。 #html(</div>)