Step 1: Prepare Your Machines#

  1. Install a clean Ubuntu* OS on the control plane and, for Multi-Node deployments, on all edge nodes. This example uses Ubuntu* Server, but Ubuntu* Desktop is also supported. Here are the high-level steps.

    1. Download the Ubuntu* Server ISO file to your developer workstation for the control plane and for the edge nodes. For the supported version, see Requirements.

    2. Follow the prompts to install Ubuntu* with the default configurations.

    3. For detailed instructions, see the Ubuntu* guide.

    Expected result: Ubuntu* Server is successfully installed.

  2. Verify that PATH is configured in /etc/environment to contain, at a minimum:

    PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
    

    If a proxy is required to connect to the Internet:

    1. Add the proxy settings in /etc/environment:

      export http_proxy="http://<http_proxy>:port"
      export https_proxy="http://<https_proxy>:port"
      export ftp_proxy="http://<ftp_proxy>:port"
      export no_proxy="<no_proxy>"
      
    2. Apply the proxy settings:

      source /etc/environment
      
  3. On the control plane and all edge nodes, install the following packages:

    sudo apt-get update
    sudo apt-get install ssh
    sudo apt-get install net-tools wget pipenv git ansible
    pip install sh
    
  4. On the control plane and all edge nodes, upgrade the following packages:

    sudo pip install pyopenssl --upgrade
    
  5. Configure the control plane with a static IP. This is needed to avoid IP changes during control plane reboots. For help on how to set a static IP, go to Troubleshooting.

    Note

    This step is needed because the deployment reboots the control plane multiple times, and the deployment assumes the control plane has the same IP every time.

  6. If the system does not have a host name, set hostname:

    sudo hostname -b <hostname>
    
  7. On the control plane and all edge nodes, make sure that password-less ssh access for root is set.

    1. Edit /etc/ssh/sshd_config:

      sudo nano /etc/ssh/sshd_config
      
    2. Add the following line at the end of the file:

      PermitRootLogin yes
      
    3. Restart the ssh service:

      sudo service ssh restart
      
  8. Log in as root. Do all of the remaining actions, after this point, in Step 1 as root.

    sudo su -
    
  9. On the control plane and all edge nodes, set a password for root.

    If root does not already have a password, set a password for root:

    passwd
    
  10. Generate and add the ssh keys on the control plane.

    For a Single-Node Deployment

    1. Send the keys from the control plane to itself. This is needed because Intel® Smart Edge Open uses the ssh connection from the control plane to the worker node even though they are on the same machine.

      ssh-keygen -f $HOME/.ssh/id_rsa -P ""
      ssh-copy-id root@<hostname of the control plane>
      chmod -R 700 ~/.ssh
      
    2. Update /etc/hosts:

      127.0.0.1       localhost  <enter the system's hostname here>
      127.0.1.1       <enter the system's hostname here>
      
      # The following lines are desirable for IPv6 capable hosts
      ::1             localhost ip6-localhost ip6-loopback <enter the system's hostname here>
      ff02::1 ip6-allnodes
      ff02::2 ip6-allrouters
      

    For a Multi-Node Deployment

    1. Generate the ssh key.

      ssh-keygen -f $HOME/.ssh/id_rsa -P ""
      
    2. On the control plane and all edge nodes, send the keys from the control plane to all edge nodes and from the control plane to itself:

      ssh-copy-id root@<hostname of the control plane or edge node>
      
    3. On the control plane and all edge nodes, set the correct permissions for the ~/.ssh directory:

      chmod -R 700 ~/.ssh
      
    4. On the control plane and all edge nodes, update /etc/hosts:

      127.0.0.1       localhost  <enter the system's hostname here>
      127.0.1.1       <enter the system's hostname here>
      
      # The following lines are desirable for IPv6 capable hosts
      ::1     localhost ip6-localhost ip6-loopback <enter the system's hostname here>
      ff02::1 ip6-allnodes
      ff02::2 ip6-allrouters
      
  11. Verify that all systems have the same date and time.

    Note

    This step is required in multi-node deployment only.

    date
    

    If the date and time are not identical on all systems, synchronize the date and time between the control plane and edge nodes by running this command from the control plane to each edge node:

    date +%Y%m%d%T -s "`ssh root@<hostname of the edge node> 'date "+%Y%m%d %T"'`"
    

    Note

    • This synchronizes the date and time between systems for this boot.

    • A reboot may de-synchronize the systems.

    • The systems should be configured to reflect the real world date and time.

    • See Ubuntu’s time synchronization for detailed instructions.