summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRodolfo Carvalho <rhcarvalho@gmail.com>2017-01-06 20:53:05 +0100
committerRodolfo Carvalho <rhcarvalho@gmail.com>2017-01-12 14:23:19 +0100
commit9041a816210132b1dad86217ecfef5f9fec4a8d2 (patch)
tree9cfc4a208e8d90ee198cd72f6e4ffeb443f8e794
parentfeeeb48f45ecbde3e5bcc2a66c7f947080d433e5 (diff)
downloadopenshift-9041a816210132b1dad86217ecfef5f9fec4a8d2.tar.gz
openshift-9041a816210132b1dad86217ecfef5f9fec4a8d2.tar.bz2
openshift-9041a816210132b1dad86217ecfef5f9fec4a8d2.tar.xz
openshift-9041a816210132b1dad86217ecfef5f9fec4a8d2.zip
Refactor preflight check into roles
-rw-r--r--ansible.cfg.example3
-rw-r--r--playbooks/adhoc/preflight/README.md10
-rw-r--r--playbooks/adhoc/preflight/check.yml153
-rw-r--r--roles/openshift_preflight/README.md53
l---------roles/openshift_preflight/common/library (renamed from playbooks/adhoc/preflight/library)0
-rw-r--r--roles/openshift_preflight/common/tasks/main.yml22
-rw-r--r--roles/openshift_preflight/facts/tasks/main.yml7
l---------roles/openshift_preflight/masters/library1
-rw-r--r--roles/openshift_preflight/masters/tasks/main.yml47
l---------roles/openshift_preflight/nodes/library1
-rw-r--r--roles/openshift_preflight/nodes/tasks/main.yml57
-rw-r--r--roles/openshift_preflight/verify_status/callback_plugins/zz_failure_summary.py (renamed from callback_plugins/failure_summary.py)2
-rw-r--r--roles/openshift_preflight/verify_status/tasks/main.yml8
13 files changed, 212 insertions, 152 deletions
diff --git a/ansible.cfg.example b/ansible.cfg.example
index b07705ef1..6a7722ad8 100644
--- a/ansible.cfg.example
+++ b/ansible.cfg.example
@@ -13,9 +13,6 @@ roles_path = roles/
# Set the log_path
log_path = /tmp/ansible.log
-# prints a descriptive summary of failed tasks
-callback_plugins = ./callback_plugins
-
# Uncomment to use the provided BYO inventory
#hostfile = inventory/byo/hosts
diff --git a/playbooks/adhoc/preflight/README.md b/playbooks/adhoc/preflight/README.md
index 871c6af01..7636ecca3 100644
--- a/playbooks/adhoc/preflight/README.md
+++ b/playbooks/adhoc/preflight/README.md
@@ -36,15 +36,7 @@ against your inventory file. Here is the step-by-step:
$ cd openshift-ansible
```
-2. Configure a custom callback plugin to get a summary of problems at the end of
-the playbook run:
-
- ```console
- $ export ANSIBLE_CALLBACK_PLUGINS=callback_plugins \
- ANSIBLE_STDOUT_CALLBACK=default_plus_summary
- ```
-
-3. Run the playbook:
+2. Run the playbook:
```console
$ ansible-playbook -i <inventory file> playbooks/adhoc/preflight/check.yml
diff --git a/playbooks/adhoc/preflight/check.yml b/playbooks/adhoc/preflight/check.yml
index b66c1a824..460ba4ce4 100644
--- a/playbooks/adhoc/preflight/check.yml
+++ b/playbooks/adhoc/preflight/check.yml
@@ -1,159 +1,32 @@
---
- hosts: OSEv3
gather_facts: no
- tasks:
- - set_fact:
- deployment_type: "{{ deployment_type | default('openshift-enterprise') }}"
- containerized: "{{ containerized | default('no') | bool }}"
- openshift_release: "{{ openshift_release | default('3.3') }}"
- oo_preflight_check_results: "{{ oo_preflight_check_results | default([]) }}"
+ roles:
+ - openshift_preflight/facts
- hosts: OSEv3
- name: check content available on all hosts
+ name: checks that apply to all hosts
gather_facts: no
ignore_errors: yes
- tasks:
- - when:
- - not containerized
- block:
-
- - name: determine if yum update will work
- action: check_yum_update
- register: r
-
- - set_fact:
- oo_preflight_check_results: "{{ oo_preflight_check_results + [r|combine({'_task': 'check content available on all hosts'})] }}"
-
- - name: determine if expected version matches what is available
- aos_version:
- version: "{{ openshift_release }}"
- when:
- - deployment_type == "openshift-enterprise"
- register: r
-
- - set_fact:
- oo_preflight_check_results: "{{ oo_preflight_check_results + [r|combine({'_task': 'determine if expected version matches what is available'})] }}"
+ roles:
+ - openshift_preflight/common
- hosts: masters
- name: determine if yum install of master pkgs will work
+ name: checks that apply to masters
gather_facts: no
ignore_errors: yes
- tasks:
- - when:
- - not containerized
- block:
-
- - name: main packages for enterprise
- when:
- - deployment_type == "openshift-enterprise"
- check_yum_update:
- packages:
- - atomic-openshift
- - atomic-openshift-clients
- - atomic-openshift-master
- register: r
-
- - set_fact:
- oo_preflight_check_results: "{{ oo_preflight_check_results + [r|combine({'_task': 'main packages for enterprise'})] }}"
-
- - name: main packages for origin
- when:
- - deployment_type == "origin"
- check_yum_update:
- packages:
- - origin
- - origin-clients
- - origin-master
- register: r
-
- - set_fact:
- oo_preflight_check_results: "{{ oo_preflight_check_results + [r|combine({'_task': 'main packages for origin'})] }}"
-
- - name: other master packages
- check_yum_update:
- packages:
- - etcd
- - bash-completion
- - cockpit-bridge
- - cockpit-docker
- - cockpit-kubernetes
- - cockpit-shell
- - cockpit-ws
- - httpd-tools
- register: r
-
- - set_fact:
- oo_preflight_check_results: "{{ oo_preflight_check_results + [r|combine({'_task': 'other master packages'})] }}"
+ roles:
+ - openshift_preflight/masters
- hosts: nodes
- name: determine if yum install of node pkgs will work
+ name: checks that apply to nodes
gather_facts: no
ignore_errors: yes
- tasks:
- - when:
- - not containerized
- block:
-
- - name: main packages for enterprise
- when:
- - deployment_type == "openshift-enterprise"
- check_yum_update:
- packages:
- - atomic-openshift
- - atomic-openshift-node
- - atomic-openshift-sdn-ovs
- register: r
-
- - set_fact:
- oo_preflight_check_results: "{{ oo_preflight_check_results + [r|combine({'_task': 'main packages for enterprise'})] }}"
-
- - name: main packages for origin
- when:
- - deployment_type == "origin"
- check_yum_update:
- packages:
- - origin
- - origin-node
- - origin-sdn-ovs
- register: r
-
- - set_fact:
- oo_preflight_check_results: "{{ oo_preflight_check_results + [r|combine({'_task': 'main packages for origin'})] }}"
-
- - name: other node packages
- check_yum_update:
- packages:
- - docker
- - PyYAML
- - firewalld
- - iptables
- - iptables-services
- - nfs-utils
- - ntp
- - yum-utils
- - dnsmasq
- - libselinux-python
- - ceph-common
- - glusterfs-fuse
- - iscsi-initiator-utils
- - pyparted
- - python-httplib2
- - openssl
- - flannel
- - bind
- register: r
-
- - set_fact:
- oo_preflight_check_results: "{{ oo_preflight_check_results + [r|combine({'_task': 'other node packages'})] }}"
+ roles:
+ - openshift_preflight/nodes
- hosts: OSEv3
name: verify check results
gather_facts: no
- tasks:
-
- - set_fact:
- oo_preflight_check_failures: "{{ oo_preflight_check_results | select('failed', 'equalto', True) | list }}"
-
- - name: ensure all checks succeed
- action: fail
- when: oo_preflight_check_failures
+ roles:
+ - openshift_preflight/verify_status
diff --git a/roles/openshift_preflight/README.md b/roles/openshift_preflight/README.md
new file mode 100644
index 000000000..a3d734e32
--- /dev/null
+++ b/roles/openshift_preflight/README.md
@@ -0,0 +1,53 @@
+OpenShift Preflight Checks
+==========================
+
+This role detects common problems prior to installing OpenShift.
+
+Requirements
+------------
+
+* Ansible 2.2+
+
+Role Variables
+--------------
+
+None
+
+Dependencies
+------------
+
+None
+
+Example Playbook
+----------------
+
+```yaml
+---
+- hosts: OSEv3
+ gather_facts: no
+ roles:
+ - openshift_preflight/facts
+
+- hosts: OSEv3
+ name: checks that apply to all hosts
+ gather_facts: no
+ ignore_errors: yes
+ roles:
+ - openshift_preflight/common
+
+- hosts: OSEv3
+ name: verify check results
+ gather_facts: no
+ roles:
+ - openshift_preflight/verify_status
+```
+
+License
+-------
+
+Apache License Version 2.0
+
+Author Information
+------------------
+
+Customer Success team (dev@lists.openshift.redhat.com)
diff --git a/playbooks/adhoc/preflight/library b/roles/openshift_preflight/common/library
index ba40d2f56..ba40d2f56 120000
--- a/playbooks/adhoc/preflight/library
+++ b/roles/openshift_preflight/common/library
diff --git a/roles/openshift_preflight/common/tasks/main.yml b/roles/openshift_preflight/common/tasks/main.yml
new file mode 100644
index 000000000..423b13586
--- /dev/null
+++ b/roles/openshift_preflight/common/tasks/main.yml
@@ -0,0 +1,22 @@
+---
+# check content available on all hosts
+- when:
+ - not containerized
+ block:
+
+ - name: determine if yum update will work
+ action: check_yum_update
+ register: r
+
+ - set_fact:
+ oo_preflight_check_results: "{{ oo_preflight_check_results + [r|combine({'_task': 'check content available on all hosts'})] }}"
+
+ - name: determine if expected version matches what is available
+ aos_version:
+ version: "{{ openshift_release }}"
+ when:
+ - deployment_type == "openshift-enterprise"
+ register: r
+
+ - set_fact:
+ oo_preflight_check_results: "{{ oo_preflight_check_results + [r|combine({'_task': 'determine if expected version matches what is available'})] }}"
diff --git a/roles/openshift_preflight/facts/tasks/main.yml b/roles/openshift_preflight/facts/tasks/main.yml
new file mode 100644
index 000000000..15a108510
--- /dev/null
+++ b/roles/openshift_preflight/facts/tasks/main.yml
@@ -0,0 +1,7 @@
+---
+- name: set common variables
+ set_fact:
+ deployment_type: "{{ deployment_type | default('openshift-enterprise') }}"
+ containerized: "{{ containerized | default('no') | bool }}"
+ openshift_release: "{{ openshift_release | default('3.3') }}"
+ oo_preflight_check_results: "{{ oo_preflight_check_results | default([]) }}"
diff --git a/roles/openshift_preflight/masters/library b/roles/openshift_preflight/masters/library
new file mode 120000
index 000000000..ba40d2f56
--- /dev/null
+++ b/roles/openshift_preflight/masters/library
@@ -0,0 +1 @@
+../../../library \ No newline at end of file
diff --git a/roles/openshift_preflight/masters/tasks/main.yml b/roles/openshift_preflight/masters/tasks/main.yml
new file mode 100644
index 000000000..ed42f69fa
--- /dev/null
+++ b/roles/openshift_preflight/masters/tasks/main.yml
@@ -0,0 +1,47 @@
+---
+# determine if yum install of master pkgs will work
+- when:
+ - not containerized
+ block:
+
+ - name: main packages for enterprise
+ when:
+ - deployment_type == "openshift-enterprise"
+ check_yum_update:
+ packages:
+ - atomic-openshift
+ - atomic-openshift-clients
+ - atomic-openshift-master
+ register: r
+
+ - set_fact:
+ oo_preflight_check_results: "{{ oo_preflight_check_results + [r|combine({'_task': 'main packages for enterprise'})] }}"
+
+ - name: main packages for origin
+ when:
+ - deployment_type == "origin"
+ check_yum_update:
+ packages:
+ - origin
+ - origin-clients
+ - origin-master
+ register: r
+
+ - set_fact:
+ oo_preflight_check_results: "{{ oo_preflight_check_results + [r|combine({'_task': 'main packages for origin'})] }}"
+
+ - name: other master packages
+ check_yum_update:
+ packages:
+ - etcd
+ - bash-completion
+ - cockpit-bridge
+ - cockpit-docker
+ - cockpit-kubernetes
+ - cockpit-shell
+ - cockpit-ws
+ - httpd-tools
+ register: r
+
+ - set_fact:
+ oo_preflight_check_results: "{{ oo_preflight_check_results + [r|combine({'_task': 'other master packages'})] }}"
diff --git a/roles/openshift_preflight/nodes/library b/roles/openshift_preflight/nodes/library
new file mode 120000
index 000000000..ba40d2f56
--- /dev/null
+++ b/roles/openshift_preflight/nodes/library
@@ -0,0 +1 @@
+../../../library \ No newline at end of file
diff --git a/roles/openshift_preflight/nodes/tasks/main.yml b/roles/openshift_preflight/nodes/tasks/main.yml
new file mode 100644
index 000000000..16c7212d4
--- /dev/null
+++ b/roles/openshift_preflight/nodes/tasks/main.yml
@@ -0,0 +1,57 @@
+---
+# determine if yum install of node pkgs will work
+- when:
+ - not containerized
+ block:
+
+ - name: main packages for enterprise
+ when:
+ - deployment_type == "openshift-enterprise"
+ check_yum_update:
+ packages:
+ - atomic-openshift
+ - atomic-openshift-node
+ - atomic-openshift-sdn-ovs
+ register: r
+
+ - set_fact:
+ oo_preflight_check_results: "{{ oo_preflight_check_results + [r|combine({'_task': 'main packages for enterprise'})] }}"
+
+ - name: main packages for origin
+ when:
+ - deployment_type == "origin"
+ check_yum_update:
+ packages:
+ - origin
+ - origin-node
+ - origin-sdn-ovs
+ register: r
+
+ - set_fact:
+ oo_preflight_check_results: "{{ oo_preflight_check_results + [r|combine({'_task': 'main packages for origin'})] }}"
+
+ - name: other node packages
+ check_yum_update:
+ packages:
+ - docker
+ - PyYAML
+ - firewalld
+ - iptables
+ - iptables-services
+ - nfs-utils
+ - ntp
+ - yum-utils
+ - dnsmasq
+ - libselinux-python
+ - ceph-common
+ - glusterfs-fuse
+ - iscsi-initiator-utils
+ - pyparted
+ - python-httplib2
+ - openssl
+ - flannel
+ - bind
+ register: r
+
+ - set_fact:
+ oo_preflight_check_results: "{{ oo_preflight_check_results + [r|combine({'_task': 'other node packages'})] }}"
diff --git a/callback_plugins/failure_summary.py b/roles/openshift_preflight/verify_status/callback_plugins/zz_failure_summary.py
index bcb0123b0..180ed8d8f 100644
--- a/callback_plugins/failure_summary.py
+++ b/roles/openshift_preflight/verify_status/callback_plugins/zz_failure_summary.py
@@ -11,6 +11,8 @@ from ansible.utils.color import stringc
class CallbackModule(CallbackBase):
'''
This callback plugin stores task results and summarizes failures.
+ The file name is prefixed with `zz_` to make this plugin be loaded last by
+ Ansible, thus making its output the last thing that users see.
'''
CALLBACK_VERSION = 2.0
diff --git a/roles/openshift_preflight/verify_status/tasks/main.yml b/roles/openshift_preflight/verify_status/tasks/main.yml
new file mode 100644
index 000000000..36ccf648a
--- /dev/null
+++ b/roles/openshift_preflight/verify_status/tasks/main.yml
@@ -0,0 +1,8 @@
+---
+- name: find check failures
+ set_fact:
+ oo_preflight_check_failures: "{{ oo_preflight_check_results | select('failed', 'equalto', True) | list }}"
+
+- name: ensure all checks succeed
+ action: fail
+ when: oo_preflight_check_failures