Getting Started¶
1. Requirements on the target machine (where ansible will deploy GalaxyKickStart)¶
- Ubuntu 16.04, 18.04 or 20.04.
Note
Other systems (eg, debian) may work but they are not tested for the GalaxyKickStart development.
- Python >= 3.6
Note
If this requirement is not satisfied, Ansible will try to install Python 3 on the target machine
2. Requirements on the Ansible machine¶
- Ansible Whether used remotely or locally, the Ansible version must be >= 2.9.6
Note
Ansible uses ssh to send its commands. Thus, Ansible can be installed remotely (ie, on a machine that will not contain the Galaxy server at the end of the deployment), or locally (ie on the machine that will contain the Galaxy server, also called the target machine in this tutorial). In the latest case, ssh is used locally on the localhost 127.0.0.1 to chanel the commands sent by Ansible.
Ansible may be installed using pip
pip install ansible==2.9.2
sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update
sudo apt-get install ansible
- git
Note
To clone the GalaxyKickStart GitHub repository
3. Getting the playbook¶
GalaxyKickStart is hosted on github and uses a number of dependent Ansible roles that need to be downloaded as part of the installation step:
git clone https://github.com/artbio/galaxyKickstart.git
cd GalaxyKickStart
ansible-galaxy install -r requirements_roles.yml -p roles
The playbooks scripts galaxy.yml
and galaxy_tool_install.yml
are in the galaxykickstart folder.
CONTRIBUTORS.md dockerfiles group_vars slurm_slave_node.yml
Dockerfile docs inventory_files startup.sh
Dockerfile.galaxykickstart-base extra-files mkdocs.yml templates
LICENSE.txt galaxy.yml requirements_roles.yml
README.md galaxyToSlurmCluster.yml roles
ansible.cfg galaxy_tool_install.yml scripts
3. Deploying galaxy-kickstart on remote machines.¶
Inside the inventory_files
folder, you will find a number of inventory files.
This is an example of inventory taken from the artimed
inventory file.
[artimed]
localhost ansible_connection=local
# change to the line below if remote target host
# <remote host IP> ansible_ssh_user="root" ansible_ssh_private_key_file="<path/to/your/private/key>"
Here [artimed]
is a group, that contains a machine called localhost.
The variables defined in group_vars/artimed
will be applied to this host,
in addition to, or overwriting, the variables defined in group_vars which apply to any host.
In this example, Ansible is acting locally on the localhost target.
If instead you want to use Ansible remotely, replace localhost ansible_connection=local
by <remote host IP> ansible_ssh_user="root" ansible_ssh_private_key_file="<path/to/your/private/key>"
Ansible will connect by ssh to the target remote host IP
, using the ssh key in path/to/your/private/key
.
The user specified by ansible_ssh_user=<user>
may be an other user than root
but needs
in any case to to have sudo rights.
Then, run the plabook by typing:
ansible-playbook --inventory-file inventory_files/<your_inventory_file> galaxy.yml
ansible-playbook -i inventory_files/galaxy-kickstart galaxy.yml
You can put multiple machines in your inventory file.
If you run the playbook a second time, the process will be much faster, since steps that
have already been executed will be skipped. Whenever you change a variable (see
customizations) in group_vars/
4. Deploying galaxy-kickstart on specified clouds¶
Inside the repository you will find a file
called inventory_files/cloud
. This file serves as an example hosts file for
how to deploy galaxy-kickstart on Google Compute Engine (GCE), Amazon Web
Services(aws), and Jetstream (OpenStack). Please note that the ansible_user
variable in the file changes for each remote target. If you are wanting to use
this playbook on a cloud other than the ones listed below, you will need to
update the inventory to add a new section header for the respective target. If
this happens to be a cloud setup, make sure to add the section header under
[cloud_setup:children]
.
Specifications for each remote target:
-
GCE
- Image needed to deploy galaxykickstart:
Ubuntu 18.04 LTS
>Ubuntu 20.04 LTS
>Ubuntu 16.04 LTS
- Inventory:
<remote host IP> anisble_ssh_user="ubuntu" ansible_ssh_private_key_file="<path/to/your/private/key>"
- Image needed to deploy galaxykickstart:
-
AWS
- Image needed to deploy galaxykickstart:
Ubuntu Server 18.04 LTS (HVM), SSD Volume Type - ami-013f17f36f8b1fefb (64 bits x86) / ami-02ed82f3a38303e6f (64 bits Arm)
- Inventory:
<target Amazon Web Services IP address> ansible_ssh_user="ubuntu" ansible_ssh_private_key_file="<path/to/your/aws/private/key>"
- Image needed to deploy galaxykickstart:
-
Jetstream (OpenStack)
- Image needed to deploy galaxykickstart on Jetstream:
Ubuntu 18.04 LTS Development + GUI support + Docker (jetstream image id: 15ff25f6-6ac5-4c12-b6ce-c08615ba32be)
- Inventory:
<remote host IP> ansible_ssh_user="root" ansible_ssh_private_key_file="<path/to/your/private/key>"
- Image needed to deploy galaxykickstart on Jetstream: