From d8d8231ef2de62cd2a2af486af4ad5b216fa51e1 Mon Sep 17 00:00:00 2001 From: Luca Prete Date: Thu, 23 Mar 2017 10:26:16 -0700 Subject: [PATCH] Updating and fixing vagrant ONOS VM Change-Id: I75313d7e254aa08d8567ae5701c219677f279991 (cherry picked from commit 5f8893092a82dded627806b086fef68e1c3fb394) --- tools/dev/vagrant/Vagrantfile | 26 ++++++- .../roles/intellij-install/tasks/main.yml | 6 +- .../ansible/roles/onos-install/tasks/main.yml | 78 ++++++------------- .../onos-install/templates/onos_deploy.j2 | 2 +- .../roles/tutorial-common/tasks/main.yml | 3 - .../templates/reset_one_node.j2 | 8 -- .../templates/reset_three_node.j2 | 8 -- .../tutorial-common/templates/run_onos.j2 | 3 - .../roles/tutorial-optical/tasks/main.yml | 8 +- .../dev/vagrant/ansible/vars/global_vars.yml | 20 ++--- 10 files changed, 68 insertions(+), 94 deletions(-) diff --git a/tools/dev/vagrant/Vagrantfile b/tools/dev/vagrant/Vagrantfile index e694f7595b..7148376412 100644 --- a/tools/dev/vagrant/Vagrantfile +++ b/tools/dev/vagrant/Vagrantfile @@ -13,6 +13,9 @@ Vagrant.configure(2) do |config| v.customize ["modifyvm", :id, "--vram", "32"] end + # Creates an ONOS tutorial VM. + # It contains Mininet, three LXC containers used as ONOS target machines, the tutorial files. + # The machine comes also with the Ubuntu GUI to support tutorials. config.vm.define "onostutorial" do |d| d.vm.box = "ubuntu/xenial64" d.vm.hostname = "onostutorial" @@ -33,9 +36,12 @@ Vagrant.configure(2) do |config| end end - config.vm.define "onosdev" do |d| + # Creates a VM with three LXC containers inside. + # Miniet is installed on the virtual machine itself. + # The three LXC containers serve as ONOS target machines. + config.vm.define "onosdevmn" do |d| d.vm.box = "ubuntu/xenial64" - d.vm.hostname = "onosdev" + d.vm.hostname = "onosmn" d.vm.network "private_network", ip: "10.100.198.200" d.vm.provision :shell, path: "scripts/bootstrap_ansible.sh" d.vm.provision :shell, inline: "PYTHONUNBUFFERED=1 ansible-playbook /vagrant/ansible/basic.yml -c local" @@ -48,6 +54,22 @@ Vagrant.configure(2) do |config| end end + # Creates a VM with three LXC containers inside, to be used as ONOS target machines. + config.vm.define "onosdev" do |d| + d.vm.box = "ubuntu/xenial64" + d.vm.hostname = "onosdev" + d.vm.network "private_network", ip: "10.100.198.200" + d.vm.provision :shell, path: "scripts/bootstrap_ansible.sh" + d.vm.provision :shell, inline: "PYTHONUNBUFFERED=1 ansible-playbook /vagrant/ansible/basic.yml -c local" + d.vm.provision :shell, inline: "PYTHONUNBUFFERED=1 ansible-playbook /vagrant/ansible/mn.yml -c local" + d.vm.provider "virtualbox" do |v| + v.customize ["modifyvm", :id, "--nicpromisc2", "allow-all"] + v.memory = 4096 + v.cpus = 2 + end + end + + # Creates a VM and installs Mininet in it. config.vm.define "mn" do |d| d.vm.box = "ubuntu/xenial64" d.vm.hostname = "mn" diff --git a/tools/dev/vagrant/ansible/roles/intellij-install/tasks/main.yml b/tools/dev/vagrant/ansible/roles/intellij-install/tasks/main.yml index 63969c2021..2b74f4a5d3 100644 --- a/tools/dev/vagrant/ansible/roles/intellij-install/tasks/main.yml +++ b/tools/dev/vagrant/ansible/roles/intellij-install/tasks/main.yml @@ -4,14 +4,14 @@ # - name: Making sure Application folder is present file: - path: "{{ app_dir }}" + path: "/home/ubuntu/{{ app_dir }}" state: directory mode: 0777 - name: Downloading IntelliJ get_url: url: "{{ intellij.url }}" - dest: "{{ app_dir }}/intellij.tar.gz" + dest: "/home/ubuntu/{{ app_dir }}/intellij.tar.gz" - name: Extracting IntelliJ unarchive: @@ -21,5 +21,5 @@ - name: Removing IntelliJ tar.gz archive file: - path: "{{ app_dir }}/intellij.tar.gz" + path: "/home/ubuntu/{{ app_dir }}/intellij.tar.gz" state: absent \ No newline at end of file diff --git a/tools/dev/vagrant/ansible/roles/onos-install/tasks/main.yml b/tools/dev/vagrant/ansible/roles/onos-install/tasks/main.yml index b48901c22f..45f66000f2 100644 --- a/tools/dev/vagrant/ansible/roles/onos-install/tasks/main.yml +++ b/tools/dev/vagrant/ansible/roles/onos-install/tasks/main.yml @@ -1,50 +1,12 @@ --- # -# Installs ONOS and downloads the related dependencies. It then compiles the code. +# Installs ONOS and downloads the related dependencies. # -- name: Installing Maven - apt: - name: maven - force: yes - tags: [common] - -- name: Creating Application folder - file: - path: "{{ app_dir }}" - state: directory - mode: 0777 - -- name: Creating Download folder - file: - path: "{{ download_dir }}" - state: directory - mode: 0777 - -- name: Downloading Apache Karaf - get_url: - url: "http://archive.apache.org/dist/karaf/{{ karaf_version }}/apache-karaf-{{ karaf_version }}.tar.gz" - dest: "{{ download_dir }}" - mode: 0777 - -- name: Copying Apache Karaf in the Application directory - copy: - src: "/home/ubuntu/{{ download_dir }}/apache-karaf-{{ karaf_version }}.tar.gz" - dest: "/home/ubuntu/{{ app_dir }}/apache-karaf-{{ karaf_version }}.tar.gz" - mode: 0777 - -- name: Extracting Apache Karaf - unarchive: - src: "/home/ubuntu/{{ download_dir }}/apache-karaf-{{ karaf_version }}.tar.gz" - dest: "/home/ubuntu/{{ app_dir }}" - mode: 0777 - - name: Cloning ONOS repository git: repo: "{{ onos_repo_url }}" - dest: onos - version: onos-"{{ onos_version }}" - become: true - become_user: ubuntu + dest: "{{ onos_dir }}" + version: "onos-{{ onos_version }}" - name: Changing ONOS repository permissions file: @@ -63,19 +25,9 @@ - name: Compiling ONOS shell: "{{ item }}" args: - chdir: "/home/ubuntu/onos" + chdir: "/home/ubuntu/onos/tools/build" with_items: - - mvn clean install - become: true - become_user: ubuntu - -- name: Changing .m2 repository permissions - file: - path: "/home/ubuntu/.m2" - state: directory - owner: ubuntu - group: ubuntu - mode: 0777 + - "./onos-buck build onos" - name: Creating 1 node ONOS cell template: @@ -101,14 +53,30 @@ group: ubuntu mode: 0777 +- name: Changing ONOS repository permissions + file: + path: "/home/ubuntu/onos" + state: directory + owner: ubuntu + group: ubuntu + mode: 0777 + +- name: Changing /tmp/stc dir permissions + file: + path: "/tmp/stc" + state: directory + owner: ubuntu + group: ubuntu + mode: 0777 + - name: Deploying ONOS + become: yes + become_user: ubuntu shell: "/home/ubuntu/onos_deploy.sh" environment: ONOS_ROOT: /home/ubuntu/onos args: executable: /bin/bash - become: true - become_user: ubuntu - name: Adding ONOS to startup become: yes diff --git a/tools/dev/vagrant/ansible/roles/onos-install/templates/onos_deploy.j2 b/tools/dev/vagrant/ansible/roles/onos-install/templates/onos_deploy.j2 index 01d49ba835..ac68522278 100644 --- a/tools/dev/vagrant/ansible/roles/onos-install/templates/onos_deploy.j2 +++ b/tools/dev/vagrant/ansible/roles/onos-install/templates/onos_deploy.j2 @@ -3,4 +3,4 @@ source $ONOS_ROOT/tools/dev/bash_profile cell 3node -onos-test \ No newline at end of file +stc setup \ No newline at end of file diff --git a/tools/dev/vagrant/ansible/roles/tutorial-common/tasks/main.yml b/tools/dev/vagrant/ansible/roles/tutorial-common/tasks/main.yml index a24be78b6b..6ef94302c1 100644 --- a/tools/dev/vagrant/ansible/roles/tutorial-common/tasks/main.yml +++ b/tools/dev/vagrant/ansible/roles/tutorial-common/tasks/main.yml @@ -75,9 +75,6 @@ create: yes block: | export ONOS_ROOT=/home/ubuntu/onos - export KARAF_ROOT=/home/ubuntu/Applications/apache-karaf-{{ karaf_version }} - export KARAF_TAR=/home/ubuntu/Applications/apache-karaf-{{ karaf_version }}.tar.gz - export M2_REPO=/home/ubuntu/.m2/repository . /home/ubuntu/onos/tools/dev/bash_profile cell {{ item.value.cell }} > /dev/null with_dict: "{{ tutorials }}" diff --git a/tools/dev/vagrant/ansible/roles/tutorial-common/templates/reset_one_node.j2 b/tools/dev/vagrant/ansible/roles/tutorial-common/templates/reset_one_node.j2 index 1ab3b7afb9..47bb431780 100644 --- a/tools/dev/vagrant/ansible/roles/tutorial-common/templates/reset_one_node.j2 +++ b/tools/dev/vagrant/ansible/roles/tutorial-common/templates/reset_one_node.j2 @@ -3,23 +3,15 @@ sudo rm -rf /tmp/* export ONOS_ROOT=/home/ubuntu/onos -export M2_REPO=/home/ubuntu/.m2/repository -export KARAF_TAR=/home/ubuntu/{{ app_dir }}/apache-karaf-{{ karaf_version }}.tar.gz -export KARAF_ROOT=/home/ubuntu/Applications/apache-karaf-{{ karaf_version }} source ${ONOS_ROOT}/tools/dev/bash_profile sudo mn -c sudo chmod -R 777 /home/ubuntu/onos -sudo chmod -R 777 /home/ubuntu/.m2 cell 3node onos-service --cell stop cell 1node -if [ -n "$1" ]; then - export ONOS_APPS=$ONOS_APPS,$1 -fi - onos-test \ No newline at end of file diff --git a/tools/dev/vagrant/ansible/roles/tutorial-common/templates/reset_three_node.j2 b/tools/dev/vagrant/ansible/roles/tutorial-common/templates/reset_three_node.j2 index b6c5de5d45..b7d589bfc1 100644 --- a/tools/dev/vagrant/ansible/roles/tutorial-common/templates/reset_three_node.j2 +++ b/tools/dev/vagrant/ansible/roles/tutorial-common/templates/reset_three_node.j2 @@ -3,20 +3,12 @@ sudo rm -rf /tmp/* export ONOS_ROOT=/home/ubuntu/onos -export M2_REPO=/home/ubuntu/.m2/repository -export KARAF_TAR=/home/ubuntu/{{ app_dir }}/apache-karaf-{{ karaf_version }}.tar.gz -export KARAF_ROOT=/home/ubuntu/{{ app_dir }}/apache-karaf-{{ karaf_version }} source ${ONOS_ROOT}/tools/dev/bash_profile sudo mn -c sudo chmod -R 777 /home/ubuntu/onos -sudo chmod -R 777 /home/ubuntu/.m2 cell 3node -if [ -n "$1" ]; then - export ONOS_APPS=$ONOS_APPS,$1 -fi - onos-test \ No newline at end of file diff --git a/tools/dev/vagrant/ansible/roles/tutorial-common/templates/run_onos.j2 b/tools/dev/vagrant/ansible/roles/tutorial-common/templates/run_onos.j2 index 01265aeed2..975a3bb22b 100755 --- a/tools/dev/vagrant/ansible/roles/tutorial-common/templates/run_onos.j2 +++ b/tools/dev/vagrant/ansible/roles/tutorial-common/templates/run_onos.j2 @@ -1,9 +1,6 @@ #!/bin/bash export ONOS_ROOT=/home/ubuntu/onos -export M2_REPO=/home/ubuntu/.m2/repository -export KARAF_TAR=/home/ubuntu/"{{ app_dir }}"/apache-karaf-"{{ karaf_version }}".tar.gz -export KARAF_ROOT=/home/ubuntu/"{{ app_dir }}"/apache-karaf-"{{ karaf_version }}" source ${ONOS_ROOT}/tools/dev/bash_profile cell 1node diff --git a/tools/dev/vagrant/ansible/roles/tutorial-optical/tasks/main.yml b/tools/dev/vagrant/ansible/roles/tutorial-optical/tasks/main.yml index 3f5a116595..9ff2d6b1e8 100644 --- a/tools/dev/vagrant/ansible/roles/tutorial-optical/tasks/main.yml +++ b/tools/dev/vagrant/ansible/roles/tutorial-optical/tasks/main.yml @@ -9,10 +9,16 @@ update_cache: yes with_items: "{{ tutorials.optical.packages }}" +- name: Making sure Application folder is present + file: + path: "/home/ubuntu/{{ app_dir }}" + state: directory + mode: 0777 + - name: Downloading ERLANG package get_url: url: "{{ tutorials.optical.erlang.package_url }}" - dest: "{{ app_dir }}" + dest: "/home/ubuntu/{{ app_dir }}" - name: Extracting ERLANG package unarchive: diff --git a/tools/dev/vagrant/ansible/vars/global_vars.yml b/tools/dev/vagrant/ansible/vars/global_vars.yml index 3e9a018a42..c54f1304f5 100644 --- a/tools/dev/vagrant/ansible/vars/global_vars.yml +++ b/tools/dev/vagrant/ansible/vars/global_vars.yml @@ -31,10 +31,6 @@ bridge: name: "onosbr0" ip: "{{ dev_host.ip }}/24" -# ONOS Applications and Downloads folders -app_dir: "Applications" -download_dir: "Downloads" - # Basic packages to be installed basic_packages: - "bridge-utils" @@ -44,18 +40,18 @@ basic_packages: - "lxc-dev" - "python-dev" - "python-pip" + - "unzip" + - "zip" # ONOS onos_repo_url: "https://gerrit.onosproject.org/onos" -onos_version: "1.6" +onos_dir: "/home/ubuntu/onos" +onos_version: "1.9" onos_nic: "10.100.198.*" onos_variables: - "export ONOS_ROOT=~/onos" - "source $ONOS_ROOT/tools/dev/bash_profile" -# Karaf -karaf_version: "3.0.8" - # Tutorial reset files reset_files: - "/home/ubuntu/reset-to-1.sh" @@ -69,6 +65,10 @@ cell_files: # URL where the ONOS Desktop background is downloaded from onos_background_url: "https://gerrit.onosproject.org/gitweb?p=onos-vm.git;a=blob_plain;f=onos.png;hb=refs/heads/master" +# ONOS app dir +app_dir: "Application" +download_dir: "Downloads" + # Wireshark wireshark: plugins_dir: ".config/wireshark/plugins" @@ -80,8 +80,8 @@ google_chrome_repo: "deb http://dl.google.com/linux/chrome/deb/ stable main" # IDEs configuration intellij: - dir_name: "idea-IC-162.1628.40" - url: "https://download.jetbrains.com/idea/ideaIC-2016.2.2.tar.gz" + dir_name: "idea-IC-171.3780.107" + url: "https://download.jetbrains.com/idea/ideaIC-2017.1.tar.gz" # Tutorials configuration tutorials: