router.yml 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. ---
  2. - name: Retrieve list of openshift nodes matching router selector
  3. oc_obj:
  4. state: list
  5. kind: node
  6. namespace: "{{ openshift.hosted.router.namespace | default('default') }}"
  7. selector: "{{ openshift.hosted.router.selector | default(omit) }}"
  8. register: router_nodes
  9. when: openshift.hosted.router.replicas | default(none) is none
  10. - name: set_fact replicas
  11. set_fact:
  12. replicas: "{{ openshift.hosted.router.replicas|default(None) | get_router_replicas(router_nodes) }}"
  13. openshift_hosted_router_selector: "{{ openshift.hosted.router.selector | default(None) }}"
  14. openshift_hosted_router_image: "{{ openshift.hosted.router.registryurl }}"
  15. - name: Get the certificate contents for router
  16. copy:
  17. backup: True
  18. dest: "/etc/origin/master/{{ item | basename }}"
  19. src: "{{ item }}"
  20. with_items: "{{ openshift_hosted_routers | oo_collect(attribute='certificates') |
  21. oo_select_keys_from_list(['keyfile', 'certfile', 'cafile']) }}"
  22. - name: Create the router service account(s)
  23. oc_serviceaccount:
  24. name: "{{ item.serviceaccount }}"
  25. namespace: "{{ item.namespace }}"
  26. state: present
  27. with_items: "{{ openshift_hosted_routers }}"
  28. - name: Grant the router serivce account(s) access to the appropriate scc
  29. oc_adm_policy_user:
  30. user: "system:serviceaccount:{{ item.namespace }}:{{ item.serviceaccount }}"
  31. namespace: "{{ item.namespace }}"
  32. resource_kind: scc
  33. resource_name: hostnetwork
  34. with_items: "{{ openshift_hosted_routers }}"
  35. - name: Set additional permissions for router service account
  36. oc_adm_policy_user:
  37. user: "system:serviceaccount:{{ item.namespace }}:{{ item.serviceaccount }}"
  38. namespace: "{{ item.namespace }}"
  39. resource_kind: cluster-role
  40. resource_name: cluster-reader
  41. when: item.namespace == 'default'
  42. with_items: "{{ openshift_hosted_routers }}"
  43. - name: Create OpenShift router
  44. oc_adm_router:
  45. name: "{{ item.name }}"
  46. replicas: "{{ item.replicas }}"
  47. namespace: "{{ item.namespace | default('default') }}"
  48. # This option is not yet implemented
  49. # force_subdomain: "{{ openshift.hosted.router.force_subdomain | default(none) }}"
  50. service_account: "{{ item.serviceaccount | default('router') }}"
  51. selector: "{{ item.selector | default(none) }}"
  52. images: "{{ item.images | default(omit) }}"
  53. cert_file: "{{ ('/etc/origin/master/' ~ (item.certificates.certfile | basename)) if 'certfile' in item.certificates else omit }}"
  54. key_file: "{{ ('/etc/origin/master/' ~ (item.certificates.keyfile | basename)) if 'keyfile' in item.certificates else omit }}"
  55. cacert_file: "{{ ('/etc/origin/master/' ~ (item.certificates.cafile | basename)) if 'cafile' in item.certificates else omit }}"
  56. edits: "{{ openshift_hosted_router_edits | union(item.edits) }}"
  57. ports: "{{ item.ports }}"
  58. stats_port: "{{ item.stats_port }}"
  59. with_items: "{{ openshift_hosted_routers }}"
  60. register: routerout
  61. # This should probably move to module
  62. - name: wait for deploy
  63. pause:
  64. seconds: 30
  65. when: routerout.changed
  66. - name: Ensure router replica count matches desired
  67. oc_scale:
  68. kind: dc
  69. name: "{{ item.name | default('router') }}"
  70. namespace: "{{ item.namespace | default('default') }}"
  71. replicas: "{{ item.replicas }}"
  72. with_items: "{{ openshift_hosted_routers }}"