main.yaml 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. ---
  2. - fail:
  3. msg: This role required openshift_master_default_subdomain or openshift_hosted_metrics_public_url be set
  4. when: openshift.master.metrics_public_url | default(openshift_hosted_metrics_public_url | default(openshift.master.default_subdomain | default(openshift_master_default_subdomain | default(none)))) is none
  5. - name: Create temp directory for kubeconfig
  6. command: mktemp -d /tmp/openshift-ansible-XXXXXX
  7. register: mktemp
  8. changed_when: False
  9. - name: Record kubeconfig tmp dir
  10. set_fact:
  11. openshift_metrics_kubeconfig: "{{ mktemp.stdout }}/admin.kubeconfig"
  12. - name: Copy the admin client config(s)
  13. command: >
  14. cp {{ openshift_master_config_dir }}/admin.kubeconfig {{ openshift_metrics_kubeconfig }}
  15. changed_when: False
  16. - name: Set hosted metrics facts
  17. openshift_facts:
  18. role: hosted
  19. openshift_env: "{{ hostvars
  20. | oo_merge_hostvars(vars, inventory_hostname)
  21. | oo_openshift_env }}"
  22. openshift_env_structures:
  23. - 'openshift.hosted.metrics.*'
  24. - set_fact:
  25. # Prefer the master facts over bare variables if present, prefer
  26. # metrics_public_url over creating a default using default_subdomain
  27. metrics_hostname: "{{ openshift.hosted.metrics.public_url
  28. | default('hawkular-metrics.' ~ (openshift.master.default_subdomain
  29. | default(openshift_master_default_subdomain )))
  30. | oo_hostname_from_url }}"
  31. metrics_persistence: "{{ openshift.hosted.metrics.storage_kind | default(none) is not none }}"
  32. metrics_dynamic_vol: "{{ openshift.hosted.metrics.storage_kind | default(none) == 'dynamic' }}"
  33. metrics_template_dir: "{{ openshift.common.config_base if openshift.common.is_containerized | bool else '/usr/share/openshift' }}/examples/infrastructure-templates/{{ 'origin' if deployment_type == 'origin' else 'enterprise' }}"
  34. image_prefix: "{{ '-v IMAGE_PREFIX=' ~ openshift.hosted.metrics.deployer.prefix if 'prefix' in openshift.hosted.metrics.deployer else '' }}"
  35. image_version: "{{ '-v IMAGE_VERSION=' ~ openshift.hosted.metrics.deployer.version if 'version' in openshift.hosted.metrics.deployer else '' }}"
  36. - name: Check for existing metrics pods
  37. shell: >
  38. {{ openshift.common.client_binary }}
  39. --config={{ openshift_metrics_kubeconfig }}
  40. --namespace openshift-infra
  41. get pods -l {{ item }} | grep -q Running
  42. register: metrics_pods_status
  43. with_items:
  44. - metrics-infra=hawkular-metrics
  45. - metrics-infra=heapster
  46. - metrics-infra=hawkular-cassandra
  47. failed_when: false
  48. changed_when: false
  49. - name: Check for previous deployer
  50. shell: >
  51. {{ openshift.common.client_binary }}
  52. --config={{ openshift_metrics_kubeconfig }}
  53. --namespace openshift-infra
  54. get pods -l metrics-infra=deployer --sort-by='{.metadata.creationTimestamp}' | tail -1 | grep metrics-deployer-
  55. register: metrics_deployer_status
  56. failed_when: false
  57. changed_when: false
  58. - name: Record current deployment status
  59. set_fact:
  60. greenfield: "{{ not metrics_deployer_status.rc == 0 }}"
  61. failed_error: "{{ True if 'Error' in metrics_deployer_status.stdout else False }}"
  62. metrics_running: "{{ metrics_pods_status.results | oo_collect(attribute='rc') == [0,0,0] }}"
  63. - name: Set deployment mode
  64. set_fact:
  65. deployment_mode: "{{ 'refresh' if (failed_error | bool or metrics_upgrade | bool) else 'deploy' }}"
  66. # TODO: handle non greenfield deployments in the future
  67. - include: install.yml
  68. when: greenfield
  69. - name: Delete temp directory
  70. file:
  71. name: "{{ mktemp.stdout }}"
  72. state: absent
  73. changed_when: False