Marketplace
The Marketplace allows you to create, manage and publish applications with just a single click. You can also explore our diverse pre-configured app catalogue. Apps are directly integrated into the gridscale infrastructure, offering high performance in addition to 100% availability.
Publish an Application
{%gs-only%}
Requirements
In order to become a marketplace application publisher, send an email to product@gridscale.io with your request. Include as much information as you can, such as what application you would like to publish and some information about who you are. Make sure to include the email address of your gridscale.io account so we know which contract to activate. {%/gs-only%}
Prerequisites
{%gs-only%} Even though our Marketplace supports all Operating Systems, this guide focuses on Linux-based Operating Systems. If you want to maintain the application through regular releases we recommend programmatically publishing your app with provisioning tools like Ansible, or alternatively using Terraform our Terraform provider. {%/gs-only%}
You need to have a server set up with an attached storage linked to the Public Network, with an IP address. The configuration of the server can be lower than what the application needs, as the required cores and RAM will be set later when publishing the app.
Install Application
After connecting to your server, keep a note of any credentials necessary for the next time you create a storage from this app (user credentials, SSH Keys etc.)
Install the app to the point where the user would run further install scripts, or before something dynamic like the servers IP address is required.
Once installed take a note of important variables already set, because these should be echo’d to the terminal once the user logs in. This can be done via the message of the day or any other executable script and adding an execution line to /root/.bashrc
.
Cleanup the Image
Run the cleanup.sh
script below to do a soft cleanup of the Storage before taking the final snapshot, which will become your application.
cleanup.sh:
#!/bin/bash
rm -rf /tmp/* /var/tmp/*
history -c
cat /dev/null > /root/.bash_history
unset HISTFILE
apt-get -y autoremove
apt-get -y autoclean
rm -f /root/.ssh/authorized_keys /etc/ssh/*key*
cat /dev/null > /var/log/lastlog; cat /dev/null > /var/log/wtmp; cat /dev/null > /var/log/auth.log
# prompt to update hostname if required
# rm -rf <path/to/this/script>
shutdown -h now
Take Snapshot and Export to Object Storage
Navigate to your attached storage and create a Snapshot. Once you’ve successfully created it, navigate to the Snapshots section and export the Snapshot to Object Storage.
It’s crucial, that you use a bucket in the de/fra2
location. The bucket can be deleted at the end of the process.
Create Application in Marketplace
{%gs-only%} Within the Marketplace you can now create an app by filling out the required details such as the app name, author, category, image source and the resource configurations required to run the app. You can also fill out additional fields such as the license, operation system, components and describe the overview, features, commissioning notes and terms of use for your app. {%/gs-only%}
Once all the details have been filled out you can click the Create Application button which makes the app visible in your account within the self-created templates section.
Recommendations
- Update all repositories.
- Setup a standard firewall that allows just enough for the application, and provide this configuration to the user.
- Add a message of the day, this can increase the user experience and also provides an advertisement opportunity (with ASCII art).
- Keep any scripts and custom files that should be removed later on together, for example in
/opt/<application_name>
. This makes cleanup easier before running the cleanup script. - You should customize the cleanup script to remove any files including the script itself.
- Unnecessary installation tools that are not necessary to run the application such as git or cURL should be removed to keep things lightweight.
- Take advantage of our firstboot script service as detailed below. This a secure way to generate the root password upon boot and communicate it to the end user. To use this script, pwgen will need to be installed. To activate the script, make sure firstboot script exists and lives in the root directory, and add the firstboot.service to the
/etc/systemd/system/
directory. Afterwards, activate the service by runningsystemctl enable firstboot.service
.
firstboot.sh:
#!/bin/bash
SYSTEM_RPW=$(pwgen -sB 12 1)
# change root password
chpasswd <<<"root:$SYSTEM_RPW"
# Get IPv4 Address
V4ADDR=$(ip -4 a l |grep "scope global" | cut -d " " -f 6 | cut -d "/" -f1)
# Get IPv6 Address
V6ADDR=$(ip -6 a l |grep "scope global" | cut -d " " -f 6 | cut -d "/" -f1)
cat -v <<EOF > /etc/issue
======================================================================================
EOF
[[ ! -z $V4ADDR ]] && echo " http://$V4ADDR/example/" >>/etc/issue
[[ ! -z $V6ADDR ]] && echo " http://[$V6ADDR]/example/" >>/etc/issue
cat -v <<EOF >> /etc/issue
The initial root password is $SYSTEM_RPW
EOF
# Disable console blanking
echo -ne "\033[9;0]" >> /etc/issue
# generate new ssh keys
dpkg-reconfigure openssh-server
systemctl restart sshd
# restart getty to refresh issue on login
systemctl restart getty@tty1
# cleanup after ourselves
systemctl disable firstboot
rm /etc/systemd/system/firstboot.service
systemctl daemon-reload
rm /firstboot.sh
rm /cleanup.sh
firstboot.service:
[Unit]
Description=Firstboot
After=getty@tty1.service
After=network-online.target
After=network.target
Requires=network-online.target
[Service]
User=root
Group=root
Type=oneshot
ExecStart=/firstboot.sh
TimeoutSec=20
RemainAfterExit=no
[Install]
WantedBy=multi-user.target
Publish an Application
Once your account has been granted permission to publish, you can proceed to get started with the app publication process by clicking the Request Publication button. After a brief review, we list the app globally within the Marketplace catalog. You can view the publishing status and pending requests within the Publication Timeline in the details view. Post publication, you can withdraw the app at any time should you wish to do so within the same view.
Sharing a Private Application
If you wish to import a pre-existing app into your account which hasn’t been published to the global Marketplace, you can do so by obtaining the Marketplace Application Hash for the specific app you wish to import. Simply click the Import Application button and paste the Hash to add the app to your account.
If you would like to share your Marketplace App via hash, you can find the hash in the detail view by clicking the application in the Marketplace.
Publishing an App as a Third Party
As a third party app developer, you can also publish your app within the Marketplace. Just sign-up and contact us to become a publisher. Then follow the steps detailed above to create and publish the app onto our platform.