SlideShare a Scribd company logo
How to manage Microsoft Azure
with open source
Taehee Jang
Ubuntu Korea Community Adviser
Microsoft MVP (Cloud and Datacenter Management)
2017-09-16
List
• Bash on Ubuntu on Windows – “grep” command
• Azure CLI 2.0 – Changed installation method & Basic usage
• Juju – What is Juju?
• Run Docker on Bash on Ubuntu on Windows
1. grep
Entire grep commands) https://www.gnu.org/software/grep/manual/grep.html
grep
Find text by using grep
grep 'some text' /etc/ssh/sshd_config
grep 'word' file1 file2 file3
Show texts except lines which contain specific characters
grep -v "#" /etc/apache2/sites-available/default-ssl.conf
Source) https://www.tecmint.com/12-practical-examples-of-linux-grep-command/
grep
Use with pipe
cat /etc/ssh/sshd_config | grep 'some text'
dpkg -l | grep -i python
Show with sentences before or after searched texts
ifconfig | grep -A 4 eth0
ifconfig | grep -B 2 UP
Source) https://www.tecmint.com/12-practical-examples-of-linux-grep-command/
grep
Search texts including subdirectories
grep –r “function” ./*
Count matched texts
ifconfig | grep –c inet6
Source) https://www.tecmint.com/12-practical-examples-of-linux-grep-command/
grep
Search words inside gzip file
zgrep –i error /var/log/syslog.2.gz
grep with regular expressions
grep –E → egrep
grep with simple strings
grep –F → fgrep
Source) https://www.tecmint.com/12-practical-examples-of-linux-grep-command/
2. Azure CLI 2.0
Azure CLI 2.0
▪ Written in JavaScript with Node.js -> Python
• Support : Ubuntu, Debian, CentOS, Redhat, OpenSUSE, and Mac
• Required : python libssl-dev libffi-dev python-dev build-essential
• Remove 1.0 before install 2.0
• curl -L https://aka.ms/InstallAzureCli | bash -> exec -l $SHELL
Install Azure CLI 2.0(Linux / WSL)
echo "deb [arch=amd64]
https://packages.microsoft.com/repos/azure-cli/ wheezy main" |
sudo tee /etc/apt/sources.list.d/azure-cli.list
sudo apt-key adv --keyserver packages.microsoft.com --recv-keys
417A0893
sudo apt-get install apt-transport-https
sudo apt-get update && sudo apt-get install azure-cli
Source) https://docs.microsoft.com/ko-kr/cli/azure/install-azure-cli?view=azure-cli-latest#install-on-windowsSource) https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest#install-on-windows
Start Azure CLI 2.0
Start Azure CLI 2.0
az group create –name <group name> --location <region>
az network vnet create –resource-group <group name> --name
<network name> --address-prefix <IP class> --subnet-name
<subnet name> --subnet-prefix <IP class>
az vm create –n <vm name> –g <group name> --image “<OS>”
–size <vm size>
Source) https://docs.microsoft.com/en-us/cli/azure/?view=azure-cli-latest#az_configure
3. What is Juju?
How to manage Microsoft Azure with open source
How to manage Microsoft Azure with open source
How to manage Microsoft Azure with open source
How to manage Microsoft Azure with open source
How to manage Microsoft Azure with open source
Support Clouds
Model, Charm, Bundle
Charm Model
Select My Cloud and Region
See public clouds list
juju clouds
Show clouds with regions
juju regions azure or juju show-cloud azure
Set my default cloud region
juju set-default-region azure koreacentral
Add Credentials to My Device
Add my juju credential to Bash on Ubuntu on Windows
juju add-credential azure
Enter credential name: <Name as I want>
Select auth-type: <Automatically set to interactive type if vacant>
Enter subscription-id: <My subscription id when “az login”>
How to manage Microsoft Azure with open source
Add Controllers to My Cloud
Create juju state server(controller) on Azure
juju bootstrap azure <My controller name>
You can make multiple controllers and add other companies’ cloud.
Remove controller
destroy-controller <Controller name I created>
How to manage Microsoft Azure with open source
Execute Juju GUI and Login
Connect Juju GUI URL
juju gui
Check my username and password for Juju GUI login
juju show-controller --show-password
Deploy Charm(Service) and Relate Charms
Type CLI command or search the charm on charm store
juju deploy <service as you want>
Connect between charms(services)
juju add-relation <charm 1> <charm 2>
Expose public IP for external access
juju expose <charm name to expose>
Configure Charms
SSH
How to access a specific unit
juju ssh <application name/unit number>
User command, Relation debugging
juju debug-hooks
For more information, please visit https://cloudbase.it/juju/
Juju Charms for Windows (12 Services)
Storage Spaces Direct
Nova – Hyper-V
SQL Server Express
Cinder
Active Directory SharePoint Exchange Server
SQL Server AlwaysOn
Windows File Server
Scale-Out File Server
Virtual Desktop
Infrastructure (VDI)
Windows Server
Failover Clustering
Windows Server
Update Services
For more information, please visit https://cloudbase.it/juju/
Others
Check log for Juju charms
juju debug-log
Check deployed machine and charm status
juju status
Update cloud region changes
update-clouds
4. Docker & Bash on Ubuntu on Windows
Run Docker on Bash on Ubuntu on Windows
Install Docker for Windows
Source) https://blog.jayway.com/2017/04/19/running-docker-on-bash-on-windows/
Run Docker on Bash on Ubuntu on Windows
vim ~/.bashrc and add 2 lines
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
PATH="$PATH:/mnt/c/Program Files/Docker/Docker/resources/bin“
Install packages to add https repository
# apt install apt-transport-https ca-certificates curl 
software-properties-common
Source) https://blog.jayway.com/2017/04/19/running-docker-on-bash-on-windows/
Run Docker on Bash on Ubuntu on Windows
Add Docker’s official GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo
apt-key add –
Add repository
# add-apt-repository "deb [arch=amd64]
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable“
Install Docker
sudo apt update && sudo apt install docker-ce
Source) https://blog.jayway.com/2017/04/19/running-docker-on-bash-on-windows/
Run Docker on Bash on Ubuntu on Windows
Enable “Expose daemon on tcp://localhost:2375 without TLS” on Docker
Source) https://blog.jayway.com/2017/04/19/running-docker-on-bash-on-windows/
Run Docker on Bash on Ubuntu on Windows
Connect Docker on WSL to Docker on Windows
echo "export DOCKER_HOST='tcp://0.0.0.0:2375'" >> ~/.bashrc
source ~/.bashrc
Check Docker works
Source) https://blog.jayway.com/2017/04/19/running-docker-on-bash-on-windows/

More Related Content

What's hot (20)

PDF
Install and Configure Ubuntu for Hadoop Installation for beginners
Shilpa Hemaraj
 
PDF
파이썬 개발환경 구성하기의 끝판왕 - Docker Compose
raccoony
 
PDF
Drupal camp South Florida 2011 - Introduction to the Aegir hosting platform
Hector Iribarne
 
PPTX
AWS 기반 Docker, Kubernetes
정빈 권
 
PPTX
Docker practice
wonyong hwang
 
PPTX
Hadoop single cluster installation
Minh Tran
 
PPTX
Lessons from running potentially malicious code inside containers
Ben Hall
 
PPT
Hadoop on ec2
Mark Kerzner
 
PDF
CoreOS : 설치부터 컨테이너 배포까지
충섭 김
 
PDF
DevOps(3) : Ansible - (MOSG)
Soshi Nemoto
 
DOCX
Ansible ex407 and EX 294
IkiArif1
 
PPTX
Install odoo v8 the easiest way on ubuntu debian
Francisco Servera
 
PPT
Running High Performance and Fault Tolerant Elasticsearch Clusters on Docker
Sematext Group, Inc.
 
PDF
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
Омские ИТ-субботники
 
PDF
Configuration Surgery with Augeas
Puppet
 
PDF
Hyperledger composer
wonyong hwang
 
PPT
Learn basic ansible using docker
Larry Cai
 
PPT
Squid Server
Sumant Garg
 
PPTX
Real World Lessons on the Pain Points of Node.js Applications
Ben Hall
 
PDF
Py conkr 20150829_docker-python
Eric Ahn
 
Install and Configure Ubuntu for Hadoop Installation for beginners
Shilpa Hemaraj
 
파이썬 개발환경 구성하기의 끝판왕 - Docker Compose
raccoony
 
Drupal camp South Florida 2011 - Introduction to the Aegir hosting platform
Hector Iribarne
 
AWS 기반 Docker, Kubernetes
정빈 권
 
Docker practice
wonyong hwang
 
Hadoop single cluster installation
Minh Tran
 
Lessons from running potentially malicious code inside containers
Ben Hall
 
Hadoop on ec2
Mark Kerzner
 
CoreOS : 설치부터 컨테이너 배포까지
충섭 김
 
DevOps(3) : Ansible - (MOSG)
Soshi Nemoto
 
Ansible ex407 and EX 294
IkiArif1
 
Install odoo v8 the easiest way on ubuntu debian
Francisco Servera
 
Running High Performance and Fault Tolerant Elasticsearch Clusters on Docker
Sematext Group, Inc.
 
2017-03-11 02 Денис Нелюбин. Docker & Ansible - лучшие друзья DevOps
Омские ИТ-субботники
 
Configuration Surgery with Augeas
Puppet
 
Hyperledger composer
wonyong hwang
 
Learn basic ansible using docker
Larry Cai
 
Squid Server
Sumant Garg
 
Real World Lessons on the Pain Points of Node.js Applications
Ben Hall
 
Py conkr 20150829_docker-python
Eric Ahn
 

Similar to How to manage Microsoft Azure with open source (20)

PDF
Informology - Introduction to juju
Khairul Aizat Kamarudzzaman
 
PPTX
Neil Peterson - Azure CLI Deep Dive
WinOps Conf
 
PDF
DevOpsMtl, Metal edition – MaaS and Juju
Leonardo Borda
 
PPTX
Kubernetes for .NET Developers
Lorenzo Barbieri
 
PDF
Docker Tips And Tricks at the Docker Beijing Meetup
Jérôme Petazzoni
 
PPTX
Docker Seattle Meetup April 2015 - The Docker Orchestration Ecosystem on Azure
Patrick Chanezon
 
PPTX
Docker New York Meetup May 2015 - The Docker Orchestration Ecosystem on Azure
Patrick Chanezon
 
PDF
04_Azure Kubernetes Service: Basic Practices for Developers_GAB2019
Kumton Suttiraksiri
 
PPTX
Azure cli-azure devops
Thi Nguyen Dinh
 
PDF
k8s-on-azure
Ganesh Pol
 
PDF
MLUG Workshop January 2014 - Introducing Juju
Keith Vassallo
 
PPTX
Introduction to automated environment management with Docker Containers - for...
Lucas Jellema
 
PPT
Containers 101
Black Duck by Synopsys
 
PDF
Best Practices for Developing & Deploying Java Applications with Docker
Eric Smalling
 
PPTX
Azure: Docker Container orchestration, PaaS ( Service Farbic ) and High avail...
Alexey Bokov
 
PPTX
Making sense of containers, docker and Kubernetes on Azure.
Nills Franssens
 
PPTX
Container on azure
Vishwas N
 
PPTX
Using Azure DevOps to continuously build, test, and deploy containerized appl...
Adrian Todorov
 
PDF
Cloud Juju Primer
The World Bank
 
PDF
Introduction to Containers - From Docker to Kubernetes and everything in between
All Things Open
 
Informology - Introduction to juju
Khairul Aizat Kamarudzzaman
 
Neil Peterson - Azure CLI Deep Dive
WinOps Conf
 
DevOpsMtl, Metal edition – MaaS and Juju
Leonardo Borda
 
Kubernetes for .NET Developers
Lorenzo Barbieri
 
Docker Tips And Tricks at the Docker Beijing Meetup
Jérôme Petazzoni
 
Docker Seattle Meetup April 2015 - The Docker Orchestration Ecosystem on Azure
Patrick Chanezon
 
Docker New York Meetup May 2015 - The Docker Orchestration Ecosystem on Azure
Patrick Chanezon
 
04_Azure Kubernetes Service: Basic Practices for Developers_GAB2019
Kumton Suttiraksiri
 
Azure cli-azure devops
Thi Nguyen Dinh
 
k8s-on-azure
Ganesh Pol
 
MLUG Workshop January 2014 - Introducing Juju
Keith Vassallo
 
Introduction to automated environment management with Docker Containers - for...
Lucas Jellema
 
Containers 101
Black Duck by Synopsys
 
Best Practices for Developing & Deploying Java Applications with Docker
Eric Smalling
 
Azure: Docker Container orchestration, PaaS ( Service Farbic ) and High avail...
Alexey Bokov
 
Making sense of containers, docker and Kubernetes on Azure.
Nills Franssens
 
Container on azure
Vishwas N
 
Using Azure DevOps to continuously build, test, and deploy containerized appl...
Adrian Todorov
 
Cloud Juju Primer
The World Bank
 
Introduction to Containers - From Docker to Kubernetes and everything in between
All Things Open
 
Ad

Recently uploaded (20)

PDF
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
PPTX
Digital Circuits, important subject in CS
contactparinay1
 
PPTX
Manual Testing for Accessibility Enhancement
Julia Undeutsch
 
PDF
NASA A Researcher’s Guide to International Space Station : Earth Observations
Dr. PANKAJ DHUSSA
 
PPTX
Wondershare Filmora Crack Free Download 2025
josanj305
 
PDF
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
PDF
Modern Decentralized Application Architectures.pdf
Kalema Edgar
 
PDF
“ONNX and Python to C++: State-of-the-art Graph Compilation,” a Presentation ...
Edge AI and Vision Alliance
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
PDF
[GDGoC FPTU] Spring 2025 Summary Slidess
minhtrietgect
 
PPTX
Essential Content-centric Plugins for your Website
Laura Byrne
 
PDF
🚀 Let’s Build Our First Slack Workflow! 🔧.pdf
SanjeetMishra29
 
PDF
Next Generation AI: Anticipatory Intelligence, Forecasting Inflection Points ...
dleka294658677
 
PPTX
Securing Model Context Protocol with Keycloak: AuthN/AuthZ for MCP Servers
Hitachi, Ltd. OSS Solution Center.
 
PDF
Bharatiya Antariksh Hackathon 2025 Idea Submission PPT.pdf
ghjghvhjgc
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PDF
Bitkom eIDAS Summit | European Business Wallet: Use Cases, Macroeconomics, an...
Carsten Stoecker
 
PDF
99 Bottles of Trust on the Wall — Operational Principles for Trust in Cyber C...
treyka
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
Digital Circuits, important subject in CS
contactparinay1
 
Manual Testing for Accessibility Enhancement
Julia Undeutsch
 
NASA A Researcher’s Guide to International Space Station : Earth Observations
Dr. PANKAJ DHUSSA
 
Wondershare Filmora Crack Free Download 2025
josanj305
 
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
Modern Decentralized Application Architectures.pdf
Kalema Edgar
 
“ONNX and Python to C++: State-of-the-art Graph Compilation,” a Presentation ...
Edge AI and Vision Alliance
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
[GDGoC FPTU] Spring 2025 Summary Slidess
minhtrietgect
 
Essential Content-centric Plugins for your Website
Laura Byrne
 
🚀 Let’s Build Our First Slack Workflow! 🔧.pdf
SanjeetMishra29
 
Next Generation AI: Anticipatory Intelligence, Forecasting Inflection Points ...
dleka294658677
 
Securing Model Context Protocol with Keycloak: AuthN/AuthZ for MCP Servers
Hitachi, Ltd. OSS Solution Center.
 
Bharatiya Antariksh Hackathon 2025 Idea Submission PPT.pdf
ghjghvhjgc
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
Bitkom eIDAS Summit | European Business Wallet: Use Cases, Macroeconomics, an...
Carsten Stoecker
 
99 Bottles of Trust on the Wall — Operational Principles for Trust in Cyber C...
treyka
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
Ad

How to manage Microsoft Azure with open source

  • 1. How to manage Microsoft Azure with open source Taehee Jang Ubuntu Korea Community Adviser Microsoft MVP (Cloud and Datacenter Management) 2017-09-16
  • 2. List • Bash on Ubuntu on Windows – “grep” command • Azure CLI 2.0 – Changed installation method & Basic usage • Juju – What is Juju? • Run Docker on Bash on Ubuntu on Windows
  • 4. Entire grep commands) https://www.gnu.org/software/grep/manual/grep.html
  • 5. grep Find text by using grep grep 'some text' /etc/ssh/sshd_config grep 'word' file1 file2 file3 Show texts except lines which contain specific characters grep -v "#" /etc/apache2/sites-available/default-ssl.conf Source) https://www.tecmint.com/12-practical-examples-of-linux-grep-command/
  • 6. grep Use with pipe cat /etc/ssh/sshd_config | grep 'some text' dpkg -l | grep -i python Show with sentences before or after searched texts ifconfig | grep -A 4 eth0 ifconfig | grep -B 2 UP Source) https://www.tecmint.com/12-practical-examples-of-linux-grep-command/
  • 7. grep Search texts including subdirectories grep –r “function” ./* Count matched texts ifconfig | grep –c inet6 Source) https://www.tecmint.com/12-practical-examples-of-linux-grep-command/
  • 8. grep Search words inside gzip file zgrep –i error /var/log/syslog.2.gz grep with regular expressions grep –E → egrep grep with simple strings grep –F → fgrep Source) https://www.tecmint.com/12-practical-examples-of-linux-grep-command/
  • 10. Azure CLI 2.0 ▪ Written in JavaScript with Node.js -> Python • Support : Ubuntu, Debian, CentOS, Redhat, OpenSUSE, and Mac • Required : python libssl-dev libffi-dev python-dev build-essential • Remove 1.0 before install 2.0 • curl -L https://aka.ms/InstallAzureCli | bash -> exec -l $SHELL
  • 11. Install Azure CLI 2.0(Linux / WSL) echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ wheezy main" | sudo tee /etc/apt/sources.list.d/azure-cli.list sudo apt-key adv --keyserver packages.microsoft.com --recv-keys 417A0893 sudo apt-get install apt-transport-https sudo apt-get update && sudo apt-get install azure-cli Source) https://docs.microsoft.com/ko-kr/cli/azure/install-azure-cli?view=azure-cli-latest#install-on-windowsSource) https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest#install-on-windows
  • 13. Start Azure CLI 2.0 az group create –name <group name> --location <region> az network vnet create –resource-group <group name> --name <network name> --address-prefix <IP class> --subnet-name <subnet name> --subnet-prefix <IP class> az vm create –n <vm name> –g <group name> --image “<OS>” –size <vm size>
  • 15. 3. What is Juju?
  • 23. Select My Cloud and Region See public clouds list juju clouds Show clouds with regions juju regions azure or juju show-cloud azure Set my default cloud region juju set-default-region azure koreacentral
  • 24. Add Credentials to My Device Add my juju credential to Bash on Ubuntu on Windows juju add-credential azure Enter credential name: <Name as I want> Select auth-type: <Automatically set to interactive type if vacant> Enter subscription-id: <My subscription id when “az login”>
  • 26. Add Controllers to My Cloud Create juju state server(controller) on Azure juju bootstrap azure <My controller name> You can make multiple controllers and add other companies’ cloud. Remove controller destroy-controller <Controller name I created>
  • 28. Execute Juju GUI and Login Connect Juju GUI URL juju gui Check my username and password for Juju GUI login juju show-controller --show-password
  • 29. Deploy Charm(Service) and Relate Charms Type CLI command or search the charm on charm store juju deploy <service as you want> Connect between charms(services) juju add-relation <charm 1> <charm 2> Expose public IP for external access juju expose <charm name to expose>
  • 31. SSH How to access a specific unit juju ssh <application name/unit number> User command, Relation debugging juju debug-hooks
  • 32. For more information, please visit https://cloudbase.it/juju/
  • 33. Juju Charms for Windows (12 Services) Storage Spaces Direct Nova – Hyper-V SQL Server Express Cinder Active Directory SharePoint Exchange Server SQL Server AlwaysOn Windows File Server Scale-Out File Server Virtual Desktop Infrastructure (VDI) Windows Server Failover Clustering Windows Server Update Services For more information, please visit https://cloudbase.it/juju/
  • 34. Others Check log for Juju charms juju debug-log Check deployed machine and charm status juju status Update cloud region changes update-clouds
  • 35. 4. Docker & Bash on Ubuntu on Windows
  • 36. Run Docker on Bash on Ubuntu on Windows Install Docker for Windows Source) https://blog.jayway.com/2017/04/19/running-docker-on-bash-on-windows/
  • 37. Run Docker on Bash on Ubuntu on Windows vim ~/.bashrc and add 2 lines PATH="$HOME/bin:$HOME/.local/bin:$PATH" PATH="$PATH:/mnt/c/Program Files/Docker/Docker/resources/bin“ Install packages to add https repository # apt install apt-transport-https ca-certificates curl software-properties-common Source) https://blog.jayway.com/2017/04/19/running-docker-on-bash-on-windows/
  • 38. Run Docker on Bash on Ubuntu on Windows Add Docker’s official GPG key curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add – Add repository # add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable“ Install Docker sudo apt update && sudo apt install docker-ce Source) https://blog.jayway.com/2017/04/19/running-docker-on-bash-on-windows/
  • 39. Run Docker on Bash on Ubuntu on Windows Enable “Expose daemon on tcp://localhost:2375 without TLS” on Docker Source) https://blog.jayway.com/2017/04/19/running-docker-on-bash-on-windows/
  • 40. Run Docker on Bash on Ubuntu on Windows Connect Docker on WSL to Docker on Windows echo "export DOCKER_HOST='tcp://0.0.0.0:2375'" >> ~/.bashrc source ~/.bashrc Check Docker works Source) https://blog.jayway.com/2017/04/19/running-docker-on-bash-on-windows/