The gridscale Marketplace allows you to create, manage and publish applications with just a single click. You can also explore our diverse preconfigured app catalogue.Apps are directly integrated into the gridscale infrastructure, offering high performance in addition to 100% availability.
Publish an Application
In order to become a marketplace application publisher, send an email to email@example.com 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.
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 programatically publishing your app with provisioning tools like Ansible, or alternatively using our Terraform provider.
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, the required cores and RAM will be set later when publishing the app.
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, and 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
Cleanup the Image
cleanup.sh script below to do a soft cleanup of the Storage before taking the final snapshot of you wish to use.
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.
Create Application in Marketplace
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.
- 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.
- Unneccessary installation tools that are not necessary to run the appication 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 running
systemctl 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 Afterfirstname.lastname@example.org 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, it can be found in the Expert Panel.
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.