From Fedora Project Wiki

(Created page with "{{Infobox_group | name = DigitalOcean Installation Guide | caption = How-To Guide }} ==About== These steps could be useful to speed up a droplet deployment in order to t...")
 
(Blanked the page)
 
Line 1: Line 1:
{{Infobox_group
 
| name = DigitalOcean Installation Guide
 
| caption = [[How-To Guide]]
 
}}
 
  
==About==
 
 
These steps could be useful to speed up a droplet deployment in order to test a Fedora image.
 
 
We will invoke DigitalOcean APIs using curl.
 
 
==Steps==
 
 
You need to setup an SSH key on DigitalOcean https://cloudsupport.digitalocean.com/s/#none|ka21N000000CpMeQAK in order to access Fedora cloud images.<br/>
 
You need to generate a personal access token on DigitalOcean https://cloudsupport.digitalocean.com/s/#none|ka21N000000Cp7lQAC in order to be able to use the APIs.
 
 
===Export some environment variables===
 
 
<pre>
 
export TOKEN="xxxxxxxxxxxxyourtokenxxxxxxxxxxx"
 
export IMAGE_NAME="Fedora_Test_image"
 
export IMAGE_URL="https://kojipkgs.fedoraproject.org/compose/rawhide/Fedora-Rawhide-20190217.n.0/compose/Cloud/x86_64/images/Fedora-Cloud-Base-Rawhide-20190217.n.0.x86_64.qcow2"
 
export REGION="nyc3"
 
export DROPLET_SIZE="s-1vcpu-1gb"
 
export DROPLET_NAME="FedoraTest"
 
</pre>
 
 
Adapt these variables to your needs.
 
 
IMAGE_URL should point to the Fedora image URL to test (DigitalOcean supports qcow2 images but it doesn't support compressed raw ones).
 
 
To get a list of regions you can use the appropriate API (https://developers.digitalocean.com/documentation/v2/#list-all-regions). Same thing for the droplet size.
 
 
===Load an image to DigitalOcean===
 
 
<nowiki>curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ${TOKEN}" -d '{"name": "'${IMAGE_NAME}'", "url": "'${IMAGE_URL}'", "distribution": "Fedora", "region": "'${REGION}'", "description": "Fedora Test", "tags":["base-image", "test"]}' "https://api.digitalocean.com/v2/images"</nowiki>
 
 
Wait some time, and verify that the image is in place
 
 
<nowiki>curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer ${TOKEN}" "https://api.digitalocean.com/v2/images?page=1&per_page=1&private=true"</nowiki>
 
 
Take note of the image ID, and export a new variable.
 
 
export IMAGE_ID="<i>XXXXXXX</i>"
 
 
===List SSH keys and take note of the ID===
 
 
curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer ${TOKEN}" "https://api.digitalocean.com/v2/account/keys"
 
 
export SSH_KEY_ID="<i>YYYYYYYY</i>"
 
 
===Let's create a droplet===
 
 
<nowiki>curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ${TOKEN}" -d '{"name":"'${DROPLET_NAME}'","region":"'${REGION}'","size":"'${DROPLET_SIZE}'","image":"'${IMAGE_ID}'","ssh_keys":['"${SSH_KEY_ID}"'],"backups":false,"ipv6":false,"user_data":null,"private_networking":null,"volumes": null,"tags":["test"]}' "https://api.digitalocean.com/v2/droplets"</nowiki>
 
 
====List the droplet====
 
 
<nowiki>curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer ${TOKEN}" "https://api.digitalocean.com/v2/droplets?tag_name=test"</nowiki>
 
 
Take note of the droplet ID and export another variable
 
 
export DROPLET_ID="<i>ZZZZZZZZ</i>"
 
 
==Perform the tests==
 
 
Now you can ssh as root to the virtual machine (you can get the IP using the [[:#List_the_droplet|list droplets API]]) and perform the test cases.
 
 
==Don't forget to delete the droplet and the image==
 
 
When you reach the end of your tests, and in order to avoid billing on unused resources, don't forget to delete the droplet and the image.
 
 
<nowiki>curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ${TOKEN}" -d '{"type":"destroy"}' "https://api.digitalocean.com/v2/droplets/${DROPLET_ID}/actions"</nowiki>
 
 
<nowiki>curl -X DELETE -H "Content-Type: application/json" -H "Authorization: Bearer ${TOKEN}" "https://api.digitalocean.com/v2/images/${IMAGE_ID}"</nowiki>
 

Latest revision as of 18:46, 17 February 2019