Add skydive service
This patch introduces the ansible materials to deploy the skydive service, that can be used to monitor and troubleshoot networking in an openstack deployment. Implements: blueprint skydive-service Co-Authored-By: Nicolas Bouron <nicolas.bouron@gmail.com> Signed-off-by: Mathieu Rohon <mathieu.rohon@gmail.com> Change-Id: I53051a1b0c85380416288e17040a398b6efb62c0
This commit is contained in:
parent
28e4ae81cf
commit
43900bc8b6
@ -249,6 +249,10 @@ zun_api_port: "9517"
|
|||||||
|
|
||||||
ovsdb_port: "6640"
|
ovsdb_port: "6640"
|
||||||
|
|
||||||
|
skydive_analyzer_port: "8085"
|
||||||
|
skydive_agents_port: "8090"
|
||||||
|
|
||||||
|
|
||||||
public_protocol: "{{ 'https' if kolla_enable_tls_external | bool else 'http' }}"
|
public_protocol: "{{ 'https' if kolla_enable_tls_external | bool else 'http' }}"
|
||||||
internal_protocol: "http"
|
internal_protocol: "http"
|
||||||
admin_protocol: "http"
|
admin_protocol: "http"
|
||||||
@ -362,6 +366,7 @@ enable_rally: "no"
|
|||||||
enable_sahara: "no"
|
enable_sahara: "no"
|
||||||
enable_searchlight: "no"
|
enable_searchlight: "no"
|
||||||
enable_senlin: "no"
|
enable_senlin: "no"
|
||||||
|
enable_skydive: "no"
|
||||||
enable_solum: "no"
|
enable_solum: "no"
|
||||||
enable_swift: "no"
|
enable_swift: "no"
|
||||||
enable_tacker: "no"
|
enable_tacker: "no"
|
||||||
@ -394,7 +399,7 @@ enable_destroy_images: "no"
|
|||||||
elasticsearch_address: "{{ kolla_internal_vip_address }}"
|
elasticsearch_address: "{{ kolla_internal_vip_address }}"
|
||||||
elasticsearch_protocol: "{{ internal_protocol }}"
|
elasticsearch_protocol: "{{ internal_protocol }}"
|
||||||
|
|
||||||
enable_elasticsearch: "{{ 'yes' if enable_central_logging | bool or enable_freezer | bool or enable_osprofiler | bool else 'no' }}"
|
enable_elasticsearch: "{{ 'yes' if enable_central_logging | bool or enable_freezer | bool or enable_osprofiler | bool or enable_skydive | bool else 'no' }}"
|
||||||
enable_kibana: "{{ 'yes' if enable_central_logging | bool else 'no' }}"
|
enable_kibana: "{{ 'yes' if enable_central_logging | bool else 'no' }}"
|
||||||
|
|
||||||
####################
|
####################
|
||||||
|
@ -192,6 +192,9 @@ deployment
|
|||||||
[zun:children]
|
[zun:children]
|
||||||
control
|
control
|
||||||
|
|
||||||
|
[skydive:children]
|
||||||
|
monitoring
|
||||||
|
|
||||||
# Additional control implemented here. These groups allow you to control which
|
# Additional control implemented here. These groups allow you to control which
|
||||||
# services run on which hosts at a per-service level.
|
# services run on which hosts at a per-service level.
|
||||||
#
|
#
|
||||||
@ -542,3 +545,12 @@ zun
|
|||||||
|
|
||||||
[zun-compute:children]
|
[zun-compute:children]
|
||||||
compute
|
compute
|
||||||
|
|
||||||
|
# Skydive
|
||||||
|
[skydive-analyzer:children]
|
||||||
|
skydive
|
||||||
|
|
||||||
|
[skydive-agent:children]
|
||||||
|
compute
|
||||||
|
network
|
||||||
|
|
||||||
|
@ -210,6 +210,9 @@ deployment
|
|||||||
[zun:children]
|
[zun:children]
|
||||||
control
|
control
|
||||||
|
|
||||||
|
[skydive:children]
|
||||||
|
monitoring
|
||||||
|
|
||||||
# Additional control implemented here. These groups allow you to control which
|
# Additional control implemented here. These groups allow you to control which
|
||||||
# services run on which hosts at a per-service level.
|
# services run on which hosts at a per-service level.
|
||||||
#
|
#
|
||||||
@ -560,3 +563,11 @@ zun
|
|||||||
|
|
||||||
[zun-compute:children]
|
[zun-compute:children]
|
||||||
compute
|
compute
|
||||||
|
|
||||||
|
# Skydive
|
||||||
|
[skydive-analyzer:children]
|
||||||
|
skydive
|
||||||
|
|
||||||
|
[skydive-agent:children]
|
||||||
|
compute
|
||||||
|
network
|
||||||
|
@ -822,6 +822,22 @@ listen zun_api_external
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if enable_skydive | bool %}
|
||||||
|
listen skydive_server
|
||||||
|
bind {{ kolla_internal_vip_address }}:{{ skydive_analyzer_port }}
|
||||||
|
{% for host in groups['skydive-analyzer'] %}
|
||||||
|
server {{ hostvars[host]['ansible_hostname'] }} {{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ skydive_analyzer_port }} check inter 2000 rise 2 fall 5
|
||||||
|
{% endfor %}
|
||||||
|
{% if haproxy_enable_external_vip | bool %}
|
||||||
|
|
||||||
|
listen skydive_server_external
|
||||||
|
bind {{ kolla_external_vip_address }}:{{ skydive_analyzer_port }} {{ tls_bind_info }}
|
||||||
|
{% for host in groups['skydive-analyzer'] %}
|
||||||
|
server {{ hostvars[host]['ansible_hostname'] }} {{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ skydive_analyzer_port }} check inter 2000 rise 2 fall 5
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
# (NOTE): This defaults section deletes forwardfor as recommended by:
|
# (NOTE): This defaults section deletes forwardfor as recommended by:
|
||||||
# https://marc.info/?l=haproxy&m=141684110710132&w=1
|
# https://marc.info/?l=haproxy&m=141684110710132&w=1
|
||||||
|
|
||||||
@ -852,3 +868,4 @@ listen mariadb
|
|||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
35
ansible/roles/skydive/defaults/main.yml
Normal file
35
ansible/roles/skydive/defaults/main.yml
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
---
|
||||||
|
project_name: "skydive"
|
||||||
|
|
||||||
|
skydive_services:
|
||||||
|
skydive-analyzer:
|
||||||
|
container_name: skydive_analyzer
|
||||||
|
group: skydive-analyzer
|
||||||
|
enabled: true
|
||||||
|
image: "{{ skydive_analyzer_image_full }}"
|
||||||
|
volumes:
|
||||||
|
- "{{ node_config_directory }}/skydive-analyzer/:{{ container_config_directory }}/:ro"
|
||||||
|
- "/etc/localtime:/etc/localtime:ro"
|
||||||
|
- "kolla_logs:/var/log/kolla/"
|
||||||
|
skydive-agent:
|
||||||
|
container_name: skydive_agent
|
||||||
|
group: skydive-agent
|
||||||
|
enabled: true
|
||||||
|
image: "{{ skydive_agent_image_full }}"
|
||||||
|
volumes:
|
||||||
|
- "{{ node_config_directory }}/skydive-agent/:{{ container_config_directory }}/:ro"
|
||||||
|
- "/etc/localtime:/etc/localtime:ro"
|
||||||
|
- "/var/run/openvswitch/db.sock:/var/run/openvswitch/db.sock:ro"
|
||||||
|
- "kolla_logs:/var/log/kolla/"
|
||||||
|
|
||||||
|
####################
|
||||||
|
# Docker
|
||||||
|
####################
|
||||||
|
skydive_analyzer_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-skydive-analyzer"
|
||||||
|
skydive_analyzer_tag: "{{ openstack_release }}"
|
||||||
|
skydive_analyzer_image_full: "{{ skydive_analyzer_image }}:{{ skydive_analyzer_tag }}"
|
||||||
|
|
||||||
|
skydive_agent_image: "{{ docker_registry ~ '/' if docker_registry else '' }}{{ docker_namespace }}/{{ kolla_base_distro }}-{{ kolla_install_type }}-skydive-agent"
|
||||||
|
skydive_agent_tag: "{{ openstack_release }}"
|
||||||
|
skydive_agent_image_full: "{{ skydive_agent_image }}:{{ skydive_agent_tag }}"
|
||||||
|
|
43
ansible/roles/skydive/handlers/main.yml
Normal file
43
ansible/roles/skydive/handlers/main.yml
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
---
|
||||||
|
- name: Restart skydive-analyzer container
|
||||||
|
vars:
|
||||||
|
service_name: "skydive-analyzer"
|
||||||
|
service: "{{ skydive_services[service_name] }}"
|
||||||
|
config_json: "{{ skydive_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
|
||||||
|
skydive_conf: "{{ skydive_confs.results|selectattr('item.key', 'equalto', service_name)|first }}"
|
||||||
|
skydive_analyzer_container: "{{ check_skydive_containers.results|selectattr('item.key', 'equalto', service_name)|first }}"
|
||||||
|
kolla_docker:
|
||||||
|
action: "recreate_or_restart_container"
|
||||||
|
common_options: "{{ docker_common_options }}"
|
||||||
|
name: "{{ service.container_name }}"
|
||||||
|
image: "{{ service.image }}"
|
||||||
|
volumes: "{{ service.volumes }}"
|
||||||
|
when:
|
||||||
|
- action != "config"
|
||||||
|
- inventory_hostname in groups[service.group]
|
||||||
|
- service.enabled | bool
|
||||||
|
- config_json.changed | bool
|
||||||
|
or skydive_conf.changed |bool
|
||||||
|
or skydive_analyzer_container.changed | bool
|
||||||
|
|
||||||
|
- name: Restart skydive-agent container
|
||||||
|
vars:
|
||||||
|
service_name: "skydive-agent"
|
||||||
|
service: "{{ skydive_services[service_name] }}"
|
||||||
|
config_json: "{{ skydive_config_jsons.results|selectattr('item.key', 'equalto', service_name)|first }}"
|
||||||
|
skydive_conf: "{{ skydive_confs.results|selectattr('item.key', 'equalto', service_name)|first }}"
|
||||||
|
skydive_agent_container: "{{ check_skydive_containers.results|selectattr('item.key', 'equalto', service_name)|first }}"
|
||||||
|
kolla_docker:
|
||||||
|
action: "recreate_or_restart_container"
|
||||||
|
common_options: "{{ docker_common_options }}"
|
||||||
|
name: "{{ service.container_name }}"
|
||||||
|
image: "{{ service.image }}"
|
||||||
|
volumes: "{{ service.volumes }}"
|
||||||
|
when:
|
||||||
|
- action != "config"
|
||||||
|
- inventory_hostname in groups[service.group]
|
||||||
|
- service.enabled | bool
|
||||||
|
- config_json.changed | bool
|
||||||
|
or skydive_conf.changed |bool
|
||||||
|
or skydive_agent_container.changed | bool
|
||||||
|
|
3
ansible/roles/skydive/meta/main.yml
Normal file
3
ansible/roles/skydive/meta/main.yml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
dependencies:
|
||||||
|
- { role: common }
|
53
ansible/roles/skydive/tasks/config.yml
Normal file
53
ansible/roles/skydive/tasks/config.yml
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
---
|
||||||
|
- name: Ensuring config directories exist
|
||||||
|
file:
|
||||||
|
path: "{{ node_config_directory }}/{{ item.key }}/config"
|
||||||
|
state: "directory"
|
||||||
|
recurse: yes
|
||||||
|
when:
|
||||||
|
- inventory_hostname in groups[item.value.group]
|
||||||
|
- item.value.enabled | bool
|
||||||
|
with_dict: "{{ skydive_services }}"
|
||||||
|
|
||||||
|
- name: Copying over default config.json files
|
||||||
|
template:
|
||||||
|
src: "{{ item.key }}.json.j2"
|
||||||
|
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
|
||||||
|
register: skydive_config_jsons
|
||||||
|
when:
|
||||||
|
- inventory_hostname in groups[item.value.group]
|
||||||
|
- item.value.enabled | bool
|
||||||
|
with_dict: "{{ skydive_services }}"
|
||||||
|
notify:
|
||||||
|
- Restart skydive-analyzer container
|
||||||
|
- Restart skydive-agent container
|
||||||
|
|
||||||
|
- name: Copying over skydive config file
|
||||||
|
template:
|
||||||
|
src: "{{ item.key }}.conf.j2"
|
||||||
|
dest: "{{ node_config_directory }}/{{ item.key }}/skydive.conf"
|
||||||
|
register: skydive_confs
|
||||||
|
when:
|
||||||
|
- item.value.enabled | bool
|
||||||
|
- inventory_hostname in groups[item.value.group]
|
||||||
|
with_dict: "{{ skydive_services }}"
|
||||||
|
notify:
|
||||||
|
- Restart skydive-analyzer container
|
||||||
|
- Restart skydive-agent container
|
||||||
|
|
||||||
|
- name: Check skydive containers
|
||||||
|
kolla_docker:
|
||||||
|
action: "compare_container"
|
||||||
|
common_options: "{{ docker_common_options }}"
|
||||||
|
name: "{{ item.value.container_name }}"
|
||||||
|
image: "{{ item.value.image }}"
|
||||||
|
volumes: "{{ item.value.volumes }}"
|
||||||
|
register: check_skydive_containers
|
||||||
|
when:
|
||||||
|
- action != "config"
|
||||||
|
- inventory_hostname in groups[item.value.group]
|
||||||
|
- item.value.enabled | bool
|
||||||
|
with_dict: "{{ skydive_services }}"
|
||||||
|
notify:
|
||||||
|
- Restart skydive-analyzer container
|
||||||
|
- Restart skydive-agent container
|
7
ansible/roles/skydive/tasks/deploy.yml
Normal file
7
ansible/roles/skydive/tasks/deploy.yml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
- include: config.yml
|
||||||
|
when: inventory_hostname in groups['skydive-analyzer'] or
|
||||||
|
inventory_hostname in groups['skydive-agent']
|
||||||
|
|
||||||
|
- name: Flush handlers
|
||||||
|
meta: flush_handlers
|
2
ansible/roles/skydive/tasks/main.yml
Normal file
2
ansible/roles/skydive/tasks/main.yml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
---
|
||||||
|
- include: "{{ action }}.yml"
|
34
ansible/roles/skydive/tasks/precheck.yml
Normal file
34
ansible/roles/skydive/tasks/precheck.yml
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
---
|
||||||
|
- name: Get container facts
|
||||||
|
kolla_container_facts:
|
||||||
|
name:
|
||||||
|
- skydive_analyzer
|
||||||
|
- skydive_agent
|
||||||
|
register: container_facts
|
||||||
|
|
||||||
|
- name: Checking free port for Skydive Analyzer
|
||||||
|
vars:
|
||||||
|
skydive_analyzer: "{{ skydive_services['skydive-analyzer'] }}"
|
||||||
|
wait_for:
|
||||||
|
host: "{{ api_interface_address }}"
|
||||||
|
port: "{{ skydive_analyzer_port }}"
|
||||||
|
connect_timeout: 1
|
||||||
|
state: stopped
|
||||||
|
when:
|
||||||
|
- container_facts['skydive_analyzer'] is not defined
|
||||||
|
- inventory_hostname in groups[skydive_analyzer.group]
|
||||||
|
- skydive_analyzer.enabled | bool
|
||||||
|
|
||||||
|
- name: Checking free port for Skydive Agent
|
||||||
|
vars:
|
||||||
|
skydive_agent: "{{ skydive_services['skydive-agent'] }}"
|
||||||
|
wait_for:
|
||||||
|
host: "{{ api_interface_address }}"
|
||||||
|
port: "{{ skydive_agents_port }}"
|
||||||
|
connect_timeout: 1
|
||||||
|
state: stopped
|
||||||
|
when:
|
||||||
|
- container_facts['skydive_agent'] is not defined
|
||||||
|
- inventory_hostname in groups[skydive_agent.group]
|
||||||
|
- skydive_agent.enabled | bool
|
||||||
|
|
10
ansible/roles/skydive/tasks/pull.yml
Normal file
10
ansible/roles/skydive/tasks/pull.yml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
- name: Pulling skydive images
|
||||||
|
kolla_docker:
|
||||||
|
action: "pull_image"
|
||||||
|
common_options: "{{ docker_common_options }}"
|
||||||
|
image: "{{ item.value.image }}"
|
||||||
|
when:
|
||||||
|
- inventory_hostname in groups[item.value.group]
|
||||||
|
- item.value.enabled | bool
|
||||||
|
with_dict: "{{ skydive_services }}"
|
2
ansible/roles/skydive/tasks/reconfigure.yml
Normal file
2
ansible/roles/skydive/tasks/reconfigure.yml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
---
|
||||||
|
- include: "deploy.yml"
|
5
ansible/roles/skydive/tasks/upgrade.yml
Normal file
5
ansible/roles/skydive/tasks/upgrade.yml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
- include: config.yml
|
||||||
|
|
||||||
|
- name: Flush handlers
|
||||||
|
meta: flush_handlers
|
54
ansible/roles/skydive/templates/skydive-agent.conf.j2
Normal file
54
ansible/roles/skydive/templates/skydive-agent.conf.j2
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
### Skydive agent config file
|
||||||
|
|
||||||
|
auth:
|
||||||
|
type: keystone
|
||||||
|
analyzer_username: {{ openstack_auth['username'] }}
|
||||||
|
analyzer_password: {{ openstack_auth['password'] }}
|
||||||
|
|
||||||
|
logging:
|
||||||
|
default: DEBUG
|
||||||
|
topology/probes: INFO
|
||||||
|
topology/graph: INFO
|
||||||
|
|
||||||
|
openstack:
|
||||||
|
auth_url: {{ keystone_public_url }}/v3
|
||||||
|
username: {{ openstack_auth['username'] }}
|
||||||
|
password: {{ openstack_auth['password'] }}
|
||||||
|
tenant_name: {{ openstack_auth['project_name'] }}
|
||||||
|
region_name: {{ openstack_region_name }}
|
||||||
|
domain_name: Default
|
||||||
|
|
||||||
|
etcd:
|
||||||
|
servers:
|
||||||
|
{% if enable_etcd == "yes" %}
|
||||||
|
{% for host in groups['etcd'] %}
|
||||||
|
- http://{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ etcd_client_port }}
|
||||||
|
{% endfor %}
|
||||||
|
{% else %}
|
||||||
|
{% for host in groups['skydive-analyzer'] %}
|
||||||
|
- http://{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ etcd_client_port }}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
analyzers:
|
||||||
|
{% for host in groups['skydive-analyzer'] %}
|
||||||
|
- {{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ skydive_analyzer_port }}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
agent:
|
||||||
|
listen: {{ hostvars[inventory_hostname]['ansible_' + hostvars[inventory_hostname]['api_interface']]['ipv4']['address'] }}:{{ skydive_agents_port }}
|
||||||
|
flow:
|
||||||
|
probes:
|
||||||
|
- gopacket
|
||||||
|
{% if neutron_plugin_agent == "openvswitch" %}
|
||||||
|
- ovssflow
|
||||||
|
{% endif %}
|
||||||
|
topology:
|
||||||
|
probes:
|
||||||
|
- netlink
|
||||||
|
- netns
|
||||||
|
- neutron
|
||||||
|
{% if neutron_plugin_agent == "openvswitch" %}
|
||||||
|
- ovsdb
|
||||||
|
{% endif %}
|
||||||
|
|
18
ansible/roles/skydive/templates/skydive-agent.json.j2
Normal file
18
ansible/roles/skydive/templates/skydive-agent.json.j2
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"command": "skydive agent --conf /etc/skydive/skydive.conf --listen={{ api_interface_address }}:{{ skydive_agents_port }}",
|
||||||
|
"config_files": [
|
||||||
|
{
|
||||||
|
"source": "{{ container_config_directory }}/skydive.conf",
|
||||||
|
"dest": "/etc/skydive/skydive.conf",
|
||||||
|
"owner": "skydive",
|
||||||
|
"perm": "0600"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"permissions": [
|
||||||
|
{
|
||||||
|
"path": "/var/log/kolla/skydive",
|
||||||
|
"owner": "skydive:skydive",
|
||||||
|
"recurse": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
62
ansible/roles/skydive/templates/skydive-analyzer.conf.j2
Normal file
62
ansible/roles/skydive/templates/skydive-analyzer.conf.j2
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
### Skydive analyzer config file
|
||||||
|
|
||||||
|
auth:
|
||||||
|
type: keystone
|
||||||
|
|
||||||
|
logging:
|
||||||
|
default: DEBUG
|
||||||
|
topology/probes: INFO
|
||||||
|
topology/graph: INFO
|
||||||
|
|
||||||
|
openstack:
|
||||||
|
auth_url: {{ keystone_public_url }}/v3
|
||||||
|
tenant_name: {{ openstack_auth['project_name'] }}
|
||||||
|
region_name: {{ openstack_region_name }}
|
||||||
|
domain_name: Default
|
||||||
|
|
||||||
|
etcd:
|
||||||
|
client_timeout: 100
|
||||||
|
{% if enable_etcd == "yes" %}
|
||||||
|
embeded: no
|
||||||
|
servers:
|
||||||
|
{% for host in groups['etcd'] %}
|
||||||
|
- http://{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ etcd_client_port }}
|
||||||
|
{% endfor %}
|
||||||
|
{% else %}
|
||||||
|
embeded: yes
|
||||||
|
servers:
|
||||||
|
{% for host in groups['skydive-analyzer'] %}
|
||||||
|
- http://{{ hostvars[host]['ansible_' + hostvars[host]['api_interface']]['ipv4']['address'] }}:{{ etcd_client_port }}
|
||||||
|
{% endfor %}
|
||||||
|
listen: {{ api_interface_address }}:{{ etcd_client_port }}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
analyzer:
|
||||||
|
listen: {{ api_interface_address }}:{{ skydive_analyzer_port }}
|
||||||
|
flowtable_expire: 60
|
||||||
|
flowtable_update: 5
|
||||||
|
flowtable_agent_ratio: 0.5
|
||||||
|
storage:
|
||||||
|
backend: elasticsearch
|
||||||
|
{% if groups['skydive-agent'] | length > 1 %}
|
||||||
|
topology:
|
||||||
|
fabric:
|
||||||
|
{% for interface in [network_interface, neutron_external_interface]|unique %}
|
||||||
|
{% set interfaces_loop = loop %}
|
||||||
|
{% for host in groups['skydive-agent'] %}
|
||||||
|
- TOR{{ interfaces_loop.index }}[Name=tor{{ interfaces_loop.index }}] -> TOR{{ interfaces_loop.index }}_PORT{{ loop.index }}[Name=port{{ loop.index }}, MTU=1500]
|
||||||
|
- TOR{{ interfaces_loop.index }}_PORT{{ loop.index }} -> *[Type=host,Name={{ hostvars[host]['ansible_hostname'] }}]/{{ interface }}
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
storage:
|
||||||
|
elasticsearch:
|
||||||
|
host: {{ elasticsearch_address }}:{{ elasticsearch_port }}
|
||||||
|
maxconns: 10
|
||||||
|
retry: 60
|
||||||
|
|
||||||
|
graph:
|
||||||
|
embeded: true
|
||||||
|
client_timeout: 100
|
||||||
|
|
18
ansible/roles/skydive/templates/skydive-analyzer.json.j2
Normal file
18
ansible/roles/skydive/templates/skydive-analyzer.json.j2
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"command": "skydive analyzer --conf /etc/skydive/skydive.conf --listen={{ api_interface_address }}:{{ skydive_analyzer_port }}",
|
||||||
|
"config_files": [
|
||||||
|
{
|
||||||
|
"source": "{{ container_config_directory }}/skydive.conf",
|
||||||
|
"dest": "/etc/skydive/skydive.conf",
|
||||||
|
"owner": "skydive",
|
||||||
|
"perm": "0600"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"permissions": [
|
||||||
|
{
|
||||||
|
"path": "/var/log/kolla/skydive",
|
||||||
|
"owner": "skydive:skydive",
|
||||||
|
"recurse": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -634,3 +634,14 @@
|
|||||||
- { role: zun,
|
- { role: zun,
|
||||||
tags: zun,
|
tags: zun,
|
||||||
when: enable_zun | bool }
|
when: enable_zun | bool }
|
||||||
|
|
||||||
|
- name: Apply role skydive
|
||||||
|
hosts:
|
||||||
|
- skydive-agent
|
||||||
|
- skydive-analyzer
|
||||||
|
serial: '{{ serial|default("0") }}'
|
||||||
|
roles:
|
||||||
|
- { role: skydive,
|
||||||
|
tags: skydive,
|
||||||
|
when: enable_skydive | bool }
|
||||||
|
|
||||||
|
@ -186,6 +186,7 @@ kolla_internal_vip_address: "10.10.10.254"
|
|||||||
#enable_sahara: "no"
|
#enable_sahara: "no"
|
||||||
#enable_searchlight: "no"
|
#enable_searchlight: "no"
|
||||||
#enable_senlin: "no"
|
#enable_senlin: "no"
|
||||||
|
#enable_skydive: "no"
|
||||||
#enable_solum: "no"
|
#enable_solum: "no"
|
||||||
#enable_swift: "no"
|
#enable_swift: "no"
|
||||||
#enable_telegraf: "no"
|
#enable_telegraf: "no"
|
||||||
|
Loading…
Reference in New Issue
Block a user