Manual Installation

This document describes how to install and run Tacker manually.

Note

User is supposed to install on Ubuntu. Some examples are invalid on other distirbutions. For example, you should replace /usr/local/bin/ with /usr/bin/ on CentOS.

Pre-requisites

  1. Install required components.

    Ensure that OpenStack components, Keystone, Mistral, Barbican and Horizon are installed. Refer the list below for installation of these OpenStack projects on different Operating Systems.

  2. Create admin-openrc.sh for env variables.

    export OS_PROJECT_DOMAIN_NAME=Default
    export OS_USER_DOMAIN_NAME=Default
    export OS_PROJECT_NAME=admin
    export OS_TENANT_NAME=admin
    export OS_USERNAME=admin
    export OS_PASSWORD=KTskN5eUMTpeHLKorRcZBBbH0AM96wdvgQhwENxY
    export OS_AUTH_URL=http://localhost:5000/identity
    export OS_INTERFACE=internal
    export OS_IDENTITY_API_VERSION=3
    export OS_REGION_NAME=RegionOne
    

Installing Tacker Server

Note

The <branch_name> in command examples is replaced with specific branch name, such as stable/ussuri.

  1. Create MySQL database and user.

    $ mysql -uroot -p
    

    Create database tacker and grant provileges for tacker user with password <TACKERDB_PASSWORD> on all tables.

    CREATE DATABASE tacker;
    GRANT ALL PRIVILEGES ON tacker.* TO 'tacker'@'localhost' \
        IDENTIFIED BY '<TACKERDB_PASSWORD>';
    GRANT ALL PRIVILEGES ON tacker.* TO 'tacker'@'%' \
        IDENTIFIED BY '<TACKERDB_PASSWORD>';
    exit;
    
  2. Create OpenStack user, role and endpoint.

    1. Set admin credentials to gain access to admin-only CLI commands.

      $ . admin-openrc.sh
      
    2. Create tacker user with admin privileges.

      $ openstack user create --domain default --password <PASSWORD> tacker
      $ openstack role add --project service --user tacker admin
      

      Note

      Project name can be service or services depending on your OpenStack distribution.

    3. Create tacker service.

      $ openstack service create --name tacker \
          --description "Tacker Project" nfv-orchestration
      
    4. Provide an endpoint to tacker service.

      For keystone v3:

      $ openstack endpoint create --region RegionOne nfv-orchestration \
                 public http://<TACKER_NODE_IP>:9890/
      $ openstack endpoint create --region RegionOne nfv-orchestration \
                 internal http://<TACKER_NODE_IP>:9890/
      $ openstack endpoint create --region RegionOne nfv-orchestration \
                 admin http://<TACKER_NODE_IP>:9890/
      

      Or keystone v2:

      $ openstack endpoint create --region RegionOne \
           --publicurl 'http://<TACKER_NODE_IP>:9890/' \
           --adminurl 'http://<TACKER_NODE_IP>:9890/' \
           --internalurl 'http://<TACKER_NODE_IP>:9890/' <SERVICE-ID>
      
  3. Clone tacker repository.

    You can use -b for specific release optionally.

    $ cd ${HOME}
    $ git clone https://opendev.org/openstack/tacker.git -b <branch_name>
    
  4. Install required packages and tacker itself.

    $ cd ${HOME}/tacker
    $ sudo pip3 install -r requirements.txt
    $ sudo python3 setup.py install
    
  5. Create directories for tacker.

    Directories log, VNF packages and csar files are required.

    $ sudo mkdir -p /var/log/tacker \
        /var/lib/tacker/vnfpackages \
        /var/lib/tacker/csar_files
    

    Note

    In case of multi node deployment, we recommend to configure /var/lib/tacker/csar_files on a shared storage.

  6. Generate the tacker.conf.sample using tools/generate_config_file_sample.sh or tox -e config-gen command. Rename the tacker.conf.sample file at etc/tacker/ to tacker.conf. Then edit it to ensure the below entries:

    Note

    Ignore any warnings generated while using the “generate_config_file_sample.sh”.

    Note

    project_name can be “service” or “services” depending on your OpenStack distribution in the keystone_authtoken section.

    Note

    The path of tacker-rootwrap varies according to the operating system, e.g. it is /usr/bin/tacker-rootwrap for CentOS, therefore the configuration for [agent] should be like:

    [agent]
    root_helper = sudo /usr/bin/tacker-rootwrap /etc/tacker/rootwrap.conf
    
    [DEFAULT]
    auth_strategy = keystone
    policy_file = /etc/tacker/policy.json
    debug = True
    use_syslog = False
    bind_host = <TACKER_NODE_IP>
    bind_port = 9890
    service_plugins = nfvo,vnfm
    
    state_path = /var/lib/tacker
    transport_url = rabbit://<RABBIT_USERID>:<RABBIT_PASSWORD>@<TACKER_NODE_IP>:5672/
    ...
    
    [nfvo_vim]
    vim_drivers = openstack
    
    [keystone_authtoken]
    memcached_servers = <TACKER_NODE_IP>:11211
    region_name = RegionOne
    auth_type = password
    project_domain_name = <DOMAIN_NAME>
    user_domain_name = <DOMAIN_NAME>
    username = <TACKER_USER_NAME>
    project_name = service
    password = <TACKER_SERVICE_USER_PASSWORD>
    auth_url = http://<KEYSTONE_IP>:5000
    www_authenticate_uri = http://<KEYSTONE_IP>:5000
    ...
    
    [agent]
    root_helper = sudo /usr/local/bin/tacker-rootwrap /etc/tacker/rootwrap.conf
    ...
    
    [database]
    connection = mysql+pymysql://tacker:<TACKERDB_PASSWORD>@<MYSQL_IP>:3306/tacker?charset=utf8
    ...
    
    [tacker]
    monitor_driver = ping,http_ping
    
  7. Copy the tacker.conf to /etc/tacker/ directory.

    $ sudo cp etc/tacker/tacker.conf /etc/tacker/
    
  8. Populate Tacker database.

    $ /usr/local/bin/tacker-db-manage \
        --config-file /etc/tacker/tacker.conf \
        upgrade head
    
  9. To make tacker be controlled from systemd, copy tacker.service and tacker-conductor.service file to /etc/systemd/system/ directory, and restart systemctl daemon.

    $ sudo cp etc/systemd/system/tacker.service /etc/systemd/system/
    $ sudo cp etc/systemd/system/tacker-conductor.service /etc/systemd/system/
    $ sudo systemctl daemon-reload
    

Install Tacker Client

  1. Clone tacker-client repository.

    $ cd ~/
    $ git clone https://opendev.org/openstack/python-tackerclient.git -b <branch_name>
    
  2. Install tacker-client.

    $ cd ${HOME}/python-tackerclient
    $ sudo python3 setup.py install
    

Install Tacker horizon

  1. Clone tacker-horizon repository.

    $ cd ~/
    $ git clone https://opendev.org/openstack/tacker-horizon.git -b <branch_name>
    
  2. Install horizon module.

    $ cd ${HOME}/tacker-horizon
    $ sudo python3 setup.py install
    
  3. Enable tacker horizon in dashboard.

    $ sudo cp tacker_horizon/enabled/* \
        /usr/share/openstack-dashboard/openstack_dashboard/enabled/
    
  4. Restart Apache server.

    $ sudo service apache2 restart
    

Starting Tacker server

Open a new console and launch tacker-server. A separate terminal is required because the console will be locked by a running process.

$ sudo systemctl start tacker.service

Starting Tacker conductor

Open a new console and launch tacker-conductor. A separate terminal is required because the console will be locked by a running process.

$ sudo systemctl start tacker-conductor.service