Allow install binaries from archive

Related story: PROD-24674

Change-Id: If0c3182534d321ae345eeeed10b6f924e3f5f9b9
diff --git a/etcd/server/service.sls b/etcd/server/service.sls
index e49f453..b7ade9e 100644
--- a/etcd/server/service.sls
+++ b/etcd/server/service.sls
@@ -13,8 +13,9 @@
     - service: etcd
 {%- endif %}
 
+{% else %}
 
-{% elif server.get('source', {}).get('engine') == 'docker_hybrid' %}
+{% if server.get('source', {}).get('engine') == 'docker_hybrid' %}
 
 {%- if grains.os_family == 'RedHat' %}
 etcd_enable_epel:
@@ -49,13 +50,6 @@
 
 {%- endif %}
 
-user_etcd:
-  user.present:
-    - name: etcd
-    - shell: /bin/false
-    - home: /var/lib/etcd
-    - gid_from_name: True
-
 /tmp/etcd:
   file.directory:
       - user: root
@@ -88,6 +82,27 @@
       {%- else %}
       - docker_image: pull-etcd-image
       {%- endif %}
+    - require_in:
+      - file: /usr/local/bin/etcd
+
+{% elif server.get('source', {}).get('engine') == 'archive' %}
+
+extract_etcd:
+  archive.extracted:
+    - name: /tmp/etcd/bin
+    - source: {{ server.etcd_source }}
+    - source_hash: {{ server.etcd_source_hash }}
+    - enforce_toplevel: false
+    - options: --strip=1
+    - archive_format: tar
+    - keep: true
+    {%- if grains.get('noservices') %}
+    - onlyif: /bin/false
+    {%- endif %}
+    - require_in:
+      - file: /usr/local/bin/etcd
+
+{% endif %}
 
 {%- for filename in ['etcd', 'etcdctl'] %}
 
@@ -97,24 +112,24 @@
     - mode: 755
     - user: root
     - group: root
-    - require:
-      {%- if grains['saltversioninfo'] < [2017, 7] %}
-      - dockerng: copy-etcd-binaries
-      {%- else %}
-      - docker_container: copy-etcd-binaries
-      {%- endif %}
     - watch_in:
       - service: etcd
 
 {% endfor %}
 
+user_etcd:
+  user.present:
+    - name: etcd
+    - shell: /bin/false
+    - home: /var/lib/etcd
+    - gid_from_name: True
+
 /etc/systemd/system/etcd.service:
   file.managed:
     - source: salt://etcd/files/systemd/etcd.service
     - template: jinja
     - user: root
     - group: root
-
 {% endif %}
 
 {%- if server.get('engine', 'systemd') == 'kubernetes' %}