derekmerck.orthanc_docker
Rol de Ansible para Orthanc en Docker
Derek Merck
derek_merck@brown.edu
Hospital de Rhode Island y Universidad de Brown
Providence, RI
Configura y ejecuta un nodo DICOM de Orthanc en un contenedor Docker.
Dependencias
Roles de Galaxy
- geerlingguy.docker para configurar el entorno Docker
- geerlingguy.pip para instalar requisitos de Python
- derekmerck.postgres-docker para configurar la base de datos de Postgres, si es necesario
Nodo Local
- Python Cryptography, si los secretos de las contraseñas están encriptados
Nodo Remoto
Variables del Rol
Imagen y Etiqueta de Docker
orthanc_docker_image: "jodogne/orthanc"
orthanc_docker_image_tag: "latest"
Selecciona una imagen y etiqueta para Orthanc.
jodogne/orthanc
es la imagen oficial de Orthanc para Docker mantenida por Sébastien Jodogne.jodogne/orthanc-plugins
es la imagen oficial que admite la base de datos Postgresql.osimis/orthanc
es una imagen de terceros de Osimis para Docker con un excelente visor web para revisión y anotación.derekmerck/orthanc
es una imagen de terceros de Orthanc con soporte para múltiples arquitecturas. Incluye GDCM para compresión JPG sobre la marcha.derekmerck/orthanc-plugins
es la imagen correspondiente de múltiples arquitecturas con soporte para la base de datos PostgreSQL.
Configuración del Contenedor Docker
orthanc_container_name: "orthanc"
orthanc_use_data_container: True
orthanc_data_dir: "/data/{{ orthanc_container_name }}"
orthanc_config_dir: "/config/{{ orthanc_container_name }}"
orthanc_api_port: 8042
orthanc_dicom_port: 4242
orthanc_container_timezone: "America/New_York"
Configuración del Servicio
Configura el servicio. Estas variables se utilizan en el archivo de configuración de la plantilla.
orthanc_title: "Orthanc"
orthanc_aet: "ORTHANC"
orthanc_user: "orthanc"
orthanc_password: "passw0rd!"
Elementos de configuración adicionales complejos que se inyectan en orthanc.conf
. Deben seguir el formato apropiado (ver abajo).
orthanc_users: {}
orthanc_peers: {}
orthanc_modalities: {}
Configuración de Enrutamiento
Orthanc puede configurarse como enrutador incluyendo un diccionario de destinos (pares). Durante el enrutamiento, Orthanc puede opcionalmente anonimizar y/o comprimir datos. Consulta el rol derekmerck/queued-orthanc
para ejemplos de cómo construir enrutamiento más flexible con un servicio "DIANA-Watcher".
orthanc_anonymize: False
orthanc_compress: False
orthanc_destinations: [{dest: nombre del par o modalidad, type: peer o dicom}, ..]
Configuración de PostgreSQL
orthanc_pg_backend: False
orthanc_pg_user: "{{ orthanc_user }}"
orthanc_pg_password: "{{ orthanc_password }}"
orthanc_pg_database: "{{ orthanc_container_name }}"
orthanc_pg_host: "postgres"
orthanc_pg_port: 5432
Ejemplo de Playbook
Ejecuta una sola instancia de orthanc.
- hosts: dicom_node
roles:
- derekmerck.orthanc_docker
Ejecuta una sola instancia de orthanc con algunos usuarios y pares adicionales.
- hosts: dicom_node
roles:
- name: derekmerck.orthanc_docker
orthanc_users:
user1: password
user2: passw0rd!
orthanc_peers:
my_peer: [ "http://127.0.0.1:8043/", "user1", "password" ]
my_other_peer: [ "http://127.0.0.1:8043/", "user2", "passwOrd!"]
orthanc_modalities:
my_pacs: ["MY_PACS", "192.168.1.1", 104 ]
my_workstation: ["MY_WORKSTATION", "192.168.1.2", 104 ]
Nota: Esto actualmente solo funciona para contraseñas de usuario. Ejecuta una sola instancia de orthanc con usuarios y pares adicionales utilizando contraseñas confidenciales (encriptadas con fernet).
- hosts: dicom_node
vars:
fernet_key: 't8YHZXpNvk_OFPkvyWc2rDWUxp7qXY6tiHr10f_PG3Y='
roles:
- name: derekmerck.orthanc_docker
orthanc_users:
user1: "gAAAAABbcFt-3M4t288flnG2xY88xKPx4U1l1phZtv4hDpnjNx3Mq8s9MnY74dY6Ab35qp6voKAVGJ9BMT8wlthPY4COk16sIg=="
user2: "gAAAAABbcFrtnhBWtrEC8QXvqByYsyEEqNKC2mP2joN4rcK58RNZIdKqMLErq-Lki6NhPSvpv_Y7fkYJRuaM4Gbt0QFFYZtZmQ=="
orthanc_peers:
my_peer: [ "http://127.0.0.1:8043/", "user1", "gAAAAABbcFt-3M4t288flnG2xY88xKPx4U1l1phZtv4hDpnjNx3Mq8s9MnY74dY6Ab35qp6voKAVGJ9BMT8wlthPY4COk16sIg==" ]
my_other_peer: [ "http://127.0.0.1:8043/", "user2", "gAAAAABbcFrtnhBWtrEC8QXvqByYsyEEqNKC2mP2joN4rcK58RNZIdKqMLErq-Lki6NhPSvpv_Y7fkYJRuaM4Gbt0QFFYZtZmQ=="]
Ejecuta múltiples instancias contra la misma base de datos para balanceo de carga.
- hosts: dicom_node
tasks:
- include_role:
name: derekmerck.orthanc_docker
vars:
# Variables independientes
orthanc_api_port: "804{{ item }}"
orthanc_dicom_port: "424{{ item }}"
# Variables compartidas
orthanc_data_dir: "/data/orthanc"
orthanc_docker_image: "jodogne/orthanc-plugins"
orthanc_pg_backend: True
orthanc_db_name: "orthanc"
with_sequence: count=5
Ejecuta un reenvío multiplexor con compresión.
- hosts: dicom_node
roles:
- name: derekmerck.orthanc_docker
orthanc_peers:
my_peer: [ "http://127.0.0.1:8043/", "user1", "password" ]
orthanc_modalities:
my_workstation: ["MY_WORKSTATION", "192.168.1.2", 104 ]
orthanc_destinations:
- dest: my_peer
type: peer
- dest: my_workstation
type: dicom
orthanc_compression: True
Licencia
MIT
Configure and run an [Orthanc](https://www.orthanc-server.com) DICOM node in a Docker container
ansible-galaxy install derekmerck.orthanc_docker