summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenny Woodson <kwoodson@redhat.com>2017-03-02 12:04:26 -0500
committerKenny Woodson <kwoodson@redhat.com>2017-03-02 17:36:28 -0500
commit71b27bb845a88d18d23c4ad9dfe7628b81db60f7 (patch)
tree6b0779477ef623c1f00e3aa9affb99f3ae555175
parent4630305622b6f8d6957f93da72b15fe4bda1fd02 (diff)
downloadopenshift-71b27bb845a88d18d23c4ad9dfe7628b81db60f7.tar.gz
openshift-71b27bb845a88d18d23c4ad9dfe7628b81db60f7.tar.bz2
openshift-71b27bb845a88d18d23c4ad9dfe7628b81db60f7.tar.xz
openshift-71b27bb845a88d18d23c4ad9dfe7628b81db60f7.zip
Adding support for router sharding.
-rw-r--r--roles/openshift_hosted/defaults/main.yml22
-rw-r--r--roles/openshift_hosted/tasks/router/router.yml129
2 files changed, 90 insertions, 61 deletions
diff --git a/roles/openshift_hosted/defaults/main.yml b/roles/openshift_hosted/defaults/main.yml
index 17a0d5301..769d006e1 100644
--- a/roles/openshift_hosted/defaults/main.yml
+++ b/roles/openshift_hosted/defaults/main.yml
@@ -1,2 +1,24 @@
---
registry_volume_claim: 'registry-claim'
+
+openshift_hosted_router_edits:
+- key: spec.strategy.rollingParams.intervalSeconds
+ value: 1
+ action: put
+- key: spec.strategy.rollingParams.updatePeriodSeconds
+ value: 1
+ action: put
+- key: spec.strategy.activeDeadlineSeconds
+ value: 21600
+ action: put
+
+openshift_hosted_routers:
+- name: router
+ replicas: "{{ openshift_hosted_router_replicas }}"
+ namespace: default
+ serviceaccount: router
+ selector: "{{ openshift_hosted_router_selector }}"
+ images: "{{ openshift_hosted_router_image }}"
+ edits: "{{ openshift_hosted_router_edits }}"
+
+openshift_hosted_router_certificates: {}
diff --git a/roles/openshift_hosted/tasks/router/router.yml b/roles/openshift_hosted/tasks/router/router.yml
index 607ace7f9..7b6ac580b 100644
--- a/roles/openshift_hosted/tasks/router/router.yml
+++ b/roles/openshift_hosted/tasks/router/router.yml
@@ -11,69 +11,76 @@
- name: set_fact replicas
set_fact:
replicas: "{{ openshift.hosted.router.replicas|default(None) | get_router_replicas(router_nodes) }}"
+ openshift_hosted_router_selector: "{{ openshift.hosted.router.selector | default(None) }}"
+ openshift_hosted_router_image: "{{ openshift.hosted.router.registryurl }}"
-- block:
-
- - name: Assert that 'certfile', 'keyfile' and 'cafile' keys provided in openshift_hosted_router_certificate
- assert:
- that:
- - "'certfile' in openshift_hosted_router_certificate"
- - "'keyfile' in openshift_hosted_router_certificate"
- - "'cafile' in openshift_hosted_router_certificate"
- msg: "'certfile', 'keyfile' and 'cafile' keys must be specified when supplying the openshift_hosted_router_certificate variable."
-
- - name: Read router certificate and key
- become: no
- local_action:
- module: slurp
- src: "{{ item }}"
- register: openshift_router_certificate_output
- # Defaulting dictionary keys to none to avoid deprecation warnings
- # (future fatal errors) during template evaluation. Dictionary keys
- # won't be accessed unless openshift_hosted_router_certificate is
- # defined and has all keys (certfile, keyfile, cafile) which we
- # check above.
- with_items:
- - "{{ (openshift_hosted_router_certificate | default({'certfile':none})).certfile }}"
- - "{{ (openshift_hosted_router_certificate | default({'keyfile':none})).keyfile }}"
- - "{{ (openshift_hosted_router_certificate | default({'cafile':none})).cafile }}"
-
- - name: Persist certificate contents
- openshift_facts:
- role: hosted
- openshift_env:
- openshift_hosted_router_certificate_contents: "{% for certificate in openshift_router_certificate_output.results -%}{{ certificate.content | b64decode }}{% endfor -%}"
-
- - name: Create PEM certificate
- copy:
- content: "{{ openshift.hosted.router.certificate.contents }}"
- dest: "{{ openshift_master_config_dir }}/openshift-router.pem"
- mode: 0600
-
- when: openshift_hosted_router_certificate is defined
-
+#- block:
+#
+# - name: Assert that 'certfile', 'keyfile' and 'cafile' keys provided in openshift_hosted_router_certificate
+# assert:
+# that:
+# - "'certfile' in openshift_hosted_router_certificate"
+# - "'keyfile' in openshift_hosted_router_certificate"
+# - "'cafile' in openshift_hosted_router_certificate"
+# msg: "'certfile', 'keyfile' and 'cafile' keys must be specified when supplying the openshift_hosted_router_certificate variable."
+#
+- name: Get the certificate contents for registry
+ copy:
+ backup: True
+ dest: "/etc/origin/master/{{ item.value | basename }}"
+ src: "{{ item.value }}"
+ when: item.key in ['certfile', 'keyfile', 'cafile'] and item.value is not None
+ with_dict: "{{ openshift_hosted_router_certificates }}"
+# - name: Read router certificate and key
+# become: no
+# local_action:
+# module: slurp
+# src: "{{ item }}"
+# register: openshift_router_certificate_output
+# # Defaulting dictionary keys to none to avoid deprecation warnings
+# # (future fatal errors) during template evaluation. Dictionary keys
+# # won't be accessed unless openshift_hosted_router_certificate is
+# # defined and has all keys (certfile, keyfile, cafile) which we
+# # check above.
+# with_items:
+# - "{{ (openshift_hosted_router_certificate | default({'certfile':none})).certfile }}"
+# - "{{ (openshift_hosted_router_certificate | default({'keyfile':none})).keyfile }}"
+# - "{{ (openshift_hosted_router_certificate | default({'cafile':none})).cafile }}"
+#
+# - name: Persist certificate contents
+# openshift_facts:
+# role: hosted
+# openshift_env:
+# openshift_hosted_router_certificate_contents: "{% for certificate in openshift_router_certificate_output.results -%}{{ certificate.content | b64decode }}{% endfor -%}"
+#
+# - name: Create PEM certificate
+# copy:
+# content: "{{ openshift.hosted.router.certificate.contents }}"
+# dest: "{{ openshift_master_config_dir }}/openshift-router.pem"
+# mode: 0600
+#
+#
+# when: openshift_hosted_router_certificate is defined
- name: Create OpenShift router
oc_adm_router:
name: "{{ openshift.hosted.router.name | default('router') }}"
- replicas: "{{ replicas }}"
- namespace: "{{ openshift.hosted.router.namespace | default('default') }}"
+ replicas: "{{ item[0].replicas | default(replicas) }}"
+ namespace: "{{ item[0].namespace | default('default') }}"
# This option is not yet implemented
# force_subdomain: "{{ openshift.hosted.router.force_subdomain | default(none) }}"
- service_account: router
- selector: "{{ openshift.hosted.router.selector | default(none) }}"
- images: "{{ openshift.hosted.router.registryurl | default(none) }}"
- default_cert: "{{ openshift_hosted_router_certificate is defined | default(false) | ternary(openshift_master_config_dir + '/openshift-router.pem', omit) }}"
- # These edits are being specified only to prevent 'changed' on rerun
- edits:
- - key: spec.strategy.rollingParams.intervalSeconds
- value: 1
- action: put
- - key: spec.strategy.rollingParams.updatePeriodSeconds
- value: 1
- action: put
- - key: spec.strategy.activeDeadlineSeconds
- value: 21600
- action: put
+ service_account: "{{ item[0].serviceaccount | default('router') }}"
+ selector: "{{ item[0].selector | default(none) }}"
+ images: "{{ item[0].images | default(omit) }}"
+ cert_file: "{{ ('certfile' in item[1]) |
+ ternary('/etc/origin/master/' ~ (item[1]|default({'certfile':none})).certfile, omit) }}"
+ key_file: "{{ ('keyfile' in item[1]) |
+ ternary('/etc/origin/master/' ~ (item[1]|default({'keyfile':none})).keyfile, omit) }}"
+ cacert_file: "{{ ('cafile' in item[1]) |
+ ternary('/etc/origin/master/' ~ (item[1]|default({'cafile':none})).cafile, omit) }}"
+ edits: "{{ openshift_hosted_router_edits | unon(item[0].edits) }}"
+ with_together:
+ - openshift_hosted_routers
+ - openshift_hosted_router_certificates
register: routerout
# This should probably move to module
@@ -85,7 +92,7 @@
- name: Ensure router replica count matches desired
oc_scale:
kind: dc
- name: "{{ openshift.hosted.router.name | default('router') }}"
- namespace: "{{ openshift.hosted.router.namespace | default('default') }}"
- replicas: "{{ replicas }}"
- when: replicas | int > 0
+ name: "{{ item.name | default('router') }}"
+ namespace: "{{ item.namespace | default('default') }}"
+ replicas: "{{ item.replicas }}"
+ with_items: "{{ openshift_hosted_routers }}"