1
1
#! /bin/bash
2
2
3
3
export RANDOM_ID=" $( openssl rand -hex 3) "
4
- export MY_RESOURCE_GROUP_NAME=" myVMResourceGroup $RANDOM_ID "
4
+ export MY_RESOURCE_GROUP_NAME=" appsec- $RANDOM_ID -rg "
5
5
export REGION=westeurope
6
- export MY_VM_NAME=" myVM $RANDOM_ID "
6
+ export MY_VM_NAME=" appsec- $RANDOM_ID "
7
7
export MY_USERNAME=azureuser
8
8
export MY_VM_IMAGE=" Canonical:0001-com-ubuntu-minimal-jammy:minimal-22_04-lts-gen2:latest"
9
9
10
10
# create resource group
11
- az group create --name $MY_RESOURCE_GROUP_NAME --location $REGION
11
+ echo " Creating resource group $MY_RESOURCE_GROUP_NAME in $REGION "
12
+ RGRESP=$( az group create --name $MY_RESOURCE_GROUP_NAME --location $REGION -o json)
13
+ if [ $? -ne 0 ]; then
14
+ echo -e " \033[31m Failed to create resource group $MY_RESOURCE_GROUP_NAME "
15
+ exit 1
16
+ fi
17
+ RGSTATUS=$( echo $RGRESP | jq -r ' .properties.provisioningState' )
18
+ echo " Resource group status: $RGSTATUS "
19
+ echo
12
20
13
21
# get cloud-init.txt
14
22
curl -o cloud-init.txt https://raw.githubusercontent.com/mkol5222/appsec-chart/main/cloud-init.yml
15
23
16
24
# create VM
17
25
# https://learn.microsoft.com/en-us/azure/virtual-machines/linux/quick-create-cli
18
26
19
- az vm create \
27
+ echo " Creating VM $MY_VM_NAME in $MY_RESOURCE_GROUP_NAME "
28
+ RESPVM=$( az vm create \
20
29
--resource-group $MY_RESOURCE_GROUP_NAME \
21
30
--name $MY_VM_NAME \
22
31
--image $MY_VM_IMAGE \
@@ -25,17 +34,40 @@ az vm create \
25
34
--custom-data cloud-init.txt \
26
35
--assign-identity \
27
36
--size Standard_DS2_v2 \
28
- --public-ip-sku Standard
37
+ --public-ip-sku Standard )
38
+
39
+ if [ $? -ne 0 ]; then
40
+ echo -e " \033[31m Failed to create VM $MY_VM_NAME "
41
+ exit 1
42
+ fi
43
+
44
+ VMSTATUS=$( echo $RESPVM | jq -r ' .powerState' )
45
+ echo " VM status: $VMSTATUS "
46
+ echo
29
47
30
- az vm open-port -g $MY_RESOURCE_GROUP_NAME -n $MY_VM_NAME --port 22,80,443
48
+ echo " Opening ports 22, 80, 443"
49
+ RESPPORTS=$( az vm open-port -g $MY_RESOURCE_GROUP_NAME -n $MY_VM_NAME --port 22,80,443)
50
+ if [ $? -ne 0 ]; then
51
+ echo -e " \033[31m Failed to open ports"
52
+ exit 1
53
+ fi
54
+ echo " Ports opened"
31
55
32
- az vm extension set \
56
+ echo " Enabling AAD login for the VM"
57
+ RESPAAD=$( az vm extension set \
33
58
--publisher Microsoft.Azure.ActiveDirectory \
34
59
--name AADSSHLoginForLinux \
35
60
--resource-group $MY_RESOURCE_GROUP_NAME \
36
- --vm-name $MY_VM_NAME
61
+ --vm-name $MY_VM_NAME )
62
+ if [ $? -ne 0 ]; then
63
+ echo -e " \033[31m Failed to enable AAD login"
64
+ exit 1
65
+ fi
66
+ echo " AAD login enabled"
37
67
68
+ echo " Getting public IP address of the VM $MY_VM_NAME "
38
69
export IP_ADDRESS=$( az vm show --show-details --resource-group $MY_RESOURCE_GROUP_NAME --name $MY_VM_NAME --query publicIps --output tsv)
70
+ echo " Public IP address: $IP_ADDRESS "
39
71
40
72
alias sshvm=" ssh -o StrictHostKeyChecking=no $MY_USERNAME @$IP_ADDRESS "
41
73
@@ -49,6 +81,6 @@ echo "az ssh vm -n $MY_VM_NAME -g $MY_RESOURCE_GROUP_NAME --local-user azureuser
49
81
chmod +x " sshvm-$RANDOM_ID "
50
82
51
83
echo
52
- echo " VM created. You can now connect to it using 'sshvm' command"
84
+ echo -e " \033[32m SUCCESS: VM created. You can now connect to it using 'sshvm' command"
53
85
echo " To destroy the VM, run 'destroyvm-$RANDOM_ID '"
54
86
echo
0 commit comments