kso512.mpd
mpd
Un Rol de Ansible para instalar la aplicación Music Player Daemon desde el código fuente en lugar de usar un gestor de paquetes. Algunos gestores de paquetes pueden no incluir características como soporte para MP3, así que compilar desde el código fuente puede ser útil.
Esta es una reconstrucción completa del rol ansible-install-mpd que creé y mantuve durante años, realizado debido a cambios en CI/CD y convenciones de nombres en Ansible Galaxy.
No recomiendo la configuración predeterminada para conexiones no protegidas directamente a Internet, ya que la configuración del servidor incluye acceso sin contraseña. En su lugar, recomiendo que el operador aumente la seguridad configurando una variable de host o de grupo que anule mpd_conf_src
con un archivo personalizado desde fuera del repositorio, como se muestra en la sección Ejemplo de Playbook más abajo.
Todas las tareas están etiquetadas con mpd
.
Las siguientes distribuciones han sido probadas automáticamente:
Matriz de Versiones
Versión/Tag del Rol | Versión de MPD |
---|---|
1.0.19 | 0.23.15 |
1.0.18 | 0.23.14 |
1.0.16 - 1.0.17 | 0.23.13 |
1.0.14 - 1.0.15 | 0.23.12 |
1.0.13 | 0.23.11 |
Requerimientos
Si el servidor tiene un firewall habilitado, podría ser necesario modificarlo para permitir paquetes entrantes en los puertos TCP 6600/8000. El rol no incluye música ni listas de reproducción, así que necesitas proporcionar esos archivos. Consulta la sección Variables del Rol más abajo para saber dónde.
Variables del Rol
Los valores predeterminados mostrados a continuación deberían funcionar "listo para usar" y solo necesitan personalización si no satisfacen tus necesidades.
Nombre | Descripción | Valor Predeterminado |
---|---|---|
mpd_apt_prereqs | Lista de paquetes APT para instalar | (Ver NOTA A más abajo) |
mpd_audio_output | Diccionario con definiciones de salida de audio | (Ver NOTA B más abajo) |
mpd_bind_to_address | Dirección a la que se vinculará la interfaz de control; ejemplos: "any" o "localhost" | "any" |
mpd_comment | Comentario para el usuario de MPD | "Music Player Daemon" |
mpd_compile_creates | Nombre completo del archivo creado al compilar MPD | "{{ mpd_src }}/output/release/mpd" |
mpd_conf | Nombre completo del archivo de configuración de MPD | "{{ mpd_home }}/mpd.conf" |
mpd_conf_mode | Configuración de modo del archivo de configuración de MPD | "0644" |
mpd_conf_src | Ruta relativa o completa del archivo fuente de la configuración de MPD | mpd.conf.j2 |
mpd_configure_creates | Nombre completo del archivo creado al configurar la fuente de MPD | "{{ mpd_src }}/output/release/build.ninja" |
mpd_database_plugin | Tipo de plugin de base de datos a usar; consultar Plugins de base de datos para opciones. | "simple" |
mpd_database_path | Nombre completo del archivo de base de datos de MPD | "{{ mpd_home }}/tag_cache" |
mpd_database_cache_directory | Ruta del directorio de caché para almacenes adicionales montados en tiempo de ejecución | "{{ mpd_home }}/cache" |
mpd_executable | Nombre completo del ejecutable de MPD | "/usr/local/bin/mpd" |
mpd_filename | Nombre del archivo del archivo de MPD | "{{ mpd_shortname }}.tar.xz" |
mpd_group | Grupo del usuario que poseerá el proceso del daemon | "{{ mpd_user }}" |
mpd_home | Directorio principal donde se ejecutará la aplicación | "/home/{{ mpd_user }}" |
mpd_log_file | Nombre completo del archivo de registro de MPD | "{{ mpd_home }}/log" |
mpd_metadata_to_use | Usar solo las etiquetas especificadas separadas por comas, e ignorar las demás; consultar Etiquetas para una lista de etiquetas soportadas | "AlbumArtist,Artist,Album,Title,Track,Disc,Genre,Name" |
mpd_mode | Configuración de modo de las carpetas de fuente de MPD, música y listas de reproducción | "0755" |
mpd_music_directory | Carpeta para almacenar música | "{{ mpd_home }}/music" |
mpd_neighbors | Lista de plugins vecinos a habilitar | (Ver NOTA C más abajo) |
mpd_pid_file | Nombre completo del archivo PID de MPD | "{{ mpd_home }}/pid" |
mpd_pip_prereqs | Lista de paquetes PIP para instalar | "meson>0.56.0" |
mpd_playlist_directory | Carpeta para almacenar listas de reproducción | "{{ mpd_home }}/playlist" |
mpd_port | Puerto TCP al que se vinculará la interfaz de control | "6600" |
mpd_ratings_file | Nombre completo del archivo de calificaciones de MPD | "{{ mpd_home }}/ratings.db" |
mpd_shortname | Nombre corto del archivo de MPD | "mpd-0.23.15" |
mpd_src | Directorio donde descomprimir el código fuente | "{{ mpd_src_base }}/{{ mpd_shortname }}" |
mpd_src_base | Directorio donde se colocará el archivo del código fuente | "{{ mpd_home }}/src" |
mpd_state_file | Nombre completo del archivo de estado de MPD | "{{ mpd_home }}/state" |
mpd_sticker_file | Nombre completo del archivo de stickers de MPD | "{{ mpd_home }}/sticker.sql" |
mpd_systemd_service_dest | Nombre completo del archivo de unidad de servicio systemd de MPD | "/etc/systemd/system/mpd.service" |
mpd_systemd_service_group | Grupo del usuario que poseerá el archivo de unidad systemd | "root" |
mpd_systemd_service_owner | Nombre del usuario que poseerá el archivo de unidad systemd | "root" |
mpd_systemd_service_mode | Configuración de modo del archivo de unidad systemd | "0644" |
mpd_systemd_service_src | Ruta relativa o completa del archivo fuente de unidad systemd de MPD | "systemd.mpd.service.j2" |
mpd_url | URL completa para descargar el archivo del código fuente | "{{ mpd_url_base }}/{{ mpd_filename }}" |
mpd_url_base | Base de la URL para descargar el archivo del código fuente | "http://www.musicpd.org/download/mpd/0.23" |
mpd_user | Nombre del usuario que poseerá el proceso del daemon | "mpd" |
NOTA A
mpd_apt_prereqs
- Lista de paquetes APT para instalar:
- meson
- g++
- libfmt-dev
- libpcre2-dev
- libmad0-dev
- libmpg123-dev
- libid3tag0-dev
- libflac-dev
- libvorbis-dev
- libopus-dev
- libogg-dev
- libadplug-dev
- libaudiofile-dev
- libsndfile1-dev
- libfaad-dev
- libfluidsynth-dev
- libgme-dev
- libmikmod-dev
- libmodplug-dev
- libmpcdec-dev
- libwavpack-dev
- libwildmidi-dev
- libsidplay2-dev
- libsidutils-dev
- libresid-builder-dev
- libavcodec-dev
- libavformat-dev
- libmp3lame-dev
- libtwolame-dev
- libshine-dev
- libsamplerate0-dev
- libsoxr-dev
- libbz2-dev
- libcdio-paranoia-dev
- libiso9660-dev
- libmms-dev
- libzzip-dev
- libcurl4-gnutls-dev
- libyajl-dev
- libexpat-dev
- libasound2-dev
- libao-dev
- libjack-jackd2-dev
- libopenal-dev
- libpulse-dev
- libshout3-dev
- libsndio-dev
- libmpdclient-dev
- libnfs-dev
- libupnp-dev
- libavahi-client-dev
- libsqlite3-dev
- libsystemd-dev
- libgtest-dev
- libboost-dev
- libicu-dev
- libchromaprint-dev
- libgcrypt20-dev
NOTA B
mpd_audio_output
- Diccionario que contiene definiciones de salida de audio:
httpd:
type: httpd
name: Mi Stream HTTP
encoder: lame
port: 8000
bitrate: 128
format: "44100:16:2"
always_on: "yes"
tags: "yes"
NOTA C
mpd_neighbors
- Lista de plugins vecinos a habilitar; consulta Configuración de Plugins Vecinos para más información.
- udisks
- upnp
Dependencias
Aún no definidas.
Ejemplo de Playbook
Configura cada servidor MPD con un mpd.conf local personalizado:
- hosts: music-servers
roles:
- { role: kso512.mpd, mpd_conf_src: local/mpd.conf.j2 }
Licencia
Licencia Pública General GNU versión 2
Información del Autor
Ansible role to install Music Player Daemon from source
ansible-galaxy install kso512.mpd