github.com/chasestarr/deis@v1.13.5-0.20170519182049-1d9e59fbdbfc/docs/installing_deis/azure.rst (about)

     1  :title: Installing Deis on Microsoft Azure
     2  :description: How to provision a multi-node Deis cluster on Microsoft Azure
     3  
     4  .. _deis_on_azure:
     5  
     6  Microsoft Azure
     7  ===============
     8  
     9  This section will show you how to create a 3-node Deis cluster on Microsoft Azure.
    10  
    11  Before you start, :ref:`get the Deis source <get_the_source>` and change directory into `contrib/azure`_
    12  while following this documentation.
    13  
    14  
    15  Install Tools
    16  -------------
    17  
    18  The cluster creation tool uses a Python script to generate a configuration file.
    19  This script uses PyYAML, a Python library, to do its work.
    20  
    21  If you haven't already, install these on your development machine:
    22  
    23  For OSX users:
    24  
    25  .. code-block:: console
    26  
    27      $ brew install python
    28      $ sudo pip install pyyaml
    29  
    30  For Ubuntu users:
    31  
    32  .. code-block:: console
    33  
    34      $ sudo apt-get install -y python-yaml
    35  
    36  Additionally, we'll also need to install the `Azure CLI`_ from Microsoft.
    37  
    38  Create CoreOS Cluster
    39  ---------------------
    40  
    41  First, login to the Azure CLI:
    42  
    43  .. code-block:: console
    44  
    45      $ azure login
    46  
    47  .. note::
    48  
    49      Deis makes use of `Azure Resource Manager`_ to submit a template
    50      describing the infrastructure that we'd like to create. You'll need an
    51      `organizational account`_ (not a typical Microsoft or Live account) in order to
    52      use this template.
    53  
    54  Instruct the client to switch to ARM mode:
    55  
    56  .. code-block:: console
    57  
    58      $ azure config mode arm
    59  
    60  Switch to the ``contrib/azure`` directory:
    61  
    62  .. code-block:: console
    63  
    64      $ cd contrib/azure
    65  
    66  Generate a new discovery URL for the deployment so the hosts can find each other:
    67  
    68  .. code-block:: console
    69  
    70      $ ./create-azure-user-data $(curl -s https://discovery.etcd.io/new)
    71  
    72  Next, edit ``parameters.json`` to configure the parameters required for the
    73  cluster. For ``publicDomainName``, specify the prefix of domain name (like ``deisNode``).
    74  For ``sshKeyData``, use the public key material for the SSH key you'd like
    75  to use to log into the hosts. For ``customData``, you'll need to supply the
    76  base64-encoded version of ``azure-user-data``. This can be generated using ``base64``:
    77  
    78  .. code-block:: console
    79  
    80      $ base64 azure-user-data
    81  
    82  Paste the result into ``parameters.json``. Any of the values in ``parameters.json``
    83  are defaults and can be customized if desired.
    84  
    85  .. note::
    86  
    87    For best performance, Deis clusters on Azure default to using `premium storage`_.
    88    This incurs an additional cost. Using standard storage is possible, but is unsupported
    89    as it resulted in cluster issues during testing. Premium storage is only available
    90    in `some regions`_.
    91  
    92  Finally, we can deploy. Choose a valid location to deploy -- you can list all locations
    93  with ``azure location list``.
    94  
    95  As an example, to create a deployment named "deis" in the "West US" region:
    96  
    97  .. code-block:: console
    98  
    99      $ azure group create --name deis --location "West US" --deployment-name deis --template-file arm-template.json --parameters-file parameters.json
   100  
   101  Each instance will have a public IP address which can be used to log in via SSH
   102  or as a tunnel endpoint for ``deisctl``. You can get these IPs from the Azure Portal
   103  or via the CLI with ``azure vm show``:
   104  
   105  .. code-block:: console
   106  
   107      $ azure vm show deisNode0 --resource-group deis | grep 'Public IP address'
   108  
   109  Configure DNS
   110  -------------
   111  
   112  See :ref:`configure-dns` for more information on properly setting up your DNS records with Deis.
   113  
   114  
   115  Install Deis Platform
   116  ---------------------
   117  
   118  Now that you've finished provisioning a cluster, please refer to :ref:`install_deis_platform` to
   119  start installing the platform.
   120  
   121  .. _`Azure CLI`: https://azure.microsoft.com/en-us/documentation/articles/xplat-cli-install/
   122  .. _`Azure Resource Manager`: https://azure.microsoft.com/en-us/documentation/articles/resource-manager-deployment-model/
   123  .. _`contrib/azure`: https://github.com/deis/deis/tree/master/contrib/azure
   124  .. _`organizational account`: http://www.brucebnews.com/2013/04/the-difference-between-a-microsoft-account-and-an-office-365-account/
   125  .. _`premium storage`: https://azure.microsoft.com/en-us/services/storage/premium-storage/
   126  .. _`some regions`: https://azure.microsoft.com/en-us/regions/#services