aboutsummaryrefslogtreecommitdiffstats
path: root/deploy/adapters/ansible/openstack_mitaka/roles
diff options
context:
space:
mode:
authorJustin chi <chigang@huawei.com>2016-12-20 02:29:33 +0000
committerGerrit Code Review <gerrit@opnfv.org>2016-12-20 02:29:33 +0000
commit14fdbaf022ca91025164f87b1f6d2e4c07305d7d (patch)
treea765a8e8d300a814a4c3f756861d33c185df6871 /deploy/adapters/ansible/openstack_mitaka/roles
parentf61c75bab4c8c6c0b08765bef8b5f75e87db6565 (diff)
parentcaecd2df90fd01fa363f3bb92adf2d28f2ed6dd3 (diff)
Merge "Add VIM registration for Tacker Mitaka"
Diffstat (limited to 'deploy/adapters/ansible/openstack_mitaka/roles')
-rw-r--r--deploy/adapters/ansible/openstack_mitaka/roles/tacker/files/tacker.conf36
-rwxr-xr-xdeploy/adapters/ansible/openstack_mitaka/roles/tacker/tasks/tacker_controller.yml215
-rw-r--r--deploy/adapters/ansible/openstack_mitaka/roles/tacker/templates/config.yaml4
-rw-r--r--deploy/adapters/ansible/openstack_mitaka/roles/tacker/templates/tackerc.sh12
4 files changed, 267 insertions, 0 deletions
diff --git a/deploy/adapters/ansible/openstack_mitaka/roles/tacker/files/tacker.conf b/deploy/adapters/ansible/openstack_mitaka/roles/tacker/files/tacker.conf
new file mode 100644
index 00000000..0c90dcb9
--- /dev/null
+++ b/deploy/adapters/ansible/openstack_mitaka/roles/tacker/files/tacker.conf
@@ -0,0 +1,36 @@
+description "OpenStack Tacker Server"
+author "Yifei Xue <xueyifei@huawei.com>"
+
+start on runlevel [2345]
+stop on runlevel [!2345]
+
+chdir /var/run
+
+respawn
+respawn limit 20 5
+limit nofile 65535 65535
+
+pre-start script
+ for i in lock run log lib ; do
+ mkdir -p /var/$i/tacker
+ chown root /var/$i/tacker
+ done
+end script
+
+script
+ [ -x "/usr/local/bin/tacker-server" ] || exit 0
+ DAEMON_ARGS=""
+ CONFIG_FILE="/usr/local/etc/tacker/tacker.conf"
+ USE_SYSLOG=""
+ USE_LOGFILE=""
+ NO_OPENSTACK_CONFIG_FILE_DAEMON_ARG=""
+ [ -r /etc/default/openstack ] && . /etc/default/openstack
+ [ -r /etc/default/$UPSTART_JOB ] && . /etc/default/$UPSTART_JOB
+ [ "x$USE_SYSLOG" = "xyes" ] && DAEMON_ARGS="$DAEMON_ARGS --use-syslog"
+ [ "x$USE_LOGFILE" != "xno" ] && DAEMON_ARGS="$DAEMON_ARGS --log-file=/var/log/tacker/tacker.log"
+ [ -z "$NO_OPENSTACK_CONFIG_FILE_DAEMON_ARG" ] && DAEMON_ARGS="$DAEMON_ARGS --config-file=$CONFIG_FILE"
+
+ exec start-stop-daemon --start --chdir /var/lib/tacker \
+ --chuid root:root --make-pidfile --pidfile /var/run/tacker/tacker.pid \
+ --exec /usr/local/bin/tacker-server -- ${DAEMON_ARGS}
+end script
diff --git a/deploy/adapters/ansible/openstack_mitaka/roles/tacker/tasks/tacker_controller.yml b/deploy/adapters/ansible/openstack_mitaka/roles/tacker/tasks/tacker_controller.yml
new file mode 100755
index 00000000..cd3b19e8
--- /dev/null
+++ b/deploy/adapters/ansible/openstack_mitaka/roles/tacker/tasks/tacker_controller.yml
@@ -0,0 +1,215 @@
+##############################################################################
+# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+---
+- name: get http server
+ shell: awk -F'=' '/compass_server/ {print $2}' /etc/compass.conf
+ register: http_server
+
+- name: creat tacker_home, tacker_client_home, tacker_horizon_home
+ shell: >
+ mkdir -p /opt/tacker
+ mkdir -p /opt/tacker_client
+ mkdir -p /opt/tacker_horizon
+
+- name: download tacker package
+ get_url: url="http://{{ http_server.stdout_lines[0] }}/packages/tacker/{{ tacker_pkg_name }}" dest=/opt/{{ tacker_pkg_name }}
+
+- name: download tacker_client package
+ get_url: url="http://{{ http_server.stdout_lines[0] }}/packages/tacker/{{ tacker_client_pkg_name }}" dest=/opt/{{ tacker_client_pkg_name }}
+
+- name: download tacker_horizon package
+ get_url: url="http://{{ http_server.stdout_lines[0] }}/packages/tacker/{{ tacker_horizon_pkg_name }}" dest=/opt/{{ tacker_horizon_pkg_name }}
+
+- name: extract tacker package
+ command: su -s /bin/sh -c "tar xzf /opt/{{ tacker_pkg_name }} -C {{ tacker_home }} --strip-components 1 --no-overwrite-dir -k --skip-old-files"
+
+- name: extract tacker_client package
+ command: su -s /bin/sh -c "tar xzf /opt/{{ tacker_client_pkg_name }} -C {{ tacker_client_home }} --strip-components 1 --no-overwrite-dir -k --skip-old-files"
+
+- name: extract tacker_horizon package
+ command: su -s /bin/sh -c "tar xzf /opt/{{ tacker_horizon_pkg_name }} -C {{ tacker_horizon_home }} --strip-components 1 --no-overwrite-dir -k --skip-old-files"
+
+- name: edit ml2_conf.ini
+ shell: crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 extension_drivers port_security;
+
+- name: Restart neutron-server
+ service: name=neutron-server state=restarted
+
+- name: "create haproxy configuration for tacker"
+ template:
+ src: "haproxy-tacker-cfg.j2"
+ dest: "/tmp/haproxy-tacker.cfg"
+
+- name: get the current haproxy configuration
+ shell: cat /etc/haproxy/haproxy.cfg
+ register: ha_cfg
+
+- name: "combination of the haproxy configuration"
+ shell: "cat /tmp/haproxy-tacker.cfg >> /etc/haproxy/haproxy.cfg"
+ when: ha_cfg.stdout.find('8888') == -1
+
+- name: "delete temporary configuration file"
+ file:
+ dest: "/tmp/haproxy-tacker.cfg"
+ state: "absent"
+
+- name: "restart haproxy"
+ service:
+ name: "haproxy"
+ state: "restarted"
+
+- name: drop and recreate tacker database
+ shell: mysql -e "drop database if exists tacker;";
+ mysql -e "create database tacker character set utf8;";
+ mysql -e "grant all on tacker.* to 'tacker'@'%' identified by 'TACKER_DBPASS';";
+ when: inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: get the openstack user info
+ shell: . /opt/admin-openrc.sh; openstack user list
+ register: user_info
+
+- name: get the openstack service info
+ shell: . /opt/admin-openrc.sh; openstack service list
+ register: service_info
+
+- name: get the openstack endpoint info
+ shell: . /opt/admin-openrc.sh; openstack endpoint list
+ register: endpoint_info
+
+- name: delete the existed tacker endpoint
+ shell: . /opt/admin-openrc.sh; openstack endpoint delete $(openstack endpoint list | grep tacker | awk '{print $2}')
+ when: endpoint_info.stdout.find('tacker') != -1 and inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: delete the existed tacker service
+ shell: . /opt/admin-openrc.sh; openstack service delete tacker
+ when: service_info.stdout.find('tacker') != -1 and inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: delete the existed tacker user
+ shell: . /opt/admin-openrc.sh; openstack user delete tacker
+ when: user_info.stdout.find('tacker') != -1 and inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: create tacker user with admin privileges
+ shell: . /opt/admin-openrc.sh; openstack user create --password console tacker; openstack role add --project service --user tacker admin;
+ when: inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: creat tacker service
+ shell: >
+ . /opt/admin-openrc.sh; openstack service create --name tacker --description "Tacker Project" nfv-orchestration
+ when: inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: provide an endpoint to tacker service
+ shell: >
+ . /opt/admin-openrc.sh; openstack endpoint create --region RegionOne \
+ --publicurl 'http://{{ public_vip.ip }}:8888/' \
+ --adminurl 'http://{{ internal_vip.ip }}:8888/' \
+ --internalurl 'http://{{ internal_vip.ip }}:8888/' tacker
+ when: inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: install pip package
+ pip: name=Babel state=present version=2.3.4
+
+- name: install pip packages
+ shell: >
+ pip install tosca-parser heat-translator oslosphinx;
+
+- name: install tacker
+ shell: >
+ . /opt/admin-openrc.sh; cd {{ tacker_home }}; python setup.py install
+
+- name: create 'tacker' directory in '/var/cache', set ownership and permissions
+ shell: >
+ mkdir -p /var/cache/tacker
+# sudo chown <LOGIN_USER>:root /var/cache/tacker
+# chmod 700 /var/cache/tacker
+
+- name: create 'tacker' directory in '/var/log'
+ shell: mkdir -p /var/log/tacker
+
+- name: copy tacker configs
+ template: src={{ item.src }} dest=/opt/os_templates
+ with_items: "{{ tacker_configs_templates }}"
+
+- name: edit tacker configuration file
+ shell: crudini --merge /usr/local/etc/tacker/tacker.conf < /opt/os_templates/tacker.j2
+
+- name: populate tacker database
+ shell: >
+ . /opt/admin-openrc.sh; /usr/local/bin/tacker-db-manage --config-file /usr/local/etc/tacker/tacker.conf upgrade head
+ when: inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: install tacker client
+ shell: >
+ . /opt/admin-openrc.sh; cd {{ tacker_client_home }}; python setup.py install
+
+- name: install tacker horizon
+ shell: >
+ . /opt/admin-openrc.sh; cd {{ tacker_horizon_home }}; python setup.py install
+
+- name: enable tacker horizon in dashboard
+ shell: >
+ cp {{ tacker_horizon_home }}/openstack_dashboard_extensions/* /usr/share/openstack-dashboard/openstack_dashboard/enabled/
+
+- name: restart apache server
+ shell: service apache2 restart
+
+- name: create tacker service
+ copy: src=tacker.conf dest=/etc/init
+
+- name: create tacker service work dir
+ file: path=/var/lib/tacker state=directory
+
+- name: link the tacker service
+ file:
+ src: /etc/init/tacker.conf
+ dest: /etc/init.d/tacker
+ state: link
+
+- name: start tacker service
+ shell: service tacker start
+
+- name: create tackerc file
+ template: src=tackerc.sh dest=/opt/tackerc.sh mode=777
+
+- name: get the nfv_user info
+ shell: . /opt/tackerc.sh; openstack user list
+ register: nfvuser_info
+
+- name: delete the existed nfv user
+ shell: . /opt/tackerc.sh; openstack user delete nfv_user
+ when: nfvuser_info.stdout.find('nfv') != -1 and inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: get the openstack project info
+ shell: . /opt/tackerc.sh; openstack project list
+ register: nfvproject_info
+
+- name: delete the existed nfv project
+ shell: . /opt/tackerc.sh; openstack project delete $(openstack project list | grep nfv | awk '{print $2}')
+ when: nfvproject_info.stdout.find('nfv') != -1 and inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: create an nfv project
+ shell: . /opt/tackerc.sh; openstack project create --description "NFV Project" nfv
+ when: inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: create nfv user with admin privileges
+ shell: . /opt/tackerc.sh; openstack user create --password console nfv_user; openstack role add --project nfv --user nfv_user admin;
+ when: inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: create config.yml
+ template: src=config.yaml dest=/opt/config.yaml
+
+- name: check if tacker running
+ shell: . /opt/tackerc.sh; while (!(tacker ext-list)); do sleep 30; done
+
+- name: register VIM to tacker
+ shell: . /opt/tackerc.sh; tacker vim-register --config-file /opt/config.yaml --description "OpenStack" --name VIM0
+ when: inventory_hostname == haproxy_hosts.keys()[0]
+
+- name: restart tacker service
+ shell: service tacker stop; service tacker start
+
diff --git a/deploy/adapters/ansible/openstack_mitaka/roles/tacker/templates/config.yaml b/deploy/adapters/ansible/openstack_mitaka/roles/tacker/templates/config.yaml
new file mode 100644
index 00000000..8f73e907
--- /dev/null
+++ b/deploy/adapters/ansible/openstack_mitaka/roles/tacker/templates/config.yaml
@@ -0,0 +1,4 @@
+auth_url: 'http://{{ public_vip.ip }}:5000/v2.0'
+username: 'nfv_user'
+password: 'console'
+project_name: 'nfv'
diff --git a/deploy/adapters/ansible/openstack_mitaka/roles/tacker/templates/tackerc.sh b/deploy/adapters/ansible/openstack_mitaka/roles/tacker/templates/tackerc.sh
new file mode 100644
index 00000000..c673e7f1
--- /dev/null
+++ b/deploy/adapters/ansible/openstack_mitaka/roles/tacker/templates/tackerc.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+export LC_ALL=C
+export OS_NO_CACHE=true
+export OS_TENANT_NAME=service
+export OS_PROJECT_NAME=service
+export OS_USERNAME=tacker
+export OS_PASSWORD=console
+export OS_AUTH_URL=http://{{ internal_vip.ip }}:5000/v2.0
+export OS_DEFAULT_DOMAIN=default
+export OS_AUTH_STRATEGY=keystone
+export OS_REGION_NAME=RegionOne
+export TACKER_ENDPOINT_TYPE=internalurl