From fee3f288c03149bee5486c8dd68c55cbc62a17af Mon Sep 17 00:00:00 2001
From: Abdelsalam Abbas <Abdelsalam.naeim@gmail.com>
Date: Wed, 19 Jul 2017 11:00:27 +0200
Subject: [PATCH] update azure contrib to use azure cli 2.0

---
 contrib/azurerm/apply-rg.sh                   | 23 ++++++++-----
 contrib/azurerm/apply-rg_2.sh                 | 19 +++++++++++
 contrib/azurerm/clear-rg.sh                   | 10 ++++--
 contrib/azurerm/clear-rg_2.sh                 | 14 ++++++++
 contrib/azurerm/generate-inventory.sh         | 10 ++++--
 contrib/azurerm/generate-inventory_2.yml      |  5 +++
 .../roles/generate-inventory/tasks/main.yml   |  2 +-
 .../roles/generate-inventory_2/tasks/main.yml | 16 +++++++++
 .../templates/inventory.j2                    | 34 +++++++++++++++++++
 9 files changed, 119 insertions(+), 14 deletions(-)
 create mode 100755 contrib/azurerm/apply-rg_2.sh
 create mode 100755 contrib/azurerm/clear-rg_2.sh
 create mode 100644 contrib/azurerm/generate-inventory_2.yml
 create mode 100644 contrib/azurerm/roles/generate-inventory_2/tasks/main.yml
 create mode 100644 contrib/azurerm/roles/generate-inventory_2/templates/inventory.j2

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
+
-- 
GitLab