From 2606e8e1c8a18b6b813f12d1ea5c8c5a6d2f2aa0 Mon Sep 17 00:00:00 2001
From: "Brandon B. Jozsa" <bjozsa@gmail.com>
Date: Tue, 6 Sep 2016 10:04:41 -0400
Subject: [PATCH] combine bootstrap options, add xenial support

---
 cluster.yml                                    | 11 ++++++++++-
 coreos-bootstrap.yml                           |  5 -----
 inventory/group_vars/all.yml                   |  3 +++
 .../defaults/main.yml                          |  0
 .../files/bootstrap.sh                         |  0
 .../files/get-pip.py                           |  0
 .../files/runner                               |  0
 .../tasks/bootstrap-coreos.yml}                | 18 +++++++++++-------
 .../tasks/bootstrap-ubuntu-xenial.yml          |  4 ++++
 roles/bootstrap-os/tasks/main.yml              |  3 +++
 .../templates/python_shim.j2                   |  0
 11 files changed, 31 insertions(+), 13 deletions(-)
 delete mode 100644 coreos-bootstrap.yml
 rename roles/{coreos-bootstrap => bootstrap-os}/defaults/main.yml (100%)
 rename roles/{coreos-bootstrap => bootstrap-os}/files/bootstrap.sh (100%)
 rename roles/{coreos-bootstrap => bootstrap-os}/files/get-pip.py (100%)
 rename roles/{coreos-bootstrap => bootstrap-os}/files/runner (100%)
 rename roles/{coreos-bootstrap/tasks/main.yml => bootstrap-os/tasks/bootstrap-coreos.yml} (66%)
 create mode 100644 roles/bootstrap-os/tasks/bootstrap-ubuntu-xenial.yml
 create mode 100644 roles/bootstrap-os/tasks/main.yml
 rename roles/{coreos-bootstrap => bootstrap-os}/templates/python_shim.j2 (100%)

diff --git a/cluster.yml b/cluster.yml
index 45d4183b9..0518ef28e 100644
--- a/cluster.yml
+++ b/cluster.yml
@@ -1,13 +1,19 @@
 ---
 - hosts: all
-  gather_facts: true
+  gather_facts: false
+  roles:
+    - bootstrap-os
+  tags:
+    - bootstrap-os
 
 - hosts: etcd:!k8s-cluster
+  gather_facts: true
   roles:
     - { role: kubernetes/preinstall, tags: preinstall }
     - { role: etcd, tags: etcd }
 
 - hosts: k8s-cluster
+  gather_facts: true
   roles:
     - { role: kubernetes/preinstall, tags: preinstall }
     - { role: etcd, tags: etcd }
@@ -15,14 +21,17 @@
     - { role: network_plugin, tags: network }
 
 - hosts: kube-master
+  gather_facts: true
   roles:
     - { role: kubernetes/preinstall, tags: preinstall }
     - { role: kubernetes/master, tags: master }
 
 - hosts: k8s-cluster
+  gather_facts: true
   roles:
     - { role: dnsmasq, tags: dnsmasq }
 
 - hosts: kube-master[0]
+  gather_facts: true
   roles:
     - {role: kubernetes-apps, tags: apps}
diff --git a/coreos-bootstrap.yml b/coreos-bootstrap.yml
deleted file mode 100644
index 88fcb888f..000000000
--- a/coreos-bootstrap.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-- hosts: all
-  gather_facts: False
-  roles:
-    - coreos-bootstrap
diff --git a/inventory/group_vars/all.yml b/inventory/group_vars/all.yml
index 547a9d612..32f34c310 100644
--- a/inventory/group_vars/all.yml
+++ b/inventory/group_vars/all.yml
@@ -1,3 +1,6 @@
+# Valid bootstrap options (required): xenial, coreos, none
+bootstrap_os: none
+
 # Directory where the binaries will be installed
 bin_dir: /usr/local/bin
 
diff --git a/roles/coreos-bootstrap/defaults/main.yml b/roles/bootstrap-os/defaults/main.yml
similarity index 100%
rename from roles/coreos-bootstrap/defaults/main.yml
rename to roles/bootstrap-os/defaults/main.yml
diff --git a/roles/coreos-bootstrap/files/bootstrap.sh b/roles/bootstrap-os/files/bootstrap.sh
similarity index 100%
rename from roles/coreos-bootstrap/files/bootstrap.sh
rename to roles/bootstrap-os/files/bootstrap.sh
diff --git a/roles/coreos-bootstrap/files/get-pip.py b/roles/bootstrap-os/files/get-pip.py
similarity index 100%
rename from roles/coreos-bootstrap/files/get-pip.py
rename to roles/bootstrap-os/files/get-pip.py
diff --git a/roles/coreos-bootstrap/files/runner b/roles/bootstrap-os/files/runner
similarity index 100%
rename from roles/coreos-bootstrap/files/runner
rename to roles/bootstrap-os/files/runner
diff --git a/roles/coreos-bootstrap/tasks/main.yml b/roles/bootstrap-os/tasks/bootstrap-coreos.yml
similarity index 66%
rename from roles/coreos-bootstrap/tasks/main.yml
rename to roles/bootstrap-os/tasks/bootstrap-coreos.yml
index 4d9e11ea6..ebeced7d6 100644
--- a/roles/coreos-bootstrap/tasks/main.yml
+++ b/roles/bootstrap-os/tasks/bootstrap-coreos.yml
@@ -3,46 +3,50 @@
   raw: stat /opt/bin/.bootstrapped
   register: need_bootstrap
   ignore_errors: True
+  when: bootstrap_os == "coreos"
 
 - name: Bootstrap | Run bootstrap.sh
   script: bootstrap.sh
-  when: need_bootstrap | failed
+  when: (bootstrap_os == "coreos" and need_bootstrap | failed)
 
 - set_fact:
     ansible_python_interpreter: "/opt/bin/python"
+  when: bootstrap_os == "coreos"
 
 - name: Bootstrap | Check if we need to install pip
   shell: "{{ansible_python_interpreter}} -m pip --version"
   register: need_pip
   ignore_errors: True
   changed_when: false
-  when: need_bootstrap | failed
+  when: (bootstrap_os == "coreos" and need_bootstrap | failed)
 
 - name: Bootstrap | Copy get-pip.py
   copy: src=get-pip.py dest=~/get-pip.py
-  when: need_pip | failed
+  when: (bootstrap_os == "coreos" and need_pip | failed)
 
 - name: Bootstrap | Install pip
   shell: "{{ansible_python_interpreter}} ~/get-pip.py"
-  when: need_pip | failed
+  when: (bootstrap_os == "coreos" and need_pip | failed)
 
 - name: Bootstrap | Remove get-pip.py
   file: path=~/get-pip.py state=absent
-  when: need_pip | failed
+  when: (bootstrap_os == "coreos" and need_pip | failed)
 
 - name: Bootstrap | Install pip launcher
   copy: src=runner dest=/opt/bin/pip mode=0755
-  when: need_pip | failed
+  when: (bootstrap_os == "coreos" and need_pip | failed)
 
 - name: Install required python modules
   pip:
     name: "{{ item }}"
   with_items: "{{pip_python_modules}}"
+  when: bootstrap_os == "coreos"
 
 - name: Check configured hostname
   shell: hostname
   register: configured_hostname
+  when: bootstrap_os == "coreos"
 
 - name: Assign inventory name to unconfigured hostnames
   shell: sh -c "echo \"{{inventory_hostname}}\" > /etc/hostname; hostname \"{{inventory_hostname}}\""
-  when: configured_hostname.stdout == 'localhost'
+  when: (bootstrap_os == "coreos" and configured_hostname.stdout == 'localhost')
diff --git a/roles/bootstrap-os/tasks/bootstrap-ubuntu-xenial.yml b/roles/bootstrap-os/tasks/bootstrap-ubuntu-xenial.yml
new file mode 100644
index 000000000..70a65a596
--- /dev/null
+++ b/roles/bootstrap-os/tasks/bootstrap-ubuntu-xenial.yml
@@ -0,0 +1,4 @@
+---
+- name: Bootstrap Xenial target hosts for ansible use
+  raw: apt-get install -y python-minimal
+  when: bootstrap_os == "xenial"
diff --git a/roles/bootstrap-os/tasks/main.yml b/roles/bootstrap-os/tasks/main.yml
new file mode 100644
index 000000000..6e35e9b38
--- /dev/null
+++ b/roles/bootstrap-os/tasks/main.yml
@@ -0,0 +1,3 @@
+---
+- include: bootstrap-ubuntu-xenial.yml
+- include: bootstrap-coreos.yml
diff --git a/roles/coreos-bootstrap/templates/python_shim.j2 b/roles/bootstrap-os/templates/python_shim.j2
similarity index 100%
rename from roles/coreos-bootstrap/templates/python_shim.j2
rename to roles/bootstrap-os/templates/python_shim.j2
-- 
GitLab