diff --git a/contrib/azurerm/apply-rg.sh b/contrib/azurerm/apply-rg.sh index 392353d87..635d166bb 100755 --- a/contrib/azurerm/apply-rg.sh +++ b/contrib/azurerm/apply-rg.sh @@ -9,11 +9,18 @@ if [ "$AZURE_RESOURCE_GROUP" == "" ]; then exit 1 fi -ansible-playbook generate-templates.yml - -azure group deployment create -f ./.generated/network.json -g $AZURE_RESOURCE_GROUP -azure group deployment create -f ./.generated/storage.json -g $AZURE_RESOURCE_GROUP -azure group deployment create -f ./.generated/availability-sets.json -g $AZURE_RESOURCE_GROUP -azure group deployment create -f ./.generated/bastion.json -g $AZURE_RESOURCE_GROUP -azure group deployment create -f ./.generated/masters.json -g $AZURE_RESOURCE_GROUP -azure group deployment create -f ./.generated/minions.json -g $AZURE_RESOURCE_GROUP \ No newline at end of file +if [ $(az &>/dev/null) ] ; then + echo "azure cli 2.0 found, using it instead of 1.0" + ./apply-rg_2.sh "$AZURE_RESOURCE_GROUP" +elif [ $(azure &>/dev/null) ] ; then + ansible-playbook generate-templates.yml + + azure group deployment create -f ./.generated/network.json -g $AZURE_RESOURCE_GROUP + azure group deployment create -f ./.generated/storage.json -g $AZURE_RESOURCE_GROUP + azure group deployment create -f ./.generated/availability-sets.json -g $AZURE_RESOURCE_GROUP + azure group deployment create -f ./.generated/bastion.json -g $AZURE_RESOURCE_GROUP + azure group deployment create -f ./.generated/masters.json -g $AZURE_RESOURCE_GROUP + azure group deployment create -f ./.generated/minions.json -g $AZURE_RESOURCE_GROUP +else + echo "Azure cli not found" +fi diff --git a/contrib/azurerm/apply-rg_2.sh b/contrib/azurerm/apply-rg_2.sh new file mode 100755 index 000000000..4adfc414f --- /dev/null +++ b/contrib/azurerm/apply-rg_2.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +set -e + +AZURE_RESOURCE_GROUP="$1" + +if [ "$AZURE_RESOURCE_GROUP" == "" ]; then + echo "AZURE_RESOURCE_GROUP is missing" + exit 1 +fi + +ansible-playbook generate-templates.yml + +az group deployment create --template-file ./.generated/network.json -g $AZURE_RESOURCE_GROUP +az group deployment create --template-file ./.generated/storage.json -g $AZURE_RESOURCE_GROUP +az group deployment create --template-file ./.generated/availability-sets.json -g $AZURE_RESOURCE_GROUP +az group deployment create --template-file ./.generated/bastion.json -g $AZURE_RESOURCE_GROUP +az group deployment create --template-file ./.generated/masters.json -g $AZURE_RESOURCE_GROUP +az group deployment create --template-file ./.generated/minions.json -g $AZURE_RESOURCE_GROUP diff --git a/contrib/azurerm/clear-rg.sh b/contrib/azurerm/clear-rg.sh index d83253660..f2537cca0 100755 --- a/contrib/azurerm/clear-rg.sh +++ b/contrib/azurerm/clear-rg.sh @@ -9,6 +9,10 @@ if [ "$AZURE_RESOURCE_GROUP" == "" ]; then exit 1 fi -ansible-playbook generate-templates.yml - -azure group deployment create -g "$AZURE_RESOURCE_GROUP" -f ./.generated/clear-rg.json -m Complete \ No newline at end of file +if [ $(az &>/dev/null) ] ; then + echo "azure cli 2.0 found, using it instead of 1.0" + ./clear-rg_2.sh "$AZURE_RESOURCE_GROUP" +else + ansible-playbook generate-templates.yml + azure group deployment create -g "$AZURE_RESOURCE_GROUP" -f ./.generated/clear-rg.json -m Complete +fi diff --git a/contrib/azurerm/clear-rg_2.sh b/contrib/azurerm/clear-rg_2.sh new file mode 100755 index 000000000..a20045537 --- /dev/null +++ b/contrib/azurerm/clear-rg_2.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +set -e + +AZURE_RESOURCE_GROUP="$1" + +if [ "$AZURE_RESOURCE_GROUP" == "" ]; then + echo "AZURE_RESOURCE_GROUP is missing" + exit 1 +fi + +ansible-playbook generate-templates.yml + +az group deployment create -g "$AZURE_RESOURCE_GROUP" --template-file ./.generated/clear-rg.json --mode Complete diff --git a/contrib/azurerm/generate-inventory.sh b/contrib/azurerm/generate-inventory.sh index f6eaa5d28..0642e5d6d 100755 --- a/contrib/azurerm/generate-inventory.sh +++ b/contrib/azurerm/generate-inventory.sh @@ -8,5 +8,11 @@ if [ "$AZURE_RESOURCE_GROUP" == "" ]; then echo "AZURE_RESOURCE_GROUP is missing" exit 1 fi - -ansible-playbook generate-inventory.yml -e azure_resource_group="$AZURE_RESOURCE_GROUP" +# check if azure cli 2.0 exists else use azure cli 1.0 +if [ $(az &>/dev/null) ] ; then + ansible-playbook generate-inventory_2.yml -e azure_resource_group="$AZURE_RESOURCE_GROUP" +elif [ $(azure &>/dev/null) ]; then + ansible-playbook generate-inventory.yml -e azure_resource_group="$AZURE_RESOURCE_GROUP" +else + echo "Azure cli not found" +fi diff --git a/contrib/azurerm/generate-inventory_2.yml b/contrib/azurerm/generate-inventory_2.yml new file mode 100644 index 000000000..bec06c46d --- /dev/null +++ b/contrib/azurerm/generate-inventory_2.yml @@ -0,0 +1,5 @@ +--- +- hosts: localhost + gather_facts: False + roles: + - generate-inventory_2 diff --git a/contrib/azurerm/roles/generate-inventory/tasks/main.yml b/contrib/azurerm/roles/generate-inventory/tasks/main.yml index 92c6f7be9..b1e5c0ccc 100644 --- a/contrib/azurerm/roles/generate-inventory/tasks/main.yml +++ b/contrib/azurerm/roles/generate-inventory/tasks/main.yml @@ -8,4 +8,4 @@ vm_list: "{{ vm_list_cmd.stdout }}" - name: Generate inventory - template: src=inventory.j2 dest="{{playbook_dir}}/inventory" \ No newline at end of file + template: src=inventory.j2 dest="{{playbook_dir}}/inventory" diff --git a/contrib/azurerm/roles/generate-inventory_2/tasks/main.yml b/contrib/azurerm/roles/generate-inventory_2/tasks/main.yml new file mode 100644 index 000000000..e7802b3a1 --- /dev/null +++ b/contrib/azurerm/roles/generate-inventory_2/tasks/main.yml @@ -0,0 +1,16 @@ +--- + +- name: Query Azure VMs IPs + command: az vm list-ip-addresses -o json --resource-group {{ azure_resource_group }} + register: vm_ip_list_cmd + +- name: Query Azure VMs Roles + command: az vm list -o json --resource-group {{ azure_resource_group }} + register: vm_list_cmd + +- set_fact: + vm_ip_list: "{{ vm_ip_list_cmd.stdout }}" + vm_roles_list: "{{ vm_list_cmd.stdout }}" + +- name: Generate inventory + template: src=inventory.j2 dest="{{playbook_dir}}/inventory" diff --git a/contrib/azurerm/roles/generate-inventory_2/templates/inventory.j2 b/contrib/azurerm/roles/generate-inventory_2/templates/inventory.j2 new file mode 100644 index 000000000..696be6d57 --- /dev/null +++ b/contrib/azurerm/roles/generate-inventory_2/templates/inventory.j2 @@ -0,0 +1,34 @@ + +{% for vm in vm_ip_list %} +{% if not use_bastion or vm.virtualMachinename == 'bastion' %} +{{ vm.virtualMachine.name }} ansible_ssh_host={{ vm.virtualMachine.network.publicIpAddresses[0].ipAddress }} ip={{ vm.virtualMachine.network.privateIpAddresses[0] }} +{% else %} +{{ vm.virtualMachine.name }} ansible_ssh_host={{ vm.virtualMachine.network.privateIpAddresses[0] }} +{% endif %} +{% endfor %} + +[kube-master] +{% for vm in vm_roles_list %} +{% if 'kube-master' in vm.tags.roles %} +{{ vm.name }} +{% endif %} +{% endfor %} + +[etcd] +{% for vm in vm_roles_list %} +{% if 'etcd' in vm.tags.roles %} +{{ vm.name }} +{% endif %} +{% endfor %} + +[kube-node] +{% for vm in vm_roles_list %} +{% if 'kube-node' in vm.tags.roles %} +{{ vm.name }} +{% endif %} +{% endfor %} + +[k8s-cluster:children] +kube-node +kube-master +