blob: aa4b04f1c879622280899d5be5c20eb81869501d [file] [log] [blame]
---
#
# 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.
#
- hosts: localhost
connection: local
gather_facts: false
tasks:
- name: Load environment specific vars
include_vars:
file: "{{ lookup('env', 'PWD') }}/ansible/vars.yml"
- name: Load environment specific vault
include_vars:
file: "{{ lookup('env', 'PWD') }}/ansible/vault"
no_log: true
- name: Get TO Cookie
uri:
url: "{{ to_url }}/api/{{ to_api_version }}/user/login"
method: POST
body: '{ "u":"{{ tm_traffic_ops_username }}", "p":"{{ tmonitor_passwd }}" }'
headers:
Content-Type: "application/x-www-form-urlencoded"
validate_certs: no
follow_redirects: all
return_content: yes
timeout: 120
body_format: json
register: mojo_token
no_log: true
- name: Get All Servers
uri:
url: "{{ to_url }}/api/{{ to_api_version }}/servers"
method: GET
validate_certs: no
follow_redirects: all
return_content: yes
body_format: json
status_code: 200,400
timeout: 120
headers:
Cookie: "{{ mojo_token.set_cookie | default(omit) }}"
register: get_all_servers
- name: Get a list of InfluxDB servers
set_fact:
servers_map: "{{ get_all_servers.json | to_json | from_json | json_query(server_query) }}"
influxdb_profiles: "{{ get_all_servers.json | to_json | from_json | json_query(profile_query) | unique | sort }}"
vars:
server_query: 'response[?contains(profile,`INFLUXDB`) == `true` && contains(profile,`RELAY`) == `false`].{profile: profile, fqdn: join(`.`,[hostName,domainName])}'
profile_query: 'response[?contains(profile,`INFLUXDB`) == `true` && contains(profile,`RELAY`) == `false`].profile'
- hosts: influxrelay
gather_facts: yes
become: yes
tasks:
- name: Load environment specific vars
include_vars:
file: "{{ lookup('env', 'PWD') }}/ansible/vars.yml"
- name: Load environment specific vault
include_vars:
file: "{{ lookup('env', 'PWD') }}/ansible/vault"
no_log: true
- name: Convert TO data to InfluxDB Relay configuration
set_fact:
influxdb_relay_data: "{% set base_port = 9085 %}[{% for p in hostvars['localhost'].influxdb_profiles %}{%- set outer_loop = loop -%}{'type':'http','conf_object':{'name': '{{ p }}', 'bindaddr': '0.0.0.0:{{ base_port + loop.index }}', 'output': [ {% for s in hostvars['localhost'].servers_map if s.profile == p %}{ 'name': '{{(s.fqdn.split('.'))[0]}}', 'location': 'http://{{s.fqdn}}:8086/write' }{% endfor %} ] } }{%- if not outer_loop.last %},{% endif -%}{% endfor %}]"
- name: Deploy influxdb-relay
import_role:
name: influxdb_relay
vars:
install_influxdb_relay: true
influxdb_relay_conf: "{{ influxdb_relay_data }}"