Add configuration of OpenSM Infiniband subnet manager in a Docker container

Follows kolla-ansible service configuration patterns. Uses jumanjiman.opensm
Docker image.
This commit is contained in:
Mark Goddard
2017-06-12 09:28:05 +01:00
parent d0e0c029b6
commit 1e08a1413d
12 changed files with 178 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
OpenSM Infiniband Subnet Manager
================================
This role can be used to configure an OpenSM Infiniband subnet manager running
in a Docker container.
Requirements
------------
The host executing the role has the following requirements:
* Docker engine
* ``docker-py >= 1.7.0``
Role Variables
--------------
``opensm_enabled``: Whether OpenSM is enabled. Defaults to ``true``.
``opensm_namespace``: Docker image namespace. Defaults to ``jumanjiman``.
``opensm_image``: Docker image name.
``opensm_tag``: Docker image tag. Defaults to ``latest``.
``opensm_image_full``: Full docker image specification.
``opensm_restart_policy``: Docker restart policy for OpenSM container. Defaults
to ``unless-stopped``.
``opensm_restart_retries``: Number of Docker restarts. Defaults to 10.
Dependencies
------------
None
Example Playbook
----------------
The following playbook configures OpenSM.
---
- hosts: opensm
roles:
- role: opensm
Author Information
------------------
- Mark Goddard (<mark@stackhpc.com>)

View File

@@ -0,0 +1,30 @@
---
# Roughly follows kolla-ansible's service deployment patterns.
# Whether OpenSM is enabled.
opensm_enabled: true
# Service deployment definition.
opensm_services:
opensm:
container_name: opensm
enabled: "{{ opensm_enabled }}"
image: "{{ opensm_image_full }}"
privileged: True
read_only: True
volumes:
- "/etc/localtime:/etc/localtime:ro"
- "/lib/modules:/lib/modules:ro"
- "opensm_cache:/var/cache/opensm"
- "opensm_logs:/var/log"
####################
# Docker
####################
opensm_namespace: "jumanjiman"
opensm_image: "{{ docker_registry ~ '/' if docker_registry | default else '' }}{{ opensm_namespace }}/opensm"
opensm_tag: "latest"
opensm_image_full: "{{ opensm_image }}:{{ opensm_tag }}"
opensm_restart_policy: "unless-stopped"
opensm_restart_retries: 10

View File

@@ -0,0 +1,14 @@
---
- name: Ensure OpenSM container is running
docker_container:
image: "{{ item.value.image }}"
name: "{{ item.value.container_name }}"
network_mode: "host"
privileged: "{{ item.value.privileged | default(omit) }}"
pull: "{{ action == 'upgrade' }}"
read_only: "{{ item.value.read_only | default(omit) }}"
restart_policy: "{{ opensm_restart_policy }}"
restart_retries: "{{ opensm_restart_retries }}"
state: "{{ 'started' if item.value.enabled | bool else 'absent' }}"
volumes: "{{ item.value.volumes }}"
with_dict: "{{ opensm_services }}"

View File

@@ -0,0 +1,2 @@
---
- include: "{{ action }}.yml"

View File

@@ -0,0 +1,5 @@
---
- name: Pulling OpenSM container image
docker_image:
name: "{{ opensm_image_full }}"
state: present

View File

@@ -0,0 +1 @@
deploy.yml

View File

@@ -0,0 +1 @@
deploy.yml