Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

Navigation
Guide That Contains This Content
[+] Expand All
[-] Collapse All

    Launching a Guest Virtual Machine (VM) to Run a Third Party Application on Junos OS Release 13.2X51-D15

    Understanding Guest VMs

    You can use a guest virtual machine (VM) to run third party software applications. Guest VMs provide a native environment in which third party applications can be executed, and eliminate the need for porting or adapting third party applications to work on the host OS. You can use the Junos SDK Virtual Build Environment in the JunosV App Engine to package the guest VM images. Once the guest VMs are packaged, you can launch them from the Junos OS CLI.

    Note: Only one guest VM is supported at this time.

    Prerequisites for Setting up a Virtual Build Environment in the JunosV App Engine

    Make sure the following prerequisites are met before you set up a Virtual Build Environment in the JunosV App Engine:

    • Dedicated server running CentOS 6.2 with a 64-bit processor capable of full hardware virtualization

      To find out if the server running CentOS is capable of full hardware virtualization, issue the following command at the shell:

      egrep '(vmx|svm)' --color=always /proc/cpuinfo

      If you receive a result with vmx or svm, the server is capable of virtualization. If you receive a null result, then the server is not capable of virtualization.

      The server must have access to the Internet to download and install various Linux, Junos SDK, and JVAE packages.

    • CentOS packages installed on the server:
      • kvm
      • vnc
      • gcc
      • make
      • wget
      • libvirt
      • dhcp
      • dnsmasq
      • bridge-utils
      • flex
      • bison
      • gcc-c++
      • glib2-devel
      • vnc-server
      • which
      • xterm
      • xorg-x11-twm
      • xorg-x11-server-utils
      • libXfont

    You can install these packages using the yum tool in CentOS.

    Note: For yum to work properly, the server must have Internet connectivity, and the DNS servers must be configured.

    To see which packages are installed, issue the following command:

    yum list installed

    To install all of the packages in the list, issue the following command:

    yum install kvm vnc gcc make wget libvirt dhcp dnsmasq bridge-utils flex bison gcc-c++ glib2-devel vnc-server which xterm xorg-x11-twm xorg-x11-server-utils libXfont
    • Quick Emulator (QEMU) installed for managing VMs.

      Issue the following commands to download and install QEMU on your server:

      wget http://wiki.qemu.org/download/qemu-1.0.1.tar.gz
      tar xvf *.gz
      cd qemu-1.0.1
      ./configure
      make
      make install
    • Virtual bridge for VM network connectivity is created.

      To ensure network connectivity for the Virtual Build Environment (VBE) VM, create a virtual bridge. The virtual bridge allows you to connect the VM to the physical Ethernet interface of the host machine. After performing the following steps, you will have a virtual bridge interface named virbr0, which links to the eth0 interface of the system. When the VM is created, the virbr0 interface is added to the bridge, and the IP address of the eth0 is assigned to the virbr0 interface.

      1. Before you configure a virtual bridge, make sure there are no virtual bridges already configured. Issue the following commands to remove any virtual bridges that have been created previously:
        rm /etc/sysconfig/network-scripts/ifcfg-virbr0
        virsh net-destroy default
        virsh net-undefine default
        service libvirtd restart
      2. To create a bridge interface named virbr0 for the virtual bridge and then link it to the physical interface of the system (eth0), issue the following commands:

        For example:

        echo 10 > /var/tmp/tapno
        chmod 644 /var/tmp/tapno
        /etc/sysconfig/network-scripts/qifup
        !/bin/sh
        /sbin/ifconfig \$1 0.0.0.0 promisc up
        /usr/sbin/brctl addif virbr0 \$1
        /etc/sysconfig/network-scripts/qifdown
        !/bin/sh
        /sbin/ifconfig \$1 down
        /usr/sbin/brctl delif virbr0 \$1
        chmod 755 /etc/sysconfig/network-scripts/qif*
        /usr/sbin/brctl addbr virbr0
        /usr/sbin/brctl addif virbr0 eth0
        cd /etc/sysconfig/network-scripts
        cp ifcfg-eth0 ifcfg-virbr0
      3. Edit the ifcfg-eth0 file located at the /etc/sysconfig/network-scripts/ directory and add the following line to specify that the virbr0 interface is being used as the bridge interface:
        BRIDGE="virbr0"
      4. Edit the ifcfg-virbr0 file located at the /etc/sysconfig/network-scripts/ directory and modify the following values:
        DEVICE="virbr0"
        TYPE="Bridge"
      5. Enable the VNC connection to the VM by adding the following lines to the iptables file located at the /etc/sysconfig/ directory:
        -A INPUT -i eth0 -j ACCEPT
        -A INPUT -i virbr0 -j ACCEPT
      6. Issue the following command to restart the network and iptables service for the changes to take effect:
        /sbin/service iptables restart
      7. Issue the following command to verify that all the changes have taken effect:
        /usr/sbin/brctl show

        The output of this command should show that the virbr0 interface is configured. Verify that there is still network connectivity to the server.

    Setting up the Virtual Build Environment for the JunosV App Engine

    The JunosV App Engine (JVAE) enables third party applications—applications written in Linux—to run on a guest VM. JunosV App Engine also enables third party applications to run in their native environment without porting to Junos OS.

    JVAE provides a virtualized environment with a Kernel-based Virtual Machine (KVM) hypervisor, which runs on the host OS. The host OS controls the creation of virtual machines (VMs) on top of the hypervisor. The hypervisor and host OS run within a compute node. The compute node is connected to a device running Junos OS. In this case, the compute node is connected to a QFX5100 switch.

    Downloading and Installing the JunosV App Engine Software

    Download the following JunosV App Engine development tools, packaging tools, and sample guest OS packages located at http://www.juniper.net/support/csc/swdist-junos-sdk/#sw to your server:

    • junos-sdk-remote-devtools-13.1R1.6.tgz
    • junos-sdk-remote-pkgtools-13.1R1.6.tgz
    • junos-sdk-os-13.1R1.6.tgz
    1. Copy the junos-sdk-remote-devtools-13.1R1.6.tgz file to the /usr/src/remote-devtools/ directory.

      For example:

      scp junos-sdk-remote-devtools-13.1R1.6.tgz /usr/src/remote-devtools/
    2. Extract the junos-sdk-remote-devtools-13.1R1.6.tgz file.

      For example:

      tar -zxvf junos-sdk-remote-devtools-13.1R1.6.tgz
    3. Install the junos-sdk-remote-devtools-13.1R1.6.

      For example:

      ./setup
    4. Copy the junos-sdk-remote-pkgtools-13.1R1.6.tgz file to the /usr/src/remote-pkgtools directory.

      For example:

      scp junos-sdk-remote-pkgtools-13.1R1.6.tgz /usr/src/remote-pkgtools
    5. Extract the junos-sdk-remote-pkgtools-13.1R1.6.tgz file.

      For example:

      tar -zxvf junos-sdk-remote-pkgtools-13.1R1.6.tgz
    6. Install the junos-sdk-remote-pkgtools-13.1R1.6 software.

      For example:

      ./setup
    7. Copy the junos-sdk-os-13.1R1.6.tgz file to the /usr/src/sdk-os directory.

      For example:

      scp junos-sdk-os-13.1R1.6.tgz /usr/src/sdk-os
    8. Extract the junos-sdk-os-13.1R1.6.tgz file.

      For example:

      tar -zxvf junos-sdk-os-13.1R1.6.tgz
    9. Install the junos-sdk-os-13.1R1.6 software.

      For example:

      ./setup

    Launching the VNC Server

    Launch a VNC server, so you can access a VM.

    1. Before you can launch the VNC server, use yum to install the Desktop package.

      For example:

      yum groupinstall -y Desktop
    2. Issue the following command to set the VNC password.

      You need to set the password when you use VNC for the first time.

      For example:

      vncpasswd
    3. Issue the following command to launch the VNC server.

      For example:

      vncserver &

      The name of the desktop is displayed.

      For example:

      vnc-test.juniper.net:1
    4. Issue the following command to verify that the VNC viewer is working correctly.

      For example:

      vncviewer vnc-device.net:1

      A VNC session is created on the server.

    Launching the FreeBSD Virtual Build Environment (VBE) Virtual Machine (VM)

    Use the Kernel-based Virtual Machine (KVM) hypervisor to launch the VBE VM.

    1. Issue the following commands to launch the VBE VM.

      For example:

      cd /usr/src/remote-pkgtools/junos-sdk-remote-pkgtools
      ./start_vm --img /usr/src/sdk-os/junos-sdk-20110408a1/junos-sdk-20110408.img

      This command launches the VM and returns a port number. The port number is used to establish a VNC connection to the VM.

    2. Issue the following command to access the VM.

      For example:

      vncviewer localhost::<port> &

      This command generates a VNC session to the FreeBSD VBE VM and enables the root password of letmein.

    Installing the Junos SDK Packages on the Virtual Build Environment

    Before you install the Junos SDK packages, configure an IP address and default gateway on the VBE VM, and ensure that the VBE has proper network connectivity. Also, use the adduser tool to create user profiles for the VBE.

    1. Issue the following commands to configure the IP address and default gateway on the VBE VM:

      For example:

      ipconfig em0 inet 10.204.42.20 netmask 255.255.255.0
      route add default 10.204.42.20
    2. Issue the adduser command to add user profiles for the VBE.

      The adduser command provides an interactive guided procedure.

    3. Download the following Junos SDK packages located at http://www.juniper.net/support/csc/swdist-junos-sdk/ to the VBE:
      • junos-sdk-ui-sim-13.1R1.6-signed.tgz
      • junos-sdk-toolchain-13.1R1.6-signed.tgz
      • junos-sdk-sb-13.1R1.6-signed.tgz
    4. Issue the following commands to install the Junos SDK packages.

      For example:

      pkg_add junos-sdk-sb-13.1R1.6-signed.tgz
      pkg_add junos-sdk-toolchain-13.1R1.6-signed.tgz
      pkg_add junos-sdk-ui-sim-13.1R1.6-signed.tgz

    Prerequisites for Using the Virtual Build Environment

    Before you can use the Virtual Build Environment to create sandboxes for development, you need to meet the following hardware and software requirements:

    • Dedicated server running CentOS 6.2 with a 64-bit processor capable of full hardware virtualization
    • Junos SDK Virtual Build Environment (VBE) Virtual Machine (VM) running with access to the Internet on a dedicated server
    • Junos SDK packages installed on the VBE VM:
      • junos-sdk-ui-sim-13.1R1.6-signed.tgz
      • junos-sdk-toolchain-13.1R1.6-signed.tgz
      • junos-sdk-sb-13.1R1.6-signed.tgz

    Obtaining Junos SDK Certificate Request File and Certificate Key File for the Virtual Build Environment

    1. Log into Virtual Build Environment (VBE) Virtual Machine (VM) as root.
    2. Issue the following command to launch the sdk-certificate-request script.

      For example:

      /usr/local/junos-sdk/13.1R1.6/bin/sdk-certificate-request
    3. Provide the following information when the script prompts you. Press Enter after you provide a response.
      • City, state, and country
      • Organization and unit
      • Provider prefix

        This is the unique provider name assigned by Juniper to each SDK partner

      • User string

        The user string can be a project name, product name, or any generic word.

      • Deployment scope

        Juniper assigns this string to differentiate multiple certificate for the same partner. If Juniper did not assign this string, you can leave this field empty

      • Index number

        This number is also referred to as a certificate generations number. The number 1 is used for the initial certificate. After the certificate expires and a new one is requested, this number is increased incrementally.

      After you provide all of the information, the script will generate the following files in the /usr/local/junos-sdk/cert directory:

      • Certificate Key filename_key.pem

        This file contains the Junos SDK package-signing key. Ensure that no one outside of the development organization has access to the certificate key. Do not send this file to Juniper

      • Certificate Request File filename_req.pem

        This file contains the certificate request. Send this file to Juniper for processing

    Processing and Obtaining the Certificate File

    1. Send the certificate request file to Juniper Junos SDK Certificate Processing Team at sdk-cert@juniper.net

      Once the processing is complete, the Junos SDK Certificate Processing Team will send you the certificate.

    2. When you receive the certificate, rename the certificate file as filename.pem and copy it to the /usr/local/junos-sdk/certs directory in the VBE VM.
    3. Delete the Certificate Request File from the directory.

      There should only be one key and certificate pair in the /usr/local/junos-sdk/certs directory.

    Prerequisites for Packaging the Guest VM

    Before you can package the guest VM, make sure you meet the following hardware and software requirements:

    • Dedicated server running CentOS 6.2 with a 64-bit processor capable of full hardware virtualization.
    • Junos SDK Virtual Build Environment (VBE) Virtual Machine (VM) running with access to the Internet on a dedicated server.
      • You must be able to issue a successful ping request to the VBE VM, and SSH and SCP must be enabled on the VBE VM.
      • The VBE VM must have a valid Junos SDK certificate-and-key pair in the /usr/local/junos-sdk/certs directory.
    • Junos SDK packages installed on the VBE VM:
      • junos-sdk-ui-sim-13.1R1.6-signed.tgz
      • junos-sdk-toolchain-13.1R1.6-signed.tgz
      • junos-sdk-sb-13.1R1.6-signed.tgz

    Launching the Guest VM on the CentOS Server

    1. Issue the start_vm script from the Junos SDK Remote Packaging tools directory to launch the guest VM.

      For example:

      cd /usr/src/remote-pkgtools/junos-sdk-remote-pkgtools
      ./start_vm --img <path>/third-party-app.img -- tapno 1

      This command launches the VM and returns a port number to which a VNC connection to the VM can be established.

    2. Issue the following command to launch the guest VM

      For example:

      vncviewer localhost::port-number &

      This command generates a VNC session to the Guest VM.

    Copying Required Application to Package with the Guest VM

    Before you use scp to copy the required applications contained in the junos-sdk-remote-devtools-13.1R1.6.tgz file to the Guest VM, configure an IP address and default gateway on the VBE VM, and ensure that the VBE has proper network connectivity.

    In this example, an IP address of 10.204.42.40 has been assigned to the Guest VM, and the required application is remote-helloworld.

    1. Issue the following commands to configure the IP address and default gateway on the VBE VM:

      For example:

      ipconfig em0 inet 10.204.42.20 netmask 255.255.255.0
      route add default 10.204.42.20
    2. Copy the remote-helloworld binary to the /usr/local/bindirectory and the script to the /etc/init.ddirectory in the Guest VM.

      For example:

      scp /usr/src/remote-devtools/examples/remote-helloworld/remote-helloworld root@10.204.42.40:/usr/local/bin
      scp /usr/src/remote-devtools/examples/remote-helloworld/remote-helloworld.sh root@10.204.42.40:/etc/init.d
    3. Rename the remote-helloworld.sh script in the /etc/init.dfolder to remote-helloworld.

      For example:

      cd /etc/init.d
      mv remote-helloworld.sh remote-helloworld
    4. You can now add the remote-helloworld application as a startup service.

      For example:

      chkconfig --add remote-helloworld
      chkconfig remote-helloword on
    5. Shutdown the VM before packaging the application.

      For example:

      shutdown -h now

    Editing Packaging Tool Scripts

    Before you package the software, you need to modify the sample.manifest and export-user-data.sh files.

    1. Modify the sample.manifest file to include the source and destination pairs of the application binaries and scripts to be packaged into the Guest VM.

      For example:

      cd /usr/src/remote-pkgtools/junos-sdk-remote-pkgtools
      vi sample.manifest

      Here is an example of a sample.manifest file:

      # $Id: sample.manifest 131 2013-02-19 19:24:45Z tomwright $
      
      # Copyright (c) 2012, Juniper Networks
      # All rights reserved
      
      # blank lines and lines beginning with # ignored
      
      # dest (guest OS VM) user and host/IP are specified in export-user-data.sh
      # dest ending with slash indicates directory
      
      # src dest
      
       /usr/src/remote-devtools/examples/remote-helloworld/remote-helloworld /usr/local/bin/
       /usr/src/remote-devtools/examples/remote-helloworld/remote-helloworld.sh /etc/init.d/remote-helloworld
      
    2. Modify the export-user-data.sh file to include details about the Guest VM .img file, DDL, ODL, and VBE VM details. In this example, an IP address of 10.204.42.20 has been assigned to the VBE VM

      For example:

      cd /usr/src/remote-pkgtools/junos-sdk-remote-pkgtools
      vi export-user-data.sh

      Modify the following values with the correct values:

      • APP_CMD

        Name of the command DDL file, including the path (.cmd.dd). Leave this variable undefined if your application does not require a user interface.

        In this example, APP_CMD=/usr/src/remote-devtools/examples/remote-helloworld/ui-extensions/lib/ddl/input/remote-helloworld.cmd.dd

      • APP_CNF

        Name of config DDL file, including the path (.cnf.dd). Leave this variable undefined if your application does not require a user interface.

        In this example, APP_CNF=/usr/src/remote-devtools/examples/remote-helloworld/ui-extensions/lib/ddl/input/remote-helloworld.cnf.dd

      • APP_MANIFEST

        Name of application manifest file, including the path.

        In this example, APP_MANIFEST=/usr/src/remote-pkgtools/junos-sdk-remote-pkgtools/sample.manifest

      • APP_ODL

        Name of ODL file, including the path (.odl). Leave this variable undefined if your application does not require formatted output.

        In this example, APP_ODL=/usr/src/remote-devtools/examples/remote-helloworld/ui-extensions/lib/odl/input/remote-helloworld.odl

      • LOG_DIR

        Path on development system for log files.

        In this example, LOG_DIR=/var/tmp

      • ROUTER_PLATFORM

        router platform (aka machine) can be i386 (default), octeon, powerpc or xlr

        In this example, ROUTER_PLATFORM=i386

      • VBE_BSB_PATH

        Path to the Junos SDK Backing Sandbox (BSB) on the VBE.

        In this example, VBE_BSB_PATH=/usr/local/junos-sdk/13.1R1.6

      • VBE_DSB_PATH

        Path to your application code on the VBE.

        In this example, VBE_DSB_PATH=/usr/home/<user1>/sandboxes/hello-world

      • VBE_IP

        VBE IP address or hostname.

        In this example, VBE_IP=10.204.42.20

      • VBE_USER

        VBE user account.

        In this example, VBE_USER=<user1>

      • VE_SDK_DATA_DEFINED

        Set this to 1.

        In this example, VE_SDK_DATA_DEFINED=1

      • VM_IMG

        Guest OS VM file name, including the path.

        In this example, VM_IMG=/root/test/third-party-app.img

      • VM_IP

        Guest OS VM IP address or hostname.

        In this example, VM_IP=10.204.42.40

      • VM_USER

        Guest OS VM user account

        In this example, VM_USER=root

    Executing Packaging Scripts

    You can now execute the Junos SDK packaging scripts to package the guest VM with the required applications into a .tgz file. The Junos SDK VBE VM must be running on the server, with SCP and SSH enabled. The scripts will prompt for the VBE VM user password that you entered in the export-user-data.sh file.

    1. Issue the following commands to execute the packaging scripts.

      For example:

      cd /usr/src/remote-pkgtools/junos-sdk-remote-pkgtools
      ./mksb-vbe-dsb.sh
      ./do-setup-re-ve-pkg.sh
      ./update-vbe-dsb.sh
      ./mk-vbe-dsb.sh

      The guest VM application packages are now available in the ship directory in the VBE VM in the sandbox location you specified in the VBE_DSB_PATH in the export-user-data.sh file.

      cd /usr/home/user1/sandboxes/hello-world/13.1R1.6-obj/ship
      ls -lrt
      -rw-r--r--  1 user1 wheel    	       21040 Aug 22 12:44 third-party-app-i386-13.1I20130822_1944.tgz
      -rw-r--r--  1 user1 wheel  223695254 Aug 22 12:45 third-party-app-i386-13.1I20130822_1944.gz
      -rw-r--r--  1 user1 wheel  223767502 Aug 22 12:46 third-party-app-bundle-i386-13.1I20130822_1944.gz

    Copying the Third Party Application to the Switch

    1. Copy the third party application to the switch using either FTP or SCP:

      For example:

      root% scp //hostname/pathname/third-party-app.gz /var/tmp

    Configure the Provider Name, License Type, and Deployment Scope

    1. Configure the provider name, the license type, and the deployment scope (describes the certificate associated with the third party application), at the [edit system] hierarchy. The certificate contains parameters regarding the provider’s partnership with Juniper Networks. Configure these options to ensure that the third party application is installed.

      For example:

      {master:0}
      root# set extensions providers [ Provider Name ] license-type customer deployment-scope [ private commercial ]
    2. Commit the configuration.

      For example:

      {master:0}
      root# commit

    Here are the results of your configuration:

    system {extensions {providers {[Provider Name] {license-type customer deployment-scope [ private commercial ]}}}}

    Configure the Guest VM Options

    1. Configure the following options for guest VM support in the Junos OS CLI at the [edit] hierarchy.
      • Compute cluster name
      • Compute node name
      • Virtual machine instance name
      • Dedicated management interface for guest VM
      • Third party package name
      • Internal IP address of the guest VM
    2. Configure the name of the compute cluster and compute node.

      The name of the compute cluster must be default-cluster, and the name of the name of the compute node must be default-node, otherwise launching the guest VM fails.

      For example:

      {master:0}
      root# set services app-engine compute-cluster default-cluster compute-node default-node hypervisor
    3. Configure the name of the virtual machine instance and the name of the third party application.

      Note: The package names in the show app-engine virtual-machine-package and show version commands should match.

      {master:0}
      root# set services app-engine virtual-machines instance instance-name package package-name

      For example:

      {master:0}
      root# set services app-engine virtual-machines instance test package third-party-app ve
    4. Associate the virtual machine instance with the configured compute cluster and compute node.

      Note: The name of the compute cluster must be default-cluster, and the name of the compute node must be default-node, otherwise launching the guest VM fails.

      {master:0}
      root# set services app-engine virtual-machines instance instance-name compute-cluster name compute-node name

      For example:

      {master:0}
      root# set services app-engine virtual-machines instance test compute-cluster default-cluster compute-node default-node
    5. Configure the local management IP address.

      This IP address is used for the internal bridging interface. The host uses this IP address to check the availability of the guest VM. The IP address must be 192.168.1.X, where X is from 100 to 200.

      {master:0}
      root# set services app-engine virtual-machines instance instance-name local-management family inet address 192.168.1.X

      For example:

      {master:0}
      root# set services app-engine virtual-machines instance test local-management family inet address 192.168.1.100
    6. Configure the management interface for the guest VM.

      This management interface is separate from the one used for Junos OS.

      Note: The management interface name must be either em0 or em1. The configuration will fail if you do not configure a management interface and then commit the configuration.

      For example:

      {master:0}
      root # set services app-engine virtual-machines instance test management-interface em1

      The new management interface is provisioned for the guest VM.

    7. Commit the configuration.

      For example:

      {master:0}
      root# commit

      Here are the results of the configuration:

      services {app-engine {compute-cluster default-cluster {compute-node default-node {hypervisor;}}virtual-machines {instance test {package third-party-app;local-management {family inet {address 192.168.1.100;}}compute-cluster default-cluster {compute-node default-node;}management-interface em1;}}}
      }
    8. Configure the internal IP address of the guest VM.
      • (Preferred method) Log into the guest VM:
        shell% request app-engine virtual-machine-shell guest VM name

        For example:

        shell% request app-engine virtual-machine-shell third-party-app
      • (Alternate method) Log into the host shell by specifying the internal management IP address:

        For example:

        shell% ssh -JU __juniper_private4__ 192.168.1.1

        Issue the virsh list command to see which VMs are running. From the output, you can see that the guest VM (named test in this example) is running:

        {master:0}
        shell# virsh list
        Id    Name                           State
        ----------------------------------------------------
        3     vjunos1                        running
        4     test                           running
        

        Log into the guest VM console (named 4 in this example).

        For example:

        shell# virsh console 4
        Connected to domain test
        Escape character is ^]
        CentOS release 6.4 (Final)
        Kernel 2.6.32-358.el6.x86_64 on an x86_64
        
        [root@localhost ~]

        From the output, you can see that you are connected to the guest VM console (root@localhost)

        Enter a valid username and password combination for the guest VM.

    9. Configure the internal IP address of the guest VM on the Ethernet interface.
      • Issue the ifconfig -a command to see the name of the management interface that is used to access the guest VM from outside of the network, and the name of the management interface that is used for internal use.

        The interface names are either eth6 or eth7, or eth7 or eth8. You can associate one of the interfaces to the guest VM by issuing the set services app-engine virtual-machines instance name management-interface interface-name. command. Use the same IP address as the one you configured using the set services app-engine virtual-machines instance test local-management family inet address 192.168.1.100. The MAC addresses associated with these interfaces are used for internal bridging.

        For example:

        root@localhost ifconfig -a
        eth6      Link encap:Ethernet  HWaddr 52:54:00:5D:DB:01
                  UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                  RX packets:982 errors:0 dropped:0 overruns:0 frame:0
                  TX packets:970 errors:0 dropped:0 overruns:0 carrier:0
                  collisions:0 txqueuelen:1000
                  RX bytes:92188 (90.0 KiB)  TX bytes:91468 (89.3 KiB)
        eth7 Link encap:Ethernet HWaddr 52:54:00:5D:DB:02 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:982 errors:0 dropped:0 overruns:0 frame:0 TX packets:970 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:92188 (90.0 KiB) TX bytes:91468 (89.3 KiB)

        In this example, eth6 is a management interface that is used to access the guest VM, and eth7 is a management interface that is used for internal use.

      • Issue the ifconfig command to configure the internal IP address on the Ethernet interface. This is the same IP address you configured in the Junos OS CLI.

        For example:

        root@localhost ifconfig eth7 192.168.1.100 netmask 255.255.255.0
    10. Issue the following show commands to verify that everything is working correctly:

      For example:

      • root# show app-engine status
         Compute cluster: default-cluster
                          Compute node      Status
                          default-node      Online     

        The status should be Online.

      • root# show app-engine virtual-machine instance
        VM name                  Compute cluster           VM status
                        test               default-cluster           ACTIVE 

        The VM status should be active.

      • root# show app-engine virtual-machine instanceshow app-engine virtual-machine package
        VM package: cust-vm-ve
                        VM disk image: third-party-app-ve/20140409_015447/third-party-app.img.gz
                          Compute cluster                   Package download status
                          default-cluster                   DOWNLOADED   
        

        The package downloaded status should be either download in progress or downloaded.

      • root# show interfaces terse management-interface
        error: device em1 not found

        This interface should be detached from Junos OS.

    11. To remove the guest VM, delete the configuration statements and uninstall the third party software package.

      For example, to remove the app-engine statement:

      root # delete services app-engine

      Commit the configuration.

      For example:

      root# commit

      Issue the show version command to see what the name of the third party application package is.

      Issue the request system software delete <package-name> command to uninstall the third party application:

      For example:

      root> request system software delete third-party-app.tgz
      fpc0:
      --------------------------------------------------------------------------
      Notifying sdk-vmmd ...
      
      {master:0}

    Modified: 2016-07-22