--- ### tags: ### update_config ### update_deployment - name: "Send mattermost messsge" uri: url: "{{ mattermost_hook_smardigo }}" method: POST body: "{{ lookup('template','mattermost-deploy-start.json.j2') }}" body_format: json headers: Content-Type: "application/json" delegate_to: 127.0.0.1 become: false when: - send_status_messages - name: "Setup DNS configuration for {{ service_name }} prometheus" include_role: name: _digitalocean tasks_from: domain vars: record_data: "{{ stage_server_ip }}" record_name: "{{ service_name }}-prometheus" - name: "Setup DNS configuration for {{ service_name }} grafana" include_role: name: _digitalocean tasks_from: domain vars: record_data: "{{ stage_server_ip }}" record_name: "{{ service_name }}-grafana" - name: "Setup DNS configuration for {{ service_name }} alertmanager" include_role: name: _digitalocean tasks_from: domain vars: record_data: "{{ stage_server_ip }}" record_name: "{{ service_name }}-alertmanager" - name: "Check if {{ service_name }}/docker-compose.yml exists" stat: path: '{{ service_base_path }}/{{ service_name }}/docker-compose.yml' register: check_docker_compose_file tags: - update_config - update_deployment - name: "Stop {{ service_name }}" shell: docker-compose down args: chdir: '{{ service_base_path }}/{{ service_name }}' when: check_docker_compose_file.stat.exists ignore_errors: yes tags: - update_deployment - name: "Deploy docker templates for {{ service_name }}" include_role: name: _deploy tasks_from: templates vars: current_config: "_docker" current_base_path: "{{ service_base_path }}" current_destination: "{{ service_name }}" current_owner: "{{ docker_owner }}" current_group: "{{ docker_group }}" current_docker: "{{ prometheus_docker }}" tags: - update_config - name: "Reading current server groups from hetzner" include_role: name: hcloud tasks_from: _read_server_names with_items: [ { name: "all", label_selector: "stage={{ stage }}", }, { name: "harbor", label_selector: "stage={{ stage }},service=harbor", }, { name: "connect", label_selector: "stage={{ stage }},service=connect", }, { name: "elastic", label_selector: "stage={{ stage }},service=elastic", }, { name: "mail", label_selector: "stage={{ stage }},service=mail", } ] loop_control: loop_var: current_server_group tags: - update_config - name: "Deploy service templates for {{ service_name }}" include_role: name: _deploy tasks_from: templates vars: current_config: "prometheus" current_base_path: "{{ service_base_path }}" current_destination: "{{ service_name }}" current_owner: "{{ docker_owner }}" current_group: "{{ docker_group }}" tags: - update_config - name: "Update {{ service_name }}" shell: docker-compose pull args: chdir: '{{ service_base_path }}/{{ service_name }}' tags: - update_deployment - name: "Start {{ service_name }}" shell: | docker-compose down docker-compose up -d args: chdir: '{{ service_base_path }}/{{ service_name }}' tags: - update_config - update_deployment - name: "Update landing page for {{ service_name }}" include_role: name: _deploy tasks_from: caddy_landing_page vars: current_services: [ { current_name: "prometheus", current_url: "{{ http_s}}://{{ service_name }}-prometheus.{{ domain }}", current_version: "{{ prometheus_image_version }}", current_date: "{{ ansible_date_time.iso8601 }}", }, { current_name: "grafana", current_url: "{{ http_s }}://{{ service_name }}-grafana.{{ domain }}", current_version: "{{ grafana_image_version }}", current_date: "{{ ansible_date_time.iso8601 }}", }, { current_name: "alertmanager", current_url: "{{ http_s }}://{{ service_name }}-alertmanager.{{ domain }}", current_version: "{{ alertmanager_image_version }}", current_date: "{{ ansible_date_time.iso8601 }}", }, ] - name: "Wait for {{ http_s }}://{{ service_name }}-grafana.{{ domain }}" uri: url: "{{ http_s }}://{{ service_name }}-grafana.{{ domain }}/api/admin/stats" url_username: "{{ grafana_admin_username }}" url_password: "{{ grafana_admin_password }}" force_basic_auth: yes method: GET status_code: 200 return_content: yes register: grafana_stats until: grafana_stats.status == 200 retries: 10 delay: 60 - name: Create grafana users uri: url: "{{ http_s }}://{{ service_name }}-grafana.{{ domain }}/api/admin/users" url_username: "{{ grafana_admin_username }}" url_password: "{{ grafana_admin_password }}" force_basic_auth: yes method: POST status_code: 200 body_format: json body: "{\"name\":\"{{ item.name }}\", \"email\":\"{{ item.email }}\", \"login\":\"{{ item.login }}\", \"password\":\"{{ item.password }}\" }" headers: Content-Type: application/json loop: - { name: "{{ grafana_user_smardigo_login }}", email: "smardigo@netgo.de", login: "{{ grafana_user_smardigo_login }}", password: "{{ grafana_user_smardigo_password }}" } when: grafana_stats.json.users == 1 - name: "Send mattermost messsge" uri: url: "{{ mattermost_hook_smardigo }}" method: POST body: "{{ lookup('template','mattermost-deploy-end.json.j2') }}" body_format: json headers: Content-Type: "application/json" delegate_to: 127.0.0.1 become: false when: - send_status_messages