wayofdev.dock


Rol de Ansible: Automatización del Dock de macOS
Este rol se utiliza para automatizar el uso de dockutil, una herramienta de línea de comandos para gestionar elementos en el Dock. Puedes añadir, eliminar y reorganizar elementos del Dock.
Si te gusta/utilizas este rol, please considera darle una estrella. ¡Gracias!
🗂 Tabla de contenidos
- Beneficios de este rol
- Requisitos
- Variables de rol
- Ejemplo de Playbook
- Desarrollo
- Pruebas
- Dependencias
- Compatibilidad
- Licencia
- Información del autor
- Créditos y Recursos
- Contribuidores
- Patrocinadores
⭐️ Beneficios de este rol:
- Esta versión es compatible con la última versión 3.x de dockutil
- Los elementos se añaden, posicionan y eliminan en un solo comando en lugar de bucles
- Soporte para la última versión de macOS Monterey
- Permite eliminar todos los elementos del Dock con una sola configuración
- No necesita controladores de Ansible ni derechos de sudo para hacer
killall
y reiniciar el Dock, ya que esto lo manejadockutil
por sí mismo. - Soporta todas las opciones de
dockutil
, como:--add, --remove, --move, --replacing, --position, --after, --before, --section, --allhomes, --sort, --display, --view
📑 Requisitos
- Homebrew: Necesita
homebrew
ya instalado (puedes usarwayofdev.homebrew
para instalarlo en tu macOS). - Versión actualizada de Ansible. Durante el mantenimiento/desarrollo, nos adherimos a las versiones de Ansible y utilizaremos nuevas funciones si están disponibles (y actualizaremos
meta/main.yml
para la versión mínima). - Sistema operativo compatible. Consulta la tabla de compatibilidad.
- El rol tiene dependencias en roles de terceros en diferentes sistemas operativos. Ver
requirements.yml
y la sección de dependencias.
🔧 Variables de rol
Esta sección muestra todas las variantes posibles para añadir, mover, reemplazar y eliminar aplicaciones, separadores y carpetas. Las variables disponibles se enumeran a continuación, junto con valores de ejemplo (ver defaults/main.yml
):
→ Estructura
Este grupo controla la instalación de dockutil y permite seleccionar un tap personalizado:
# ¿Deberíamos intentar instalar dockutil?
dock_dockutil_install: <true | false> # (predeterminado: true) Instalar dockutil usando homebrew.
# Ruta al tap personalizado o oficial de dockutil
dock_dockutil_tap: lotyp/formulae/dockutil # Por defecto, se utiliza el tap 3.x
El rol permite borrar completamente el dock de macOS:
# Elimina todo el contenido del dock, incluida la sección "otros" con la carpeta de Descargas.
# Prefiere esta opción en nuevas instalaciones junto con "dockitems" configurados.
dock_dockitems_erase_all: <true | false> # Si se debe intentar borrar todos los elementos en el Dock, incluida la carpeta de Descargas. (predeterminado: false)
Estructura de la variable para añadir, mover o eliminar elementos en el Dock:
dock_dockitems:
- label: <label> # Usado en la búsqueda de elementos existentes o nombra nuevas aplicaciones
action: <add | remove | move>
path: <label | app bundle id | path | url> # Ejemplo: /System/Applications/TextEdit.app
replacing: <label | app bundle id | path | url> # Etiqueta o Id de paquete de la aplicación a reemplazar. Reemplaza el elemento con la etiqueta de dock dada o añade el elemento al final si el elemento a reemplazar no se encuentra.
position: <[+/-]index_number | beginning | end | middle> # Inserta el elemento en una posición fija: se puede posicionar por número de índice o palabra clave.
after: <label | application bundle id> # Inserta el elemento inmediatamente después de la etiqueta del dock dada o al final si el elemento no se encuentra.
before: <label | application bundle id> # Inserta el elemento inmediatamente antes de la etiqueta del dock dada o al final si el elemento no se encuentra.
section: <apps | others> # Especifica si el elemento debe ser agregado a la sección de aplicaciones o de otros.
display: <folder | stack> # Opción de visualización de carpeta al añadir una carpeta.
sort: <name | dateadded | datemodified | datecreated | kind> # Opción de ordenación de carpetas al añadir una carpeta.
type: <spacer | small-spacer | flex-spacer> # Especifica un tipo de tile personalizado para añadir separadores.
allhomes: <true | false> # Si se debe intentar localizar todos los directorios de inicio y realizar la operación en cada uno de ellos (predeterminado: false).
→ Añadir
Añade TextEdit.app
al final del Dock del usuario actual:
dock_dockitems:
- label: TextEdit
action: add
path: /System/Applications/TextEdit.app
Añade Time Machine.app
al medio del Dock:
dock_dockitems:
- label: Time Machine
action: add
path: /System/Applications/Time Machine.app
position: middle
Añade TextEdit.app
después del ítem Time Machine.app
en el Dock de todos los usuarios en esa máquina:
dock_dockitems:
- label: TextEdit
action: add
path: /System/Applications/TextEdit.app
after: Time Machine
allhomes: true # parámetro opcional
→ Añadir con Reemplazo
Reemplaza Time Machine.app
con Mail.app
en el Dock del usuario actual:
dock_dockitems:
- label: Mail
action: add
path: /System/Applications/Mail.app
replacing: Time Machine
→ Añadir carpetas
Añade la carpeta Descargas
a la sección de otros
del menú del Dock. Al hacer clic se abrirá una vista en modo cuadrícula.
dock_dockitems:
- label: Descargas
action: add
path: ~/Downloads
view: grid
display: folder
allhomes: true # parámetro opcional
→ Eliminar
Elimina TextEdit
en el Dock de todos los usuarios en esa máquina:
dock_dockitems:
- label: TextEdit
action: remove
allhomes: true # parámetro opcional
Elimina todos los tiles de separadores:
dock_dockitems:
- label: spacer-tiles
action: remove
→ Mover
Mueve Preferencias del Sistema
al segundo espacio en el Dock de todos los usuarios en esa máquina:
dock_dockitems:
- label: Preferencias del Sistema
action: move
position: end # <[+/-]index_number | beginning | end | middle>
allhomes: true # parámetro opcional
📗 Ejemplo de Playbook
---
- hosts: all
# es necesario al ejecutar a través de SSH
environment:
- PATH: "/usr/local/bin:/usr/local/sbin:/opt/homebrew/bin:{{ ansible_env.PATH }}"
vars:
dock_dockitems_erase_all: true
dock_dockitems:
- label: Mensajes
action: add
path: /System/Applications/Messages.app
- label: Safari
action: add
path: /Applications/Safari.app
- label: Sublime Text
action: add
path: /Applications/Sublime Text.app
position: 3
roles:
- wayofdev.homebrew
- wayofdev.dock
⚙️ Desarrollo
Para instalar dependencias y comenzar el desarrollo, puedes consultar el contenido de nuestro Makefile
.
Instalar poetry usando poetry-bin y todas las dependencias de desarrollo de python:
$ make install
Instalar solo dependencias de python, asumiendo que ya tienes poetry:
$ make install-deps
Instalar todos los ganchos Git:
$ make hooks
Verificar todos los archivos del rol:
$ make lint
🧪 Pruebas
Puedes consultar el Makefile
para obtener la lista completa de comandos para pruebas remotas y locales. Para pruebas locales, puedes usar estos comandos para probar todo el rol o tareas separadas:
→ en localhost
:warning: Nota: Por defecto, todas las pruebas se ejecutan en tu máquina local.
# ejecutar pruebas de molecule en localhost
$ poetry run molecule test --scenario-name defaults-restored-on-localhost -- -vvv
# o con el comando make
$ make m-local
# elige qué etiquetas serán incluidas
$ export TASK_TAGS="dock-validate,dock-install"; make m-local
→ a través de SSH
# ejecutar escenarios de molecule contra máquinas remotas a través de SSH
# esto necesita configuración y setup de VM
$ poetry run molecule test --scenario-name defaults-restored-over-ssh -- -vvv
$ make m-remote
# las etiquetas también se pueden pasar
$ export TASK_TAGS="dock-validate,dock-install"
$ make m-remote
📦 Dependencias
La instalación es gestionada por Makefile
y los requisitos están definidos en requirements.yml
- wayofdev.homebrew - dependencia suave, necesaria si Homebrew aún no está instalado
- ansible.community.general
🧩 Compatibilidad
Este rol ha sido probado en los siguientes sistemas:
sistema / contenedor | etiqueta |
---|---|
macos | monterey |
macos | big-sur |
🤝 Licencia
🙆🏼♂️ Información del autor
Este rol fue creado en 2022 por lotyp / wayofdev.
🧱 Créditos y Recursos
Inspirado por:
- rol original creado por @geerlingguy como parte de ansible-collection-mac.
- dockutil
🫡 Contribuidores
🤑 Patrocinadores
El desarrollo y las pruebas del rol se realizaron en Parallels Desktop Pro Edition, gracias a Parallels
Role is used to automate use of "dockutil" – command line tool for managing dock items. You can add, remove and re-arrange Dock items.
ansible-galaxy install wayofdev.dock