From ad8de6f200d084e5ee4020ec8fdf9e47e3b43c95 Mon Sep 17 00:00:00 2001
From: Nicolas KAROLAK <nicolas@karolak.fr>
Date: Fri, 10 Apr 2020 08:30:32 +0000
Subject: [PATCH] add offline deployment mode | fixes #31856

---
 .gitignore                                    |  1 +
 .../host_vars/localhost.dist.yml              |  5 ++++
 inventories/offline-mediaserver/hosts         | 24 +++++++++++++++++++
 .../host_vars/localhost.dist.yml              |  5 ++++
 inventories/offline-mediaworker/hosts         |  6 +++++
 roles/conf/tasks/main.yml                     |  9 ++++---
 roles/repos/tasks/main.yml                    | 16 +++++++++----
 7 files changed, 59 insertions(+), 7 deletions(-)
 create mode 100644 inventories/offline-mediaserver/host_vars/localhost.dist.yml
 create mode 100644 inventories/offline-mediaserver/hosts
 create mode 100644 inventories/offline-mediaworker/host_vars/localhost.dist.yml
 create mode 100644 inventories/offline-mediaworker/hosts

diff --git a/.gitignore b/.gitignore
index 9858f9b9..75936471 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,6 +9,7 @@ __pycache__/
 inventories/*
 !inventories/example
 !inventories/local*
+!inventories/offline*
 inventories/local*/host_vars/localhost.yml
 playbooks/_*
 roles/_*
diff --git a/inventories/offline-mediaserver/host_vars/localhost.dist.yml b/inventories/offline-mediaserver/host_vars/localhost.dist.yml
new file mode 100644
index 00000000..da378679
--- /dev/null
+++ b/inventories/offline-mediaserver/host_vars/localhost.dist.yml
@@ -0,0 +1,5 @@
+---
+
+offline_mode: true
+
+...
diff --git a/inventories/offline-mediaserver/hosts b/inventories/offline-mediaserver/hosts
new file mode 100644
index 00000000..9cb3341c
--- /dev/null
+++ b/inventories/offline-mediaserver/hosts
@@ -0,0 +1,24 @@
+localhost ansible_connection=local
+
+[msmonitor]
+localhost
+
+[postgres]
+localhost
+
+[mirismanager]
+localhost
+
+[mediaserver]
+localhost
+
+;[wowza]
+;localhost
+
+[celerity]
+localhost
+
+[mediaimport]
+localhost
+
+; vim:ft=dosini
diff --git a/inventories/offline-mediaworker/host_vars/localhost.dist.yml b/inventories/offline-mediaworker/host_vars/localhost.dist.yml
new file mode 100644
index 00000000..da378679
--- /dev/null
+++ b/inventories/offline-mediaworker/host_vars/localhost.dist.yml
@@ -0,0 +1,5 @@
+---
+
+offline_mode: true
+
+...
diff --git a/inventories/offline-mediaworker/hosts b/inventories/offline-mediaworker/hosts
new file mode 100644
index 00000000..4b3a22ad
--- /dev/null
+++ b/inventories/offline-mediaworker/hosts
@@ -0,0 +1,6 @@
+localhost ansible_connection=local
+
+[mediaworker]
+localhost
+
+; vim:ft=dosini
diff --git a/roles/conf/tasks/main.yml b/roles/conf/tasks/main.yml
index f48c0c8d..5b30b0c7 100644
--- a/roles/conf/tasks/main.yml
+++ b/roles/conf/tasks/main.yml
@@ -14,6 +14,7 @@
     name: "{{ conf_req_packages }}"
 
 - name: clone envsetup repository
+  when: not offline_mode | d(false)
   ignore_errors: true
   register: conf_clone
   git:
@@ -22,7 +23,9 @@
     dest: "{{ conf_repo_dest }}"
 
 - name: ask to continue
-  when: conf_clone is failed
+  when:
+    - not offline_mode | d(false)
+    - conf_clone is failed
   pause:
     prompt: "Previous task failed, it may be normal if you have local changes in the commited files, do you want to continue anyway?"
     seconds: 30
@@ -110,7 +113,7 @@
     prefix: envsetup_
     lower: true
 
-- name: load generated conf if exists
+- name: load generated conf
   changed_when: false
   check_mode: false
   source_file:
@@ -118,7 +121,7 @@
     prefix: envsetup_
     lower: true
 
-- name: load local conf if exists
+- name: load local conf
   changed_when: false
   check_mode: false
   source_file:
diff --git a/roles/repos/tasks/main.yml b/roles/repos/tasks/main.yml
index df933606..3439586c 100644
--- a/roles/repos/tasks/main.yml
+++ b/roles/repos/tasks/main.yml
@@ -1,7 +1,9 @@
 ---
 
 - name: ubuntu apt repo sources list
-  when: ansible_distribution == 'Ubuntu'
+  when:
+    - not offline_mode | d(false)
+    - ansible_distribution == 'Ubuntu'
   notify: update cache
   copy:
     dest: /etc/apt/sources.list
@@ -12,7 +14,9 @@
       deb {{ repos_prefix }}security.ubuntu.com/ubuntu {{ repos_release }}-security main restricted universe multiverse
 
 - name: debian apt repo sources list
-  when: ansible_distribution == 'Debian'
+  when:
+    - not offline_mode | d(false)
+    - ansible_distribution == 'Debian'
   notify: update cache
   copy:
     dest: /etc/apt/sources.list
@@ -22,12 +26,16 @@
       deb {{ repos_prefix }}{{ repos_deb_sec }}/debian-security {{ repos_release }}/updates main contrib non-free
 
 - name: add skyreach apt repo key
-  when: repos_skyreach_token | d(false)
+  when:
+    - not offline_mode | d(false)
+    - repos_skyreach_token | d(false)
   apt_key:
     url: https://{{ repos_skyreach_host }}/media/public.gpg
 
 - name: add skyreach apt repo
-  when: repos_skyreach_token | d(false)
+  when:
+    - not offline_mode | d(false)
+    - repos_skyreach_token | d(false)
   apt_repository:
     repo: deb https://{{ repos_skyreach_host }} packaging/apt/{{ repos_skyreach_token }}/
     filename: skyreach
-- 
GitLab