mirror of
https://github.com/clearlinux/clear-linux-documentation.git
synced 2026-08-28 13:45:43 +00:00
b753e49df3
Signed-off-by: Bun K Tan <bun.k.tan@intel.com>
365 lines
9.9 KiB
ReStructuredText
365 lines
9.9 KiB
ReStructuredText
.. _clr-digitalocean:
|
|
|
|
|CL-ATTR| on DigitalOcean\*
|
|
###########################
|
|
|
|
This guide explains how to import a |CL-ATTR| image to `DigitalOcean`_
|
|
and then deploy a VM instance.
|
|
|
|
.. contents::
|
|
:local:
|
|
:depth: 1
|
|
|
|
Prerequisites
|
|
*************
|
|
|
|
* Set up a DigitalOcean account.
|
|
|
|
* Create an SSH key on your client system that you will use to remote
|
|
into the VM. You can follow the `DigitalOcean's SSH key creation guide`_.
|
|
|
|
Add |CL| Image to DigitalOcean
|
|
******************************
|
|
|
|
Before you can deploy a |CL| instance on DigitalOcean, you need to add
|
|
an image since it's currently not available in its marketplace.
|
|
You can use our pre-built image or you can build your own custom image.
|
|
|
|
Use pre-built image
|
|
===================
|
|
|
|
.. note::
|
|
Our cloud images (`clear-<release version>-digitalocean.img.gz`) for
|
|
DigitalOcean are considered **Beta** until we finish setting up our
|
|
automated testing of the images against the DigitalOcean environment.
|
|
Apart from the initial version, `clear-31870-digitalocean.img.gz`_, we
|
|
cannot guarantee that future versions and updates to the initial
|
|
version is problems-free.
|
|
|
|
.. bktan8 - commented out until the images are fully validated by DevOps
|
|
and go live on official Downloads page.
|
|
Go to the |CL| `downloads` page and copy the URL for the
|
|
**Cloud Guest Legacy** image. See Figure 1.
|
|
figure:: ../../_figures/digitalocean/01-digitalocean.png
|
|
:scale: 100 %
|
|
:alt: Cloud Guest Legacy image
|
|
Figure 1: Cloud Guest Legacy image
|
|
|
|
#. Copy the URL for `clear-31870-digitalocean.img.gz`_.
|
|
|
|
#. Skip to the `Upload image`_ section.
|
|
|
|
Build custom image
|
|
==================
|
|
|
|
For this method, you need a |CL| system to generate an image using
|
|
the *clr-installer* tool.
|
|
|
|
#. Add the *clr-installer* and *gzip* bundles.
|
|
|
|
.. code-block:: bash
|
|
|
|
sudo swupd bundle-add clr-installer gzip
|
|
|
|
#. Create an image configuration YAML file.
|
|
See `Installer YAML Syntax`_ for more information on the clr-installer
|
|
configuration YAML syntax.
|
|
|
|
.. code-block:: bash
|
|
|
|
cat > clear-digitalocean.yaml << EOF
|
|
#clear-linux-config
|
|
|
|
# switch between aliases if you want to install to an actual block device
|
|
# i.e /dev/sda
|
|
block-devices: [
|
|
{name: "bdevice", file: "clear-digitalocean.img"}
|
|
]
|
|
|
|
targetMedia:
|
|
- name: \${bdevice}
|
|
size: "800M"
|
|
type: disk
|
|
children:
|
|
- name: \${bdevice}1
|
|
fstype: ext4
|
|
options: -O ^64bit
|
|
mountpoint: /
|
|
size: "800M"
|
|
type: part
|
|
|
|
bundles: [
|
|
bootloader,
|
|
openssh-server,
|
|
os-cloudguest,
|
|
os-core,
|
|
os-core-update,
|
|
systemd-networkd-autostart
|
|
]
|
|
|
|
autoUpdate: false
|
|
postArchive: false
|
|
postReboot: false
|
|
telemetry: false
|
|
legacyBios: true
|
|
|
|
keyboard: us
|
|
language: en_US.UTF-8
|
|
kernel: kernel-kvm
|
|
|
|
version: 0
|
|
EOF
|
|
|
|
The settings that are required in order to make the image
|
|
work on DigitalOcean are:
|
|
|
|
* *os-cloudguest* bundle: Allows DigitalOcean to provision the
|
|
image with settings such as hostname, resource (CPU, memory,
|
|
storage) sizing, and user creation.
|
|
* *legacyBios: true*: The image need to support legacy BIOS to boot
|
|
on DigitalOcean.
|
|
|
|
#. Generate the image.
|
|
|
|
.. code-block:: bash
|
|
|
|
sudo clr-installer -c clear-digitalocean.yaml
|
|
|
|
The output should be :file:`clear-digitalocean.img`.
|
|
|
|
#. Compress the image with *gzip* to save bandwidth and upload time.
|
|
|
|
.. code-block:: bash
|
|
|
|
gzip clear-digitalocean.img
|
|
|
|
The output should be :file:`clear-digitalocean.img.gz`.
|
|
|
|
.. note::
|
|
|
|
*bzip2* is the other compression format DigitalOcean accepts.
|
|
|
|
Upload image
|
|
============
|
|
|
|
#. On DigitalOcean's website, go to :menuselection:`MANAGE --> Images
|
|
--> Custom Images`.
|
|
|
|
See Figure 1.
|
|
|
|
.. figure:: ../../_figures/digitalocean/01-digitalocean.png
|
|
:scale: 100 %
|
|
:alt: DigitalOcean - Upload custom images
|
|
|
|
Figure 1: DigitalOcean - Upload custom images
|
|
|
|
#. Select an upload method.
|
|
|
|
* To import a pre-built image from |CL| `downloads`_, click
|
|
:guilabel:`Import via URL`, paste the URL, and click :guilabel:`Next`.
|
|
|
|
See Figure 2.
|
|
|
|
.. figure:: ../../_figures/digitalocean/02-digitalocean.png
|
|
:scale: 100 %
|
|
:alt: DigitalOcean - Import via URL
|
|
|
|
Figure 2: DigitalOcean - Import via URL
|
|
|
|
* To import your custom image, click :guilabel:`Upload Image`
|
|
and select the image from your client system.
|
|
|
|
#. Set the :guilabel:`DISTRIBUTION` type as :guilabel:`Unknown`.
|
|
|
|
See Figure 3.
|
|
|
|
|
|
|
|
|
#. Choose your preferred datacenter region.
|
|
|
|
#. Click :guilabel:`Upload Image`.
|
|
Wait for the upload to finish before proceeding to the next section.
|
|
|
|
.. figure:: ../../_figures/digitalocean/03-digitalocean.png
|
|
:scale: 100 %
|
|
:alt: DigitalOcean - Set image distribution type, region, tag
|
|
|
|
Figure 3: DigitalOcean - Set image distribution type, region, tag
|
|
|
|
Create and Deploy a |CL| Instance
|
|
*********************************
|
|
|
|
#. On DigitalOcean's website, go to :menuselection:`MANAGE --> Droplets`
|
|
and then click :guilabel:`Create Droplet`.
|
|
|
|
See Figure 4.
|
|
|
|
.. figure:: ../../_figures/digitalocean/04-digitalocean.png
|
|
:scale: 100 %
|
|
:alt: DigitalOcean - Create Droplet
|
|
|
|
Figure 4: DigitalOcean - Create Droplet
|
|
|
|
#. Under :guilabel:`Choose an image`, select :guilabel:`Custom images`.
|
|
|
|
See Figure 5.
|
|
|
|
|
|
|
|
|
#. Select your uploaded |CL| image.
|
|
|
|
.. figure:: ../../_figures/digitalocean/05-digitalocean.png
|
|
:scale: 100 %
|
|
:alt: DigitalOcean - Choose custom image
|
|
|
|
Figure 5: DigitalOcean - Choose custom image
|
|
|
|
#. Under :guilabel:`Choose a plan`, select your preferred plan.
|
|
|
|
See Figure 6.
|
|
|
|
.. figure:: ../../_figures/digitalocean/06-digitalocean.png
|
|
:scale: 100 %
|
|
:alt: DigitalOcean - Choose plan
|
|
|
|
Figure 6: DigitalOcean - Choose plan
|
|
|
|
#. Under :guilabel:`Choose a datacenter region`, select the region you
|
|
want the instance deployed to.
|
|
|
|
See Figure 7.
|
|
|
|
.. figure:: ../../_figures/digitalocean/07-digitalocean.png
|
|
:scale: 100 %
|
|
:alt: DigitalOcean - Choose datacenter region
|
|
|
|
Figure 7: DigitalOcean - Choose datacenter region
|
|
|
|
#. Assign SSH key to default *clear* user.
|
|
|
|
By default, the user *clear* will be added to the instance and
|
|
an SSH key must be assigned to this account.
|
|
|
|
a. Under :guilabel:`Authentication`, select :guilabel:`SSH keys` and
|
|
click :guilabel:`New SSH Key`.
|
|
|
|
See Figure 8.
|
|
|
|
.. figure:: ../../_figures/digitalocean/08-digitalocean.png
|
|
:scale: 100 %
|
|
:alt: DigitalOcean - Add SSH key
|
|
|
|
Figure 8: DigitalOcean - Add SSH key
|
|
|
|
#. Copy and paste your SSH public key in the :guilabel:`SSH key content`
|
|
text field.
|
|
|
|
See Figure 9.
|
|
|
|
|
|
|
|
|
#. Give a name for the SSH key.
|
|
|
|
#. Click :guilabel:`Add SSH Key`.
|
|
|
|
.. figure:: ../../_figures/digitalocean/09-digitalocean.png
|
|
:scale: 100 %
|
|
:alt: DigitalOcean - Add public SSH key
|
|
|
|
Figure 9: DigitalOcean - Add public SSH key
|
|
|
|
.. note::
|
|
|
|
If you need to add additional users to the instance, you can do that
|
|
wth a YAML-formatted *cloud-config* user data script.
|
|
For more information on cloud-config scripting for |CL|, see our
|
|
subset implementation of cloud-init called `micro-config-drive`_.
|
|
|
|
a. Under :guilabel:`Select additional options`,
|
|
select :guilabel:`User data`.
|
|
|
|
#. Add your YAML-formatted *cloud-config* user data in the field below.
|
|
Here is a simple example:
|
|
|
|
.. code-block:: console
|
|
|
|
#cloud-config
|
|
|
|
users:
|
|
- name: foobar
|
|
gecos: Foo B. Bar
|
|
homedir: /home/foobar
|
|
ssh-authorized-keys:
|
|
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC65OihS4UP27xKOpqKWgT9
|
|
mgUNwEqhUEpTGGvopjT65Y/KU9Wfj6EYsdGzbHHcMUhFSTxAUAV4POH5d0LR
|
|
MzI7sXMe528eCmpm2fTOHDDkVrurP/Jr2bjB9IrfSMkBYS8uRd603xNg/RDq
|
|
EH3XzVeEDdEAxoej0mzsJ2UkQSBi+PD1J7JeCbX2lsb55x2yWzaUa+BTai7+
|
|
/TU4UabTRDtFTiXhx2rImSSguofDISVll6W5TTzbGmHdoEI+8DIAFU66ZgC9
|
|
SzL75LQi1YAWlj5XG+dXhN6Ev6KFM34odvWdxeCj0jcx5UIXcieBfOuLujEH
|
|
dVybwNLG7hxDy/67BA1j username@mydomain.com
|
|
sudo:
|
|
- [ "ALL=(ALL) NOPASSWD:ALL" ]
|
|
|
|
#. Under :guilabel:`Finalize and create`:
|
|
|
|
a. Set the number of instances you want to deploy.
|
|
|
|
#. Set the hostname for the instance.
|
|
|
|
See Figure 10.
|
|
|
|
|
|
|
|
|
#. Click :guilabel:`Create Droplet` to deploy the instance.
|
|
|
|
.. figure:: ../../_figures/digitalocean/10-digitalocean.png
|
|
:scale: 100 %
|
|
:alt: DigitalOcean - Finalize and create Droplet
|
|
|
|
Figure 10: DigitalOcean - Finalize and create Droplet
|
|
|
|
Connect to Your |CL| Instance
|
|
*****************************
|
|
|
|
#. On DigitalOcean's website, go to :menuselection:`MANAGE --> Droplets`.
|
|
|
|
See Figure 11.
|
|
|
|
|
|
|
|
|
#. Get the IP address of your |CL| instance.
|
|
|
|
.. figure:: ../../_figures/digitalocean/11-digitalocean.png
|
|
:scale: 100 %
|
|
:alt: DigitalOcean - Get Droplet IP address
|
|
|
|
Figure 11: DigitalOcean - Get Droplet IP address
|
|
|
|
#. On your client system, SSH into your instance.
|
|
For example:
|
|
|
|
.. code-block:: bash
|
|
|
|
ssh clear@<IP-address-of-instance> -i <SSH-private-key>
|
|
|
|
|
|
Related topics
|
|
**************
|
|
|
|
* :ref:`gce`
|
|
* :ref:`azure`
|
|
* :ref:`aws-web`
|
|
|
|
.. _clear-31870-digitalocean.img.gz: https://cdn.download.clearlinux.org/releases/31870/clear/clear-31870-digitalocean.img.gz
|
|
|
|
.. _DigitalOcean: https://www.digitalocean.com/
|
|
|
|
.. _DigitalOcean's SSH key creation guide: https://www.digitalocean.com/docs/droplets/how-to/add-ssh-keys/create-with-openssh/
|
|
|
|
.. _downloads: https://clearlinux.org/downloads
|
|
|
|
.. _Installer YAML Syntax:
|
|
https://github.com/clearlinux/clr-installer/blob/master/scripts/InstallerYAMLSyntax.md
|
|
|
|
.. _micro-config-drive: https://github.com/clearlinux/micro-config-drive
|