blob: ee8846c92fc8354ba1bd50e72add4a66cac3eddf [file] [log] [blame]
---
- hosts: {{ instance_name }}
gather_facts: False
connection: ssh
user: {{ username }}
sudo: yes
vars:
appname: {{ appname }}
dependencies: {{ dependencies }}
{% if component_configs %}
component_configs:
{% for component_config in component_configs %}
- component: {{ component_config.component }}
config_params: {{ component_config.config_params }}
{% endfor %}
{% endif %}
{% if rest_configs %}
rest_configs:
{% for rest_config in rest_configs %}
- endpoint: {{ rest_config.endpoint }}
body: "{{ '{{' }} lookup('file', '{{ files_dir }}/{{ rest_config.fn }}') {{ '}}' }}"
{% endfor %}
{% endif %}
{% if early_rest_configs %}
early_rest_configs:
{% for early_rest_config in early_rest_configs %}
- endpoint: {{ early_rest_config.endpoint }}
body: "{{ '{{' }} lookup('file', '{{ files_dir }}/{{ early_rest_config.fn }}') {{ '}}' }}"
{% endfor %}
{% endif %}
tasks:
- name: Get Docker IP
script: /opt/xos/synchronizers/onos/scripts/dockerip.sh {{ ONOS_container }}
register: onosaddr
- name: Wait for ONOS to come up
wait_for:
host={{ '{{' }} onosaddr.stdout {{ '}}' }}
port={{ '{{' }} item {{ '}}' }}
state=present
with_items:
- 8101
- 8181
- 9876
- name: Config file directory
file:
path=/home/ubuntu/{{ appname }}/
state=directory
{% if node_key_fn %}
- name: Copy over key
copy:
src={{ files_dir }}/{{ node_key_fn }}
dest=/home/ubuntu/node_key
- name: Copy node key into container
shell: docker cp /home/ubuntu/node_key {{ ONOS_container }}:/root/node_key
{% endif %}
{% if config_fns %}
- name: Copy over configuration files
copy:
src={{ files_dir }}/{{ '{{' }} item {{ '}}' }}
dest=/home/ubuntu/{{ appname }}/{{ '{{' }} item {{ '}}' }}
with_items:
{% for config_fn in config_fns %}
- {{ config_fn }}
{% endfor %}
- name: Make sure config directory exists
shell: docker exec {{ ONOS_container }} mkdir -p /root/onos/config/
sudo: yes
- name: Copy config files into container
shell: docker cp {{ appname }}/{{ '{{' }} item {{ '}}' }} {{ ONOS_container }}:/root/onos/config/
sudo: yes
with_items:
{% for config_fn in config_fns %}
- {{ config_fn }}
{% endfor %}
{% endif %}
# Don't know how to check for this condition, just wait
- name: Wait for ONOS to install the apps
wait_for: timeout=15
{% if early_rest_configs %}
- name: Add ONOS early configuration values
uri:
url: http://{{ '{{' }} onosaddr.stdout {{ '}}' }}:8181/{{ '{{' }} item.endpoint {{ '}}' }}
body: "{{ '{{' }} item.body {{ '}}' }}"
body_format: json
method: POST
user: karaf
password: karaf
with_items: "early_rest_configs"
# Don't know how to check for this condition, just wait
- name: Wait for ONOS to restart
wait_for: timeout=15
{% endif %}
{% if install_dependencies %}
- name: Install app file directory
file:
path=/home/ubuntu/{{ appname }}/apps/
state=directory
- name: Copy over app install files to ONOS host
copy:
src=/opt/xos/synchronizers/onos/{{ '{{' }} item {{ '}}' }}
dest=/home/ubuntu/{{ appname }}/apps/{{ '{{' }} item {{ '}}' }}
with_items:
{% for install_app in install_dependencies %}
- {{ install_app }}
{% endfor %}
- name: POST onos-app install command
command: >
curl -XPOST -HContent-Type:application/octet-stream -u karaf:karaf --data-binary @/home/ubuntu/{{ appname }}/apps/{{ '{{' }} item {{ '}}' }} http://{{ '{{' }} onosaddr.stdout {{ '}}' }}:8181/onos/v1/applications
with_items:
{% for dependency in install_dependencies %}
- {{ dependency }}
{% endfor %}
{% endif %}
{% if dependencies %}
- name: Add dependencies to ONOS
uri:
url: http://{{ '{{' }} onosaddr.stdout {{ '}}' }}:8181/onos/v1/applications/{{ '{{' }} item {{ '}}' }}/active
method: POST
user: karaf
password: karaf
with_items:
{% for dependency in dependencies %}
- {{ dependency }}
{% endfor %}
{% endif %}
{% if component_configs %}
- name: Add ONOS component configuration values
command: >
curl -XPOST -HContent-Type:application/json -u karaf:karaf -d {{ '{{' }} item.config_params | to_json {{ '}}' }} http://{{ '{{' }} onosaddr.stdout {{ '}}' }}:8181/onos/v1/configuration/{{
'{{' }} item.component {{ '}}' }}
with_items: "component_configs"
# uri:
# url: http://{{ '{{' }} onosaddr.stdout {{ '}}' }}:8181/onos/v1/configuration/{{ '{{' }} item.component {{ '}}' }} #http://localhost:8181/onos/v1/configuration/
# body: "{{ '{{' }} item.config_params | to_json {{ '}}' }}"
# body_format: json
# method: POST
# user: karaf
# password: karaf
# with_items: "component_configs"
{% endif %}
{% if rest_configs %}
# Do this after services have been activated, or it will cause an exception.
# vOLT will re-read its net config; vbng may not.
- name: Add ONOS configuration values
uri:
url: http://{{ '{{' }} onosaddr.stdout {{ '}}' }}:8181/{{ '{{' }} item.endpoint {{ '}}' }} #http://localhost:8181/onos/v1/network/configuration/
body: "{{ '{{' }} item.body {{ '}}' }}"
body_format: json
method: POST
user: karaf
password: karaf
with_items: "rest_configs"
{% endif %}