diff options
| -rw-r--r-- | inventory/byo/hosts.origin.example | 47 | ||||
| -rw-r--r-- | inventory/byo/hosts.ose.example | 30 | ||||
| -rw-r--r-- | playbooks/adhoc/metrics_setup/playbooks/install.yml | 9 | ||||
| -rw-r--r-- | roles/openshift_master/tasks/systemd_units.yml | 47 | ||||
| -rw-r--r-- | roles/openshift_metrics/tasks/install.yml | 2 | ||||
| -rw-r--r-- | roles/openshift_metrics/tasks/main.yaml | 5 | 
6 files changed, 124 insertions, 16 deletions
| diff --git a/inventory/byo/hosts.origin.example b/inventory/byo/hosts.origin.example index d7db63383..f073a125d 100644 --- a/inventory/byo/hosts.origin.example +++ b/inventory/byo/hosts.origin.example @@ -65,10 +65,6 @@ openshift_release=v1.2  # See: https://docs.openshift.org/latest/install_config/web_console_customization.html#serving-static-files  #openshift_master_oauth_template=/path/to/login-template.html -# Configure metricsPublicURL in the master config for cluster metrics -# See: https://docs.openshift.org/latest/install_config/cluster_metrics.html -#openshift_master_metrics_public_url=https://hawkular-metrics.example.com/hawkular/metrics -  # Configure loggingPublicURL in the master config for aggregate logging  # See: https://docs.openshift.org/latest/install_config/aggregate_logging.html  #openshift_master_logging_public_url=https://kibana.example.com @@ -326,6 +322,49 @@ openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true',  #openshift_hosted_registry_storage_s3_chunksize=26214400  #openshift_hosted_registry_pullthrough=true +# Metrics deployment +# See: https://docs.openshift.com/enterprise/latest/install_config/cluster_metrics.html +# +# By default metrics are not automatically deployed, set this to enable them +# openshift_hosted_metrics_deploy=true +# +# Storage Options +# If openshift_hosted_metrics_storage_kind is unset then metrics will be stored +# in an EmptyDir volume and will be deleted when the cassandra pod terminates. +# Storage options A & B currently support only one cassandra pod which is +# generally enough for up to 1000 pods. Additional volumes can be created +# manually after the fact and metrics scaled per the docs. +# +# Option A - NFS Host Group +# An NFS volume will be created with path "nfs_directory/volume_name" +# on the host within the [nfs] host group.  For example, the volume +# path using these options would be "/exports/metrics" +#openshift_hosted_metrics_storage_kind=nfs +#openshift_hosted_metrics_storage_access_modes=['ReadWriteOnce'] +#openshift_hosted_metrics_storage_nfs_directory=/exports +#openshift_hosted_metrics_storage_nfs_options='*(rw,root_squash)' +#openshift_hosted_metrics_storage_volume_name=metrics +#openshift_hosted_metrics_storage_volume_size=10Gi +# +# Option B - External NFS Host +# NFS volume must already exist with path "nfs_directory/_volume_name" on +# the storage_host. For example, the remote volume path using these +# options would be "nfs.example.com:/exports/metrics" +#openshift_hosted_metrics_storage_kind=nfs +#openshift_hosted_metrics_storage_access_modes=['ReadWriteOnce'] +#openshift_hosted_metrics_storage_host=nfs.example.com +#openshift_hosted_metrics_storage_nfs_directory=/exports +#openshift_hosted_metrics_storage_volume_name=metrics +#openshift_hosted_metrics_storage_volume_size=10Gi +# +# Option C - Dynamic -- If openshift supports dynamic volume provisioning for +# your cloud platform use this. +#openshift_hosted_metrics_storage_kind=dynamic +# +# Override metricsPublicURL in the master config for cluster metrics +# Defaults to https://hawkular-metrics.{{openshift_master_default_subdomain}}/hawkular/metrics +#openshift_master_metrics_public_url=https://hawkular-metrics.example.com/hawkular/metrics +  # Configure the multi-tenant SDN plugin (default is 'redhat/openshift-ovs-subnet')  # os_sdn_network_plugin_name='redhat/openshift-ovs-multitenant' diff --git a/inventory/byo/hosts.ose.example b/inventory/byo/hosts.ose.example index cdcbae723..8899c1769 100644 --- a/inventory/byo/hosts.ose.example +++ b/inventory/byo/hosts.ose.example @@ -65,10 +65,6 @@ openshift_release=v3.2  # See: https://docs.openshift.org/latest/install_config/web_console_customization.html#serving-static-files  #openshift_master_oauth_template=/path/to/login-template.html -# Configure metricsPublicURL in the master config for cluster metrics -# See: https://docs.openshift.com/enterprise/latest/install_config/cluster_metrics.html -#openshift_master_metrics_public_url=https://hawkular-metrics.example.com/hawkular/metrics -  # Configure loggingPublicURL in the master config for aggregate logging  # See: https://docs.openshift.com/enterprise/latest/install_config/aggregate_logging.html  #openshift_master_logging_public_url=https://kibana.example.com @@ -325,9 +321,20 @@ openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true',  #openshift_hosted_registry_storage_s3_chunksize=26214400  #openshift_hosted_registry_pullthrough=true -# Metrics Storage Options +# Metrics deployment +# See: https://docs.openshift.com/enterprise/latest/install_config/cluster_metrics.html  # -# NFS Host Group +# By default metrics are not automatically deployed, set this to enable them +# openshift_hosted_metrics_deploy=true +# +# Storage Options +# If openshift_hosted_metrics_storage_kind is unset then metrics will be stored +# in an EmptyDir volume and will be deleted when the cassandra pod terminates. +# Storage options A & B currently support only one cassandra pod which is +# generally enough for up to 1000 pods. Additional volumes can be created +# manually after the fact and metrics scaled per the docs. +# +# Option A - NFS Host Group  # An NFS volume will be created with path "nfs_directory/volume_name"  # on the host within the [nfs] host group.  For example, the volume  # path using these options would be "/exports/metrics" @@ -338,7 +345,7 @@ openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true',  #openshift_hosted_metrics_storage_volume_name=metrics  #openshift_hosted_metrics_storage_volume_size=10Gi  # -# External NFS Host +# Option B - External NFS Host  # NFS volume must already exist with path "nfs_directory/_volume_name" on  # the storage_host. For example, the remote volume path using these  # options would be "nfs.example.com:/exports/metrics" @@ -348,6 +355,15 @@ openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true',  #openshift_hosted_metrics_storage_nfs_directory=/exports  #openshift_hosted_metrics_storage_volume_name=metrics  #openshift_hosted_metrics_storage_volume_size=10Gi +# +# Option C - Dynamic -- If openshift supports dynamic volume provisioning for +# your cloud platform use this. +#openshift_hosted_metrics_storage_kind=dynamic +# +# Override metricsPublicURL in the master config for cluster metrics +# Defaults to https://hawkular-metrics.{{openshift_master_default_subdomain}}/hawkular/metrics +#openshift_master_metrics_public_url=https://hawkular-metrics.example.com/hawkular/metrics +  # Configure the multi-tenant SDN plugin (default is 'redhat/openshift-ovs-subnet')  # os_sdn_network_plugin_name='redhat/openshift-ovs-multitenant' diff --git a/playbooks/adhoc/metrics_setup/playbooks/install.yml b/playbooks/adhoc/metrics_setup/playbooks/install.yml index 235f775ef..a9ec3c1ef 100644 --- a/playbooks/adhoc/metrics_setup/playbooks/install.yml +++ b/playbooks/adhoc/metrics_setup/playbooks/install.yml @@ -16,21 +16,30 @@    - name: "Add metrics-deployer"      command: "{{item}}" +    run_once: true +    register: output +    failed_when: ('already exists' not in output.stderr) and (output.rc != 0)      with_items:        - oc project openshift-infra        - oc create -f /tmp/metrics-deployer-setup.yaml        - name: "Give metrics-deployer SA permissions"      command: "oadm policy add-role-to-user edit system:serviceaccount:openshift-infra:metrics-deployer" +    run_once: true    - name: "Give heapster SA permissions"      command: "oadm policy add-cluster-role-to-user cluster-reader system:serviceaccount:openshift-infra:heapster" +    run_once: true    - name: "Create metrics-deployer secret"      command: "oc secrets new metrics-deployer nothing=/dev/null" +    register: output +    failed_when: ('already exists' not in output.stderr) and (output.rc != 0) +    run_once: true    - name: "Copy metrics.yaml to remote"      copy: "src=../files/metrics.yaml dest=/tmp/metrics.yaml force=yes"     - name: "Process yml template"      shell: "oc process -f /tmp/metrics.yaml -v MASTER_URL={{ masterPublicURL }},REDEPLOY=true,HAWKULAR_METRICS_HOSTNAME={{ metrics_external_service }},IMAGE_PREFIX={{ metrics_image_prefix }},IMAGE_VERSION={{ metrics_image_version }},USE_PERSISTENT_STORAGE=false | oc create -f -" +    run_once: true
\ No newline at end of file diff --git a/roles/openshift_master/tasks/systemd_units.yml b/roles/openshift_master/tasks/systemd_units.yml index 0c0c7e61e..56110c28f 100644 --- a/roles/openshift_master/tasks/systemd_units.yml +++ b/roles/openshift_master/tasks/systemd_units.yml @@ -45,6 +45,13 @@    failed_when: false    changed_when: false +- name: Preserve Master API AWS options +  command: grep AWS_ /etc/sysconfig/{{ openshift.common.service_type }}-master-api +  register: master_api_aws +  when: openshift.master.ha is defined and openshift.master.ha | bool and openshift_master_cluster_method == "native" +  failed_when: false +  changed_when: false +  - name: Create the master api service env file    template:      src: "{{ ha_svc_template_path }}/atomic-openshift-master-api.j2" @@ -62,13 +69,29 @@      line: "{{ item }}"    with_items: "{{ master_api_proxy.stdout_lines | default([]) }}" +- name: Restore Master API AWS Options +  when: openshift.master.ha is defined and openshift.master.ha | bool and openshift_master_cluster_method == "native" +      and master_api_aws.rc == 0 and +      not (openshift_cloudprovider_kind is defined and openshift_cloudprovider_kind == 'aws' and openshift_cloudprovider_aws_access_key is defined and openshift_cloudprovider_aws_secret_key is defined) +  lineinfile: +    dest: /etc/sysconfig/{{ openshift.common.service_type }}-master-api +    line: "{{ item }}" +  with_items: "{{ master_api_aws.stdout_lines | default([]) }}" +  - name: Preserve Master Controllers Proxy Config options -  command: grep PROXY /etc/sysconfig/{{ openshift.common.service_type }}-master-api +  command: grep PROXY /etc/sysconfig/{{ openshift.common.service_type }}-master-controllers    register: master_controllers_proxy    when: openshift.master.ha is defined and openshift.master.ha | bool and openshift_master_cluster_method == "native"    failed_when: false    changed_when: false +- name: Preserve Master Controllers AWS options +  command: grep AWS_ /etc/sysconfig/{{ openshift.common.service_type }}-master-controllers +  register: master_controllers_aws +  when: openshift.master.ha is defined and openshift.master.ha | bool and openshift_master_cluster_method == "native" +  failed_when: false +  changed_when: false +  - name: Create the master controllers service env file    template:      src: "{{ ha_svc_template_path }}/atomic-openshift-master-controllers.j2" @@ -86,6 +109,15 @@    when: openshift.master.ha is defined and openshift.master.ha | bool and openshift_master_cluster_method == "native"          and master_controllers_proxy.rc == 0 and 'http_proxy' not in openshift.common and 'https_proxy' not in openshift.common +- name: Restore Master Controllers AWS Options +  lineinfile: +    dest: /etc/sysconfig/{{ openshift.common.service_type }}-master-controllers +    line: "{{ item }}" +  with_items: "{{ master_controllers_aws.stdout_lines | default([]) }}" +  when: openshift.master.ha is defined and openshift.master.ha | bool and openshift_master_cluster_method == "native" +      and master_controllers_aws.rc == 0 and +      not (openshift_cloudprovider_kind is defined and openshift_cloudprovider_kind == 'aws' and openshift_cloudprovider_aws_access_key is defined and openshift_cloudprovider_aws_secret_key is defined) +  - name: Install Master docker service file    template:      dest: "/etc/systemd/system/{{ openshift.common.service_type }}-master.service" @@ -99,6 +131,12 @@    failed_when: false    changed_when: false +- name: Preserve Master AWS options +  command: grep AWS_ /etc/sysconfig/{{ openshift.common.service_type }}-master +  register: master_aws +  failed_when: false +  changed_when: false +  - name: Create the master service env file    template:      src: "atomic-openshift-master.j2" @@ -113,3 +151,10 @@      line: "{{ item }}"    with_items: "{{ master_proxy.stdout_lines | default([]) }}"    when: master_proxy.rc == 0 and 'http_proxy' not in openshift.common and 'https_proxy' not in openshift.common + +- name: Restore Master AWS Options +  lineinfile: +    dest: /etc/sysconfig/{{ openshift.common.service_type }}-master +    line: "{{ item }}" +  with_items: "{{ master_aws.stdout_lines | default([]) }}" +  when: master_aws.rc == 0 and not (openshift_cloudprovider_kind is defined and openshift_cloudprovider_kind == 'aws' and openshift_cloudprovider_aws_access_key is defined and openshift_cloudprovider_aws_secret_key is defined) diff --git a/roles/openshift_metrics/tasks/install.yml b/roles/openshift_metrics/tasks/install.yml index 2fbb7d606..ea4f61ccd 100644 --- a/roles/openshift_metrics/tasks/install.yml +++ b/roles/openshift_metrics/tasks/install.yml @@ -74,7 +74,7 @@        HAWKULAR_METRICS_HOSTNAME={{ metrics_hostname }},USE_PERSISTENT_STORAGE={{metrics_persistence | string | lower }},METRIC_DURATION={{ openshift.hosted.metrics.duration }},METRIC_RESOLUTION={{ openshift.hosted.metrics.resolution }}{{ image_prefix }}{{ image_version }},MODE={{ deployment_mode }} \          | {{ openshift.common.client_binary }} --namespace openshift-infra \          --config={{ openshift_metrics_kubeconfig }} \ -        create -f -" +        create -o name -f -"  - name: Deploy Metrics    shell: "{{ deployer_cmd }}" diff --git a/roles/openshift_metrics/tasks/main.yaml b/roles/openshift_metrics/tasks/main.yaml index 8a6712468..ad04bc355 100644 --- a/roles/openshift_metrics/tasks/main.yaml +++ b/roles/openshift_metrics/tasks/main.yaml @@ -33,10 +33,9 @@                            | default('hawkular-metrics.' ~ (openshift.master.default_subdomain                            | default(openshift_master_default_subdomain )))                            | oo_hostname_from_url }}" -    metrics_persistence: True -    #"{{ openshift.hosted.metrics.storage_kind | default(none) is not none }}" +    metrics_persistence: "{{ openshift.hosted.metrics.storage_kind | default(none) is not none }}"      metrics_dynamic_vol: "{{ openshift.hosted.metrics.storage_kind | default(none) == 'dynamic' }}" -    metrics_template_dir: "/usr/share/openshift/examples/infrastructure-templates/{{ 'origin' if deployment_type == 'origin' else 'enterprise' }}" +    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' }}"      cassandra_nodes: "{{ ',CASSANDRA_NODES=' ~ openshift.hosted.metrics.cassandra_nodes if 'cassandra' in openshift.hosted.metrics else '' }}"      cassandra_pv_size: "{{ ',CASSANDRA_PV_SIZE=' ~ openshift.hosted.metrics.storage_volume_size if openshift.hosted.metrics.storage_volume_size | default(none) is not none else '' }}"      image_prefix: "{{ ',IMAGE_PREFIX=' ~ openshift.hosted.metrics.deployer_prefix if 'deployer_prefix' in openshift.hosted.metrics else '' }}" | 
