Commit af4dcf5a authored by Craig Norris's avatar Craig Norris

Merge branch 'axil-update-azure-install-docs' into 'master'

Update the Azure installation docs

See merge request gitlab-org/gitlab!43102
parents b687e8dc 84b56b31
......@@ -8,443 +8,316 @@ type: howto
# Install GitLab on Microsoft Azure **(FREE SELF)**
WARNING:
This guide is deprecated and pending an update. For the time being, use the GitLab
[image in the Azure Marketplace](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/gitlabinc1586447921813.gitlabee?tab=Overview).
Azure is Microsoft's business cloud and GitLab is a pre-configured offering on
the Azure Marketplace. Hopefully, you aren't surprised to hear that Microsoft
and Azure have embraced open source software like Ubuntu, Red Hat Enterprise Linux,
and of course - GitLab! This means that you can spin up a pre-configured
GitLab VM and have your very own private GitLab up and running in around 30
minutes. Let's get started.
## Getting started
First, you'll need an account on Azure. There are three ways to do this:
- If your company (or you) already has an account, then you are ready to go!
- You can also open your own Azure account for free. _At time of writing_, you get $200
of credit to spend on Azure services for 30 days. You can use this credit to try out paid Azure
services, exploring Microsoft's cloud for free. Even after the first 30 days, you never have to pay
anything unless you decide to transition to paid services with a Pay-As-You-Go Azure subscription.
This is a great way to try out Azure and cloud computing, and you can
[read more in their comprehensive FAQ](https://azure.microsoft.com/en-us/free/free-account-faq/).
- If you have an MSDN subscription, you can activate your Azure subscriber benefits. Your MSDN
subscription gives you recurring Azure credits every month, so why not put those credits to use and
try out GitLab right now?
## Working with Azure
Once you have an Azure account, you can get started. [Log in to Azure](https://portal.azure.com)
and the first thing you will see is the Dashboard:
![Azure Dashboard](img/azure-dashboard.png)
The Dashboard gives you a quick overview of Azure resources, and from here you can build VMs,
create SQL Databases, author websites, and perform lots of other cloud tasks.
## Create New VM
The [Azure Marketplace](https://azuremarketplace.microsoft.com/en-us/marketplace/) is an online store for pre-configured applications and
services which have been optimized for the cloud by software vendors like GitLab,
available on the Azure Marketplace as pre-configured solutions. In this tutorial
we will install GitLab Community Edition.
To begin creating a new GitLab VM, click on the **+ New** icon, type "GitLab" into the search
box, and then click the **"GitLab Community Edition"** search result:
![Azure - New - Search for 'GitLab'](img/azure-new-search-gitlab.png)
A new "blade" window will pop-out, where you can read more about the **"GitLab Community Edition"**
offering which is freely available under the MIT Expat License:
![Azure - New - Select 'GitLab Community Edition'](img/azure-new-gitlab-ce.png)
Click **"Create"** and you will be presented with the "Create virtual machine" blade:
![Azure - Create Virtual Machine - Basics](img/azure-create-virtual-machine-basics.png)
## Basics
The first items we need to configure are the basic settings of the underlying virtual machine:
1. Enter a `Name` for the VM - e.g. **"GitLab-CE"**
1. Select a `VM disk type` - either **HDD** _(slower, lower cost)_ or **SSD** _(faster, higher cost)_
1. Enter a `User name` - e.g. `gitlab-admin`
1. Select an `Authentication type`, either **SSH public key** or **Password**:
NOTE:
If you're unsure which authentication type to use, select **Password**
For users of the Microsoft Azure business cloud, GitLab has a pre-configured offering in
the [Azure Marketplace](https://azuremarketplace.microsoft.com/en-us/marketplace/).
This tutorial describes installing GitLab
Enterprise Edition in a single Virtual Machine (VM).
1. If you chose **SSH public key** - enter your `SSH public key` into the field provided
_(read the [SSH documentation](../../ssh/README.md) to learn more about how to set up SSH
public keys)_
1. If you chose **Password** - enter the password you wish to use _(this is the password that you
will use later in this tutorial to [SSH](https://en.wikipedia.org/wiki/Secure_Shell) into the VM, so make sure it's a strong password/passphrase)_
## Prerequisite
1. Choose the appropriate `Subscription` tier for your Azure account
1. Choose an existing `Resource Group` or create a new one - e.g. **"GitLab-CE-Azure"**
You'll need an account on Azure. Use of the following methods to obtain an account:
NOTE:
A "Resource group" is a way to group related resources together for easier administration.
We chose "GitLab-CE-Azure", but your resource group can have the same name as your VM.
1. Choose a `Location` - if you're unsure, select the default location
Here are the settings we've used:
![Azure - Create Virtual Machine - Basics Completed](img/azure-create-virtual-machine-basics-password.png)
Check the settings you have entered, and then click **"OK"** when you're ready to proceed.
## Size
- If you or your company already have an account with a subscription, use that account.
If not, you can [open your own Azure account for free](https://azure.microsoft.com/en-us/free/).
Azure's free trial gives you $200 credit to explore Azure for 30 days.
[Read more in Azure's comprehensive FAQ](https://azure.microsoft.com/en-us/free/free-account-faq/).
- If you have an MSDN subscription, you can activate your Azure subscriber benefits. Your MSDN
subscription gives you recurring Azure credits every month, so you can use
those credits and try out GitLab.
Next, you need to choose the size of your VM - selecting features such as the number of CPU cores,
the amount of RAM, the size of storage (and its speed), etc.
## Deploy and configure GitLab
NOTE:
In common with other cloud vendors, Azure operates a resource/usage pricing model, i.e.
the more resources your VM consumes the more it will cost you to run, so make your selection
carefully. You'll see that Azure provides an _estimated_ monthly cost beneath each VM Size to help
guide your selection.
Because GitLab is already installed in a pre-configured image, all you have to do is
create a new VM:
The default size - the lowest cost **"DS1_V2 Standard"** VM - meets the minimum system requirements
to run a small GitLab environment for testing and evaluation purposes, and so we're going to go
ahead and select this one, but please choose the size which best meets your own requirements:
1. [Visit the GitLab offering in the marketplace](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/gitlabinc1586447921813.gitlabee?tab=Overview)
1. Select **Get it now** and you will be presented with the **Create this app in Azure** window.
Select **Continue**.
1. Select one of the following options from the Azure portal:
- Select **Create** to create a VM from scratch.
- Select **Start with a pre-set configuration** to get started with some
pre-configured options. You can modify these configurations at any time.
![Azure - Create Virtual Machine - Size](img/azure-create-virtual-machine-size.png)
For the sake of this guide, we'll create the VM from scratch, so
select **Create**.
NOTE:
Be aware that while your VM is active (known as "allocated"), it will incur
"compute charges" which, ultimately, you will be billed for. So, even if you're using the
free trial credits, you'll likely want to learn
Be aware that while your VM is active (known as "allocated"), it incurs
compute charges for which you'll be billed. Even if you're using the
free trial credits, you'll want to know
[how to properly shutdown an Azure VM to save money](https://build5nines.com/properly-shutdown-azure-vm-to-save-money/).
See the [Azure pricing calculator](https://azure.microsoft.com/en-us/pricing/calculator/)
to learn how much resources can cost.
Go ahead and click your chosen size, then click **"Select"** when you're ready to proceed to the
next step.
## Settings
After you create the virtual machine, use the information in the following
sections to configure it.
On the next blade, you're asked to configure the Storage, Network and Extension settings.
We've gone with the default settings as they're sufficient for test-driving GitLab, but please
choose the settings which best meet your own requirements:
### Configure the Basics tab
![Azure - Create Virtual Machine - Settings](img/azure-create-virtual-machine-settings.png)
The first items you need to configure are the basic settings of the underlying virtual machine:
Review the settings and then click **"OK"** when you're ready to proceed to the last step.
1. Select the subscription model and a resource group (create a new one if it
doesn't exist).
1. Enter a name for the VM, for example `GitLab`.
1. Select a region.
1. In **Availability options**, select **Availability zone** and set it to `1`.
Read more about the [availability zones](https://docs.microsoft.com/en-us/azure/virtual-machines/availability).
1. Ensure the selected image is set to **GitLab - Gen1**.
1. Select the VM size based on the [hardware requirements](../requirements.md#hardware-requirements).
Because the minimum system requirements to run a GitLab environment for up to 500 users
is covered by the `D4s_v3` size, select that option.
1. Set the authentication type to **SSH public key**.
1. Enter a user name or leave the one that is automatically created. This is
the user you'll use to connect to the VM through SSH. By default, the user
has root access.
1. Determine if you want to provide your own SSH key or let Azure create one for you.
Read the [SSH documentation](../../ssh/README.md) to learn more about how to set up SSH
public keys.
## Purchase
Review your entered settings, and then proceed to the Disks tab.
The Purchase page is the last step and here you will be presented with the price per hour for your
new VM. You'll be billed only for the VM itself (e.g. "Standard DS1 v2") because the
**"GitLab Community Edition"** marketplace solution is free to use at 0 USD/hr:
### Configure the Disks tab
![Azure - Create Virtual Machine - Purchase](img/azure-create-virtual-machine-purchase.png)
For the disks:
NOTE:
At this stage, you can review and modify the any of the settings you have made during all
previous steps, just click on any of the four steps to re-open them.
When you have read and agreed to the terms of use and are ready to proceed, click **"Purchase"**.
1. For the OS disk type, select **Premium SSD**.
1. Select the default encryption.
## Deployment
[Read more about the types of disks](https://docs.microsoft.com/en-us/azure/virtual-machines/managed-disks-overview) that Azure provides.
At this point, Azure will begin deploying your new VM. The deployment process will take a few
minutes to complete, with progress displayed on the **"Deployment"** blade:
Review your settings, and then proceed to the Networking tab.
![Azure - Create Virtual Machine - Deployment](img/azure-create-virtual-machine-deployment.png)
### Configure the Networking tab
Once the deployment process is complete, the new VM and its associated resources will be displayed
on the Azure Dashboard (you may need to refresh the page):
Use this tab to define the network connectivity for your
virtual machine, by configuring network interface card (NIC) settings.
You can leave them at their default settings.
![Azure - Dashboard - All resources](img/azure-dashboard-running-resources.png)
Azure creates a security group by default and the VM is assigned to it.
The GitLab image in the marketplace has the following ports open by default:
The new VM can also be accessed by clicking the `All resources` or `Virtual machines` icons in the
Azure Portal sidebar navigation menu.
| Port | Description |
|------|-------------|
| 80 | Enable the VM to respond to HTTP requests, allowing public access. |
| 443 | Enable our VM to respond to HTTPS requests, allowing public access. |
| 22 | Enable our VM to respond to SSH connection requests, allowing public access (with authentication) to remote terminal sessions. |
## Set up a domain name
If you want to change the ports or add any rules, you can do it
after the VM is created by going to the Networking settings in the left sidebar,
while in the VM dashboard.
The VM will have a public IP address (static by default), but Azure allows us to assign a friendly
DNS name to the VM, so let's go ahead and do that.
### Configure the Management tab
From the Dashboard, click on the **"GitLab-CE"** tile to open the management blade for the new VM.
The public IP address that the VM uses is shown in the 'Essentials' section:
Use this tab to configure monitoring and management options
for your VM. You don't need to change the default settings.
![Azure - VM - Management - Public IP Address](img/azure-vm-management-public-ip.png)
### Configure the Advanced tab
Click on the public IP address - which should open the **"Public IP address - Configuration"** blade,
then click on **"Configuration"** (under "Settings"). Now enter a friendly DNS name for your instance
in the `DNS name label` field:
Use this tab to add additional configuration, agents, scripts
or applications through virtual machine extensions or `cloud-init`. You don't
need to change the default settings.
![Azure - VM - Domain Name](img/azure-vm-domain-name.png)
### Configure the Tags tab
In the screenshot above, you'll see that we've set the `DNS name label` to `gitlab-ce-test`.
This will make our VM accessible at `gitlab-ce-test.centralus.cloudapp.azure.com`
_(the full domain name of your own VM will be different, of course)_.
Use this tab to add name/value pairs that enable you to categorize
resources. You don't need to change the default settings.
Click **"Save"** for the changes to take effect.
### Review and create the VM
NOTE:
If you want to use your own domain name, you will need to add a DNS `A` record at your
domain registrar which points to the public IP address of your Azure VM. If you do this, you'll need
to make sure your VM is configured to use a _static_ public IP address (i.e. not a _dynamic_ one)
or you will have to reconfigure the DNS `A` record each time Azure reassigns your VM a new public IP
address. Read [Public IP addresses](https://docs.microsoft.com/en-us/azure/virtual-network/public-ip-addresses) to learn more.
The final tab presents you with all of your selected options,
where you can review and modify your choices from the
previous steps. Azure will run validation tests in the background,
and if you provided all of the required settings, you can
create the VM.
## Let's open some ports
After you select **Create**, if you had opted for Azure to create an SSH key pair
for you, you'll be asked to download the private SSH key. Download the key, as you'll
need it to SSH into the VM.
At this stage you should have a running and fully operational VM. However, none of the services on
your VM (e.g. GitLab) will be publicly accessible via the internet until you have opened up the
necessary ports to enable access to those services.
After you download the key, the deployment begins.
Ports are opened by adding _security rules_ to the **"Network security group"** (NSG) which our VM
has been assigned to. If you followed the process above, then Azure will have automatically created
an NSG named `GitLab-CE-nsg` and assigned the `GitLab-CE` VM to it.
NOTE:
If you gave your VM a different name then the NSG automatically created by Azure will
also have a different name - the name you have your VM, with `-nsg` appended to it.
### Finish deployment
You can navigate to the NSG settings via many different routes in the Azure Portal, but one of the
simplest ways is to go to the Azure Dashboard, and then click on the Network Security Group listed
in the **"All resources"** tile:
At this point, Azure begins to deploy your new VM. The deployment process
takes a few minutes to complete. After it's complete, the new VM and its
associated resources are displayed on the Azure Dashboard.
Select **Go to resource** to visit the dashboard of the VM.
![Azure - Dashboard - All resources - Network security group](img/azure-dashboard-highlight-nsg.png)
GitLab is now deployed and ready to be used. Before doing so, however,
you need to set up the domain name and configure GitLab to use it.
With the **"Network security group"** blade open, click on **"Inbound security rules"** under
**"Settings"**:
### Set up a domain name
![Azure - Network security group - Inbound security rules](img/azure-nsg-inbound-sec-rules-highlight.png)
The VM has a public IP address (static by default), but Azure allows you
to assign a descriptive DNS name to the VM:
Next, click **"Add"**:
1. From the VM dashboard, select **Configure** under **DNS name**.
1. Enter a descriptive DNS name for your instance in the **DNS name label** field,
for example `gitlab-prod`. This will make the VM accessible at
`gitlab-prod.eastus.cloudapp.azure.com`.
1. Select **Save** for the changes to take effect.
![Azure - Network security group - Inbound security rules - Add](img/azure-nsg-inbound-sec-rules-add-highlight.png)
Eventually, you'll want to use your own domain name. To do this, you need to add a DNS `A` record
with your domain registrar that points to the public IP address of your Azure VM.
You can use [Azure's DNS](https://docs.microsoft.com/en-us/azure/dns/dns-delegate-domain-azure-dns)
or some [other registrar](https://docs.gitlab.com/omnibus/settings/dns.html).
### Which ports to open?
### Change the GitLab external URL
Like all servers, our VM will be running many services. However, we want to open up the correct
ports to enable public internet access to two services in particular:
GitLab uses `external_url` in its configuration file to set up the domain name.
If you don't set this up, when you visit the Azure friendly name, you'll
instead be redirected to the public IP.
1. **HTTP** (port 80) - opening port 80 will enable our VM to respond to HTTP requests, allowing
public access to the instance of GitLab running on our VM.
1. **SSH** (port 22) - opening port 22 will enable our VM to respond to SSH connection requests,
allowing public access (with authentication) to remote terminal sessions
_(you'll see why we need [SSH](https://en.wikipedia.org/wiki/Secure_Shell) access to our VM [later on in this tutorial](#maintaining-your-gitlab-instance))_
To set up the GitLab external URL:
### Open HTTP on Port 80
1. Connect to GitLab through SSH by going to **Settings > Connect** from the VM
dashboard, and follow the instructions. Remember to sign in with the username
and SSH key you specified when you [created the VM](#configure-the-basics-tab).
The Azure VM domain name will be the one you
[set up previously](#set-up-a-domain-name). If you didn't set up a domain name for
your VM, you can use the IP address in its place.
In the **"Add inbound security rule"** blade, let's open port 80 so that our VM will accept HTTP
connections:
In the case of our example:
![Azure - Add inbound security rules - HTTP](img/azure-add-inbound-sec-rule-http.png)
```shell
ssh -i <private key path> gitlab-azure@gitlab-prod.eastus.cloudapp.azure.com
```
1. Enter **"HTTP"** in the `Name` field
1. Select **HTTP** from the options in the `Service` dropdown list
1. Make sure the `Action` is set to **Allow**
1. Click **"OK"**
NOTE:
If you need to reset your credentials, read
[how to reset SSH credentials for a user on an Azure VM](https://docs.microsoft.com/en-us/troubleshoot/azure/virtual-machines/troubleshoot-ssh-connection#reset-ssh-credentials-for-a-user).
### Open SSH on Port 22
1. Open `/etc/gitlab/gitlab.rb` with your editor.
1. Find `external_url` and replace it with your own domain name. For the sake
of this example, we'll use the friendly domain name that Azure set up.
If you use `https` in the URL, Let's Encrypt will be
[automatically enabled](https://docs.gitlab.com/omnibus/settings/ssl.html#lets-encrypt-integration),
and you'll have HTTPS by default:
Repeat the above process, adding a second Inbound security rule to open port 22, enabling our VM to
accept [SSH](https://en.wikipedia.org/wiki/Secure_Shell) connections:
```ruby
external_url 'https://gitlab-prod.eastus.cloudapp.azure.com'
```
![Azure - Add inbound security rules - SSH](img/azure-add-inbound-sec-rule-ssh.png)
1. Find the following settings and comment them out, so that GitLab doesn't
pick up the wrong certificates:
1. Enter **"SSH"** in the `Name` field
1. Select **SSH** from the options in the `Service` dropdown list
1. Make sure the `Action` is set to **Allow**
1. Click **"OK"**
```ruby
# nginx['redirect_http_to_https'] = true
# nginx['ssl_certificate'] = "/etc/gitlab/ssl/server.crt"
# nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/server.key"
```
It will take a moment for Azure to add each new Inbound Security Rule (and you may need to click on
**"Inbound security rules"** to refresh the list), but once completed, you should see the two new
rules in the list:
1. Reconfigure GitLab for the changes to take effect. Run the
following command every time you make changes to `/etc/gitlab/gitlab.rb`:
![Azure - Inbound security rules - List](img/azure-inbound-sec-rules-list.png)
```shell
sudo gitlab-ctl reconfigure
```
## Connecting to GitLab
You can now visit GitLab with your browser at the new external URL.
Use the domain name you set up earlier (or the public IP address) to visit your new GitLab instance
in your browser. If everything has gone according to plan you should be presented with the
following page, asking you to set a _new_ password for the administrator account automatically
created by GitLab:
### Visit GitLab for the first time
![GitLab - Change Password](img/gitlab-change-password.png)
Use the domain name you set up earlier to visit your new GitLab instance
in your browser. In this example, it's `https://gitlab-prod.eastus.cloudapp.azure.com`.
Enter your _new_ password into both form fields, and then click **"Change your password"**.
The first thing you'll see is the sign-in page. GitLab creates an admin user by default.
The credentials are:
Once you have changed the password you will be redirected to the GitLab login page. Use `root` as
the username, enter the new password you set in the previous step, and then click **"Sign in"**:
- Username: `root`
- Password: the password is automatically created, and there are [two ways to
find it](https://docs.bitnami.com/azure/faq/get-started/find-credentials).
![GitLab - Login](img/gitlab-login.png)
After signing in, be sure to immediately [change the password](../../user/profile/index.md#change-your-password).
### Success?
## Maintain your GitLab instance
After signing in successfully, you should see the GitLab Projects page displaying a
**"Welcome to GitLab!"** message:
It's important to keep your GitLab environment up-to-date. The GitLab team is constantly making
enhancements and occasionally you may need to update for security reasons. Use the information
in this section whenever you need to update GitLab.
![GitLab - Projects Page](img/gitlab-home.png)
### Check the current version
If so, you now have a working GitLab instance on your own private Azure VM. **Congratulations!**
To determine the version of GitLab you're currently running,
go to the **{admin}** **Admin Area**, and you will find the version
under the **Components** table.
## Creating your first GitLab project
If there's a newer available version of GitLab that contains one or more
security fixes, GitLab displays an **Update asap** notification message that
encourages you to [update](#update-gitlab).
You can skip this section if you are familiar with Git and GitLab. Otherwise, let's create our first
project. From the Welcome page, click **"New Project"**.
### Update GitLab
Let's give our project a name and a description, and then accept the default values for everything
else:
To update GitLab to the latest version:
1. Enter **"demo"** into the `Project path` project name field
1. Enter a `description`, e.g. **"My awesome demo project!"**
1. Click **"Create project"**
1. Connect to the VM through SSH.
1. Update GitLab:
![GitLab - New Project](img/gitlab-new-project.png)
```shell
sudo apt update
sudo apt install gitlab-ee
```
Once the new project has been created (which should only take a moment), you'll be redirected to
homepage for the project:
This command updates GitLab and its associated components to the latest versions,
and can take time to complete. You'll see various update tasks being
completed in your terminal.
![GitLab - Empty Project](img/gitlab-project-home-empty.png)
NOTE:
If you get an error like
`E: The repository 'https://packages.gitlab.com/gitlab/gitlab-ee/debian buster InRelease' is not signed.`,
see the [troubleshooting section](#update-the-gpg-key-for-the-gitlab-repositories).
If you scroll further down the project's home page, you'll see some basic instructions on how to
set up a local clone of your new repository and push and pull from it:
1. After the update process is complete, you'll see a message like the
following:
![GitLab - Empty Project - Basic Instructions](img/gitlab-project-home-instructions.png)
```plaintext
Upgrade complete! If your GitLab server is misbehaving try running
**That's it! You now have your own private GitLab environment installed and running in the cloud!**
sudo gitlab-ctl restart
## Maintaining your GitLab instance
before anything else.
```
It's important to keep your GitLab environment up-to-date. The GitLab team is constantly making
enhancements and occasionally you may need to update for security reasons. So let's review how to
update GitLab.
Refresh your GitLab instance in the browser and go to the Admin Area. You should now have an
up-to-date GitLab instance.
### Checking our current version
## Next steps and further configuration
To check which version of GitLab we're currently running, click on the "Admin Area" link - it's the
the wrench icon displayed in the top-right, next to the search box.
Now that you have a functional GitLab instance, follow the
[next steps](../index.md#next-steps) to learn what more you can do with your
new installation.
In the following screenshot you can see an **"update asap"** notification message in the top-right.
This particular message indicates that there is a newer version of GitLab available which contains
one or more security fixes:
## Troubleshooting
![GitLab - update asap](img/gitlab-admin-area.png)
This section describes common errors you can encounter.
Under the **"Components"** section, we can see that our VM is currently running version `8.6.5` of
GitLab. This is the version of GitLab which was contained in the Azure Marketplace
**"GitLab Community Edition"** offering we used to build the VM when we wrote this tutorial.
### Update the GPG key for the GitLab repositories
NOTE:
The version of GitLab in your own VM instance may well be different, but the update
process will still be the same.
### Connect via SSH
To perform an update, we need to connect directly to our Azure VM instance and run some commands
from the terminal. Our Azure VM is actually a server running Linux (Ubuntu), so we'll need to
connect to it using SSH ([Secure Shell](https://en.wikipedia.org/wiki/Secure_Shell)).
If you're running Windows, you'll need to connect using [PuTTY](https://www.putty.org) or an equivalent Windows SSH client.
If you're running Linux or macOS, then you already have an SSH client installed.
This is a temporary fix until the GitLab image is updated with the new
GPG key.
Remember to sign in with the username and password you specified when you
[created your Azure VM](#basics).
The pre-configured GitLab image in Azure (provided by Bitnami) uses
a GPG key [deprecated in April 2020](https://about.gitlab.com/blog/2020/03/30/gpg-key-for-gitlab-package-repositories-metadata-changing/).
If you need to reset your VM password, read
[how to reset SSH credentials for a user on an Azure VM](https://docs.microsoft.com/en-us/troubleshoot/azure/virtual-machines/troubleshoot-ssh-connection).
If you try to update the repositories, you'll get the following error:
#### SSH from the command-line
<!-- vale gitlab.ReferenceLinks = NO -->
If you're running [SSH](https://en.wikipedia.org/wiki/Secure_Shell) from the command-line (terminal), then type in the following command to
connect to your VM, substituting `username` and `your-azure-domain-name.com` for the correct values.
Again, remember that your Azure VM domain name will be the one you
[set up previously in the tutorial](#set-up-a-domain-name). If you didn't set up a domain name for
your VM, you can use the IP address in its place in the following command:
```shell
ssh username@your-azure-domain-name.com
```plaintext
[ 21.023494] apt-setup[1198]: W: GPG error: https://packages.gitlab.com/gitlab/gitlab-ee/debian buster InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 3F01618A51312F3F
[ 21.024033] apt-setup[1198]: E: The repository 'https://packages.gitlab.com/gitlab/gitlab-ee/debian buster InRelease' is not signed.
```
Provide your password at the prompt to authenticate.
<!-- vale gitlab.ReferenceLinks = YES -->
#### SSH from Windows (PuTTY)
If you're using [PuTTY](https://www.putty.org) in Windows as your [SSH](https://en.wikipedia.org/wiki/Secure_Shell) client, then you might want to take a quick
read on [using PuTTY in Windows](https://mediatemple.net/community/products/dv/204404604/using-ssh-in-putty-).
### Updating GitLab
After signing in by using SSH, enter the following command to update GitLab to
the latest version:
To fix this, fetch the new GPG key:
```shell
sudo apt-get update && sudo apt-get install gitlab-ce
sudo apt install gpg-agent
curl "https://gitlab-org.gitlab.io/omnibus-gitlab/gitlab_new_gpg.key" --output /tmp/omnibus_gitlab_gpg.key
sudo apt-key add /tmp/omnibus_gitlab_gpg.key
```
This command updates GitLab and its associated components to the latest versions,
so it will take a little time to complete. You'll see various update tasks being
completed in your SSH terminal window:
![GitLab updating](img/gitlab-ssh-update-in-progress.png)
After the update process is complete, you'll see a message like this:
```plaintext
Upgrade complete! If your GitLab server is misbehaving try running
sudo gitlab-ctl restart
before anything else.
```
#### Check out your updated GitLab
Refresh your GitLab instance in the browser and navigate to the Admin Area. You should now have an
up-to-date GitLab instance.
When we wrote this tutorial our Azure VM GitLab instance was updated to the latest version at time
of writing (`9.4.0`). You can see that the message which was previously displaying **"update asap"**
is now showing **"up-to-date"**:
![GitLab up to date](img/gitlab-admin-area-9.4.0.png)
## Conclusion
Naturally, we believe that GitLab is a great Git repository tool. However, GitLab is a whole lot
more than that too. GitLab unifies issues, code review, CI and CD into a single UI, helping you to
move faster from idea to production, and in this tutorial we showed you how quick and easy it is to
set up and run your own instance of GitLab on Azure, Microsoft's cloud service.
Azure is a great way to experiment with GitLab, and if you decide (as we hope) that GitLab is for
you, you can continue to use Azure as your secure, scalable cloud provider or of course run GitLab
on any cloud service you choose.
## Where to next?
Check out our other [Technical Articles](../../topics/index.md) or browse the [GitLab Documentation](../../README.md) to learn more about GitLab.
### Useful links
- [GitLab Community Edition](https://about.gitlab.com/features/)
- [GitLab Enterprise Edition](https://about.gitlab.com/features/#ee)
- [Microsoft Azure](https://azure.microsoft.com/en-us/)
- [Azure - Free Account FAQ](https://azure.microsoft.com/en-us/free/free-account-faq/)
- [Azure - Marketplace](https://azuremarketplace.microsoft.com/en-us/marketplace/)
- [Azure Portal](https://portal.azure.com)
- [Azure - Pricing Calculator](https://azure.microsoft.com/en-us/pricing/calculator/)
- [Azure - Troubleshoot SSH Connections to an Azure Linux VM](https://docs.microsoft.com/en-us/troubleshoot/azure/virtual-machines/troubleshoot-ssh-connection)
- [Azure - Properly Shutdown an Azure VM](https://build5nines.com/properly-shutdown-azure-vm-to-save-money/)
- [SSH](https://en.wikipedia.org/wiki/Secure_Shell), [PuTTY](https://www.putty.org) and [Using SSH in PuTTY](https://mediatemple.net/community/products/dv/204404604/using-ssh-in-putty-)
<!-- ## Troubleshooting
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
one might have when setting this up, or when something is changed, or on upgrading, it's
important to describe those, too. Think of things that may go wrong and include them here.
This is important to minimize requests for support and to avoid doc comments with
questions that you know someone might ask.
Each scenario can be a third-level heading, e.g. `### Getting error message X`.
If you have none to add when creating a doc, leave this section in place
but commented out to help encourage others to add to it in the future. -->
You can now [update GitLab](#update-gitlab). For more information, read about the
[packages signatures](https://docs.gitlab.com/omnibus/update/package_signatures.html).
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment