From 72807965a85b212fef5c3db551163af4e46e5d90 Mon Sep 17 00:00:00 2001
From: Antoine Legrand <antoine.legrand@arkena.com>
Date: Fri, 4 Mar 2016 17:39:02 +0100
Subject: [PATCH] Upload files to a separate storage

---
 roles/download/defaults/main.yml |  37 ++++++++---
 roles/download/tasks/uploads.yml |   1 +
 roles/uploads/defaults/main.yml  | 101 +++++++++++++++++++++++++++++++
 roles/uploads/tasks/main.yml     |  24 ++++++++
 uploads.yml                      |  11 ++++
 5 files changed, 165 insertions(+), 9 deletions(-)
 create mode 100644 roles/download/tasks/uploads.yml
 create mode 100644 roles/uploads/defaults/main.yml
 create mode 100644 roles/uploads/tasks/main.yml
 create mode 100644 uploads.yml

diff --git a/roles/download/defaults/main.yml b/roles/download/defaults/main.yml
index ce4f3212c..be3f568d2 100644
--- a/roles/download/defaults/main.yml
+++ b/roles/download/defaults/main.yml
@@ -9,12 +9,15 @@ calico_cni_version: v1.0.0
 weave_version: v1.4.4
 
 # Download URL's
-kube_download_url: "https://storage.googleapis.com/kubernetes-release/release/{{ kube_version }}/bin/linux/amd64"
-etcd_download_url: "https://github.com/coreos/etcd/releases/download/{{ etcd_version }}/etcd-{{ etcd_version }}-linux-amd64.tar.gz"
-calico_download_url: "https://github.com/Metaswitch/calico-docker/releases/download/{{calico_version}}/calicoctl"
-calico_cni_download_url: "https://github.com/projectcalico/calico-cni/releases/download/{{calico_cni_version}}/calico"
-calico_cni_ipam_download_url: "https://github.com/projectcalico/calico-cni/releases/download/{{calico_cni_version}}/calico-ipam"
-weave_download_url: "https://github.com/weaveworks/weave/releases/download/{{weave_version}}/weave"
+kubelet_download_url: "https://storage.googleapis.com/kubespray/{{kube_version}}_kubernetes-kubelet"
+apiserver_download_url: "https://storage.googleapis.com/kubespray/{{kube_version}}_kubernetes-apiserver"
+kubectl_download_url: "https://storage.googleapis.com/kubespray/{{kube_version}}_kubernetes-kubectl"
+
+etcd_download_url: "https://storage.googleapis.com/kubespray/{{etcd_version}}_etcd"
+calico_download_url: "https://storage.googleapis.com/kubespray/{{calico_version}}_calico"
+calico_cni_download_url: "https://storage.googleapis.com/kubespray/{{calico_cni_version}}_calico-cni-plugin"
+calico_cni_ipam_download_url: "https://storage.googleapis.com/kubespray/{{calico_cni_version}}_calico-cni-plugin-ipam"
+weave_download_url: "https://storage.googleapis.com/kubespray/{{weave_version}}_weave"
 
 # Checksums
 calico_checksum: "1fa22c0ee0cc661f56aa09169a3661fb46e552b53fae5fae9aac010e0666b281"
@@ -29,57 +32,73 @@ kube_apiserver_checksum: "aebb2c131674e231ba8dcad4438624c876627e77f47b0c6ef96bd2
 downloads:
   - name: calico
     dest: calico/bin/calicoctl
+    version: "{{calico_version}}"
     sha256: "{{ calico_checksum }}"
+    source_url: "{{ calico_download_url }}"
     url: "{{ calico_download_url }}"
     owner: "root"
     mode: "0755"
 
   - name: calico-cni-plugin
     dest: calico/bin/calico
+    version: "{{calico_cni_version}}"
     sha256: "{{ calico_cni_checksum }}"
+    source_url: "{{ calico_cni_download_url }}"
     url: "{{ calico_cni_download_url }}"
     owner: "root"
     mode: "0755"
 
   - name: calico-cni-plugin-ipam
     dest: calico/bin/calico-ipam
+    version: "{{calico_cni_version}}"
     sha256: "{{ calico_cni_ipam_checksum }}"
+    source_url: "{{ calico_cni_ipam_download_url }}"
     url: "{{ calico_cni_ipam_download_url }}"
     owner: "root"
     mode: "0755"
 
   - name: weave
     dest: weave/bin/weave
+    version: "{{weave_version}}"
+    source_url: "{{weave_download_url}}"
     url: "{{weave_download_url}}"
     sha256: "{{ weave_checksum }}"
     owner: "root"
     mode: "0755"
 
   - name: etcd
+    version: "{{etcd_version}}"
     dest: "etcd/etcd-{{ etcd_version }}-linux-amd64.tar.gz"
     sha256: "{{ etcd_checksum }}"
+    source_url: "{{ etcd_download_url }}"
     url: "{{ etcd_download_url }}"
     unarchive: true
     owner: "etcd"
     mode: "0755"
 
   - name: kubernetes-kubelet
+    version: "{{kube_version}}"
     dest: kubernetes/bin/kubelet
     sha256: "{{kubelet_checksum}}"
-    url: "{{ kube_download_url }}/kubelet"
+    source_url: "{{ kubelet_download_url }}"
+    url: "{{ kubelet_download_url }}"
     owner: "kube"
     mode: "0755"
 
   - name: kubernetes-kubectl
     dest: kubernetes/bin/kubectl
+    version: "{{kube_version}}"
     sha256: "{{kubectl_checksum}}"
-    url: "{{ kube_download_url }}/kubectl"
+    source_url: "{{ kubectl_download_url }}"
+    url: "{{ kubectl_download_url }}"
     owner: "kube"
     mode: "0755"
 
   - name: kubernetes-apiserver
     dest: kubernetes/bin/kube-apiserver
+    version: "{{kube_version}}"
     sha256: "{{kube_apiserver_checksum}}"
-    url: "{{ kube_download_url }}/kube-apiserver"
+    source_url: "{{ apiserver_download_url }}"
+    url: "{{ apiserver_download_url }}"
     owner: "kube"
     mode: "0755"
diff --git a/roles/download/tasks/uploads.yml b/roles/download/tasks/uploads.yml
new file mode 100644
index 000000000..ed97d539c
--- /dev/null
+++ b/roles/download/tasks/uploads.yml
@@ -0,0 +1 @@
+---
diff --git a/roles/uploads/defaults/main.yml b/roles/uploads/defaults/main.yml
new file mode 100644
index 000000000..f1a767b48
--- /dev/null
+++ b/roles/uploads/defaults/main.yml
@@ -0,0 +1,101 @@
+---
+local_release_dir: /tmp
+
+# Versions
+kube_version: v1.1.8
+etcd_version: v2.2.5
+calico_version: v0.17.0
+calico_cni_version: v1.0.0
+weave_version: v1.4.4
+
+# Download URL's
+kube_download_url: "https://storage.googleapis.com/kubernetes-release/release/{{ kube_version }}/bin/linux/amd64"
+etcd_download_url: "https://github.com/coreos/etcd/releases/download/{{ etcd_version }}/etcd-{{ etcd_version }}-linux-amd64.tar.gz"
+calico_download_url: "https://github.com/Metaswitch/calico-docker/releases/download/{{calico_version}}/calicoctl"
+calico_cni_download_url: "https://github.com/projectcalico/calico-cni/releases/download/{{calico_cni_version}}/calico"
+calico_cni_ipam_download_url: "https://github.com/projectcalico/calico-cni/releases/download/{{calico_cni_version}}/calico-ipam"
+weave_download_url: "https://github.com/weaveworks/weave/releases/download/{{weave_version}}/weave"
+
+# Checksums
+calico_checksum: "1fa22c0ee0cc661f56aa09169a3661fb46e552b53fae5fae9aac010e0666b281"
+calico_cni_checksum: "cfbb95d4416cb65845a188f3bd991fff232bd5ce3463b2919d586ab77967aecd"
+calico_cni_ipam_checksum: "93ebf8756b26314e1e3f612f1e824418cbb0a8df2942664422e697bcb109fbb2"
+weave_checksum: "152942c330f87ab475d87d9311b91674b90f25ea685bd4e04e0495d5fe09a957"
+etcd_checksum: "aa6037406257d2a1bc48ffa769afe7a4f8a04cc1ffcd36ef84f9ee8bc4eca756"
+kubectl_checksum: "b2222986e9f05da8091a16134022d243b3c46a5899486d1b775dbc950ebf36cd"
+kubelet_checksum: "a73cf50ce3da2d88a46064cd7e5ef48ece3c73518cf7a609ef8a680c214d3f4c"
+kube_apiserver_checksum: "aebb2c131674e231ba8dcad4438624c876627e77f47b0c6ef96bd21d23298ffa"
+
+downloads:
+  - name: calico
+    dest: calico/bin/calicoctl
+    version: "{{calico_version}}"
+    sha256: "{{ calico_checksum }}"
+    source_url: "{{ calico_download_url }}"
+    url: "{{ calico_download_url }}"
+    owner: "root"
+    mode: "0755"
+
+  - name: calico-cni-plugin
+    dest: calico/bin/calico
+    version: "{{calico_cni_version}}"
+    sha256: "{{ calico_cni_checksum }}"
+    source_url: "{{ calico_cni_download_url }}"
+    url: "{{ calico_cni_download_url }}"
+    owner: "root"
+    mode: "0755"
+
+  - name: calico-cni-plugin-ipam
+    dest: calico/bin/calico-ipam
+    version: "{{calico_cni_version}}"
+    sha256: "{{ calico_cni_ipam_checksum }}"
+    source_url: "{{ calico_cni_ipam_download_url }}"
+    url: "{{ calico_cni_ipam_download_url }}"
+    owner: "root"
+    mode: "0755"
+
+  - name: weave
+    dest: weave/bin/weave
+    version: "{{weave_version}}"
+    source_url: "{{weave_download_url}}"
+    url: "{{weave_download_url}}"
+    sha256: "{{ weave_checksum }}"
+    owner: "root"
+    mode: "0755"
+
+  - name: etcd
+    version: "{{etcd_version}}"
+    dest: "etcd/etcd-{{ etcd_version }}-linux-amd64.tar.gz"
+    sha256: "{{ etcd_checksum }}"
+    source_url: "{{ etcd_download_url }}"
+    url: "{{ etcd_download_url }}"
+    unarchive: true
+    owner: "etcd"
+    mode: "0755"
+
+  - name: kubernetes-kubelet
+    version: "{{kube_version}}"
+    dest: kubernetes/bin/kubelet
+    sha256: "{{kubelet_checksum}}"
+    source_url: "{{ kube_download_url }}/kubelet"
+    url: "{{ kube_download_url }}/kubelet"
+    owner: "kube"
+    mode: "0755"
+
+  - name: kubernetes-kubectl
+    dest: kubernetes/bin/kubectl
+    version: "{{kube_version}}"
+    sha256: "{{kubectl_checksum}}"
+    source_url: "{{ kube_download_url }}/kubectl"
+    url: "{{ kube_download_url }}/kubectl"
+    owner: "kube"
+    mode: "0755"
+
+  - name: kubernetes-apiserver
+    dest: kubernetes/bin/kube-apiserver
+    version: "{{kube_version}}"
+    sha256: "{{kube_apiserver_checksum}}"
+    source_url: "{{ kube_download_url }}/kube-apiserver"
+    url: "{{ kube_download_url }}/kube-apiserver"
+    owner: "kube"
+    mode: "0755"
diff --git a/roles/uploads/tasks/main.yml b/roles/uploads/tasks/main.yml
new file mode 100644
index 000000000..68523eca0
--- /dev/null
+++ b/roles/uploads/tasks/main.yml
@@ -0,0 +1,24 @@
+---
+- name: Create dest directories
+  file: path={{local_release_dir}}/{{item.dest|dirname}} state=directory recurse=yes
+  with_items: downloads
+
+- name: Download items
+  get_url:
+    url: "{{item.source_url}}"
+    dest: "{{local_release_dir}}/{{item.dest}}"
+    sha256sum: "{{item.sha256 | default(omit)}}"
+    owner: "{{ item.owner|default(omit) }}"
+    mode: "{{ item.mode|default(omit) }}"
+  with_items: downloads
+
+- name: uploads items
+  gc_storage:
+    bucket: kubespray
+    object: "{{item.version}}_{{item.name}}"
+    src: "{{ local_release_dir }}/{{item.dest}}"
+    mode: put
+    permission: public-read
+    gs_access_key: "changeme"
+    gs_secret_key: "changeme"
+  with_items: downloads
diff --git a/uploads.yml b/uploads.yml
new file mode 100644
index 000000000..5544f4588
--- /dev/null
+++ b/uploads.yml
@@ -0,0 +1,11 @@
+---
+- hosts: localhost
+  roles:
+    - {role: uploads}
+
+# TEST download
+- hosts: localhost
+  vars:
+    local_release_dir: /tmp/from_gcloud
+  roles:
+    - {role: download}
\ No newline at end of file
-- 
GitLab