From 2b606f66b526a5f787d3e71b1510c3b4da8adfbc Mon Sep 17 00:00:00 2001
From: Emiliano Vavassori <syntaxerrormmm@gmail.com>
Date: Sun, 20 Sep 2015 21:13:07 +0200
Subject: [PATCH] Managing local installation of ansible in case of missing
 connectivity on server.

---
 roles/kickstart/files/ppa-ansible.gpg         | 29 +++++++++++++++++++
 roles/kickstart/tasks/kickstart.yml           | 13 +++++++++
 .../templates/ansible-ansible-trusty.list     |  2 ++
 roles/kickstart/templates/post-client-ks.sh   | 18 ++++++++----
 roles/kickstart/templates/post-docenti-ks.sh  | 18 ++++++++----
 roles/ubuntu-mirror/files/apt-mirror.list     |  4 +++
 6 files changed, 74 insertions(+), 10 deletions(-)
 create mode 100644 roles/kickstart/files/ppa-ansible.gpg
 create mode 100644 roles/kickstart/templates/ansible-ansible-trusty.list

diff --git a/roles/kickstart/files/ppa-ansible.gpg b/roles/kickstart/files/ppa-ansible.gpg
new file mode 100644
index 0000000..4f97510
--- /dev/null
+++ b/roles/kickstart/files/ppa-ansible.gpg
@@ -0,0 +1,29 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1
+
+mQINBFOXbTABEADKLcY3MYZyHIiCEu8cQ+0UzxZolTYZf8xZ06/d8xzUW/UBPTLV
+x/40IzWJEZU87GCYVXUhdYXECrFQKQOOEWQswBxOt26/g0nIrU0edZ9cCZ9o9+ZO
+sKDcScWNxWeclLr2+YHdmX9eph+2p+zIPmhNJaaWV6/bSo1fBi7ganZFRAc13zO8
+jtQsYyIeoAFwjt1vbk9CifdFhEchRVbwvZYhZDWfBZjhZ15UOunjo47gEkpK0PsW
+HY5N3/c75pGMwMTCjHMKno6KFzhdKLaz/QgbNnpy1aMkA/LITeU6Pgg6iqofrSY3
+Fx73MCAb8EEytvSV/65wztKzexHjGYxhm5ygoET5tPyXciX0+XzojkZAHzUEeT5z
+4kgL6OLyn+JQAyRDNnOJEkYmvwQveZuUjsYUkgc5DJdg6w7lTgQHWObOENpXls3B
+DnphA4DJyc0PQODCxdSZo4ZXMLn5lE/0qvAJ6g/wntY/ee/vRKwy9iDMOWQvihTI
+Y/L70/TnE4qZdaNbOJEvW59LT6GBTrcU1MX2fS5hU/mQa2CNixSVZG98rba3tfNa
+LDDNqivkcxtWryEWd0giBzzUS+MhtxhHm77YgxNVyyFn8bXb25/W+Jq+VvWWx2KD
+3ZwVD37X8wIBRLVozoH0jHVW7jKTnf2z+D6FCM+pVlm8zV1upXbHbdaRqwARAQAB
+tB9MYXVuY2hwYWQgUFBBIGZvciBBbnNpYmxlLCBJbmMuiQI4BBMBAgAiBQJTl20w
+AhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCTxKP9e7nDZwzdD/9yFq+3
+ptLyWP1JN3RXsvTIJLhhjOqMMJCOocV0G3slHeUtdIDmvd2RaS8PeFNSd9QFbUzk
+a7pBXec3a7kgEVorty2/+cZSpEVHT26oAbJnoH7E1YGii8bbnk9LqOCF/nLpasEq
+PKqtVzXz+vGB7G0ox8qmRm6JynrMeLBftYemxJ8e4fii6APJxE6FPz/AvgcN3BtB
+guseFwcga6lGcmp0JLofGhTbejfS9dW9bnCFJBtRfzUVd+Cb8aYuzV5zgCJgqOBJ
+Hf0L6xDwn8UuzRfi0MWzEskuC/KxUJqVHMuTaLdrSeP1/czompetbsSHTfDklf/p
+4EbSM9VqZFiKr17we0LdigAEv2JnL2Qj0oN3eRNU0sDJ3kZvh5qhnteNgSRM/el0
+Sly+34CRZzX25vd+pOTgwK6VFx3wvWfqn3pVNT9ASNalhogFXuBY2ukYJaiUTPsS
+R4+KHiD3eIhWyayBGP+GRvGb5dVC29k4CjLvQM9lISmZrrxGmMGoV9S1dh7siZYE
+CaVW0nKI95d6bBHaKH1g5HJ7NEsVTwf8LRY/FFpLsEPVw4HNVqqqwhuJnSW70WQ3
+blh0RIX/+z9hAla+M0kix7r0lS89ZBdTgwPuiCrkPRpoxi06ah/Q62uP3ZN4+dew
+1sBZdaC9kaKdOOWTqArVnaPObQgUUJFhY9wUsA==
+=qlCh
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/roles/kickstart/tasks/kickstart.yml b/roles/kickstart/tasks/kickstart.yml
index 4e3a3e0..3a944f8 100644
--- a/roles/kickstart/tasks/kickstart.yml
+++ b/roles/kickstart/tasks/kickstart.yml
@@ -63,3 +63,16 @@
     src: post-docenti-ks.sh
     dest: /var/lib/nethserver/ibay/ks/post-docenti-ks.sh
   sudo: yes
+
+- name: Copio la chiave GPG del repository ansible per installazione locale
+  copy:
+    src: ppa-ansible.gpg
+    dest: /var/lib/nethserver/ibay/ks/ppa-ansible.gpg
+  sudo: yes
+
+- name: Copio la configurazione del repo di ansible per installazione locale
+  template:
+    src: ansible-ansible-trusty.list
+    dest: /var/lib/nethserver/ibay/ks/ansible-ansible-trusty.list
+  sudo: yes
+    
diff --git a/roles/kickstart/templates/ansible-ansible-trusty.list b/roles/kickstart/templates/ansible-ansible-trusty.list
new file mode 100644
index 0000000..b3a40a2
--- /dev/null
+++ b/roles/kickstart/templates/ansible-ansible-trusty.list
@@ -0,0 +1,2 @@
+deb http://{{ ansible_local.domain.mirrorpath }}ppa.launchpad.net/ansible/ansible/ubuntu trusty main
+# deb-src http://{{ ansible_local.domain.mirrorpath }}ppa.launchpad.net/ansible/ansible/ubuntu trusty main
diff --git a/roles/kickstart/templates/post-client-ks.sh b/roles/kickstart/templates/post-client-ks.sh
index 409e249..72b5c08 100644
--- a/roles/kickstart/templates/post-client-ks.sh
+++ b/roles/kickstart/templates/post-client-ks.sh
@@ -5,11 +5,19 @@ TARGETHOSTNAME=$(wget -qO- http://{{ ansible_local.domain.serverfqdn }}:3000/wha
 echo $TARGETHOSTNAME > /etc/hostname
 sed -i "s/kickseed/$TARGETHOSTNAME/g" /etc/hosts
 
-# Installo l'ultimo ansible per ansible-pull
-export https_proxy=https://{{ ansible_local.domain.serverip }}:3128
-add-apt-repository -y ppa:ansible/ansible
-apt-get update && apt-get install -y ansible
-unset https_proxy
+if ping -c4 8.8.8.8 >/dev/null 2>&1; then
+  # Installo l'ultimo ansible per ansible-pull
+  export https_proxy=https://{{ ansible_local.domain.serverip }}:3128
+  add-apt-repository -y ppa:ansible/ansible
+  apt-get update && apt-get install -y ansible
+  unset https_proxy
+else
+  # Adding ansible manually from local
+  wget -q http://{{ ansible_local.domain.serverfqdn }}/ks/ppa-ansible.gpg -O /tmp/ppa-ansible.gpg
+  apt-key add /tmp/ppa-ansible.gpg && rm -f /tmp/ppa-ansible.gpg
+  wget -q http://{{ ansible_local.domain.serverfqdn }}/ks/ansible-ansible-trusty.list -O /etc/apt/sources.list.d/ansible-ansible-trusty.list
+  apt-get update && apt-get install -y ansible
+fi
 
 # Creo directory dipendenti
 install -d -o root -g root /var/lib/{{ ansible_local.domain.domainfull }}/config
diff --git a/roles/kickstart/templates/post-docenti-ks.sh b/roles/kickstart/templates/post-docenti-ks.sh
index 6545df4..b3cbf01 100644
--- a/roles/kickstart/templates/post-docenti-ks.sh
+++ b/roles/kickstart/templates/post-docenti-ks.sh
@@ -5,11 +5,19 @@ TARGETHOSTNAME=$(wget -qO- http://{{ ansible_local.domain.serverfqdn }}:3000/wha
 echo $TARGETHOSTNAME > /etc/hostname
 sed -i "s/kickseed/$TARGETHOSTNAME/g" /etc/hosts
 
-# Installo l'ultimo ansible per ansible-pull
-export https_proxy=https://{{ ansible_local.domain.serverip }}:3128
-add-apt-repository -y ppa:ansible/ansible
-apt-get update && apt-get install -y ansible
-unset https_proxy
+if ping -c4 8.8.8.8 >/dev/null 2>&1; then
+  # Installo l'ultimo ansible per ansible-pull
+  export https_proxy=https://{{ ansible_local.domain.serverip }}:3128
+  add-apt-repository -y ppa:ansible/ansible
+  apt-get update && apt-get install -y ansible
+  unset https_proxy
+else
+  # Adding ansible manually from local
+  wget -q http://{{ ansible_local.domain.serverfqdn }}/ks/ppa-ansible.gpg -O /tmp/ppa-ansible.gpg
+  apt-key add /tmp/ppa-ansible.gpg && rm -f /tmp/ppa-ansible.gpg
+  wget -q http://{{ ansible_local.domain.serverfqdn }}/ks/ansible-ansible-trusty.list -O /etc/apt/sources.list.d/ansible-ansible-trusty.list
+  apt-get update && apt-get install -y ansible
+fi
 
 # Creo directory dipendenti
 install -d -o root -g root /var/lib/{{ ansible_local.domain.domainfull }}/config
diff --git a/roles/ubuntu-mirror/files/apt-mirror.list b/roles/ubuntu-mirror/files/apt-mirror.list
index 63f523a..f3f7449 100644
--- a/roles/ubuntu-mirror/files/apt-mirror.list
+++ b/roles/ubuntu-mirror/files/apt-mirror.list
@@ -63,6 +63,10 @@ deb-i386 http://security.ubuntu.com/ubuntu trusty-security main restricted unive
 deb-amd64 http://security.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
 deb-src http://security.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
 
+# Ansible
+deb-i386 http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main
+deb-amd64 http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main
+
 clean http://archive.ubuntu.com/ubuntu
 clean http://extras.ubuntu.com/ubuntu
 clean http://archive.canonical.com