X-Git-Url: https://gerrit.nordix.org/gitweb?p=infra%2Fstack%2Fkubernetes.git;a=blobdiff_plain;f=apps%2Fprometheus%2Fkubespray%2Fplaybooks%2Froles%2Finstall%2Ftasks%2Fmain.yaml;fp=apps%2Fprometheus%2Fkubespray%2Fplaybooks%2Froles%2Finstall%2Ftasks%2Fmain.yaml;h=3161f20630f6f2dfeba12536b7c635f01e8554ba;hp=0000000000000000000000000000000000000000;hb=a1e1f40e71a48d8c5315f37999b9123c7ea908ab;hpb=20d34e772e021fabdee0aa9b50e9804a80d5108a diff --git a/apps/prometheus/kubespray/playbooks/roles/install/tasks/main.yaml b/apps/prometheus/kubespray/playbooks/roles/install/tasks/main.yaml new file mode 100644 index 0000000..3161f20 --- /dev/null +++ b/apps/prometheus/kubespray/playbooks/roles/install/tasks/main.yaml @@ -0,0 +1,133 @@ +--- +# ============LICENSE_START======================================================= +# Copyright (C) 2019 The Nordix Foundation. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= + +- name: Load execution mode variables + include_vars: "{{ execution_mode }}.yaml" + +- block: + - name: Create directories for helm repositories + file: + path: "{{ item.path }}" + state: "{{ item.state }}" + loop: + - {path: "{{ engine_workspace }}/offline/charts/stable", state: absent} + - {path: "{{ engine_workspace }}/offline/charts/stable", state: directory} + - {path: "{{ engine_workspace }}/offline/charts/local", state: absent} + - {path: "{{ engine_workspace }}/offline/charts/local", state: directory} + + - name: Place index.yaml to webserver stable charts repository + template: + src: "index.yaml.j2" + dest: "{{ engine_workspace }}/offline/charts/stable/index.yaml" + force: true + when: execution_mode == "offline-deployment" + +- name: Initialize Helm + command: helm init --client-only --local-repo-url {{ local_repo_url }} --stable-repo-url {{ stable_repo_url }} + register: helm_init_result + changed_when: true + +- name: Clone Helm Charts repository + git: + repo: "{{ helm_charts_git_url }}" + dest: "{{ config_path }}/repos/charts" + version: "{{ charts_version }}" + force: true + recursive: true + environment: + http_proxy: "{{ lookup('env','http_proxy') }}" + https_proxy: "{{ lookup('env','https_proxy') }}" + no_proxy: "{{ lookup('env','no_proxy') }}" + +- name: Generate values.yaml + template: + src: "values.yaml.j2" + dest: "{{ config_path }}/repos/charts/stable/prometheus/values.yaml" + force: true + +- name: Remove previous installations of Prometheus + command: > + helm delete --purge "{{ prometheus_service }}" + changed_when: true + ignore_errors: true + tags: reset + +- name: Remove Prometheus namespace + command: > + kubectl delete ns "{{ prometheus_namespace }}" + changed_when: true + ignore_errors: true + tags: reset + +- name: Create Prometheus namespace + k8s: + state: present + definition: + apiVersion: v1 + kind: Namespace + metadata: + name: "{{ prometheus_namespace }}" + +- name: Install Prometheus using helm + command: > + helm install + --name "{{ prometheus_service }}" + --namespace "{{ prometheus_namespace }}" + --timeout 900 + {{ config_path }}/repos/charts/stable/prometheus + register: prometheus_helm_log + changed_when: true + +- name: Log Prometheus helm output to console + debug: + msg: "{{ prometheus_helm_log.stdout_lines }}" + +- name: Wait until Prometheus pods are available + k8s_facts: + kind: Pod + namespace: "{{ prometheus_namespace }}" + label_selectors: + - "app = {{ prometheus_service }}" + field_selectors: + - status.phase=Running + register: prometheus_pod_status + until: + - prometheus_pod_status.resources is defined + - prometheus_pod_status.resources + retries: 30 + delay: 10 + +- name: Install Prometheus LoadBalancer service + k8s: + state: present + definition: "{{ lookup('template', 'prometheus_service.yaml.j2') }}" + register: prometheus_service_status + +- name: Log Prometheus service information to console + debug: + msg: + - "------------------------------" + - "Prometheus Service information" + - "------------------------------" + - "clusterIP: {{ prometheus_service_status.result.spec.clusterIP }}" + - "targetPort: {{ prometheus_service_status.result.spec.ports[0].targetPort }}" + - "nodePort: {{ prometheus_service_status.result.spec.ports[0].nodePort }}" + - "------------------------------" + +# vim: set ts=2 sw=2 expandtab: