diff --git a/defaults/main.yml b/defaults/main.yml index aa682be..6bb3106 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -29,4 +29,48 @@ congress_bin: "/openstack/venvs/congress-{{ congress_venv_tag }}/bin" congress_venv_download_url: http://127.0.0.1/venvs/untagged/ubuntu/congress.tgz congress_requires_pip_packages: - - virtualenv \ No newline at end of file + - virtualenv + +## System info +congress_system_user_name: congress +congress_system_group_name: congress +congress_system_shell: /bin/false +congress_system_comment: congress system user +congress_system_user_home: "/var/lib/{{ congress_system_user_name }}" + +## Database credentials +congress_db_name: congress +congress_db_user: root +congress_db_login_host: "" +congress_db_login_user: "" +congress_db_login_password: "" +congress_db_user_password: "" + +## Service Type and Data +congress_service_region: RegionOne +congress_service_name: congress +congress_service_proto: http +congress_service_type: nfv-orchestration +congress_service_description: "congress service" +congress_service_publicuri: "{{ congress_service_publicuri_proto }}://{{ external_lb_vip_address }}:{{ congress_service_port }}" +congress_service_publicurl: "{{ congress_service_publicuri }}" +congress_service_internaluri: "{{ congress_service_internaluri_proto }}://{{ internal_lb_vip_address }}:{{ congress_service_port }}" +congress_service_internalurl: "{{ congress_service_internaluri }}" +congress_service_adminuri: "{{ congress_service_adminuri_proto }}://{{ internal_lb_vip_address }}:{{ congress_service_port }}" +congress_service_adminurl: "{{ congress_service_adminuri }}" +congress_service_registry_proto: "{{ congress_service_proto }}" +congress_service_publicuri_proto: "{{ openstack_service_publicuri_proto | default(congress_service_proto) }}" +congress_service_adminuri_proto: "{{ openstack_service_adminuri_proto | default(congress_service_proto) }}" +congress_service_internaluri_proto: "{{ openstack_service_internaluri_proto | default(congress_service_proto) }}" + +#NOTE: move password to tests/test-vars.yml +congress_service_password: password + +## Keystone +congress_service_project_domain_id: default +congress_service_project_name: service +congress_service_user_domain_id: default +congress_service_user_name: congress +congress_keystone_auth_plugin: password + +congress_service_in_ldap: false diff --git a/tasks/congress_init.yml b/tasks/congress_init.yml new file mode 100644 index 0000000..19378a6 --- /dev/null +++ b/tasks/congress_init.yml @@ -0,0 +1,90 @@ +--- +# Copyright 2017, taseer94@gmail.com +# All rights reserved. +# +# 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. + +- name: Ensure congress service + keystone: + command: "ensure_service" + endpoint: "{{ keystone_service_adminurl }}" + login_user: "{{ keystone_admin_user_name }}" + login_password: "{{ keystone_auth_admin_password }}" + login_project_name: "{{ keystone_admin_tenant_name }}" + service_name: "{{ congress_service_name }}" + service_type: "{{ congress_service_type }}" + description: "{{ congress_service_description }}" + insecure: "{{ keystone_service_adminuri_insecure }}" + register: add_service + until: add_service|success + retries: 5 + delay: 2 + +# Create an admin user +- name: Ensure congress user + keystone: + command: "ensure_user" + endpoint: "{{ keystone_service_adminurl }}" + login_user: "{{ keystone_admin_user_name }}" + login_password: "{{ keystone_auth_admin_password }}" + login_project_name: "{{ keystone_admin_tenant_name }}" + user_name: "{{ congress_service_user_name }}" + tenant_name: "{{ congress_service_project_name }}" + password: "{{ congress_service_password }}" + insecure: "{{ keystone_service_adminuri_insecure }}" + register: add_service + when: not congress_service_in_ldap | bool + until: add_service|success + retries: 5 + delay: 10 + +- name: Ensure congress user to admin role + keystone: + command: "ensure_user_role" + endpoint: "{{ keystone_service_adminurl }}" + login_user: "{{ keystone_admin_user_name }}" + login_password: "{{ keystone_auth_admin_password }}" + login_project_name: "{{ keystone_admin_tenant_name }}" + user_name: "{{ congress_service_user_name }}" + tenant_name: "{{ congress_service_project_name }}" + role_name: "{{ congress_role_name }}" + insecure: "{{ keystone_service_adminuri_insecure }}" + register: add_service + when: not congress_service_in_ldap | bool + until: add_service|success + retries: 5 +delay: 10 + +# Create an endpoint +- name: Ensure congress endpoint + keystone: + command: "ensure_endpoint" + endpoint: "{{ keystone_service_adminurl }}" + login_user: "{{ keystone_admin_user_name }}" + login_password: "{{ keystone_auth_admin_password }}" + login_project_name: "{{ keystone_admin_tenant_name }}" + region_name: "{{ congress_service_region }}" + service_name: "{{ congress_service_name }}" + service_type: "{{ congress_service_type }}" + insecure: "{{ keystone_service_adminuri_insecure }}" + endpoint_list: + - url: "{{ congress_service_publicurl }}" + interface: "public" + - url: "{{ congress_service_internalurl }}" + interface: "internal" + - url: "{{ congress_service_adminurl }}" + interface: "admin" + register: add_service + until: add_service|success + retries: 5 +delay: 10 \ No newline at end of file diff --git a/tasks/congress_install.yml b/tasks/congress_install.yml index 8a465cc..55ef43b 100644 --- a/tasks/congress_install.yml +++ b/tasks/congress_install.yml @@ -14,74 +14,85 @@ # See the License for the specific language governing permissions and # limitations under the License. -- name: Install required pip packages - pip: - name: "{{ congress_requires_pip_packages | join(' ') }}" - state: "{{ congress_package_state }}" - register: install_packages - until: install_packages|success - retries: 5 - delay: 2 +- name: clone congress repo + git: + repo: "{{ congress_git_repo }}" + dest: /opt/congress + clone: yes -- name: Retrieve checksum for venv download - uri: - url: "{{ congress_venv_download_url | replace('tgz', 'checksum') }}" - return_content: yes - register: congress_venv_checksum - when: not congress_developer_mode | bool +- name: install congress + shell: python setup.py install + args: + chdir: /opt/congress -- name: Attempt venv download - get_url: - url: "{{ congress_venv_download_url }}" - dest: "/var/cache/{{ congress_venv_download_url | basename }}" - checksum: "sha1:{{ congress_venv_checksum.content | trim }}" - register: congress_get_venv - when: not congress_developer_mode | bool +#- name: Install required pip packages +# pip: +# name: "{{ congress_requires_pip_packages | join(' ') }}" +# state: "{{ congress_package_state }}" +# register: install_packages +# until: install_packages|success +# retries: 5 +# delay: 2 -- name: Remove existing venv - file: - path: "{{ congress_bin | dirname }}" - state: absent - when: congress_get_venv | changed +#- name: Retrieve checksum for venv download +# uri: +# url: "{{ congress_venv_download_url | replace('tgz', 'checksum') }}" +# return_content: yes +# register: congress_venv_checksum +# when: not congress_developer_mode | bool -- name: Create congress venv dir - file: - path: "{{ congress_bin | dirname }}" - state: directory - register: congress_venv_dir - when: not congress_developer_mode | bool +#- name: Attempt venv download +# get_url: +# url: "{{ congress_venv_download_url }}" +# dest: "/var/cache/{{ congress_venv_download_url | basename }}" +# checksum: "sha1:{{ congress_venv_checksum.content | trim }}" +# register: congress_get_venv +# when: not congress_developer_mode | bool -- name: Unarchive pre-built venv - unarchive: - src: "/var/cache/{{ congress_venv_download_url | basename }}" - dest: "{{ congress_bin | dirname }}" - copy: "no" - when: - - not congress_developer_mode | bool - - congress_get_venv | changed or congress_venv_dir | changed +#- name: Remove existing venv +# file: +# path: "{{ congress_bin | dirname }}" +# state: absent +# when: congress_get_venv | changed -- name: Install pip packages - pip: - name: "{{ congress_pip_packages | join(' ') }}" - state: "{{ congress_package_state }}" - virtualenv: "{{ congress_bin | dirname }}" - virtualenv_site_packages: "no" - register: install_packages - until: install_packages|success - retries: 5 - delay: 2 - when: congress_developer_mode | bool +#- name: Create congress venv dir +# file: +# path: "{{ congress_bin | dirname }}" +# state: directory +# register: congress_venv_dir +# when: not congress_developer_mode | bool -- name: Update virtualenv path - command: > - virtualenv-tools --update-path=auto --reinitialize {{ congress_bin | dirname }} - when: - - not congress_developer_mode | bool - - congress_get_venv | changed or congress_venv_dir | changed +#- name: Unarchive pre-built venv +# unarchive: +# src: "/var/cache/{{ congress_venv_download_url | basename }}" +# dest: "{{ congress_bin | dirname }}" +# copy: "no" +# when: +# - not congress_developer_mode | bool +# - congress_get_venv | changed or congress_venv_dir | changed -- name: Record the venv tag deployed - ini_file: - dest: "/etc/ansible/facts.d/openstack_ansible.fact" - section: congress - option: venv_tag - value: "{{ congress_venv_tag }}" \ No newline at end of file +#- name: Install pip packages +# pip: +# name: "{{ congress_pip_packages | join(' ') }}" +# state: "{{ congress_package_state }}" +# virtualenv: "{{ congress_bin | dirname }}" +# virtualenv_site_packages: "no" +# register: install_packages +# until: install_packages|success +# retries: 5 +# delay: 2 +# when: congress_developer_mode | bool + +#- name: Update virtualenv path +# command: > +# virtualenv-tools --update-path=auto --reinitialize {{ congress_bin | dirname }} +# when: +# - not congress_developer_mode | bool +# - congress_get_venv | changed or congress_venv_dir | changed + +#- name: Record the venv tag deployed +# ini_file: +# dest: "/etc/ansible/facts.d/openstack_ansible.fact" +# section: congress +# option: venv_tag +# value: "{{ congress_venv_tag }}" \ No newline at end of file diff --git a/tasks/congress_post_install.yml b/tasks/congress_post_install.yml index 4346142..62dbf98 100644 --- a/tasks/congress_post_install.yml +++ b/tasks/congress_post_install.yml @@ -14,39 +14,31 @@ # See the License for the specific language governing permissions and # limitations under the License. -- debug: - msg: "This is the post installation script" +- name: creating congress database + mysql_db: + name: "{{ congress_db_name }}" + state: present + login_host: "{{ congress_db_login_host }}" + login_user: "{{ congress_db_login_user }}" + login_password: "{{ congress_db_login_password }}" -- name: make configuration directory - file: - path: /etc/congress - state: directory - -- name: make snapshot directory - file: - path: /etc/congress/snapshot - state: directory - -- name: copy files - copy: - src: "/opt/requirements/etc/{{ item }}" - dest: /etc/congress +- name: create congress user access + mysql_user: + name: "{{ congress_db_user }}" + password: "{{ congress_db_user_password }}" + login_host: "{{ congress_db_login_host }}" + login_user: "{{ congress_db_login_user }}" + login_password: "{{ congress_db_login_password }}" + priv: congress.*:ALL + host: "{{ item }}" with_items: - - api-paste.ini - - policy.json - - congress.conf.sample + - "%" + - "localhost" -- debug: - msg: "Adding the database" +- name: create congress database schema + shell: > + /usr/bin/congress-db-manage --config /etc/congress/congress.conf upgrade head -- debug: - msg: "setting up congress accounts" - -- debug: - msg: "setting up congress service endpoints" - -- debug: - msg: "Setting up datasource drivers" - -- debug: - msg: "Install Congress client in the utility container" \ No newline at end of file +- name: install congress client + pip: + name: python-congressclient diff --git a/tasks/congress_pre_install.yml b/tasks/congress_pre_install.yml index f90f887..1d5694f 100644 --- a/tasks/congress_pre_install.yml +++ b/tasks/congress_pre_install.yml @@ -23,4 +23,32 @@ pip: name: "{{ item }}" with_items: - - virtualenv \ No newline at end of file + - virtualenv + +- name: create congress group + group: + name: "{{ congress_system_group_name }}" + state: present + +- name: create congress user + user: + name: "{{ congress_system_user_name }}" + group: "{{ congress_system_group_name }}" + createhome: no + +- name: make congress configuration directory + file: + path: "{{ item }}" + state: directory + with_items: + - /etc/congress + - /etc/congress/snapshot + +- name: copy files + copy: + src: "/opt/congress/etc/{{ item }}" + dest: /etc/congress + with_items: + - api-paste.ini + - policy.json +# - congress.conf.sample