Setting up your Ubuntu 20.04 developer environment to build Azure solutions
This project is maintained by gloveboxes
Author | Dave Glover, Microsoft Australia |
---|---|
Platform | Ubuntu 18.04 for Azure Developers, Kubuntu 18.04 for Azure Developers, Ubuntu 16.04 for Azure Developers |
Date | As at Feb 2019 |
This guide assumes you have some experience with Linux and you will open Terminal and Ctrl-Shift-V to paste in Bash commands.
Feel free to contribute to this guide.
Visual Studio Code is a must have IDE, open source, extensible, great language, debugging and tooling support.
Head to Visual Studio Code and download the .deb file for Debian and Ubuntu then install with QApt Package Installer.
There are a stack of great extensions for Visual Studio Code. These are the ones that I find most useful.
When you start Visual Studio Code for the first time you’ll be prompted to install the GitHub client.
sudo apt install git
Before you can commit any changes against GitHub you’ll need to configure who you are.
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
If you are using GitHub two-factor authentication then you’ll need to create a GitHub token that you need to store securely. See Creating a personal access token for the command line for more information. You’ll need to use this token in place of your password when pushing changes to GitHub.
Check out Caching your GitHub password in Git to cache your GitHub credentials so you won’t be asked for your credentials every time you push/sync you repository.
In summary you need to run the following commands. Personally I use a much bigger number than 3600.
git config --global credential.helper 'cache --timeout=3600'
If you are using Visual Studio Team Services then checkout Use Git Credential Managers to Authenticate to VSTS
Install the latest release of the .NET Core SDK
Confirm successful installation of .NET Core SDK
dotnet --version
sudo snap install storage-explorer
Install Azurite, a lightweight server clone of Azure Blob, Queue, and Table Storage that simulates most of the commands supported by it with minimal dependencies.
Notes.
Be sure that ‘curl’ is installed.
sudo apt install curl
Install Azure CLI 2.0 with apt
Code and test Azure Functions locally
Azure Functions Core Tools (note updated instructions for Ubuntu 18.04)
As at August 2018 see Install the Azure Functions Core Tools
cd ~/Downloads && \
sudo apt install curl -y
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs)-prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list'
sudo apt-get update
sudo apt-get install azure-functions-core-tools
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && \
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
sudo apt update
sudo apt install -y docker-ce && \
sudo systemctl status docker
It’s useful to add your user sudo rights to Docker. Note, you’ll need to restart your system for this setting to take effect.
sudo usermod -aG docker $USER
Notes.
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs
Notes.
It is a free, easy-to-install package manager, environment manager and Python distribution with a collection of 1,000+ open source packages with free community support. Anaconda is platform-agnostic, so you can use it whether you are on Windows, macOS or Linux.
Create an Anaconda Navigator Desktop Resource
mkdir -p ~/.local/share/applications && \
cat > ~/.local/share/applications/anaconda-navigator.desktop <<EOL
[Desktop Entry]
Encoding=UTF-8
Name=Anaconda
Exec=/home/dave/anaconda3/bin/anaconda-navigator
Icon=/home/dave/anaconda3/lib/python3.6/site-packages/anaconda_navigator/static/images/anaconda-icon-256x256.png
Terminal=false
Type=Application
Categories=Development;
EOL
Notes.
If you want Tensorflow with GPU support for use with Python then by far the easiest way to install is with Anaconda as it will install the complete CUDA toolkit and cuDNN library into your selected environment. But note, this is community supported, and not officially supported.
Create the Anaconda environment
This would create a Anaconda environment with tensorflow-gpu support (requires an tensorflow capable nVida GPU, alternatively specify tersorflow-cpu), targeting Python 3.5, plus adds pylint useful in Visual Studio Code, and Jupyter Notebook support.
conda create -n <envName> python=3.5 tensorflow-gpu pylint scipy jupyter requests scikit-learn
Activate the Anaconda environment
Activate the Anaconda environment
source activate <envName>
Deactivate an Anaconda Environment
source deactivate
Anaconda Navigator is the easiest way to manage Anaconda environments and launch environments.
anaconda-navigator
Create your Python Project, open it with Visual Studio Code add a python file and select the Tensorflow environment you just created.
See
pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.10.1-cp35-cp35m-linux_x86_64.whl pylint scipy
If your PC has a nVidia GPU and you want to developer with Docker and TensorFlow-GPU support. Simpler than installing CUDA Driver and Toolkit on to local system.
Notes.
For information on setting up CNTK Docker Containers.
Ensure the NVIDIA Container Runtime for Docker is installed.
nvidia-docker run -d -p 8888:8888 --name cntk-jupyter-notebooks -t microsoft/cntk
Start Jupyter Notebook server in your Docker container:
docker exec -it cntk-jupyter-notebooks bash -c "source /cntk/activate-cntk && jupyter-notebook --no-browser --port=8888 --ip=0.0.0.0 --notebook-dir=/cntk/Tutorials --allow-root"
Install library dependency
sudo apt install libgconf-2-4
Download and Install Postman
cd ~/Downloads && \
wget https://dl.pstmn.io/download/latest/linux64 -O postman.tar.gz && \
sudo tar -xzf postman.tar.gz -C /opt && \
rm postman.tar.gz && \
sudo ln -s /opt/Postman/app/Postman /usr/bin/postman
Create Postman Desktop Resource
cat > ~/.local/share/applications/postman.desktop <<EOL
[Desktop Entry]
Encoding=UTF-8
Name=Postman
Exec=postman
Icon=/opt/Postman/app/resources/app/assets/icon.png
Terminal=false
Type=Application
Categories=Development;
EOL
Notes.
sudo apt-get install virtualbox
Microsoft Azure IoT extension for Azure CLI
az extension add --name azure-iot
Example IoT Hub command
az iot hub monitor-events --hub-name IotHubName
Notes.
If you are targeting ARM for your Docker builds then you will need to run the following command before you do your Docker build.
docker run --rm --privileged multiarch/qemu-user-static:register --reset
Notes.
Install SQL Server and create a database on Ubuntu
Note, deleting a Microsoft SQL Server Docker container will also delete its data. So docker run to download and create and run the docker SQL Container and then use docker stop and start to control.
sudo docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=<YourStrong!Passw0rd>' \
-p 1433:1433 --name sql1 \
-d microsoft/mssql-server-linux:2017-latest
To stop the Microsoft SQL Server Docker container.
docker stop sql1
To start the Microsoft SQL Server Docker container.
docker start sql1
Notes.
Follow the notes for Installing Microsoft SQL Operations Studio
Use Visual Studio Code to create and run Transact-SQL scripts for SQL Server
Download the Arduino IDE
Download from Fritzing Download Site.
I install in to a non system directory as Fritzing will complain that it doesn’t have access rights to create parts bins.
cd ~/Downloads && \
mkdir -p ~/Apps && \
tar -C $_ -xvjf fritzing-0.9.3b.linux.AMD64.tar.bz2 && \
sudo ln -s ~/Apps/fritzing-0.9.3b.linux.AMD64/Fritzing /usr/bin/fritzing
Create Fritzing Desktop Resource file
cat > ~/.local/share/applications/fritzing.desktop <<EOL
[Desktop Entry]
Version=0.9.3b
Name=Fritzing
GenericName=Fritzing
Comment=Electronic Design Automation software
Exec=fritzing
Icon=/home/dave/Apps/fritzing-0.9.3b.linux.AMD64/icons/fritzing_icon.png
Terminal=false
Type=Application
Categories=Development;IDE;Electronics;EDA;
X-SuSE-translate=false
StartupNotify=true
Categories=PCB;
MimeType=application/x-fritzing-fz;application/x-fritzing-fzz;application/x-fritzing-fzp;application/x-fritzing-fzpz;application/x-fritzing-fzb;application/x-fritzing-fzbz;application/x-fritzing-fzm;
EOL
Hands-on Grove Starter Kit for Azure IoT Edge
How to Install Grub Customizer
How To Mount OneDrive In Linux Using Rclone
Access Windows 10 Stick Notes via your browser - very handy for casual note taking