Skip to content

gc3-uzh-ch/ansible-playbooks

Repository files navigation

Ansible GC3 playbooks

This repository contains the modules and playbooks used by the GC3 to mantain the production infrastructure and to configure VM instances on the Hobbes cloud.

The structure of the repository follow this schema:

|   # Group variables   
+-- group_vars
|   +-- foo  # variables automatically set for group `foo`
|   +-- bar  # variables automatically set for group `bar` 
|
|   # Host variables
+-- host_vars
|   +-- host1  # variables automatically set for host `host1`
|
|   # Private variables. All the files in this directory are
|   # *encrypted* with the filter specified in ``.gitattributes``
+-- private_vars
|   +-- ldap  # variables included by some playbook.
|
|   # Collection of playbooks divided by *role*
+-- roles
|  - role-foo.yml  # playbook for role `role-foo`
|  - role-foo      # directory containing stuff used by `role-foo`
|    - files       # files to be copied on the managed machine.
|    - handles     # handlers used by the role
|    - tasks       # collection of tasks executed by the playbook
|    - templates   # templates used by the playbook
|
+-- site.yml
|   # This is the main playbook. It includes all the playbooks created
|   # in `roles` directory. Each role is supposed to be applied only
|   # to specific group of nodes. For instance, the `ganglia` role
|   # will configure only hosts in the  `ganglia_monitor` or
|   # `ganglia_master` groups.
|
+-- modules
|   # This directory contains ansible modules developed by GC3
|
+-- hosts     # GC3 inventory file
+-- examples  # directory containing examples and code snippets.
+-- README.rst

GC3-specific configuration

Some playbooks, like roles/gc3.yml, only work for hosts in the gc3 group. You can either assign an host to that group in the inventory file, or you can set a variable gc3group equals to gc3 (either from the inventory file or from the command line by using the -e option), and the site.yml playbook will assign the host to the gc3 group.

Extra modules

Extra modules are defined in the modules directory. In order to use them you need to either run ansible-playbook with option -M modules, or edit your ansible configuration file and update the library option, or set the environemnt variable ANSIBLE_LIBRARY.

SLURM configuration

In order to configure a slurm cluster, create an hosts file with:

[slurm_master]
hostname ansible_ssh_host=A.B.C.D

[slurm_clients]
node1 ansible_ssh_host=A.B.C.D
node2 ansible_ssh_host=A.B.C.D
node3 ansible_ssh_host=A.B.C.D

then run:

ansible-playbook -i <hostfile> site.yml

Jenkins

To configure jenkins, use an hostfile containing:

[jenkins]
hostname ansible_ssh_host=A.B.C.D

then run:

ansible-playbook -i <hostfile> site.yml

Please note that by default this will create jobs to test gc3pie. If you want to modify it, just check the variable j_jobs in group_vars/jenkins`

Ganglia

Hostfile to configure ganglia:

[ganglia_master]
ganglia-frontend

[ganglia_monitor]
ganglia-frontend
node01
node02

ganglia_master group will install the ganglia web frontend and the gmetad daemon.

The ganglia_monitor group will install gmond and will configure it in order to send statistics to the ganglia_master node.

On a default ganglia installation you are supposed to install the gmond daemon on the frontend as well, but this is not done automatically by this playbook, therefore you have to add the frontend also to the ganglia_monitor group.

Releases

No releases published

Packages

No packages published