fernandrone.intellij

Rol de Ansible: IntelliJ

Pruebas Ansible Galaxy Licencia

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 de manera condicional complementos particulares, consulta nuestro rol complementario: fernandrone.intellij-plugins.

Requisitos

  • Ansible >= 2.8

  • Distribución de Linux

    • Familia Debian

      • Ubuntu

        • Bionic (18.04)
        • Focal (20.04)
    • Familia RedHat

      • Rocky Linux

        • 8
    • macOS (Intel o M1)

    • Nota: otras versiones probablemente funcionen, pero no han sido probadas.

  • Java JDK

    • Necesitas instalar el src del JDK además del JDK.
    • Cuando uses Java > 9 también debes instalar los jmods.

    Por ejemplo, lo siguiente es necesario si usas OpenJDK 11 con CentOS:

    - name: Instalar OpenJDK 11
      become: true
      yum:
        name:
          - java-11-openjdk-devel
          - java-11-openjdk-jmods
          - java-11-openjdk-src
        state: present
    
  • Apache Maven

Variables de Rol

Las siguientes variables cambiarán el comportamiento de este rol (se muestran los valores por defecto a continuación):

# Número de versión de IntelliJ IDEA
intellij_version: '2021.2.3'

# Espejo 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 (community o ultimate)
intellij_edition: community

# Establecer en 'false' para omitir la instalación de IntelliJ IDEA en caso de que ya esté
# instalado (incluso si es una versión diferente a la solicitada)
intellij_force: true

# Directorio de instalación base para cualquier distribución de IntelliJ IDEA
intellij_install_dir: /opt/idea/idea-{{ intellij_edition }}-{{ intellij_version }}

# Ubicación de la instalación predeterminada de Apache Maven para proyectos de IntelliJ IDEA
# Por defecto, toma 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 para el servicio web del gestor 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_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 de 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 ~/.*Idea*/config/disabled_plugins.txt
      - # ID del complemento
    intellij_codestyles:
      - 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
    intellij_default_codestyle: # Nombre (debe coincidir con el valor en el archivo XML /code_scheme/@name)
    intellij_inspection_profiles:
      - name: # Nombre (debe coincidir con el valor en el archivo XML /profile/option[@name='myName']/@value)
        url: # URL para descargar el XML del perfil de inspección
    intellij_default_inspection_profile: # Nombre (debe coincidir con el valor en el archivo XML /profile/option[@name='myName']/@value)
    intellij_plugins:
      - # ID del complemento a instalar
    # Solo para Ultimate Edition: ubicación de la clave de licencia de IntelliJ en el master de Ansible.
    # Tu clave de licencia se puede encontrar en ~/.IntelliJIdea2017.1/config/idea.key
    intellij_license_key_path: # e.g. '/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 de IntelliJ IDEA Soportadas

Las siguientes versiones de IntelliJ IDEA son soportadas sin ninguna configuración adicional (para otras versiones, sigue las instrucciones de Configuración Avanzada):

  • 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 no 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 Community
# o ideaIU-{{ intellij_version }}.tar.gz para la Edición Ultimate
intellij_redis_sha256sum: d1cd3f9fd650c00ba85181da6d66b4b80b8e48ce5f4f15b5f4dc67453e96a179

IDs de Complementos de IntelliJ

Puedes obtener una lista de ID de Complementos, para los Complementos de IntelliJ que están disponibles para instalar, siguiendo el siguiente procedimiento:

  1. Descarga el XML de complementos disponibles

    Abre IntelliJ y haz clic en:

    Archivo > Configuración > Complementos > Navegar por repositorios...
    

    Esto guardará automáticamente el archivo XML de complementos disponibles en:

    ~/<directorio de usuario de intellij>/config/plugins/availables.xml.

  2. Instala XmlStarlet

    Instala XmlStarlet usando el gestor de paquetes estándar para tu distribución

    por ejemplo, ejecuta lo siguiente para Ubuntu:

    sudo apt install xmlstarlet
    
  3. Extrae Nombres de Complementos e IDs de Complementos

    Ejecuta lo siguiente en tu terminal:

    xmlstarlet sel -T -t -m '//idea-plugin' \
        -v 'str:align(name, str:padding(50, " "), "left")' -v '" "'  -v 'id' -n \
        $(find ~ | grep --color=never '/plugins/availables.xml$' | sort | tail -n 1)
    

    Esto producirá un diseño de texto plano de dos columnas con el Nombre del Complemento a la izquierda y el ID del Complemento a la derecha; la salida es adecuada para usar con grep.

Ejemplos de Playbooks

Playbook mínimo:

- hosts: servidores
  roles:
    - role: fernandrone.intellij

Playbook con configuración específica del usuario (JDK predeterminado, Maven, complementos desactivados y estilo de código):

- hosts: servidores
  roles:
    - role: fernandrone.intellij
      intellij_default_maven_home: '/opt/maven/apache-maven-3.3.9'
      users:
        - username: vagrant
          intellij_jdks:
            - name: '1.8'
              home: '/usr/lib/jvm/java-8-openjdk-amd64'
            - name: '1.7'
              home: '/usr/lib/jvm/java-7-openjdk-amd64'
            - name: '1.6'
              home: '/usr/lib/jvm/java-6-openjdk-amd64'
          intellij_default_jdk: '1.8'
          intellij_disabled_plugins:
            - org.jetbrains.plugins.gradle
            - CVS
            - com.intellij.uiDesigner
            - org.jetbrains.android
            - TestNG-J
            - hg4idea
            - Subversion
            - AntSupport
            - DevKit
          intellij_codestyles:
            - name: GoogleStyle
              url: 'https://raw.githubusercontent.com/google/styleguide/gh-pages/intellij-java-google-style.xml'
          intellij_default_codestyle: GoogleStyle
          intellij_inspection_profiles:
            - name: GantSign
              url: 'https://raw.githubusercontent.com/gantsign/inspection-profile-intellij/master/GantSign.xml'
          intellij_default_inspection_profile: GantSign
          intellij_plugins:
            - CheckStyle-IDEA

Hechos de Rol

Este rol exporta los siguientes hechos de Ansible para uso por otros roles:

  • ansible_local.intellij.general.home

    • por ejemplo, /opt/idea/idea-community-2016.2.2
  • ansible_local.intellij.general.desktop_filename

    • por ejemplo, jetbrains-idea-ce.desktop
  • ansible_local.intellij.general.desktop_file

    • por ejemplo, /usr/share/applications/jetbrains-idea-ce.desktop
  • ansible_local.intellij.general.user_config_dir

    • por ejemplo, .IdeaIC2016.2/config
  • ansible_local.intellij.general.user_plugins_dir

    • por ejemplo, .IdeaIC2016.2/config/plugins

Más Roles De GantSign

Puedes encontrar más roles de GantSign en Ansible Galaxy.

Desarrollo y Pruebas

Este proyecto utiliza Molecule para ayudar en el desarrollo y las pruebas; el rol se prueba unitariamente usando Testinfra y pytest.

Para desarrollar o probar necesitarás haber instalado lo siguiente:

Debido a que lo anterior puede ser complicado de instalar, este proyecto incluye Molecule Wrapper. Molecule Wrapper es un script de shell que instala Molecule y sus dependencias (aparte de Linux) y luego ejecuta Molecule con el comando que le pases.

Para probar este rol usando Molecule Wrapper, ejecuta el siguiente comando desde la raíz del proyecto:

./moleculew test

Nota: algunas de las dependencias necesitan permisos de sudo para su instalación.

Licencia

MIT

Información del Autor

John Freeman

GantSign Ltd. Número de Empresa 06109112 (registrada en Inglaterra)

Acerca del proyecto

Role for installing the IntelliJ IDEA IDE.

Instalar
ansible-galaxy install fernandrone.intellij
Licencia
mit
Descargas
97
Propietario
YAML Engineer. Likes Go.