summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.tito/packages/openshift-ansible2
-rw-r--r--DEPLOYMENT_TYPES.md2
-rw-r--r--callback_plugins/default.py60
-rw-r--r--inventory/byo/hosts.aep.example12
-rw-r--r--inventory/byo/hosts.origin.example13
-rw-r--r--inventory/byo/hosts.ose.example13
-rw-r--r--library/rpm_q.py70
-rw-r--r--openshift-ansible.spec45
-rw-r--r--playbooks/common/openshift-cluster/additional_config.yml2
l---------playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/nuke_images.sh1
-rw-r--r--playbooks/common/openshift-master/config.yml6
-rw-r--r--roles/openshift_cluster_metrics/README.md36
-rw-r--r--roles/openshift_cluster_metrics/files/cluster-metrics/grafana.yaml53
-rw-r--r--roles/openshift_cluster_metrics/files/cluster-metrics/heapster-serviceaccount.yaml4
-rw-r--r--roles/openshift_cluster_metrics/files/cluster-metrics/heapster.yaml30
-rw-r--r--roles/openshift_cluster_metrics/files/cluster-metrics/influxdb.yaml67
-rw-r--r--roles/openshift_cluster_metrics/tasks/main.yml49
-rwxr-xr-xroles/openshift_facts/library/openshift_facts.py18
-rw-r--r--roles/openshift_hosted/tasks/registry/registry.yml22
-rw-r--r--roles/openshift_hosted/tasks/router/router.yml3
-rw-r--r--roles/openshift_node/templates/node.yaml.v1.j21
-rw-r--r--roles/openshift_node/templates/partials/kubeletArguments.j25
-rw-r--r--utils/src/ooinstall/cli_installer.py4
-rw-r--r--utils/src/ooinstall/oo_config.py5
-rw-r--r--utils/src/ooinstall/openshift_ansible.py41
25 files changed, 248 insertions, 316 deletions
diff --git a/.tito/packages/openshift-ansible b/.tito/packages/openshift-ansible
index 5976f188e..25b2d679c 100644
--- a/.tito/packages/openshift-ansible
+++ b/.tito/packages/openshift-ansible
@@ -1 +1 @@
-3.3.2-1 ./
+3.3.3-1 ./
diff --git a/DEPLOYMENT_TYPES.md b/DEPLOYMENT_TYPES.md
index 1f64e223a..668d14fc0 100644
--- a/DEPLOYMENT_TYPES.md
+++ b/DEPLOYMENT_TYPES.md
@@ -15,7 +15,7 @@ The table below outlines the defaults per `deployment_type`.
| **Image Streams** | centos | rhel + xpaas | N/A | rhel |
-**NOTE** `enterprise` deloyment type is used for OpenShift Enterprise version
+**NOTE** `enterprise` deployment type is used for OpenShift Enterprise version
3.0.x OpenShift Enterprise deployments utilizing version 3.1 and later will
make use of the new `openshift-enterprise` deployment type. Additional work to
migrate between the two will be forthcoming.
diff --git a/callback_plugins/default.py b/callback_plugins/default.py
new file mode 100644
index 000000000..31e3d7d4c
--- /dev/null
+++ b/callback_plugins/default.py
@@ -0,0 +1,60 @@
+'''Plugin to override the default output logic.'''
+
+# upstream: https://gist.github.com/cliffano/9868180
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+# For some reason this has to be done
+import imp
+import os
+
+ANSIBLE_PATH = imp.find_module('ansible')[1]
+DEFAULT_PATH = os.path.join(ANSIBLE_PATH, 'plugins/callback/default.py')
+DEFAULT_MODULE = imp.load_source(
+ 'ansible.plugins.callback.default',
+ DEFAULT_PATH
+)
+
+
+class CallbackModule(DEFAULT_MODULE.CallbackModule): # pylint: disable=too-few-public-methods,no-init
+ '''
+ Override for the default callback module.
+
+ Render std err/out outside of the rest of the result which it prints with
+ indentation.
+ '''
+ CALLBACK_VERSION = 2.0
+ CALLBACK_TYPE = 'stdout'
+ CALLBACK_NAME = 'default'
+
+ def _dump_results(self, result):
+ '''Return the text to output for a result.'''
+ result['_ansible_verbose_always'] = True
+
+ save = {}
+ for key in ['stdout', 'stdout_lines', 'stderr', 'stderr_lines', 'msg']:
+ if key in result:
+ save[key] = result.pop(key)
+
+ output = DEFAULT_MODULE.CallbackModule._dump_results(self, result)
+
+ for key in ['stdout', 'stderr', 'msg']:
+ if key in save and save[key]:
+ output += '\n\n%s:\n\n%s\n' % (key.upper(), save[key])
+
+ for key, value in save.items():
+ result[key] = value
+
+ return output
diff --git a/inventory/byo/hosts.aep.example b/inventory/byo/hosts.aep.example
index e038b39d5..8d2d95f8f 100644
--- a/inventory/byo/hosts.aep.example
+++ b/inventory/byo/hosts.aep.example
@@ -44,9 +44,6 @@ openshift_release=v3.2
# Install the openshift examples
#openshift_install_examples=true
-# Enable cluster metrics
-#use_cluster_metrics=true
-
# Configure logoutURL in the master config for console customization
# See: https://docs.openshift.org/latest/install_config/web_console_customization.html#changing-the-logout-url
#openshift_master_logout_url=http://example.com
@@ -326,11 +323,12 @@ openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true',
# Disable the OpenShift SDN plugin
# openshift_use_openshift_sdn=False
-# Configure SDN cluster network CIDR block. This network block should
-# be a private block and should not conflict with existing network
-# blocks in your infrastructure that pods may require access to.
-# Can not be changed after deployment.
+# Configure SDN cluster network and kubernetes service CIDR blocks. These
+# network blocks should be private and should not conflict with network blocks
+# in your infrastructure that pods may require access to. Can not be changed
+# after deployment.
#osm_cluster_network_cidr=10.1.0.0/16
+#openshift_portal_net=172.30.0.0/16
# Configure number of bits to allocate to each host’s subnet e.g. 8
# would mean a /24 network on the host.
diff --git a/inventory/byo/hosts.origin.example b/inventory/byo/hosts.origin.example
index 5bfb451c5..d71ed5727 100644
--- a/inventory/byo/hosts.origin.example
+++ b/inventory/byo/hosts.origin.example
@@ -45,9 +45,6 @@ openshift_release=v1.2
# Install the openshift examples
#openshift_install_examples=true
-# Enable cluster metrics
-#use_cluster_metrics=true
-
# Configure logoutURL in the master config for console customization
# See: https://docs.openshift.org/latest/install_config/web_console_customization.html#changing-the-logout-url
#openshift_master_logout_url=http://example.com
@@ -333,11 +330,13 @@ openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true',
# Disable the OpenShift SDN plugin
# openshift_use_openshift_sdn=False
-# Configure SDN cluster network CIDR block. This network block should
-# be a private block and should not conflict with existing network
-# blocks in your infrastructure that pods may require access to.
-# Can not be changed after deployment.
+# Configure SDN cluster network and kubernetes service CIDR blocks. These
+# network blocks should be private and should not conflict with network blocks
+# in your infrastructure that pods may require access to. Can not be changed
+# after deployment.
#osm_cluster_network_cidr=10.1.0.0/16
+#openshift_portal_net=172.30.0.0/16
+
# Configure number of bits to allocate to each host’s subnet e.g. 8
# would mean a /24 network on the host.
diff --git a/inventory/byo/hosts.ose.example b/inventory/byo/hosts.ose.example
index 96a9db30d..ccff97b47 100644
--- a/inventory/byo/hosts.ose.example
+++ b/inventory/byo/hosts.ose.example
@@ -44,9 +44,6 @@ openshift_release=v3.2
# Install the openshift examples
#openshift_install_examples=true
-# Enable cluster metrics
-#use_cluster_metrics=true
-
# Configure logoutURL in the master config for console customization
# See: https://docs.openshift.org/latest/install_config/web_console_customization.html#changing-the-logout-url
#openshift_master_logout_url=http://example.com
@@ -327,11 +324,13 @@ openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true',
# Disable the OpenShift SDN plugin
# openshift_use_openshift_sdn=False
-# Configure SDN cluster network CIDR block. This network block should
-# be a private block and should not conflict with existing network
-# blocks in your infrastructure that pods may require access to.
-# Can not be changed after deployment.
+# Configure SDN cluster network and kubernetes service CIDR blocks. These
+# network blocks should be private and should not conflict with network blocks
+# in your infrastructure that pods may require access to. Can not be changed
+# after deployment.
#osm_cluster_network_cidr=10.1.0.0/16
+#openshift_portal_net=172.30.0.0/16
+
# Configure number of bits to allocate to each host’s subnet e.g. 8
# would mean a /24 network on the host.
diff --git a/library/rpm_q.py b/library/rpm_q.py
new file mode 100644
index 000000000..ca3d0dd89
--- /dev/null
+++ b/library/rpm_q.py
@@ -0,0 +1,70 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+# (c) 2015, Tobias Florek <tob@butter.sh>
+# Licensed under the terms of the MIT License
+"""
+An ansible module to query the RPM database. For use, when yum/dnf are not
+available.
+"""
+
+# pylint: disable=redefined-builtin,wildcard-import,unused-wildcard-import
+from ansible.module_utils.basic import *
+
+DOCUMENTATION = """
+---
+module: rpm_q
+short_description: Query the RPM database
+author: Tobias Florek
+options:
+ name:
+ description:
+ - The name of the package to query
+ required: true
+ state:
+ description:
+ - Whether the package is supposed to be installed or not
+ choices: [present, absent]
+ default: present
+"""
+
+EXAMPLES = """
+- rpm_q: name=ansible state=present
+- rpm_q: name=ansible state=absent
+"""
+
+RPM_BINARY = '/bin/rpm'
+
+def main():
+ """
+ Checks rpm -q for the named package and returns the installed packages
+ or None if not installed.
+ """
+ module = AnsibleModule(
+ argument_spec=dict(
+ name=dict(required=True),
+ state=dict(default='present', choices=['present', 'absent'])
+ ),
+ supports_check_mode=True
+ )
+
+ name = module.params['name']
+ state = module.params['state']
+
+ # pylint: disable=invalid-name
+ rc, out, err = module.run_command([RPM_BINARY, '-q', name])
+
+ installed = out.rstrip('\n').split('\n')
+
+ if rc != 0:
+ if state == 'present':
+ module.fail_json(msg="%s is not installed" % name, stdout=out, stderr=err, rc=rc)
+ else:
+ module.exit_json(changed=False)
+ elif state == 'present':
+ module.exit_json(changed=False, installed_versions=installed)
+ else:
+ module.fail_json(msg="%s is installed", installed_versions=installed)
+
+if __name__ == '__main__':
+ main()
diff --git a/openshift-ansible.spec b/openshift-ansible.spec
index f70193367..22435f13d 100644
--- a/openshift-ansible.spec
+++ b/openshift-ansible.spec
@@ -5,7 +5,7 @@
}
Name: openshift-ansible
-Version: 3.3.2
+Version: 3.3.3
Release: 1%{?dist}
Summary: Openshift and Atomic Enterprise Ansible
License: ASL 2.0
@@ -221,6 +221,49 @@ Atomic OpenShift Utilities includes
%changelog
+* Wed Jul 27 2016 Troy Dawson <tdawson@redhat.com> 3.3.3-1
+- Template named certificates with_items. (abutcher@redhat.com)
+- Replace master_cert_config_dir with common config_base fact.
+ (abutcher@redhat.com)
+- remove outdated openshift_cluster_metrics role (jdetiber@redhat.com)
+- Fix "deloyment" typo in deployment types doc (lxia@redhat.com)
+- Add missing nuke_images.sh symlink. (dgoodwin@redhat.com)
+- a-o-i: Persist Roles Variables (smunilla@redhat.com)
+- Default nodes matching selectors when not collected. (abutcher@redhat.com)
+- Copy openshift binaries instead of using wrapper script.
+ (dgoodwin@redhat.com)
+- Correct relative include for ansible version check. (abutcher@redhat.com)
+- Fix libvirt provider for Ansible 2.1.0.0 (lhuard@amadeus.com)
+- Re-arrange master and node role dependencies. (abutcher@redhat.com)
+- Refactor openshift certificates roles. (abutcher@redhat.com)
+- Check ansible version prior to evaluating cluster hosts and groups.
+ (abutcher@redhat.com)
+- Stop reporting changes when docker pull is already up to date.
+ (dgoodwin@redhat.com)
+- a-o-i: Write Role variable groups (smunilla@redhat.com)
+- Slight modification to error when using mismatched openshift_release.
+ (dgoodwin@redhat.com)
+- fix "databcase" typo in example roles (lxia@redhat.com)
+- Secure router only when openshift.hosted.router.certificate.contents exists.
+ (abutcher@redhat.com)
+- Add jenkinstemplate (sdodson@redhat.com)
+- Fix bugs with origin 1.2 rpm based upgrades. (dgoodwin@redhat.com)
+- Sync latest image streams and templates (sdodson@redhat.com)
+- Ensure 'oo_nfs_to_config' in groups prior to checking group length when nfs
+ host unset. (abutcher@redhat.com)
+- We have proper ansible support and requirements in place now, de-revert this
+ commit (tbielawa@redhat.com)
+- Skip docker upgrades on Atomic. (dgoodwin@redhat.com)
+- Resolve some deprecation warnings. (abutcher@redhat.com)
+- a-o-i: Looser facts requirements for unattended (smunilla@redhat.com)
+- Temporarily link registry config templates for ansible 1.9.x support.
+ (abutcher@redhat.com)
+- Remove relative lookup for registry config and check for skipped update in
+ registry redeploy conditional. (abutcher@redhat.com)
+- Arbitrary Installer yaml (smunilla@redhat.com)
+- Check for existence of sebooleans prior to setting. (abutcher@redhat.com)
+- Require ansible-2.1 (abutcher@redhat.com)
+
* Sun Jul 17 2016 Scott Dodson <sdodson@redhat.com> 3.3.2-1
- Convert openshift_release and openshift_version to strings for startswith
(sdodson@redhat.com)
diff --git a/playbooks/common/openshift-cluster/additional_config.yml b/playbooks/common/openshift-cluster/additional_config.yml
index a34322754..e9fb3de96 100644
--- a/playbooks/common/openshift-cluster/additional_config.yml
+++ b/playbooks/common/openshift-cluster/additional_config.yml
@@ -19,8 +19,6 @@
- role: openshift_examples
registry_url: "{{ openshift.master.registry_url }}"
when: openshift.common.install_examples | bool
- - role: openshift_cluster_metrics
- when: openshift.common.use_cluster_metrics | bool
- role: openshift_manageiq
when: openshift.common.use_manageiq | bool
- role: cockpit
diff --git a/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/nuke_images.sh b/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/nuke_images.sh
new file mode 120000
index 000000000..49a51bba9
--- /dev/null
+++ b/playbooks/common/openshift-cluster/upgrades/v3_1_to_v3_2/nuke_images.sh
@@ -0,0 +1 @@
+../files/nuke_images.sh \ No newline at end of file
diff --git a/playbooks/common/openshift-master/config.yml b/playbooks/common/openshift-master/config.yml
index 469ae5ed9..34c96a3af 100644
--- a/playbooks/common/openshift-master/config.yml
+++ b/playbooks/common/openshift-master/config.yml
@@ -199,7 +199,7 @@
- name: Deploy named certificates
hosts: oo_masters_to_config
vars:
- named_certs_dir: "{{ master_cert_config_dir }}/named_certificates/"
+ named_certs_dir: "{{ openshift.common.config_base }}/master/named_certificates/"
named_certs_specified: "{{ openshift_master_named_certificates is defined }}"
overwrite_named_certs: "{{ openshift_master_overwrite_named_certificates | default(false) }}"
roles:
@@ -224,11 +224,11 @@
when: named_certs_specified | bool
- name: Land named certificates
copy: src="{{ item.certfile }}" dest="{{ named_certs_dir }}"
- with_items: openshift_master_named_certificates
+ with_items: "{{ openshift_master_named_certificates }}"
when: named_certs_specified | bool
- name: Land named certificate keys
copy: src="{{ item.keyfile }}" dest="{{ named_certs_dir }}" mode=0600
- with_items: openshift_master_named_certificates
+ with_items: "{{ openshift_master_named_certificates }}"
when: named_certs_specified | bool
- name: Configure masters
diff --git a/roles/openshift_cluster_metrics/README.md b/roles/openshift_cluster_metrics/README.md
deleted file mode 100644
index 9fdfab8e3..000000000
--- a/roles/openshift_cluster_metrics/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-#openshift_cluster_metrics
-
-This role configures Cluster wide metrics. It does setting up three services:
-* Metrics are stored in InfluxDB for querying.
-* Heapster reads all nodes and pods from the master, then connects to eachs node's kubelet to retrieve pod metrics.
-* Grafan allows users to create dashboards of metrics from InfluxDB
-
-## Requirements
-
-Running OpenShift cluster
-
-## Role Variables
-
-```
-# Enable cluster metrics
-use_cluster_metrics=true
-```
-
-## Dependencies
-
-None
-
-## Example Playbook
-
-TODO
-
-## Security Note
-Opening up the read-only port exposes information about the running pods (such as namespace, pod name, labels, etc.) to unauthenticated clients. The requirement to open up this read-only port will be fixed in future versions.
-
-##License
-
-Apache License, Version 2.0
-
-## Author Information
-
-Diego Castro (diego.castro@getupcloud.com)
diff --git a/roles/openshift_cluster_metrics/files/cluster-metrics/grafana.yaml b/roles/openshift_cluster_metrics/files/cluster-metrics/grafana.yaml
deleted file mode 100644
index bff422efc..000000000
--- a/roles/openshift_cluster_metrics/files/cluster-metrics/grafana.yaml
+++ /dev/null
@@ -1,53 +0,0 @@
-apiVersion: "v1"
-kind: "List"
-items:
- -
- apiVersion: "v1"
- kind: "Service"
- metadata:
- labels:
- provider: "fabric8"
- component: "grafana"
- name: "grafana"
- spec:
- ports:
- -
- port: 80
- targetPort: "http"
- selector:
- provider: "fabric8"
- component: "grafana"
- -
- apiVersion: "v1"
- kind: "ReplicationController"
- metadata:
- labels:
- provider: "fabric8"
- component: "grafana"
- name: "grafana"
- spec:
- replicas: 1
- selector:
- provider: "fabric8"
- component: "grafana"
- template:
- metadata:
- labels:
- provider: "fabric8"
- component: "grafana"
- spec:
- containers:
- -
- env:
- -
- name: "INFLUXDB_SERVICE_NAME"
- value: "INFLUXDB_MONITORING"
- -
- name: "GRAFANA_DEFAULT_DASHBOARD"
- value: "/dashboard/file/kubernetes.json"
- image: "fabric8/grafana:1.9.1_2"
- name: "grafana"
- ports:
- -
- containerPort: 3000
- name: "http" \ No newline at end of file
diff --git a/roles/openshift_cluster_metrics/files/cluster-metrics/heapster-serviceaccount.yaml b/roles/openshift_cluster_metrics/files/cluster-metrics/heapster-serviceaccount.yaml
deleted file mode 100644
index 1de2ad699..000000000
--- a/roles/openshift_cluster_metrics/files/cluster-metrics/heapster-serviceaccount.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-apiVersion: v1
-kind: ServiceAccount
-metadata:
- name: heapster \ No newline at end of file
diff --git a/roles/openshift_cluster_metrics/files/cluster-metrics/heapster.yaml b/roles/openshift_cluster_metrics/files/cluster-metrics/heapster.yaml
deleted file mode 100644
index 83e314074..000000000
--- a/roles/openshift_cluster_metrics/files/cluster-metrics/heapster.yaml
+++ /dev/null
@@ -1,30 +0,0 @@
-apiVersion: "v1"
-kind: "List"
-items:
- -
- apiVersion: "v1"
- kind: "ReplicationController"
- metadata:
- labels:
- provider: "fabric8"
- component: "heapster"
- name: "heapster"
- spec:
- replicas: 1
- selector:
- provider: "fabric8"
- component: "heapster"
- template:
- metadata:
- labels:
- provider: "fabric8"
- component: "heapster"
- spec:
- containers:
- -
- args:
- - "-source=kubernetes:https://kubernetes.default.svc.cluster.local?auth=&insecure=true&useServiceAccount=true"
- - "-sink=influxdb:http://influxdb-monitoring.default.svc.cluster.local:8086"
- image: "kubernetes/heapster:V0.14.2"
- name: "heapster"
- serviceAccount: "heapster" \ No newline at end of file
diff --git a/roles/openshift_cluster_metrics/files/cluster-metrics/influxdb.yaml b/roles/openshift_cluster_metrics/files/cluster-metrics/influxdb.yaml
deleted file mode 100644
index 6f67c3d7c..000000000
--- a/roles/openshift_cluster_metrics/files/cluster-metrics/influxdb.yaml
+++ /dev/null
@@ -1,67 +0,0 @@
-apiVersion: "v1"
-kind: "List"
-items:
- -
- apiVersion: "v1"
- kind: "Service"
- metadata:
- labels:
- provider: "fabric8"
- component: "influxdb-monitoring"
- name: "influxdb-monitoring"
- spec:
- ports:
- -
- port: 8086
- targetPort: "http"
- selector:
- provider: "fabric8"
- component: "influxdb-monitoring"
- -
- apiVersion: "v1"
- kind: "ReplicationController"
- metadata:
- labels:
- provider: "fabric8"
- component: "influxdb-monitoring"
- name: "influxdb-monitoring"
- spec:
- replicas: 1
- selector:
- provider: "fabric8"
- component: "influxdb-monitoring"
- template:
- metadata:
- labels:
- provider: "fabric8"
- component: "influxdb-monitoring"
- spec:
- containers:
- -
- env:
- -
- name: "PRE_CREATE_DB"
- value: "k8s;grafana"
- image: "fabric8/influxdb:0.8.8"
- name: "influxdb"
- ports:
- -
- containerPort: 8090
- name: "raft"
- -
- containerPort: 8099
- name: "protobuf"
- -
- containerPort: 8083
- name: "admin"
- -
- containerPort: 8086
- name: "http"
- volumeMounts:
- -
- mountPath: "/data"
- name: "influxdb-data"
- volumes:
- -
- emptyDir:
- name: "influxdb-data" \ No newline at end of file
diff --git a/roles/openshift_cluster_metrics/tasks/main.yml b/roles/openshift_cluster_metrics/tasks/main.yml
deleted file mode 100644
index 1fc8a074a..000000000
--- a/roles/openshift_cluster_metrics/tasks/main.yml
+++ /dev/null
@@ -1,49 +0,0 @@
----
-
-- name: Install cluster metrics templates
- copy:
- src: cluster-metrics
- dest: /etc/origin/
-
-- name: Create InfluxDB Services
- command: >
- {{ openshift.common.client_binary }} create -f
- /etc/origin/cluster-metrics/influxdb.yaml
- register: oex_influxdb_services
- failed_when: "'already exists' not in oex_influxdb_services.stderr and oex_influxdb_services.rc != 0"
- changed_when: false
-
-- name: Create Heapster Service Account
- command: >
- {{ openshift.common.client_binary }} create -f
- /etc/origin/cluster-metrics/heapster-serviceaccount.yaml
- register: oex_heapster_serviceaccount
- failed_when: "'already exists' not in oex_heapster_serviceaccount.stderr and oex_heapster_serviceaccount.rc != 0"
- changed_when: false
-
-- name: Add cluster-reader role to Heapster
- command: >
- {{ openshift.common.admin_binary }} policy
- add-cluster-role-to-user
- cluster-reader
- system:serviceaccount:default:heapster
- register: oex_cluster_header_role
- failed_when: "'already exists' not in oex_cluster_header_role.stderr and oex_cluster_header_role.rc != 0"
- changed_when: false
-
-- name: Create Heapster Services
- command: >
- {{ openshift.common.client_binary }} create -f
- /etc/origin/cluster-metrics/heapster.yaml
- register: oex_heapster_services
- failed_when: "'already exists' not in oex_heapster_services.stderr and oex_heapster_services.rc != 0"
- changed_when: false
-
-- name: Create Grafana Services
- command: >
- {{ openshift.common.client_binary }} create -f
- /etc/origin/cluster-metrics/grafana.yaml
- register: oex_grafana_services
- failed_when: "'already exists' not in oex_grafana_services.stderr and oex_grafana_services.rc != 0"
- changed_when: false
-
diff --git a/roles/openshift_facts/library/openshift_facts.py b/roles/openshift_facts/library/openshift_facts.py
index 54bdbc775..659f4eba6 100755
--- a/roles/openshift_facts/library/openshift_facts.py
+++ b/roles/openshift_facts/library/openshift_facts.py
@@ -480,23 +480,6 @@ def set_selectors(facts):
return facts
-def set_metrics_facts_if_unset(facts):
- """ Set cluster metrics facts if not already present in facts dict
- dict: the facts dict updated with the generated cluster metrics facts if
- missing
- Args:
- facts (dict): existing facts
- Returns:
- dict: the facts dict updated with the generated cluster metrics
- facts if they were not already present
-
- """
- if 'common' in facts:
- if 'use_cluster_metrics' not in facts['common']:
- use_cluster_metrics = False
- facts['common']['use_cluster_metrics'] = use_cluster_metrics
- return facts
-
def set_dnsmasq_facts_if_unset(facts):
""" Set dnsmasq facts if not already present in facts
Args:
@@ -1674,7 +1657,6 @@ class OpenShiftFacts(object):
facts = set_nuage_facts_if_unset(facts)
facts = set_node_schedulability(facts)
facts = set_selectors(facts)
- facts = set_metrics_facts_if_unset(facts)
facts = set_identity_providers_if_unset(facts)
facts = set_sdn_facts_if_unset(facts, self.system_facts)
facts = set_deployment_facts_if_unset(facts)
diff --git a/roles/openshift_hosted/tasks/registry/registry.yml b/roles/openshift_hosted/tasks/registry/registry.yml
index a1edef132..08c7e944e 100644
--- a/roles/openshift_hosted/tasks/registry/registry.yml
+++ b/roles/openshift_hosted/tasks/registry/registry.yml
@@ -9,7 +9,22 @@
when: openshift.hosted.registry.replicas | default(none) is none
- set_fact:
- replicas: "{{ openshift.hosted.registry.replicas | default(((openshift_hosted_registry_nodes_json.stdout | default('{\"items\":[]}') | from_json)['items'] | length) if openshift.hosted.registry.storage.kind | default(none) is not none else 1) }}"
+ l_node_count: "{{ (openshift_hosted_registry_nodes_json.stdout | default('{\"items\":[]}') | from_json)['items'] | length }}"
+
+# Determine the default number of registry/router replicas to use if no count
+# has been specified.
+# If no registry nodes defined, the default should be 0.
+- set_fact:
+ l_default_replicas: 0
+ when: l_node_count | int == 0
+
+# If registry nodes are defined and the registry storage kind is defined, default should be the number of registry nodes, otherwise just 1:
+- set_fact:
+ l_default_replicas: "{{ l_node_count if openshift.hosted.registry.storage.kind | default(none) is not none else 1 }}"
+ when: l_node_count | int > 0
+
+- set_fact:
+ replicas: "{{ openshift.hosted.registry.replicas | default(l_default_replicas) }}"
- name: Create OpenShift registry
command: >
@@ -32,9 +47,10 @@
register: openshift_hosted_registry_results
changed_when: "'service exists' not in openshift_hosted_registry_results.stdout"
failed_when: "openshift_hosted_registry_results.rc != 0 and 'service exists' not in openshift_hosted_registry_results.stdout and 'deployment_config' not in openshift_hosted_registry_results.stderr and 'service' not in openshift_hosted_registry_results.stderr"
+ when: replicas | int > 0
- include: storage/object_storage.yml
- when: openshift.hosted.registry.storage.kind | default(none) == 'object'
+ when: replicas | int > 0 and openshift.hosted.registry.storage.kind | default(none) == 'object'
- include: storage/persistent_volume.yml
- when: openshift.hosted.registry.storage.kind | default(none) in ['nfs', 'openstack']
+ when: replicas | int > 0 and openshift.hosted.registry.storage.kind | default(none) in ['nfs', 'openstack']
diff --git a/roles/openshift_hosted/tasks/router/router.yml b/roles/openshift_hosted/tasks/router/router.yml
index 7f3731c7d..d0a129c95 100644
--- a/roles/openshift_hosted/tasks/router/router.yml
+++ b/roles/openshift_hosted/tasks/router/router.yml
@@ -1,7 +1,7 @@
---
- fail:
msg: "'certfile', 'keyfile' and 'cafile' keys must be specified when supplying the openshift_hosted_router_certificate variable."
- when: openshift_hosted_router_certificate is defined and ('certfile' not in openshift_hosted_router_certificate or 'keyfile' not in openshift_hosted_router_certificate or 'cafile' not in openshift_hosted_router_certificate)
+ when: openshift_hosted_router_certificate is defined and ('certfile' not in openshift_hosted_router_certificate or 'keyfile' not in openshift_hosted_router_certificate or 'cafile' not in openshift_hosted_router_certificate)
- name: Read router certificate and key
become: no
@@ -73,3 +73,4 @@
register: openshift_hosted_router_results
changed_when: "'service exists' not in openshift_hosted_router_results.stdout"
failed_when: "openshift_hosted_router_results.rc != 0 and 'service exists' not in openshift_hosted_router_results.stdout and 'deployment_config' not in openshift_hosted_router_results.stderr and 'service' not in openshift_hosted_router_results.stderr"
+ when: replicas | int > 0
diff --git a/roles/openshift_node/templates/node.yaml.v1.j2 b/roles/openshift_node/templates/node.yaml.v1.j2
index 9ba1a01dd..a37770c4a 100644
--- a/roles/openshift_node/templates/node.yaml.v1.j2
+++ b/roles/openshift_node/templates/node.yaml.v1.j2
@@ -34,7 +34,6 @@ servingInfo:
clientCA: ca.crt
keyFile: server.key
volumeDirectory: {{ openshift.common.data_dir }}/openshift.local.volumes
-{% include 'partials/kubeletArguments.j2' %}
proxyArguments:
proxy-mode:
- {{ openshift.node.proxy_mode }}
diff --git a/roles/openshift_node/templates/partials/kubeletArguments.j2 b/roles/openshift_node/templates/partials/kubeletArguments.j2
deleted file mode 100644
index 6c3bd04c5..000000000
--- a/roles/openshift_node/templates/partials/kubeletArguments.j2
+++ /dev/null
@@ -1,5 +0,0 @@
-{% if openshift.common.use_cluster_metrics | bool %}
-kubeletArguments:
- "read-only-port":
- - "10255"
-{% endif %} \ No newline at end of file
diff --git a/utils/src/ooinstall/cli_installer.py b/utils/src/ooinstall/cli_installer.py
index c9c13501d..9fbb61a46 100644
--- a/utils/src/ooinstall/cli_installer.py
+++ b/utils/src/ooinstall/cli_installer.py
@@ -322,9 +322,7 @@ Note: Containerized storage hosts are not currently supported.
else:
host_props['connect_to'] = hostname_or_ip
host_props['preconfigured'] = False
- host_props['master'] = False
- host_props['node'] = False
- host_props['storage'] = True
+ host_props['roles'] = ['storage']
storage = Host(**host_props)
hosts.append(storage)
diff --git a/utils/src/ooinstall/oo_config.py b/utils/src/ooinstall/oo_config.py
index fc06a0c4a..e37892c9b 100644
--- a/utils/src/ooinstall/oo_config.py
+++ b/utils/src/ooinstall/oo_config.py
@@ -56,6 +56,8 @@ class Host(object):
# allowable roles: master, node, etcd, storage, master_lb, new
self.roles = kwargs.get('roles', [])
+ self.other_variables = kwargs.get('other_variables', {})
+
if self.connect_to is None:
raise OOConfigInvalidHostError(
"You must specify either an ip or hostname as 'connect_to'")
@@ -71,7 +73,8 @@ class Host(object):
d = {}
for prop in ['ip', 'hostname', 'public_ip', 'public_hostname', 'connect_to',
- 'preconfigured', 'containerized', 'schedulable', 'roles', 'node_labels']:
+ 'preconfigured', 'containerized', 'schedulable', 'roles', 'node_labels',
+ 'other_variables']:
# If the property is defined (not None or False), export it:
if getattr(self, prop):
d[prop] = getattr(self, prop)
diff --git a/utils/src/ooinstall/openshift_ansible.py b/utils/src/ooinstall/openshift_ansible.py
index 352955026..bcf06b599 100644
--- a/utils/src/ooinstall/openshift_ansible.py
+++ b/utils/src/ooinstall/openshift_ansible.py
@@ -49,23 +49,7 @@ def generate_inventory(hosts):
write_inventory_vars(base_inventory, multiple_masters, proxy)
- # Find the correct deployment type for ansible:
- ver = find_variant(CFG.settings['variant'],
- version=CFG.settings.get('variant_version', None))[1]
- base_inventory.write('deployment_type={}\n'.format(ver.ansible_key))
- if 'OO_INSTALL_ADDITIONAL_REGISTRIES' in os.environ:
- base_inventory.write('openshift_docker_additional_registries={}\n'
- .format(os.environ['OO_INSTALL_ADDITIONAL_REGISTRIES']))
- if 'OO_INSTALL_INSECURE_REGISTRIES' in os.environ:
- base_inventory.write('openshift_docker_insecure_registries={}\n'
- .format(os.environ['OO_INSTALL_INSECURE_REGISTRIES']))
- if 'OO_INSTALL_PUDDLE_REPO' in os.environ:
- # We have to double the '{' here for literals
- base_inventory.write("openshift_additional_repos=[{{'id': 'ose-devel', "
- "'name': 'ose-devel', "
- "'baseurl': '{}', "
- "'enabled': 1, 'gpgcheck': 0}}]\n".format(os.environ['OO_INSTALL_PUDDLE_REPO']))
base_inventory.write('\n[masters]\n')
for master in masters:
@@ -133,6 +117,7 @@ def write_inventory_children(base_inventory, multiple_masters, proxy, scaleup):
if not getattr(proxy, 'preconfigured', True):
base_inventory.write('lb\n')
+# pylint: disable=too-many-branches
def write_inventory_vars(base_inventory, multiple_masters, proxy):
global CFG
base_inventory.write('\n[OSEv3:vars]\n')
@@ -162,6 +147,24 @@ def write_inventory_vars(base_inventory, multiple_masters, proxy):
write_proxy_settings(base_inventory)
+ # Find the correct deployment type for ansible:
+ ver = find_variant(CFG.settings['variant'],
+ version=CFG.settings.get('variant_version', None))[1]
+ base_inventory.write('deployment_type={}\n'.format(ver.ansible_key))
+
+ if 'OO_INSTALL_ADDITIONAL_REGISTRIES' in os.environ:
+ base_inventory.write('openshift_docker_additional_registries={}\n'
+ .format(os.environ['OO_INSTALL_ADDITIONAL_REGISTRIES']))
+ if 'OO_INSTALL_INSECURE_REGISTRIES' in os.environ:
+ base_inventory.write('openshift_docker_insecure_registries={}\n'
+ .format(os.environ['OO_INSTALL_INSECURE_REGISTRIES']))
+ if 'OO_INSTALL_PUDDLE_REPO' in os.environ:
+ # We have to double the '{' here for literals
+ base_inventory.write("openshift_additional_repos=[{{'id': 'ose-devel', "
+ "'name': 'ose-devel', "
+ "'baseurl': '{}', "
+ "'enabled': 1, 'gpgcheck': 0}}]\n".format(os.environ['OO_INSTALL_PUDDLE_REPO']))
+
for name, role_obj in CFG.deployment.roles.iteritems():
if role_obj.variables:
group_name = ROLES_TO_GROUPS_MAP.get(name, name)
@@ -191,6 +194,7 @@ def write_proxy_settings(base_inventory):
pass
+# pylint: disable=too-many-branches
def write_host(host, inventory, schedulable=None):
global CFG
@@ -205,6 +209,11 @@ def write_host(host, inventory, schedulable=None):
facts += ' openshift_public_hostname={}'.format(host.public_hostname)
if host.containerized:
facts += ' containerized={}'.format(host.containerized)
+ if host.other_variables:
+ for variable, value in host.other_variables.iteritems():
+ facts += " {}={}".format(variable, value)
+ if host.node_labels:
+ facts += ' openshift_node_labels="{}"'.format(host.node_labels)
# Distinguish between three states, no schedulability specified (use default),
# explicitly set to True, or explicitly set to False: