==========================
Getting Started With Azure
==========================
.. versionadded:: 2014.1.0
Azure is a cloud service by Microsoft providing virtual machines, SQL services,
media services, and more. This document describes how to use Salt Cloud to
create a virtual machine on Azure, with Salt installed.
You can find more information about Azure at `http://www.windowsazure.com/
`_.
Dependencies
============
* The `Azure `_ Python SDK.
* A Microsoft Azure account
* OpenSSL (to generate the certificates)
* `Salt `_
Configuration
=============
Set up the provider config at ``/etc/salt/cloud.providers.d/azure.conf``:
.. code-block:: yaml
# Note: This example is for /etc/salt/cloud.providers.d/azure.conf
my-azure-config:
provider: azure
subscription_id: 3287abc8-f98a-c678-3bde-326766fd3617
certificate_path: /etc/salt/azure.pem
# Set up the location of the salt master
#
minion:
master: saltmaster.example.com
provider: azure
# Optional
management_host: management.core.windows.net
The certificate used must be generated by the user. OpenSSL can be used to
create the management certificates. Two certificates are needed: a .cer file,
which is uploaded to Azure, and a .pem file, which is stored locally.
To create the .pem file, execute the following command:
.. code-block:: bash
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/salt/azure.pem -out /etc/salt/azure.pem
To create the .cer file, execute the following command:
.. code-block:: bash
openssl x509 -inform pem -in /etc/salt/azure.pem -outform der -out /etc/salt/azure.cer
After you creating these files, the .cer file will need to be uploaded to
Azure via the "Upload" action of the "Settings" tab of the management portal.
Optionally, a ``management_host`` may be configured, if necessary for your
region.
Cloud Profiles
==============
Set up an initial profile at ``/etc/salt/cloud.profiles``:
.. code-block:: yaml
azure-ubuntu:
provider: my-azure-config
image: 'b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-12_04_3-LTS-amd64-server-20131003-en-us-30GB'
size: Small
location: 'East US'
ssh_username: azureuser
ssh_password: verybadpass
slot: production
media_link: 'http://portalvhdabcdefghijklmn.blob.core.windows.net/vhds'
These options are described in more detail below. Once configured, the profile
can be realized with a salt command:
.. code-block:: bash
salt-cloud -p azure-ubuntu newinstance
This will create an salt minion instance named ``newinstance`` in Azure. If
the command was executed on the salt-master, its Salt key will automatically
be signed on the master.
Once the instance has been created with salt-minion installed, connectivity to
it can be verified with Salt:
.. code-block:: bash
salt newminion test.ping
Profile Options
===============
The following options are currently available for Azure.
provider
--------
The name of the provider as configured in
`/etc/salt/cloud.providers.d/azure.conf`.
image
-----
The name of the image to use to create a VM. Available images can be viewed
using the following command:
.. code-block:: bash
salt-cloud --list-images my-azure-config
size
----
The name of the size to use to create a VM. Available sizes can be viewed using
the following command:
.. code-block:: bash
salt-cloud --list-sizes my-azure-config
location
--------
The name of the location to create a VM in. Available locations can be viewed
using the following command:
.. code-block:: bash
salt-cloud --list-locations my-azure-config
ssh_username
------------
The user to use to log into the newly-created VM to install Salt.
ssh_password
------------
The password to use to log into the newly-created VM to install Salt.
slot
----
The environment to which the hosted service is deployed. Valid values are
`staging` or `production`. When set to `production`, the resulting URL of the
new VM will be `.cloudapp.net`. When set to `staging`, the resulting
URL will contain a generated hash instead.
media_link
----------
This is the URL of the container that will store the disk that this VM uses.
Currently, this container must already exist. If a VM has previously been
created in the associated account, a container should already exist. In the web
interface, go into the Storage area and click one of the available storage
selections. Click the Containers link, and then copy the URL from the container
that will be used. It generally looks like:
.. code-block:: yaml
http://portalvhdabcdefghijklmn.blob.core.windows.net/vhds
Show Instance
=============
This action is a thin wrapper around ``--full-query``, which displays details on
a single instance only. In an environment with several machines, this will save
a user from having to sort through all instance data, just to examine a single
instance.
.. code-block:: bash
salt-cloud -a show_instance myinstance