summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Dodson <sdodson@redhat.com>2017-03-06 11:37:34 -0500
committerGitHub <noreply@github.com>2017-03-06 11:37:34 -0500
commit6a002fb9641d2631038bba8d80e5467f312fa0db (patch)
tree403e706af79879f0c5626905155856222f7c32ed
parente62ca53dabfa9587fc21f5d4a53b5d468ad13744 (diff)
parent9454767696f1b3a442dec5fa9a01848e93f53cc6 (diff)
downloadopenshift-6a002fb9641d2631038bba8d80e5467f312fa0db.tar.gz
openshift-6a002fb9641d2631038bba8d80e5467f312fa0db.tar.bz2
openshift-6a002fb9641d2631038bba8d80e5467f312fa0db.tar.xz
openshift-6a002fb9641d2631038bba8d80e5467f312fa0db.zip
Merge pull request #3549 from kwoodson/router_sharding
Adding support for multiple router shards.
-rw-r--r--roles/openshift_hosted/defaults/main.yml28
-rw-r--r--roles/openshift_hosted/tasks/router/router.yml87
2 files changed, 54 insertions, 61 deletions
diff --git a/roles/openshift_hosted/defaults/main.yml b/roles/openshift_hosted/defaults/main.yml
index 17a0d5301..0a6299c9b 100644
--- a/roles/openshift_hosted/defaults/main.yml
+++ b/roles/openshift_hosted/defaults/main.yml
@@ -1,2 +1,30 @@
---
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: "{{ replicas }}"
+ namespace: default
+ serviceaccount: router
+ selector: "{{ openshift_hosted_router_selector }}"
+ images: "{{ openshift_hosted_router_image }}"
+ edits: "{{ openshift_hosted_router_edits }}"
+ stats_port: 1936
+ ports:
+ - 80:80
+ - 443:443
+ certificates: "{{ openshift_hosted_router_certificate | default({}) }}"
+
+
+openshift_hosted_router_certificates: {}
diff --git a/roles/openshift_hosted/tasks/router/router.yml b/roles/openshift_hosted/tasks/router/router.yml
index 607ace7f9..3b7021eae 100644
--- a/roles/openshift_hosted/tasks/router/router.yml
+++ b/roles/openshift_hosted/tasks/router/router.yml
@@ -11,69 +11,34 @@
- 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
+- name: Get the certificate contents for router
+ copy:
+ backup: True
+ dest: "/etc/origin/master/{{ item | basename }}"
+ src: "{{ item }}"
+ with_items: "{{ openshift_hosted_routers | oo_collect(attribute='certificates') |
+ oo_select_keys_from_list(['keyfile', 'certfile', 'cafile']) }}"
- name: Create OpenShift router
oc_adm_router:
- name: "{{ openshift.hosted.router.name | default('router') }}"
- replicas: "{{ replicas }}"
- namespace: "{{ openshift.hosted.router.namespace | default('default') }}"
+ name: "{{ item.name }}"
+ replicas: "{{ item.replicas }}"
+ namespace: "{{ item.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.serviceaccount | default('router') }}"
+ selector: "{{ item.selector | default(none) }}"
+ images: "{{ item.images | default(omit) }}"
+ cert_file: "{{ ('/etc/origin/master/' ~ (item.certificates.certfile | basename)) if 'certfile' in item.certificates else omit }}"
+ key_file: "{{ ('/etc/origin/master/' ~ (item.certificates.keyfile | basename)) if 'keyfile' in item.certificates else omit }}"
+ cacert_file: "{{ ('/etc/origin/master/' ~ (item.certificates.cafile | basename)) if 'cafile' in item.certificates else omit }}"
+ edits: "{{ openshift_hosted_router_edits | union(item.edits) }}"
+ ports: "{{ item.ports }}"
+ stats_port: "{{ item.stats_port }}"
+ with_items: "{{ openshift_hosted_routers }}"
register: routerout
# This should probably move to module
@@ -85,7 +50,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 }}"