One place for hosting & domains

      January 2020

      Cómo configurar la plataforma de IDE en la nube de Eclipse Theia en Ubuntu 18.04


      El autor seleccionó la Free and Open Source Fund para recibir una donación como parte del programa Write for DOnations.

      Introducción

      Con el traslado de las herramientas de desarrollo a la nube, la adopción de plataformas de IDE (entorno de desarrollo integrado) en la nube se encuentra en expansión. Los IDE en la nube, a los cuales se puede acceder desde cualquier tipo de dispositivo moderno a través de los navegadores web, ofrecen numerosas ventajas para casos de colaboración en tiempo real. Trabajar en un IDE en la nube permite disponer de un entorno unificado de desarrollo y pruebas para usted y su equipo, a la vez que minimiza las incompatibilidades en la plataforma. Los IDE en la nube, a los que se puede acceder a través de los navegadores web, se encuentran disponibles en cualquier tipo de dispositivo moderno.

      Eclipse Theia es un IDE en la nube extensible que se ejecuta en un servidor remoto y al que es posible acceder desde un navegador web. Desde el punto de vista visual, está diseñado para que luzca y se comporte de manera similar a Microsoft Visual Studio Code, lo cual significa que es compatible con muchos lenguajes de programación, tiene un diseño flexible y cuenta con una terminal integrada. Lo que diferencia a Eclipse Theia de otras plataformas de software de IDE en la nube es su extensibilidad; se puede modificar usando extensiones personalizadas, que le permiten crear un IDE en la nube adaptado a sus necesidades.

      A través de este tutorial, implementará Eclipse Theia en su servidor de Ubuntu 18.04 usando Docker Compose, una herramienta de orquestación de contenedores. Lo expondrá en su dominio usando nginx-proxy, un sistema automatizado para Docker que simplifica el proceso de configuración de Nginx a fin de que funcione como proxy inverso para un contenedor. También lo protegerá usando un certificado TLS de Let´s Encrypt gratuito, que proporcionará usando su complemento especializado. Al finalizar, dejará funcionando Eclipse Theia en su servidor de Ubuntu 18.04 disponible a través de HTTPS y hará que solicite al usuario iniciar sesión.

      Requisitos previos

      Paso 1: Implementar nginx-proxy con Let´s Encrypt

      A lo largo de esta sección, implementará nginx-proxy y su complemento de Let´s Encrypt utilizando Docker Compose. Esto permitirá el suministro y la renovación automática de certificados TLS, para que cuando implemente Eclipse Theia sea posible acceder a este en su dominio a traves de HTTPS.

      A los efectos de este tutorial, almacenará todos los archivos en ~/eclipse-theia. Cree el directorio ejecutando el siguiente comando:

      Diríjase a este:

      Almacenará la configuración de Docker Compose para nginx-proxy en un archivo llamado nginx-proxy-compose.yaml. Créelo usando su editor de texto:

      • nano nginx-proxy-compose.yaml

      Añada las siguientes líneas:

      ~/eclipse-theia/nginx-proxy-compose.yaml

      version: '2'
      
      services:
        nginx-proxy:
          restart: always
          image: jwilder/nginx-proxy
          ports:
            - "80:80"
            - "443:443"
          volumes:
            - "/etc/nginx/htpasswd:/etc/nginx/htpasswd"
            - "/etc/nginx/vhost.d"
            - "/usr/share/nginx/html"
            - "/var/run/docker.sock:/tmp/docker.sock:ro"
            - "/etc/nginx/certs"
      
        letsencrypt-nginx-proxy-companion:
          restart: always
          image: jrcs/letsencrypt-nginx-proxy-companion
          volumes:
            - "/var/run/docker.sock:/var/run/docker.sock:ro"
          volumes_from:
            - "nginx-proxy"
      

      Aquí, definirá dos servicios que Docker Compose ejecutará: nginx-proxy y su complemento de Let´s Encrypt. Para el proxy, especificará jwilder/nginx-proxy como la imagen, asignará puertos HTTP y HTTPS, y definirá los volúmenes a los que se podrá acceder durante el tiempo de ejecución.

      Los volúmenes son directorios que se encuentran en su servidor, a los que el servicio definido tendrá acceso total y que más adelante usará para configurar la autenticación de usuarios. Para lograr eso, utilizará el primer volumen de la lista, que asigna el directorio local /etc/nginx/htpasswd al mismo en el contenedor. En esa carpeta, nginx-proxy prevé que encontrará un archivo que tendrá un nombre exactamente igual al del dominio de destino y contendrá las credenciales de inicio de sesión para la autenticación de usuarios en el formato htpasswd(username:hashed_password).

      Para el complemento, se da un nombre a la imagen de Docker y se permite el acceso al socket de Docker definiendo un volumen. Luego, se especifica que en el complemento se debe heredar el acceso a los volúmenes definidos para nginx-proxy. Para ambos servicios se fijó restart en always, lo cual ordena a Docker reiniciar los contenedores en caso de que se produzca alguna falla o se reinicie el sistema.

      Guarde y cierre el archivo.

      Implemente la configuración ejecutando lo siguiente:

      • docker-compose -f nginx-proxy-compose.yaml up -d

      Aquí pasará el nombre del archivo nginx-proxy-compose.yaml al parámetro -f del comando docker-compose, que especifica el archivo que se ejecutará. Luego, pasará el verbo up que le indica ejecutar los contenedores. El indicador -d habilita el modo separado, lo cual significa que Docker Compose ejecutará los contenedores en segundo plano.

      El resultado final tendrá el siguiente aspecto:

      Output

      Creating network "eclipse-theia_default" with the default driver Pulling nginx-proxy (jwilder/nginx-proxy:)... latest: Pulling from jwilder/nginx-proxy 8d691f585fa8: Pull complete 5b07f4e08ad0: Pull complete ... Digest: sha256:dfc0666b9747a6fc851f5fb9b03e65e957b34c95d9635b4b5d1d6b01104bde28 Status: Downloaded newer image for jwilder/nginx-proxy:latest Pulling letsencrypt-nginx-proxy-companion (jrcs/letsencrypt-nginx-proxy-companion:)... latest: Pulling from jrcs/letsencrypt-nginx-proxy-companion 89d9c30c1d48: Pull complete 668840c175f8: Pull complete ... Digest: sha256:a8d369d84079a923fdec8ce2f85827917a15022b0dae9be73e6a0db03be95b5a Status: Downloaded newer image for jrcs/letsencrypt-nginx-proxy-companion:latest Creating eclipse-theia_nginx-proxy_1 ... done Creating eclipse-theia_letsencrypt-nginx-proxy-companion_1 ... done

      Con esto, habrá implementado nginx-proxy y su complemento de Let´s Encrypt usando Docker Compose. Ahora, continuará con la configuración de Eclipse Theia en su dominio y lo protegerá.

      Paso 2: Implementar Eclipse Theia con Docker

      A lo largo de esta sección, creará un archivo que contenga todas las combinaciones de inicio de sesión permitidas que un usuario deberá ingresar. Luego, implementará Eclipse Theia en su servidor usando Docker Compose y lo expondrá en su dominio protegido usando nginx-proxy.

      Como se explicó en el paso anterior, nginx-proxy prevé que las combinaciones de inicio de sesión se encuentren en un archivo con el nombre del dominio expuesto, en el formato htpasswd y almacenado en el directorio /etc/nginx/htpasswd del contenedor. El directorio local que se asigna al virtual no necesita ser el mismo, como se indicó en la configuración de nginx-proxy.

      Para crear combinaciones de inicio de sesión, primero deberá instalar htpasswd ejecutando el siguiente comando:

      • sudo apt install apache2-utils

      El paquete apache2-utils contiene la utilidad htpasswd.

      Cree el directorio /etc/nginx/htpasswd:

      • sudo mkdir -p /etc/nginx/htpasswd

      Cree un archivo que almacenará los inicios de sesión de su dominio:

      • sudo touch /etc/nginx/htpasswd/theia.your_domain

      Recuerde sustituir theia.your_domain por su dominio de Eclipse Theia.

      Para añadir una combinación de nombre de usuario y contraseña, ejecute el siguiente comando:

      • sudo htpasswd /etc/nginx/htpasswd/theia.your_domain username

      Sustituya username por el nombre de usuario que prefiera añadir. Se le solicitará una contraseña dos veces. Una vez que la proporcione, htpasswd agregará el par de nombre de usuario y contraseña con hash al final del archivo. Puede repetir este comando para todos los inicios de sesión que desee añadir.

      Ahora, creará una configuración para implementar Eclipse Theia. Lo almacenará en un archivo llamado eclipse-theia-compose.yaml. Créelo usando su editor de texto:

      • nano eclipse-theia-compose.yaml

      Añada las siguientes líneas:

      ~/eclipse-theia/eclipse-theia-compose.yaml

      version: '2.2'
      
      services:
        eclipse-theia:
          restart: always
          image: theiaide/theia:next
          init: true
          environment:
            - VIRTUAL_HOST=theia.your_domain
            - LETSENCRYPT_HOST=theia.your_domain
      

      En esta configuración, se define un único servicio llamado eclipse-theia con restart fijado en always y theiaide/theia:next como imagen del contenedor. También se fija init en true para indicar que en Docker se utilice init como el principal administrador de procesos al ejecutar Eclipse Theia dentro del contenedor.

      Luego, se especifican dos variables de entorno en la sección environment: VIRTUAL_HOST y LETSENCRYPT_HOST. El primero se pasa a nginx-proxy e indica el dominio en el cual se debe exponer el contenedor, mientras que este último se utiliza a través de su complemento de Let´s Encrypt y especifica el dominio para el cual se solicitarán los certificados TLS. A menos que especifique un comodín como valor para VIRTUAL_HOST, deben ser los mismos.

      Recuerde sustituir theia.your_domain por el dominio que desee, y luego guarde y cierre el archivo.

      Ahora implemente Eclipse Theia ejecutando lo siguiente:

      • docker-compose -f eclipse-theia-compose.yaml up -d

      El resultado final tendrá este aspecto:

      Output

      ... Pulling eclipse-theia (theiaide/theia:next)... next: Pulling from theiaide/theia 63bc94deeb28: Pull complete 100db3e2539d: Pull complete ... Digest: sha256:c36dff04e250f1ac52d13f6d6e15ab3e9b8cad9ad68aba0208312e0788ecb109 Status: Downloaded newer image for theiaide/theia:next Creating eclipse-theia_eclipse-theia_1 ... done

      Luego, en su navegador, diríjase al dominio que utiliza para Eclipse Theia. Su navegador le mostrará un mensaje que le solicitará iniciar sesión. Después de proporcionar las credenciales correctas, ingresará en Eclipse Theia e inmediatamente verá la GUI de su editor. En la barra de direcciones, visualizará un candado que indica que la conexión es segura. Si no lo ve inmediatamente, espere unos minutos para el aprovisionamiento de los certificados TLS y luego vuelva a cargar la página.

      GUI de Eclipse Theia

      Ahora que puede acceder de forma segura a la IDE en la nube, comenzará a usar el editor en el siguiente paso.

      Paso 3: Usar la interfaz de Eclipse Theia

      En esta sección, conocerá algunas de las características de la interfaz de Eclipse Theia.

      Del lado izquierdo del IDE, hay una fila vertical con cuatro botones que abren las funciones utilizadas con mayor frecuencia en el panel lateral.

      GUI de Eclipse Theia: panel lateral

      Esta barra es personalizable, para que pueda cambiar el orden de estas vistas o eliminarlas de ella. De forma predeterminada, la primera vista abre el panel de Explorer que permite explorar la estructura del proyecto con forma de árbol. Aquí, puede administrar sus carpetas y archivos. Esto incluye crear, eliminar, mover y modificar nombres según sea necesario.

      Después de crear un nuevo archivo a través del menú File, verá un archivo vacío abierto en una nueva pestaña. Una vez que lo guarde, podrá ver el nombre del archivo en el panel lateral de Explorer. Para crear carpetas, haga clic en la barra lateral de Explorer y luego en** New Folder**. Puede expandir una carpeta haciendo clic en su nombre, y también arrastrando archivos y carpetas y soltándolos en partes superiores de la jerarquía para trasladarlas a una nueva ubicación.

      GUI de Eclipse Theia: New Folder

      Las siguientes dos opciones proporcionan acceso a la funcionalidad de búsqueda y reemplazo. La que sigue presenta una vista de los sistemas de control de fuentes que puede estar utilizando, como Git.

      La vista final es la opción de depuración, que ofrece todas las acciones comunes para realizar depuraciones en el panel. Puede guardar las configuraciones de depuración en el archivo launch.json.

      Vista del depurador con launch.json abierto

      La parte central de la GUI es su editor, que usted puede separar por pestañas para editar su código. Puede cambiar la vista de edición a un sistema de cuadrícula o a archivos en paralelo. Al igual que en todos los IDE modernos, en Eclipse Theia se admite el resalte de sintaxis para su código.

      Vista de sistema de cuadrícula

      Puede obtener acceso a un terminal presionando CTRL+SHIFT+ ` o seleccionando Terminal en el menú superior y luego New Terminal. La terminal se abrirá en un panel inferior y su directorio de trabajo fijará en el espacio de trabajo del proyecto, que contiene los archivos y las carpetas que se muestran en el panel lateral de Explorer.

      Terminal abierto

      Pudo ver una descripción general de alto nivel de la interfaz de Eclipse Theia y revisó algunas de las características más utilizadas.

      Conclusión

      Ahora, tendrá instalado Eclipse Theia, un IDE en la nube versátil, en su servidor de Ubuntu 18.04 con Docker Compose y nginx-proxy. Lo protegió con un certificado TLS gratuito de Let´s Encrypt y configuró la instancia para que exija las credenciales de inicio de sesión del usuario. Con él puede trabajar en su código fuente y sus documentos de forma individual o colaborar con su equipo. También puede intentar crear su propia versión de Eclipse Theia si necesita funciones adicionales. Para obtener más información sobre cómo hacerlo, consulte la documentación de Theia.



      Source link

      How to Change Your Email Address


      Updated by Linode

      Written by Linode

      Changing your account’s email address is easy and can be done two different ways.

      From the Cloud Manager

      1. Log in to the Cloud Manager.

      2. Click on your username and choose My Profile from the drop down menu.

        Click My Profile from Username Drop Down Menu

      3. On the My Profile page, in the Email field, enter the email you would like to associate with your account.

      4. Click the Save button.

        Click to Save a New Email

      5. Cloud Manager will tell you that the email address has been updated. You will also receive an email at this new address from Linode Support confirming this update.

      6. If you enter an invalid email address, the following error message is displayed.

        Error Message for Invalid Email

      Using the API

      You can also use the Linode API to view and update your account’s email address.

      1. Use the View Account endpoint to view your account information including your email address:

        curl -H "Authorization: Bearer $TOKEN" 
        https://api.linode.com/v4/account
        
      2. An example of the output:

          
        {
          "active_promotions": [
            {
              "credit_monthly_cap": "10.00",
              "credit_remaining": "50.00",
              "description": "Receive up to $10 off your services every month for 6 months! Unused credits will expire once this promotion period ends.",
              "expire_dt": "2018-01-31T23:59:59",
              "image_url": "https://linode.com/10_a_month_promotion.svg",
              "summary": "$10 off your Linode a month!",
              "this_month_credit_remaining": "10.00"
            }
          ],
          "active_since": "2018-01-01T00:01:01",
          "address_1": "123 Main Street",
          "address_2": "Suite A",
          "balance": 200,
          "balance_uninvoiced": 145,
          "capabilities": [],
          "city": "Philadelphia",
          "credit_card": {
            "last_four": 1111,
            "expiry": "11/2022"
          },
          "company": "Linode LLC",
          "country": "US",
          "email": "[email protected]",
          "first_name": "John",
          "last_name": "Smith",
          "phone": "215-555-1212",
          "state": "Pennsylvania",
          "tax_id": "ATU99999999",
          "euuid": "E1AF5EEC-526F-487D-B317EBEB34C87D71",
          "zip": 19102
        }
        
        
      3. To update your email address, use the Update Account endpoint:

        curl -H "Content-Type: application/json" 
        -H "Authorization: Bearer $TOKEN" 
        -X PUT -d '{
        "email": "[email protected]"
        }
        }' 
        https://api.linode.com/v4/account
        
      4. The output will be mostly the same, but this time, the email field will be updated with your new email address:

          
        {
          "active_promotions": [
            {
              "credit_monthly_cap": "10.00",
              "credit_remaining": "50.00",
              "description": "Receive up to $10 off your services every month for 6 months! Unused credits will expire once this promotion period ends.",
              "expire_dt": "2018-01-31T23:59:59",
              "image_url": "https://linode.com/10_a_month_promotion.svg",
              "summary": "$10 off your Linode a month!",
              "this_month_credit_remaining": "10.00"
            }
          ],
          "active_since": "2018-01-01T00:01:01",
          "address_1": "123 Main Street",
          "address_2": "Suite A",
          "balance": 200,
          "balance_uninvoiced": 145,
          "capabilities": [],
          "city": "Philadelphia",
          "credit_card": {
            "last_four": 1111,
            "expiry": "11/2022"
          },
          "company": "Linode LLC",
          "country": "US",
          "email": "[email protected]",
          "first_name": "John",
          "last_name": "Smith",
          "phone": "215-555-1212",
          "state": "Pennsylvania",
          "tax_id": "ATU99999999",
          "euuid": "E1AF5EEC-526F-487D-B317EBEB34C87D71",
          "zip": 19102
        }
        
        

      This guide is published under a CC BY-ND 4.0 license.



      Source link

      Cómo implementar y administrar su DNS usando OctoDNS en Debian 10


      El autor seleccionó la Electronic Frontier Foundation para recibir una donación como parte del programa Write for DOnations.

      Introducción

      OctoDNS es una herramienta de infraestructura como código que le permite implementar y administrar sus zonas de DNS usando principios de desarrollo de software estándar, control de versiones, pruebas e implementaciones automatizadas. OctoDNS es una creación de GitHub y está escrito en Python.

      El uso de OctoDNS elimina muchas de las dificultades de la administración de DNS manual, ya que los archivos de zona se almacenan en un formato estructurado (YAML). Esto le permite implementar zonas en varios proveedores de DNS de manera simultánea, identificar errores de sintaxis y aplicar su configuración de DNS de manera automática, lo que reduce el riesgo que representan los errores humanos. Otro uso común de OctoDNS tiene que ver con la sincronización de su configuración de DNS entre diferentes proveedores, como en el caso de un sistema de pruebas y producción o entre entornos activos y de conmutación por error.

      OctoDNS es similar a DNSControl, una herramienta equivalente creada por Stack Exchange y escrita en Go. A diferencia de OctoDNS, DNSControl utiliza un lenguaje de configuración basado en JavaScript para definir las zonas de DNS, lo cual le permite usar funciones de programación avanzadas como los bucles para especificar varios registros similares dentro de la misma zona. En el artículo Cómo implementar y administrar su DNS utilizando DNSControl en Debian 10 se abarcan la instalación y configuración básicas de DNSControl.

      A través de este tutorial, instalará y configurará OctoDNS, creará una configuración de DNS básica y comenzará a implementar registros de DNS en un proveedor activo. Como parte de este tutorial, usaremos DigitalOcean como proveedor DNS de ejemplo. Si quiere utilizar un proveedor diferente, la configuración es muy similar. Al finalizar, podrá administrar y probar su configuración de DNS en un entorno seguro y sin conexión, y luego implementarla de manera automática en la producción.

      Requisitos previos

      Para completar esta guía, necesitará lo siguiente:

      • Un servidor de Debian 10 preparado conforme la Configuración inicial para servidores con Debian 10, incluidos un usuario sudo no root y un firewall habilitado para bloquear los puertos no esenciales. your-server-ipv4-adress y your-server-ipv6-address hacen referencia a las direcciones IP del servidor en el que aloja su sitio web o dominio.
      • Un nombre de dominio registrado por completo con DNS alojado por un proveedor compatible. En este tutorial, se utilizará your_domain en todo momento y DigitalOcean será el proveedor de servicio.
      • Una clave de API de DigitalOcean (Token de acceso personal) con permisos de lectura y escritura. Para crear uno, consulte Cómo crear un Token de acceso personal.

      Una vez que tenga todo esto listo, inicie sesión en su servidor como usuario no root.

      Paso 1: Instalar OctoDNS

      OctoDNS se distribuye como paquete pip en Python y se ejecuta en un entorno virtual de Python (virtualenv), por lo que iniciará este paso instalando los paquetes necesarios para esto. Un virtualenv es un entorno aislado de Python que puede contar con bibliotecas y configuración propias, independientes de la instalación principal de Python en todo el sistema. Python y ​​​virtualenv están disponibles dentro de los repositorios de software predeterminados de Debian, lo que permite la instalación con herramientas convencionales de administración de paquetes.

      Comience actualizando el índice de paquetes locales de modo que se refleje cualquier cambio anterior:

      A continuación, instale los paquetes python y virtualenv:

      • sudo apt install python virtualenv

      Después de confirmar la instalación, apt descargará e instalará Python, virtualenv y todas sus dependencias necesarias.

      A continuación, creará los directorios necesarios para OctoDNS, en los que se almacenará su configuración de DNS y del programa. Comience creando los directorios ~/octodns y ~/octodns/config:

      • mkdir ~/octodns ~/octodns/config

      Ahora, posiciónese en ~/octodns:

      A continuación, es necesario crear el entorno virtual de Python; un entorno aislado con bibliotecas y configuración propias para ejecutar OctoDNS:

      Active su entorno con el siguiente comando:

      Con esto, se mostrará algo similar a lo siguiente:

      Output

      Running virtualenv with interpreter /usr/bin/python2 New python executable in /home/user/octodns/env/bin/python2 Also creating executable in /home/user/octodns/env/bin/python Installing setuptools, pkg_resources, pip, wheel...done.

      Ahora, su intérprete de comandos de shell de Bash también llevará como prefijo el nombre de su entorno virtual. Esto indica que actualmente realiza operaciones dentro de virtualenv:

      (env) user@digitalocean:~/octodns$
      

      Si quiere cerrar virtualenv, puede usar el comando deactivate en cualquier momento. Sin embargo, debe permanecer en su virtualenv para continuar con este tutorial.

      Ahora que instaló y configuró Python y virtualenv, puede instalar OctoDNS. OctoDNS se distribuye como un paquete pip de Python, que es la herramienta estándar de administración de paquetes y bibliotecas de Python.

      Puede instalar el paquete de pip de OctoDNS utilizando el siguiente comando dentro de su virtualenv:

      Una vez completado esto, puede verificar la versión instalada para asegurar que todo funcione:

      El resultado debe tener un aspecto similar al siguiente:

      Output

      octoDNS 0.9.9

      Si ve un error octodns-sync: command not found, compruebe que aún se encuentre dentro de su virtualenv.

      Ahora que instaló OctoDNS, podrá crear los archivos de configuración necesarios para conectar OctoDNS con su proveedor DNS para permitir que se realicen cambios en sus registros de DNS.

      Paso 2: Configurar OctoDNS

      En este paso, creará los archivos de configuración necesarios para OctoDNS y los conectará con su proveedor DNS para que pueda comenzar a realizar cambios en tiempo real en sus registros DNS.

      Nota: En este tutorial, nos enfocaremos en la configuración inicial de OctoDNS. Sin embargo, para el uso en producción se le recomienda almacenar su configuración de OctoDNS en un sistema de control de versiones (VCS) como Git. Entre las ventajas de esto se incluyen un control de versiones completo, la integración con CI/CD para pruebas y las implementaciones de versiones anteriores sin problemas.

      Primero, debe configurar el archivo config.yaml, que define las zonas de DNS para la administración a través de OctoDNS, y permite que este se autentique en su proveedor DNS y realice cambios.

      El formato de config.yaml varía ligeramente dependiendo del proveedor DNS que está utilizando. Consulte la lista de proveedores compatibles en la documentación oficial de OctoDNS para hallar la configuración de su propio proveedor. Si se observa este hiperenlace, los detalles de configuración se presentan como comentarios de código en el código real de Python para su proveedor, que está vinculado en la columna de “Provider” de la tabla. Una vez que encuentre el código de Python para su proveedor, como cloudflare.py o route53.py, podrá hallar el comentario de código pertinente directamente en la class ProviderNameProvider. Por ejemplo:

      Excerpt of octodns/provider/route53.py

      class Route53Provider(BaseProvider):
        '''
        AWS Route53 Provider
        route53:
            class: octodns.provider.route53.Route53Provider
            # The AWS access key id
            access_key_id:
            # The AWS secret access key
            secret_access_key:
            # The AWS session token (optional)
            # Only needed if using temporary security credentials
            session_token:
      

      Posiciónese en el directorio ~/octodns/config:

      Luego, cree y abra config.yaml para la edición:

      Añada la configuración de muestra config.yaml para su proveedor DNS al archivo. Si utiliza DigitalOcean como su proveedor DNS, puede recurrir a lo siguiente:

      ~/octodns/config/config.yaml

      ---
      providers:
        config:
          class: octodns.provider.yaml.YamlProvider
          directory: ./config
          default_ttl: 300
          enforce_order: True
        digitalocean:
          class: octodns.provider.digitalocean.DigitalOceanProvider
          token: your-digitalocean-oauth-token
      
      zones:
        your-domain.:
          sources:
            - config
          targets:
            - digitalocean
      

      A través de este archivo se indican a OctoDNS los proveedores DNS con los que desea establecer conexión y las zonas de DNS que el software debe administrar para esos proveedores.

      Deberá proporcionar alguna forma de autenticación para proveedor DNS. Normalmente, se trata de una clave de API o un token de OAuth.

      Si no desea almacenar su token de acceso en texto simple en el archivo de configuración, como alternativa puede pasarlo como variable de entorno cuando se ejecute el programa. Para hacer esto, debe usar la siguiente línea token: en config.yaml:

      ~/octodns/config/config.yaml

      token: env/DIGITALOCEAN_OAUTH_TOKEN
      

      A continuación, antes de ejecutar OctoDNS, fije la variable de entorno pertinente en su token de acceso. OctoDNS la leerá de allí cuando se ejecute:

      • export DIGITALOCEAN_OAUTH_TOKEN=your-digitalocean-oauth-token

      Advertencia: Este token brindará acceso a la cuenta de su proveedor DNS, por lo que debe protegerlo como si se tratara de una contraseña. También compruebe que, si utiliza un sistema de control de versiones, el archivo que contenga el token esté excluido (por ejemplo, con .gitignore), o cifrado de forma segura de alguna manera.

      Si utiliza DigitalOcean como su proveedor DNS, puede usar el token de OAuth requerido en la configuración de su cuenta de DigitalOcean que generó como parte de los requisitos previos.

      Si tiene varios proveedores DNS diferentes, por ejemplo, para varios nombres de dominio o zonas de DNS delegadas, puede definirlos todos en el mismo archivo config.yaml.

      Con esto, estableció el archivo de configuración inicial de OctoDNS para permitir que el programa se autentique en su proveedor DNS y realice cambios. A continuación, creará la configuración para sus zonas de DNS.

      Paso 3: Crear un archivo de configuración de DNS

      Durante este paso, creará un archivo de configuración de DNS inicial, que contendrá los registros de DNS para su nombre de dominio o zona de DNS delegada.

      Cada zona de DNS que quiere administrar utilizando OctoDNS tiene su propio archivo; por ejemplo your-domain.yaml. En este archivo, los registros de DNS de la zona se definen usando YAML.

      Para comenzar, acceda al directorio ~/octodns/config:

      Luego, cree y abra your-domain.yaml para la edición:

      Añada la siguiente configuración de ejemplo al archivo:

      ~/octodns/config/your-domain.yaml

      ---
      '':
        - type: A
          value: your-server-ipv4-address
      
      www:
        - type: A
          value: your-server-ipv4-address
      

      En este archivo de muestra se define una zona de DNS para your-domain con dos registros A, con orientación hacia la dirección IPv4 en la que aloja su dominio o sitio web. Un registro A es para el dominio root (por ejemplo, your-domain) y el otro es para el subdominio www (por ejemplo, www.your-domain).

      Una vez que termine, guarde y cierre el archivo.

      De esta manera, preparó un archivo de configuración básico de zona de DNS para OctoDNS, con dos registros A básicos orientados a la dirección IPv4 de su dominio o sitio web. A continuación, ampliará el archivo con algunos registros de DNS útiles.

      Paso 4: Completar su archivo de configuración DNS

      A continuación, podrá completar el archivo de configuración de DNS con un conjunto práctico de registros de DNS para su sitio web o servicio usando el lenguaje de configuración estructurado YAML.

      A diferencia de los archivos de zona BIND tradicionales, en los cuales los registros de DNS se escriben en un formato básico línea por línea, los registros de DNS dentro de OctoDNS se definen como claves y subclaves YAML con varios valores asociados, como se muestra brevemente en el paso 3.

      La clave de nivel superior suele ser el 'name', que es básicamente el identificador de registros. www, subdomain1 y mail son ejemplos de 'name' de DNS. En OctoDNS, hay dos nombres de uso especial: ", para el registro root (por lo general citado como @) y '*', para los registros de comodín. Un valor obligatorio de cada clave (registro de DNS) es type. Esto especifica el tipo de registro DNS que define dentro de esa clave de nivel superior YAML. Existe un type para cada uno de los tipos de registros de DNS estándares, entre los que se incluyen A, AAAA, MX, TXT, NS y CNAME. Se encuentra disponible una lista completa de los tipos de registro en la sección de registros de la documentación de OctoDNS.

      Los valores para sus registros de DNS se definen directamente como valores en las claves de nivel superior (si solo tiene un valor) o como una lista (si tiene varios valores, como varias direcciones IP o direcciones MX).

      Por ejemplo, para definir un valor podría usar la siguiente configuración:

      ~/octodns/config/your-domain.yaml

      'www':
        type: A
        value: 203.0.113.1
      

      Asimismo, para definir varios valores para un registro único:

      ~/octodns/config/your-domain.yaml

      'www':
        type: A
        values:
        - 203.0.113.1
        - 203.0.113.2
      

      La sintaxis para configurar registros de DNS varía ligeramente según cada tipo de registro. Los siguientes son algunos ejemplos para los tipos de registro más comunes:

      Registros A:

      Propósito: apuntar a una dirección IPv4.

      Sintaxis:

      'name':
        type: A
        value: ipv4-address
      

      Ejemplo:

      'www':
        type: A
        value: your-server-ipv4-address
      

      Registros AAA:

      Propósito: apuntar a una dirección IPv6.

      Sintaxis:

      'name':
        type: AAAA
        value: ipv6-address
      

      Ejemplo:

      'www':
        type: AAAA
        value: your-server-ipv6-address
      

      Registros CNAME:

      Propósito: convertir su dominio o subdominio en un alias de otro.

      Sintaxis:

      'name':
        type: CNAME
        value: fully-qualified-domain-name
      

      Ejemplo:

      'www':
        type: CNAME
        value: www.example.org
      

      Registros MX:

      Propósito: dirigir el correo electrónico a direcciones o servidores específicos.

      Sintaxis:

      'name':
        type: MX
        value:
          exchange: mail-server
          preference: priority-value
      

      Tenga en cuenta que un . final se debe incluir si hay puntos en el valor de MX.

      Ejemplo:

      '':
        type: MX
        value:
          exchange: mail.your-domain.
          preference: 10
      

      Registros TXT:

      Propósito: agregar texto simple arbitrario, a menudo utilizado para configuraciones sin su propio tipo de registro dedicado.

      Sintaxis:

      'name':
        type: TXT
        value: content
      

      Ejemplo:

      '':
        type: TXT
        value: This is a TXT record.
      

      Para comenzar a añadir registros de DNS para su dominio o zona de DNS delegada, edite su archivo de configuración de DNS:

      • cd ~/octodns/config
      • nano your-domain.yaml

      A continuación, podrá comenzar a completar su zona de DNS usando la sintaxis descrita en la lista anterior y en la sección de registros de la documentación oficial de OctoDNS.

      A modo de referencia, el bloque de código aquí contiene una configuración de ejemplo completa para una configuración inicial de un DNS:

      ~/octodns/config/your-domain.yaml

      ---
      '':
        - type: A
          value: your-server-ipv4-address
      
        - type: AAAA
          value: your-server-ipv6-address
      
        - type: MX
          value:
            exchange: mail.your-domain.
            preference: 10
      
        - type: TXT
          value: v=spf1 -all
      
      _dmarc:
        type: TXT
        value: v=DMARC1; p=reject; rua=mailto:abuse@your-domain; aspf=s; adkim=s;
      
      mail:
        - type: A
          value: your-server-ipv4-address
      
        - type: AAAA
          value: your-server-ipv6-address
      
      www:
        - type: A
          value: your-server-ipv4-address
      
        - type: AAAA
          value: your-server-ipv6-address
      

      Una vez que haya completado su configuración inicial de DNS, guarde y cierre el archivo.

      Durante este paso, creó el archivo de configuración de DNS inicial que contiene sus registros de DNS. A continuación, probará la configuración y la implementará.

      Paso 5: Probar e implementar su configuración de DNS

      En este paso, ejecutará una verificación de sintaxis local en su configuración de DNS y luego implementará los cambios en el servidor y proveedor DNS activos.

      Primero, acceda a su directorio octodns:

      Asegúrese de seguir operando dentro de su virtualenv de Python buscando el nombre de este delante de su mensaje de Bash:

      (env) user@digitalocean:~/octodns$
      

      A continuación, utilice el comando octodns-validate para verificar la sintaxis de sus archivos de configuración. Deberá especificar la ruta a su archivo de configuración:

      • octodns-validate --config=./config/config.yaml

      Si la sintaxis YAML de su archivo de configuración de DNS es correcta, OctoDNS no mostrará resultados. Si ve un error o una advertencia en el resultado, DNSControl proporcionará detalles sobre el tipo de error y el punto en el que se encuentra dentro de su archivo.

      A continuación, podrá realizar un simulacro de la implementación de la configuración de DNS, con lo cual se mostrarán los cambios que se realizarán sin aplicarlos:

      • octodns-sync --config=./config/config.yaml

      Con esto, debería aparecer un resultado similar al siguiente:

      Output

      ******************************************************************************** * your-domain. ******************************************************************************** * digitalocean (DigitalOceanProvider) * Create <ARecord A 300, mail.your-domain., ['your-server-ipv4-address']> (config) * Create <AaaaRecord AAAA 300, mail.your-domain., ['your-server-ipv6-address']> (config) * Create <TxtRecord TXT 300, your-domain., ['v=spf1 -all']> (config) * Create <AaaaRecord AAAA 300, your-domain., ['your-server-ipv6-address']> (config) * Create <ARecord A 300, your-domain., ['your-server-ipv4-address']> (config) * Create <ARecord A 300, www.your-domain., ['your-server-ipv4-address']> (config) * Create <MxRecord MX 300, your-domain., [''10 mail.your-domain.'']> (config) * Create <TxtRecord TXT 300, _dmarc.your-domain., ['v=DMARC1; p=reject; rua=mailto:abuse@your-domain; aspf=s; adkim=s;']> (config) * Create <AaaaRecord AAAA 300, www.your-domain., ['your-server-ipv6-address']> (config) * Summary: Creates=9, Updates=0, Deletes=0, Existing Records=2 ********************************************************************************

      Advertencia: A través del siguiente comando se harán cambios en tiempo real en sus registros DNS y posiblemente en otras configuraciones. Asegúrese de estar preparado para esto; incluya una copia de seguridad de su configuración de DNS existente y verifique que disponga de los medios necesarios para revertir los cambios si es necesario.

      Por último, puede aplicar los cambios en su proveedor DNS activo:

      • octodns-sync --config=./config/config.yaml --doit

      Nota: En algunos casos, OctoDNS no permitirá la introducción de cambios si realiza un número de ajustes considerable. Este es un mecanismo de protección automática para evitar configuraciones accidentales. Si se produce este rechazo, puede volver a ejecutar octodns-sync utilizando la opción --force. Sin embargo, asegúrese de estar listo para hacerlo.

      Verá un resultado como el del simulacro anterior de este paso, pero se agregará algo similar a lo siguiente:

      Output

      2019-07-07T23:17:27 INFO DigitalOceanProvider[digitalocean] apply: making changes 2019-07-07T23:17:30 INFO Manager sync: 9 total changes

      Ahora, si revisa las configuraciones de DNS para su dominio en el panel de control de DigitalOcean, verá los cambios.

      Captura de pantalla del panel de control de DigitalOcean; se muestran algunos de los cambios de DNS realizados en OctoDNS.

      También puede verificar la creación de registros ejecutando una solicitud de DNS para su dominio o zona delegada usando dig.

      Si no instaló dig, deberá instalar el paquete dnsutils:

      • sudo apt install dnsutils

      Una vez que instale dig, podrá utilizarlo con el propósito de realizar una búsqueda de DNS para su dominio. Verá que los registros se actualizaron de forma correspondiente:

      Verá un resultado que muestra la dirección IP y los registros de DNS pertinentes de su zona implementada usando OctoDNS. Los registros DNS pueden tardar tiempo en propagarse, por lo que es posible que necesite esperar y ejecutar este comando de nuevo.

      En este último paso, realizó una verificación de sintaxis local del archivo de configuración de DNS, luego lo implementó en su proveedor DNS activo y verificó mediante pruebas que los cambios se realizaran correctamente.

      Conclusión

      A lo largo de este artículo, configuró OctoDNS e implementó una configuración de DNS en un proveedor activo. Ahora podrá administrar y probar sus cambios de configuración de DNS en un entorno seguro y sin conexión antes de implementarlos en la producción.

      Si desea profundizar en este tema, Octo DNS está diseñado para integrarse en su proceso de CI/CD, lo que le permite realizar pruebas exhaustivas y tener más control sobre su implementación en la producción. También podría considerar la integración de OctoDNS en sus procesos de compilación e implementación de infraestructuras, lo que le permitirá implementar servidores y agregarlos al DNS de manera completamente automática.

      Si desea profundizar en el uso de OctoDNS, en los siguientes artículos de DigitalOcean se ofrecen algunos pasos interesantes que podrá seguir para contribuir a la integración de OctoDNS en sus flujos de trabajo de administración de cambios e implementación de infraestructura:



      Source link