gantsign.intellij
Rol de Ansible: IntelliJ
Rol para descargar, instalar y configurar el IDE IntelliJ IDEA https://www.jetbrains.com/idea.
Aunque este rol puede instalar complementos de IntelliJ, si deseas instalar complementos específicos de manera condicional, consulta nuestro rol complementario: gantsign.intellij-plugins.
Requisitos
Ansible Core >= 2.12
Distribución de Linux
Familia Debian
Ubuntu
- Focal (20.04)
- Jammy (22.04)
Familia RedHat
Rocky Linux
- 9
Nota: otras versiones probablemente funcionarán, pero no han sido probadas.
Java JDK
- Debes instalar tanto el JDK como el src del JDK.
- Si utilizas Java > 9, también debes instalar los jmods.
Por ejemplo, lo siguiente es necesario si usas OpenJDK 17 con Rocky Linux:
- name: Instalar OpenJDK 17 become: true yum: name: - java-17-openjdk-devel - java-17-openjdk-jmods - java-17-openjdk-src state: present
Apache Maven
Variables del Rol
Las siguientes variables modificarán el comportamiento de este rol (los valores predeterminados están mostrados a continuación):
# Número de versión de IntelliJ IDEA
intellij_version: '2024.2'
# Enlace desde donde descargar el paquete redistribuible de IntelliJ IDEA
# Usando HTTP debido a https://github.com/ansible/ansible/issues/11579
intellij_mirror: 'http://download.jetbrains.com/idea'
# Edición a instalar (comunidad o definitiva)
intellij_edition: community
# Directorio base de instalación para cualquier distribución de IntelliJ IDEA
intellij_install_dir: /opt/idea/idea-{{ intellij_edition }}-{{ intellij_version }}
# Propietario de los archivos de instalación
intellij_install_user: root
# Ubicación de la instalación predeterminada de Apache Maven para los proyectos de IntelliJ IDEA
# Por defecto es el valor de ansible_local.maven.general.home (ver rol gantsign.maven)
intellij_default_maven_home: '{{ ((((ansible_local | default(dict())).maven | default(dict())).general | default(dict())).home | default(None)) }}'
# URL del servicio web del administrador de complementos de IntelliJ IDEA
intellij_plugin_manager_url: 'https://plugins.jetbrains.com/pluginManager/'
# Lista de usuarios para configurar IntelliJ IDEA
users: []
# Directorio para almacenar archivos descargados para la instalación de IntelliJ IDEA
intellij_download_dir: "{{ x_ansible_download_dir | default(ansible_facts.env.HOME + '/.ansible/tmp/downloads') }}"
# Tiempo de espera para la respuesta de descarga de IntelliJ IDEA en segundos
intellij_idea_download_timeout_seconds: 600
Los usuarios se configuran de la siguiente manera:
users:
- username: # Nombre de usuario de Unix
intellij_group: # Grupo Unix para los archivos/directorios del usuario (opcional - por defecto es el nombre de usuario)
intellij_jdks:
- name: # El nombre que deseas usar para este JDK
home: # La ruta al directorio del JDK.
# El nombre del JDK que deseas que sea el predeterminado para nuevos proyectos.
# Requerido si especificas `intellij_jdks`.
# Debe coincidir con el nombre dado a uno de los `intellij_jdks`.
intellij_default_jdk:
intellij_disabled_plugins: # ver ~/.config/JetBrains/*Idea*/disabled_plugins.txt
- # ID del complemento
intellij_codestyles:
# Lista de estilos de código (cada ubicación XML puede especificarse por URL o ruta del sistema de archivos)
- name: # Nombre (debe coincidir con el valor en el archivo XML /code_scheme/@name)
url: # URL para descargar el XML de estilos de código
- name: # Nombre (debe coincidir con el valor en el archivo XML /code_scheme/@name)
src: # ruta al archivo XML de estilos de código (puede ser absoluta o relativa; las rutas relativas se evalúan de la misma manera que el módulo de copia de Ansible)
remote_src: # sí/no, si copiar del sistema de archivos remoto (por defecto no)
intellij_default_codestyle: # Nombre (debe coincidir con el valor en el archivo XML /code_scheme/@name)
intellij_inspection_profiles:
# Lista de perfiles de inspección (cada ubicación XML puede especificarse por URL o ruta del sistema de archivos)
- name: # Nombre (debe coincidir con el valor en el archivo XML /profile/option[@name='myName']/@value)
url: # URL para descargar el perfil de inspección en XML
- name: # Nombre (debe coincidir con el valor en el archivo XML /profile/option[@name='myName']/@value)
src: # ruta al archivo XML del perfil de inspección (puede ser absoluta o relativa; las rutas relativas se evalúan de la misma manera que el módulo de copia de Ansible)
remote_src: # sí/no, si copiar del sistema de archivos remoto (por defecto no)
intellij_default_inspection_profile: # Nombre (debe coincidir con el valor en el archivo XML /profile/option[@name='myName']/@value)
intellij_plugins:
- # ID del complemento para instalar
# Solo para la edición definitiva: ubicación de la clave de licencia de IntelliJ en el maestro de Ansible.
# Tu clave de licencia puede encontrarse en ~/.config/JetBrains/*Idea*/idea.key
intellij_license_key_path: # por ejemplo '/vagrant/idea.key'
Advertencia: la función para instalar complementos adicionales se basa en APIs internas de IntelliJ IDEA y debe ser considerada experimental en este momento.
Versiones soportadas de IntelliJ IDEA
Las siguientes versiones de IntelliJ IDEA son compatibles sin ninguna configuración adicional (para otras versiones sigue las instrucciones de Configuración Avanzada):
2024.2
2024.1.4
2024.1.3
2024.1.2
2024.1.1
2024.1
2023.3.6
2023.3.5
2023.3.4
2023.3.3
2023.3.2
2023.3.1
2023.3
2023.2.5
2023.2.4
2023.2.3
2023.2.2
2023.2.1
2023.2
2023.1.5
2023.1.4
2023.1.3
2023.1.2
2023.1.1
2023.1
2022.3.3
2022.3.2
2022.3.1
2022.3
2022.2.4
2022.2.3
2022.2.2
2022.2.1
2022.2
2022.1.4
2022.1.3
2022.1.2
2022.1.1
2022.1
2021.3.3
2021.3.2
2021.3.1
2021.3
2021.2.3
2021.2.2
2021.2.1
2021.2
2021.1.3
2021.1.2
2021.1.1
2021.1
2020.3.3
2020.3.2
2020.3.1
2020.3
2020.2.4
2020.2.3
2020.2.2
2020.2.1
2020.2
2020.1.2
2020.1.1
2020.1
2019.3.4
2019.3.3
2019.3.2
2019.3.1
2019.3
2019.2.4
2019.2.3
2019.2.2
2019.2.1
2019.2
2019.1.3
2019.1.2
2019.1.1
2019.1
2018.3.6
2018.3.5
2018.3.4
2018.3.3
2018.3.2
2018.3.1
2018.3
2018.2.5
2018.2.4
2018.2.3
2018.2.2
2018.2.1
2018.2
2018.1.6
2018.1.5
2018.1.4
2018.1.3
2018.1.2
2018.1.1
2018.1
2017.3.5
2017.3.4
2017.3.3
2017.3.2
2017.3.1
2017.3
2017.2.6
2017.2.5
2017.2.4
2017.2.3
2017.2.2
2017.2.1
2017.2
2017.1.5
2017.1.4
2017.1.3
2017.1.2
2017.1.1
2017.1
2016.3.5
2016.3.4
2016.3.3
2016.3.2
2016.3.1
2016.3
2016.2.5
2016.2.4
2016.2.3
2016.2.2
2016.2.1
2016.2
2016.1.3
2016.1.1
Configuración Avanzada
La siguiente variable de rol depende de la versión de IntelliJ IDEA. Para usar una versión de IntelliJ IDEA que no está preconfigurada por este rol, debes configurar la variable a continuación:
# Suma SHA256 para el paquete redistribuible
# es decir, ideaIC-{{ intellij_version }}.tar.gz para la edición comunitaria
# o ideaIU-{{ intellij_version }}.tar.gz para la edición definitiva
intellij_redis_sha256sum: d1cd3f9fd650c00ba85181da6d66b4b80b8e48ce5f4f15b5f4dc67453e96a179
IDs de Complementos de IntelliJ
JetBrains no hace visibles los IDs de los complementos de IntelliJ en su sitio web de mercado (https://plugins.jetbrains.com/idea). Pero es relativamente fácil conseguir el ID con un poco de JavaScript.
Busca en el Mercado de JetBrains un complemento que desees instalar y navega a su página de resumen (por ejemplo, https://plugins.jetbrains.com/plugin/12195-concise-assertj-optimizing-nitpicker-cajon-).
Escribe
javascript:
en la barra de direcciones de tu navegador (no presiones enter aún).Nota: por razones de seguridad no puedes pegar
javascript:
en la barra de direcciones (el navegador no te lo permitirá), debes escribirlo.Pega lo siguiente después de
javascript:
y luego presiona enter/return:fetch(window.location.pathname.replace(/\/plugin\/(\d+).*/, "/api/plugins/$1")) .then((response) => response.json()) .then((data) => alert(`Plugin ID: "${data.xmlId}"`));
Esto usa una expresión regular para modificar la ruta de la URL y la API fetch para hacer una solicitud a la API REST de complementos de JetBrains. Luego muestra una alerta que muestra el ID del complemento (
xmlId
de la respuesta JSON).
Ejemplos de Playbooks
Playbook mínimo:
- hosts: servers
roles:
- role: gantsign.intellij
Playbook con configuración específica del usuario (JDK predeterminado, Maven, complementos deshabilitados y estilo de código):
- hosts: servers
roles:
- role: gantsign.intellij
intellij_default_maven_home: '/opt/maven/apache-maven-3.9.4'
users:
- username: vagrant
intellij_jdks:
- name: '17'
home: '/usr/lib/jvm/java-17-openjdk-amd64'
- name: '11'
home: '/usr/lib/jvm/java-11-openjdk-amd64'
- name: '1.8'
home: '/usr/lib/jvm/java-8-openjdk-amd64'
intellij_default_jdk: '17'
intellij_disabled_plugins:
- org.jetbrains.plugins.gradle
- CVS
- com.intellij.uiDesigner
- org.jetbrains.android
- TestNG-J
- hg4idea
- Subversion
- AntSupport
- DevKit
intellij_codestyles:
- name: Example1
src: Example-style1.xml
- name: Example2
src: /example/Example-style2.xml
remote_src: true
- name: GoogleStyle
url: 'https://raw.githubusercontent.com/google/styleguide/gh-pages/intellij-java-google-style.xml'
intellij_default_codestyle: GoogleStyle
intellij_inspection_profiles:
- name: Example1
src: Example1.xml
- name: Example2
src: /example/Example2.xml
remote_src: true
- name: GantSign
url: 'https://raw.githubusercontent.com/gantsign/inspection-profile-intellij/master/GantSign.xml'
intellij_default_inspection_profile: GantSign
intellij_plugins:
- CheckStyle-IDEA
Hechos del Rol
Este rol exporta los siguientes hechos de Ansible para el uso de otros roles:
ansible_local.intellij.general.home
- por ejemplo,
/opt/idea/idea-community-2024.2
- por ejemplo,
ansible_local.intellij.general.desktop_filename
- por ejemplo,
jetbrains-idea-ce.desktop
- por ejemplo,
ansible_local.intellij.general.desktop_file
- por ejemplo,
/usr/share/applications/jetbrains-idea-ce.desktop
- por ejemplo,
ansible_local.intellij.general.user_config_dir
- por ejemplo,
.config/JetBrains/IntelliJIdea2023.2
- por ejemplo,
ansible_local.intellij.general.user_plugins_dir
- por ejemplo,
.local/share/JetBrains/IntelliJIdea2023.2
- por ejemplo,
Más Roles de GantSign
Puedes encontrar más roles de GantSign en Ansible Galaxy.
Desarrollo y Pruebas
Este proyecto utiliza las siguientes herramientas:
- Molecule para orquestar escenarios de prueba
- Testinfra para probar los cambios en el sistema remoto
- pytest el marco de pruebas
- Tox gestiona entornos virtuales de Python para la verificación y pruebas
- pip-tools para gestionar dependencias
Se proporciona un Contenedor de Desarrollo de Visual Studio Code para desarrollar y probar este rol.
Licencia
MIT
Información del Autor
John Freeman
GantSign Ltd. Número de compañía 06109112 (registrada en Inglaterra)
Role for installing the IntelliJ IDEA IDE.
ansible-galaxy install gantsign.intellij