From ab86a5f10c79d2b209a68b5226b813db7780dd03 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Wed, 10 Aug 2022 05:42:31 -0400 Subject: [PATCH 01/14] New translations 08-management-server-optimizations.md (Spanish) --- .../learning_ansible/08-management-server-optimizations.es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/books/learning_ansible/08-management-server-optimizations.es.md b/docs/books/learning_ansible/08-management-server-optimizations.es.md index f6ffdb37d8..f8a45f2c5a 100644 --- a/docs/books/learning_ansible/08-management-server-optimizations.es.md +++ b/docs/books/learning_ansible/08-management-server-optimizations.es.md @@ -13,7 +13,7 @@ En este capítulo revisaremos las opciones de configuración que pueden ser de i A continuación vamos a comentar algunas opciones de configuración interesantes de Ansible: -* `forks`: Establecido por defecto a 5, es el número de procesos que Ansible lanzará en paralelo para comunicarse con los hosts remotos. Cuanto más alto sea este número, más clientes podrá gestionar Ansible al mismo tiempo, y así acelerar los procesos. El valor que puede establecer depende de los límites de CPU/RAM de su servidor de administración. Tenga en cuenta que el valor por defecto, `5`, es muy pequeño, la documentación de Ansible indica que muchos usuarios lo establecen en 50, en 500 o incluso en valores más altos. +* `forks`: Establecido por defecto a 5, es el número de procesos que Ansible lanzará en paralelo para comunicarse con los hosts remotos. Cuanto más alto sea este número, más clientes podrá gestionar Ansible al mismo tiempo, y así acelerar los procesos. El valor que puede establecer depende de los límites de CPU/RAM de su servidor de administración. Observe que el valor por defecto, `5`, es muy pequeño, la documentación de Ansible indica que muchos usuarios lo establecen en 50, en 500 o incluso en valores más altos. * `gathering`: Esta variable cambia la política de recogida de datos. Por defecto, el valor se establece a `implicit`, lo que implica que los datos se recopilarán sistemáticamente. El cambio de esta variable a `smart` permite recopilar las colecciones de datos sólo cuando no se han recogido con anterioridad. Si se combina con una caché de datos (véase más adelante), esta opción puede aumentar considerablemente el rendimiento. From 30ffd6617a3aaa20bea37b1c8c8d3f0694985139 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Wed, 10 Aug 2022 05:42:33 -0400 Subject: [PATCH 02/14] New translations 07-working-with-filters.md (Spanish) --- docs/books/learning_ansible/07-working-with-filters.es.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/books/learning_ansible/07-working-with-filters.es.md b/docs/books/learning_ansible/07-working-with-filters.es.md index f66efe12a9..9eaf194b66 100644 --- a/docs/books/learning_ansible/07-working-with-filters.es.md +++ b/docs/books/learning_ansible/07-working-with-filters.es.md @@ -72,7 +72,7 @@ A lo largo de este capítulo, utilizaremos el siguiente playbook para probar los var: zero ``` -!!! El comando leerá el flujo de entrada hasta que encuentre la palabra clave definida después de la redirección de entrada. +!!! Note La siguiente es una lista no exhaustiva de los filtros que probablemente se encontrará o necesitará mientras trabaje con Ansible. Afortunadamente, hay muchos otros. ¡Incluso podría escribir el suyo propio! @@ -256,7 +256,7 @@ ok: [localhost] => { Los filtros `dict2items` y `itemstodict`, son filtros más complejos de implementar y se utilizan frecuentemente, especialmente en bucles. -Tenga en cuenta que es posible especificar el nombre de la clave y del valor a utilizar en la transformación. +Observe que es posible especificar el nombre de la clave y del valor a utilizar en la transformación. ``` - name: Display a dictionary From 12379317dcd60b04a0692d90906feb77d35c3f18 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Wed, 10 Aug 2022 05:42:34 -0400 Subject: [PATCH 03/14] New translations 06-large-scale-infrastructure.md (Spanish) --- .../06-large-scale-infrastructure.es.md | 332 ++++++++++++++++++ 1 file changed, 332 insertions(+) create mode 100644 docs/books/learning_ansible/06-large-scale-infrastructure.es.md diff --git a/docs/books/learning_ansible/06-large-scale-infrastructure.es.md b/docs/books/learning_ansible/06-large-scale-infrastructure.es.md new file mode 100644 index 0000000000..cb83d8e82d --- /dev/null +++ b/docs/books/learning_ansible/06-large-scale-infrastructure.es.md @@ -0,0 +1,332 @@ +--- +title: Ansible - Infraestructura a gran escala +--- + +# Ansible - Infraestructura a gran escala + +En este capítulo aprenderá a escalar su sistema de gestión de la configuración. + +**** + +**Objetivos**: En este capítulo aprenderá a: + +:heavy_check_mark: Organice su código para la gestión de una gran infraestructura; +:heavy_check_mark: Aplicar toda o una parte de la gestión de la configuración a un grupo de nodos; + +:checkered_flag: **ansible**, **gestion de la configuración**, **escalado** + +**Conocimiento**: :star: :star: :star: +**Complejidad**: :star: :star: :star: :star: + +**Tiempo de lectura**: 30 minutos + +**** + +En los capítulos anteriores hemos visto cómo organizar nuestro código en forma de roles, pero también cómo utilizar algunos roles para la gestión de actualizaciones (gestión de parches) o el despliegue de código. + +Pero ¿Qué ocurre con la gestión de la configuración? ¿Cómo gestionar la configuración de decenas, cientos o incluso miles de máquinas virtuales con Ansible? + +La llegada de la nube ha cambiado un poco los métodos de administración tradicionales. La máquina virtual se configura en el momento del despliegue. Si su configuración ya no es válida, se destruye y se sustituye por una nueva. + +La organización del sistema de gestión de la configuración que se presenta en este capítulo responderá a estas dos formas de consumir TI: uso "puntual" o "reconfiguración" regular de una flota de servidores. + +Sin embargo, hay que tener cuidado: el uso de Ansible para garantizar el cumplimiento del parque del parque de servidores equiere cambiar sus hábitos de trabajo. Ya no es posible modificar manualmente la configuración de un sistema gestor de servicios sin que estas modificaciones se sobrescriban la próxima vez que se ejecute Ansible. + +!!! Note + + Lo que vamos a configurar a continuación no es el terreno favorito de Ansible. Tecnologías como Puppet o Salt lo harán mucho mejor. Recordemos que Ansible es una navaja suiza de la automatización y no tiene agentes, lo que explica las diferencias de rendimiento. + +!!! Note + + Puede encontrar más información [aquí](https://docs.ansible.com/ansible/latest/user_guide/sample_setup.html) + +## Almacenamiento de variables + +Lo primero que tenemos que discutir es la separación entre los datos y el código de Ansible. + +A medida que el código se hace más grande y complejo, cada vez será más complicado modificar las variables que contiene. + +Para asegurar el mantenimiento de su sitio web, lo más importante es separar correctamente las variables del código de Ansible. + +Todavía no lo hemos discutido aquí, pero debe saber que Ansible puede cargar automáticamente las variables que encuentra en carpetas específicas dependiendo del nombre de inventario del nodo gestionado, o de sus grupos de miembros. + +La documentación de Ansible sugiere que organicemos nuestro código tal y como se indica a continuación: + +``` +inventories/ + production/ + hosts # inventory file for production servers + group_vars/ + group1.yml # here we assign variables to particular groups + group2.yml + host_vars/ + hostname1.yml # here we assign variables to particular systems + hostname2.yml +``` + +Si el nodo objetivo es `hostname1` que pertenece a `group1`, las variables contenidas en los archivos `hostname1.yml` y en `group1.yml` se cargarán automáticamente. Es una buena manera de almacenar todos los datos de todos sus roles en el mismo lugar. + +De esta manera, el archivo de inventario de su servidor se convierte en su tarjeta de identidad. Ya que contiene todas las variables que difieren de las variables por defecto de su servidor. + +Desde el punto de vista de la centralización de las variables, se hace imprescindible utilizar una nomenclatura para las variables utilizadas en sus roles anteponiendo, por ejemplo, el nombre del rol. También se recomienda utilizar nombres de variables planos en lugar de diccionarios. + +Por ejemplo, si quiere que el valor del parámetro `PermitRootLogin` en el archivo `sshd_config` sea configurable, un buen nombre de variable podría ser `sshd_config_permitrootlogin` (en lugar de `sshd.config.permitrootlogin` el cual también podría ser un buen nombre de variable). + +## Acerca de las etiquetas Ansible + +El uso de las etiquetas de Ansible le permite ejecutar u omitir un conjunto de las tareas definidas en su código. + +!!! Note + + Puede encontrar más información [aquí](https://docs.ansible.com/ansible/latest/user_guide/playbooks_tags.html) + +Por ejemplo, vamos a modificar nuestra tarea de creación de usuarios: + +``` +- name: add users + user: + name: "{{ item }}" + state: present + groups: "users" + loop: + - antoine + - patrick + - steven + - xavier + tags: users +``` + +Ahora puede reproducir sólo las tareas con la etiqueta `users` mediante la opción `--tags` de la herramienta `ansible-playbook`: + +``` +ansible-playbook -i inventories/production/hosts --tags users site.yml +``` + +También es posible utilizar la opción `--skip-tags`. + +## Acerca del diseño de directorios + +Vamos a centrarnos en una propuesta de organización de los archivos y directorios necesarios para el buen funcionamiento de un CMS (Sistema de Gestión de Contenidos). + +Nuestro punto de partida será el archivo `site.yml`. Este archivo, es un poco como el director de orquesta del CMS, ya que sólo incluirá los roles necesarios para los nodos de destino si es necesario: + +``` +--- +- name: "Config Management for {{ target }}" + hosts: "{{ target }}" + + roles: + + - role: roles/functionality1 + + - role: roles/functionality2 +``` + +Por supuesto, esos roles deben ser creados bajo el directorio `roles` al mismo nivel que el archivo `site.yml`. + +Me gusta manejar mis vars globales dentro del archivo `vars/global_vars.yml`, aunque tambien podría almacenarlos dentro de un archivo ubicado en `inventories/production/group_vars/all.yml` + +``` +--- +- name: "Config Management for {{ target }}" + hosts: "{{ target }}" + vars_files: + - vars/global_vars.yml + roles: + + - role: roles/functionality1 + + - role: roles/functionality2 +``` + +Personalmente, también me gusta mantener la posibilidad de desactivar una funcionalidad. Por lo que incluyo en mis roles una condición y un valor por defecto como este: + +``` +--- +- name: "Config Management for {{ target }}" + hosts: "{{ target }}" + vars_files: + - vars/global_vars.yml + roles: + + - role: roles/functionality1 + when: + - enable_functionality1|default(true) + + - role: roles/functionality2 + when: + - enable_functionality2|default(false) +``` + +No se olvide de utilizar las etiquetas: + + +``` +- name: "Config Management for {{ target }}" + hosts: "{{ target }}" + vars_files: + - vars/global_vars.yml + roles: + + - role: roles/functionality1 + when: + - enable_functionality1|default(true) + tags: + - functionality1 + + - role: roles/functionality2 + when: + - enable_functionality2|default(false) + tags: + - functionality2 +``` + +Debería ver algo como esto: + +``` +$ tree cms +cms +├── inventories +│   └── production +│   ├── group_vars +│   │   └── plateform.yml +│   ├── hosts +│   └── host_vars +│   ├── client1.yml +│   └── client2.yml +├── roles +│   ├── functionality1 +│   │   ├── defaults +│   │   │   └── main.yml +│   │   └── tasks +│   │   └── main.yml +│   └── functionality2 +│   ├── defaults +│   │   └── main.yml +│   └── tasks +│   └── main.yml +├── site.yml +└── vars + └── global_vars.yml +``` + +!!! Note + + Es libre de desarrollar sus roles dentro de una colección + +## Pruebas + +Vamos a ejecutar el playbook y a realizar algunas pruebas: + +``` +$ ansible-playbook -i inventories/production/hosts -e "target=client1" site.yml + +PLAY [Config Management for client1] **************************************************************************** + +TASK [Gathering Facts] ****************************************************************************************** +ok: [client1] + +TASK [roles/functionality1 : Task in functionality 1] ********************************************************* +ok: [client1] => { + "msg": "You are in functionality 1" +} + +TASK [roles/functionality2 : Task in functionality 2] ********************************************************* +skipping: [client1] + +PLAY RECAP ****************************************************************************************************** +client1 : ok=2 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0 +``` + +Como puede ver, por defecto, sólo se ejecutan las tareas del rol `functionality1`. + +Activemos en el inventario la `functionality2` para nuestro nodo objetivo y volvamos a ejecutar el playbook: + +``` +$ vim inventories/production/host_vars/client1.yml +--- +enable_functionality2: true +``` + + +``` +$ ansible-playbook -i inventories/production/hosts -e "target=client1" site.yml + +PLAY [Config Management for client1] **************************************************************************** + +TASK [Gathering Facts] ****************************************************************************************** +ok: [client1] + +TASK [roles/functionality1 : Task in functionality 1] ********************************************************* +ok: [client1] => { + "msg": "You are in functionality 1" +} + +TASK [roles/functionality2 : Task in functionality 2] ********************************************************* +ok: [client1] => { + "msg": "You are in functionality 2" +} + +PLAY RECAP ****************************************************************************************************** +client1 : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 +``` + +Intentamos aplicar únicamente la tarea `functionality2`: + +``` +$ ansible-playbook -i inventories/production/hosts -e "target=client1" --tags functionality2 site.yml + +PLAY [Config Management for client1] **************************************************************************** + +TASK [Gathering Facts] ****************************************************************************************** +ok: [client1] + +TASK [roles/functionality2 : Task in functionality 2] ********************************************************* +ok: [client1] => { + "msg": "You are in functionality 2" +} + +PLAY RECAP ****************************************************************************************************** +client1 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 +``` + +Vamos a ejecutar la tarea contra todo el inventario: + +``` +$ ansible-playbook -i inventories/production/hosts -e "target=plateform" site.yml + +PLAY [Config Management for plateform] ************************************************************************** + +TASK [Gathering Facts] ****************************************************************************************** +ok: [client1] +ok: [client2] + +TASK [roles/functionality1 : Task in functionality 1] ********************************************************* +ok: [client1] => { + "msg": "You are in functionality 1" +} +ok: [client2] => { + "msg": "You are in functionality 1" +} + +TASK [roles/functionality2 : Task in functionality 2] ********************************************************* +ok: [client1] => { + "msg": "You are in functionality 2" +} +skipping: [client2] + +PLAY RECAP ****************************************************************************************************** +client1 : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 +client2 : ok=2 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0 +``` + +Como puede ver, `functionality2` sólo se ejecuta en el `cliente1`. + +## Beneficios + +Siguiendo los consejos incluidos en la documentación de Ansible, obtendrá rápidamente un: + +* Un código fuente fácil de mantener aunque contenga un gran número de funciones. +* Un sistema de cumplimiento relativamente rápido y repetible que puede aplicar parcial o totalmente. +* Puede adaptarse en función de cada caso y del servidor. +* Los detalles de su sistema de información están separados del código, son fácilmente auditables y están centralizados en los archivos de inventario de su gestión de la configuración. From 9c50561ad98078496f7f0fa4befdf2a5d953db5e Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Wed, 10 Aug 2022 05:43:35 -0400 Subject: [PATCH 04/14] New translations vbox-rocky.md (Spanish) --- docs/guides/virtualization/vbox-rocky.es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/virtualization/vbox-rocky.es.md b/docs/guides/virtualization/vbox-rocky.es.md index 379416b5c8..349a3ec414 100644 --- a/docs/guides/virtualization/vbox-rocky.es.md +++ b/docs/guides/virtualization/vbox-rocky.es.md @@ -23,7 +23,7 @@ Este documento intenta brindar un conjunto de instrucciones paso a paso para pon * Una copia del [DVD ISO](https://rockylinux.org/download) de Rocky Linux para su arquitectura. (x86_64 o ARM64). * Asegúrese de que su sistema operativo sea de 64 bit y de que la virtualización del hardware esté habilitada en su BIOS. -!!! El comando leerá el flujo de entrada hasta que encuentre la palabra clave definida después de la redirección de entrada. +!!! Note La virtualización del hardware es 100% necesaria para instalar un sistema operativo de 64 bit. Si su pantalla de configuración muestra solo opciones de 32 bits, entonces deberá detenerse y solucionar ese problema antes de continuar. From 2ff48511ab4bdda8aaf234fed44ab36af2ff0e6f Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Wed, 10 Aug 2022 05:43:45 -0400 Subject: [PATCH 05/14] New translations micro.md (Spanish) --- docs/guides/editors/micro.es.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/editors/micro.es.md b/docs/guides/editors/micro.es.md index 8f1fb66e69..2a6d865fcf 100644 --- a/docs/guides/editors/micro.es.md +++ b/docs/guides/editors/micro.es.md @@ -26,7 +26,7 @@ Y así es como se ve en mi propio terminal: ![Una captura de pantalla del editor de micro texto](images/micro-text-editor.png) -!!! Aviso +!!! Note *Puede* instalar micro a través de una aplicación Snap. Si ya está utilizando snap en su máquina... Quiero decir... ¿por qué no? Pero yo prefiero hacerlo directamente desde su origen. From 2413e15d4f3f8107d7264e92aac8aa5d1a5c9643 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Wed, 10 Aug 2022 07:19:11 -0400 Subject: [PATCH 06/14] New translations 08-management-server-optimizations.md (Spanish) --- .../08-management-server-optimizations.es.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/books/learning_ansible/08-management-server-optimizations.es.md b/docs/books/learning_ansible/08-management-server-optimizations.es.md index f8a45f2c5a..31f891e287 100644 --- a/docs/books/learning_ansible/08-management-server-optimizations.es.md +++ b/docs/books/learning_ansible/08-management-server-optimizations.es.md @@ -1,19 +1,19 @@ --- -title: Optimizaciones del servidor de administración +title: Optimizaciones del servidor de gestión author: Antoine Le Morvan contributors: Steven Spencer update: 06-Dec-2021 --- -# Optimizaciones del servidor de administración +# Optimizaciones del servidor de gestión -En este capítulo revisaremos las opciones de configuración que pueden ser de interés para optimizar nuestro servidor de administración de Ansible. +En este capítulo revisaremos las opciones de configuración que pueden ser de interés para optimizar nuestro servidor de gestión de Ansible. ## El archivo de configuración `ansible.cfg` A continuación vamos a comentar algunas opciones de configuración interesantes de Ansible: -* `forks`: Establecido por defecto a 5, es el número de procesos que Ansible lanzará en paralelo para comunicarse con los hosts remotos. Cuanto más alto sea este número, más clientes podrá gestionar Ansible al mismo tiempo, y así acelerar los procesos. El valor que puede establecer depende de los límites de CPU/RAM de su servidor de administración. Observe que el valor por defecto, `5`, es muy pequeño, la documentación de Ansible indica que muchos usuarios lo establecen en 50, en 500 o incluso en valores más altos. +* `forks`: Establecido por defecto a 5, es el número de procesos que Ansible lanzará en paralelo para comunicarse con los hosts remotos. Cuanto más alto sea este número, más clientes podrá gestionar Ansible al mismo tiempo, y así acelerar los procesos. El valor que puede establecer depende de los límites de CPU/RAM de su servidor de gestión. Observe que el valor por defecto, `5`, es muy pequeño, la documentación de Ansible indica que muchos usuarios lo establecen en 50, en 500 o incluso en valores más altos. * `gathering`: Esta variable cambia la política de recogida de datos. Por defecto, el valor se establece a `implicit`, lo que implica que los datos se recopilarán sistemáticamente. El cambio de esta variable a `smart` permite recopilar las colecciones de datos sólo cuando no se han recogido con anterioridad. Si se combina con una caché de datos (véase más adelante), esta opción puede aumentar considerablemente el rendimiento. @@ -137,7 +137,7 @@ if __name__ == '__main__': ## Trabajar con servidores Windows -Será necesario instalar en el servidor de gestión varios paquetes: +Será necesario instalar varios paquetes en el servidor de gestión: * Mediante el gestor de paquetes: From e0e19f78240f3ca90040b7b2305548a801bd194c Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Wed, 10 Aug 2022 07:19:13 -0400 Subject: [PATCH 07/14] New translations 05-deployments.md (Spanish) --- docs/books/learning_ansible/05-deployments.es.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/books/learning_ansible/05-deployments.es.md b/docs/books/learning_ansible/05-deployments.es.md index 87a581d37b..060e40deae 100644 --- a/docs/books/learning_ansible/05-deployments.es.md +++ b/docs/books/learning_ansible/05-deployments.es.md @@ -71,7 +71,7 @@ Puede encontrar toda la documentación de Ansistrano en su [repositorio de Githu Seguirá trabajando en sus 2 servidores: -El servidor de administración: +El servidor de gestión: * Ansible ya está instalado. Tendrá que instalar el rol `ansistrano.deploy`. @@ -611,7 +611,7 @@ La variable `ansistrano_git_branch` se utiliza para especificar una `rama` o una - { role: ansistrano.deploy } ``` -!!! El comando leerá el flujo de entrada hasta que encuentre la palabra clave definida después de la redirección de entrada. +!!! Note Puede divertirse, durante el despliegue, refrescando su navegador, para ver el cambio en 'vivo'. From d41a2623949bc06456dd5f61e930e3de071acf3f Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Wed, 10 Aug 2022 09:04:03 -0400 Subject: [PATCH 08/14] New translations 03-working-with-files.md (Spanish) --- .../books/learning_ansible/03-working-with-files.es.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/books/learning_ansible/03-working-with-files.es.md b/docs/books/learning_ansible/03-working-with-files.es.md index aeb13d2d9f..14cccd2dc5 100644 --- a/docs/books/learning_ansible/03-working-with-files.es.md +++ b/docs/books/learning_ansible/03-working-with-files.es.md @@ -1,5 +1,5 @@ --- -title: Gestión de archivos +title: Gestión de ficheros --- # Ansible - Gestión de archivos @@ -54,7 +54,7 @@ Ejemplo de uso: Para asegurarse de que una línea está presente en un archivo, o cuando se necesita añadir o modificar una sola línea en un archivo, utilice el módulo `linefile`. -!!! El comando leerá el flujo de entrada hasta que encuentre la palabra clave definida después de la redirección de entrada. +!!! Note Puede encontrar más información [aquí](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/lineinfile_module.html). @@ -73,7 +73,7 @@ Por ejemplo, para garantizar que la línea que comienza con `SELINUX=` en el arc Cuando hay que copiar un archivo desde el servidor Ansible a uno o más hosts, es mejor utilizar el módulo `copy`. -!!! El comando leerá el flujo de entrada hasta que encuentre la palabra clave definida después de la redirección de entrada. +!!! Note Puede encontrar más información [aquí](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/copy_module.html). @@ -92,7 +92,7 @@ Aquí estamos copiando el archivo `myflile.conf` de una ubicación a otra: Cuando hay que copiar un archivo de un servidor remoto a un servidor local, lo mejor es utilizar el módulo `fetch`. -!!! El comando leerá el flujo de entrada hasta que encuentre la palabra clave definida después de la redirección de entrada. +!!! Note Puede encontrar más información [aquí](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/fetch_module.html). @@ -109,7 +109,7 @@ Este módulo hace lo contrario que el módulo `copy`: Ansible y su módulo `template` utilizan el sistema de plantillas **Jinja2** (http://jinja.pocoo.org/docs/) para generar archivos en los hosts de destino. -!!! El comando leerá el flujo de entrada hasta que encuentre la palabra clave definida después de la redirección de entrada. +!!! Note Puede encontrar más información [aquí](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/template_module.html). From 3c1197bf4ce434ddaf66d17a59b78ae18e55ab53 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Wed, 10 Aug 2022 09:04:05 -0400 Subject: [PATCH 09/14] New translations 04-ansible-galaxy.md (Spanish) --- docs/books/learning_ansible/04-ansible-galaxy.es.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/books/learning_ansible/04-ansible-galaxy.es.md b/docs/books/learning_ansible/04-ansible-galaxy.es.md index dc0cada3d1..16fed07484 100644 --- a/docs/books/learning_ansible/04-ansible-galaxy.es.md +++ b/docs/books/learning_ansible/04-ansible-galaxy.es.md @@ -61,7 +61,7 @@ ansible-galaxy collection [import|init|install|login|remove|...] Un rol de Ansible es una unidad que promueve la reutilización de los playbooks. -!!! El comando leerá el flujo de entrada hasta que encuentre la palabra clave definida después de la redirección de entrada. +!!! Note Puede encontrar más información [aquí](https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html) @@ -428,7 +428,7 @@ Evidentemente, no hay límite a la hora de mejorar su rol. Imagine que para uno Las colecciones son un formato de distribución para contenido de Ansible que puede incluir playbooks, roles, módulos y plugins. -!!! El comando leerá el flujo de entrada hasta que encuentre la palabra clave definida después de la redirección de entrada. +!!! Note Puede encontrar más información [aquí](https://docs.ansible.com/ansible/latest/user_guide/collections_using.html) From 9b697ec6c29709d4b9aac80e15dc357282615257 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Wed, 10 Aug 2022 09:04:15 -0400 Subject: [PATCH 10/14] New translations 02_rsync_demo01.md (Spanish) --- .../learning_rsync/02_rsync_demo01.es.md | 148 ++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 docs/books/learning_rsync/02_rsync_demo01.es.md diff --git a/docs/books/learning_rsync/02_rsync_demo01.es.md b/docs/books/learning_rsync/02_rsync_demo01.es.md new file mode 100644 index 0000000000..9e414aff9a --- /dev/null +++ b/docs/books/learning_rsync/02_rsync_demo01.es.md @@ -0,0 +1,148 @@ +--- +title: Demo de rsync 01 +author: tianci li +contributors: Steven Spencer +update: 2021-11-04 +--- + +# Prefacio + +`rsync` necesita realizar autenticación de usuario antes de sincronizar datos. **Hay dos protocolos para la autenticación: el protocolo SSH y el protocolo rsync (el puerto predeterminado del protocolo rsync es 873)** + +* Método de verificación del protocolo SSH: Utiliza el protocolo SSH como base para la autenticación de la identidad del usuario (es decir, utiliza el usuario del sistema y la contraseña de GNU/Linux para la verificación), y posteriormente realiza la sincronización de datos. +* Método de verificación de inicio de sesión de protocolo rsync: Utiliza el protocolo rsync para la autenticación de la identidad del usuario(usuarios del sistema que no son de GNU/Linux, similar a los usuarios virtuales de vsftpd), y posteriormente realiza la sincronización de datos. + +Antes de la demostración específica de sincronización mediante rsync, necesita utilizar el comando `rsync`. En Rocky Linux 8, el paquete rpm se instala por defecto y la versión es 3.1.3-12, de la siguiente manera: + +```bash +[root@Rocky ~]# rpm -qa|grep rsync +rsync-3.1.3-12.el8.x86_64 +``` + +```txt +Basic format: rsync [options] original location target location +Commonly used options: +-a: archive mode, recursive and preserves the attributes of the file object, which is equivalent to -rlptgoD (without -H, -A, -X) +-v: Display detailed information about the synchronization process +-z: compress when transferring files +-H: Keep hard link files +-A: retain ACL permissions +-X: retain chattr permissions +-r: Recursive mode, including all files in the directory and subdirectories +-l: still reserved for symbolic link files +-p: Permission to retain file attributes +-t: time to retain file attributes +-g: retain the group belonging to the file attribute (only for super users) +-o: retain the owner of the file attributes (only for super users) +-D: Keep device files and other special files +``` + +Uso personal del autor: `rsync -avz original location target location` + +## Descripción del entorno + +| Elemento | Descripción | +| ----------------------- | ---------------- | +| Rocky Linux 8(Servidor) | 192.168.100.4/24 | +| Fedora 34(Cliente) | 192.168.100.5/24 | + +Puede utilizar Fedora 34 para subir y descargar ficheros + +```mermaid +graph LR; +RockyLinux8-->|pull/download|Fedora34; +Fedora34-->|push/upload|RockyLinux8; +``` + +También puede utilizar Rocky Linux 8 para subir y descargar ficheros + +```mermaid +graph LR; +RockyLinux8-->|push/upload|Fedora34; +Fedora34-->|pull/download|RockyLinux8; +``` + +## Demostración basada en protocolo SSH + +!!! tip "Consejo" + + En este caso, tanto Rocky Linux 8 como Fedora 34 utilizan el usuario root para iniciar la sesión. Fedora 34 es el cliente y Rocky Linux 8 es el servidor. + +### Descarga de ficheros + +Puesto que rsync se basa en el protocolo SSH, primero debemos crear un usuario en el servidor: + +```bash +[root@Rocky ~]# useradd testrsync +[root@Rocky ~]# passwd testrsync +``` + +En el lado del cliente, lo descargamos/descargamos, y el archivo en el servidor es /rsync/aabbcc + +```bash +[root@fedora ~]# rsync -avz testrsync@192.168.100.4:/rsync/aabbcc /root +testrsync@192.168.100.4 ' s password: +receiving incremental file list +aabbcc +sent 43 bytes received 85 bytes 51.20 bytes/sec +total size is 0 speedup is 0.00 +[root@fedora ~]# cd +[root@fedora ~]# ls +aabbcc +``` +La transferencia se ha realizado con éxito. + +!!! tip "Consejo" + + Si el puerto SSH del servidor no es el 22 por defecto, puede especificar el puerto de forma similar---`rsync -avz -e 'ssh -p [port]'`. + +### Subida de ficheros + +```bash +[root@fedora ~]# touch fedora +[root@fedora ~]# rsync -avz /root/* testrsync@192.168.100.4:/rsync/ +testrsync@192.168.100.4 ' s password: +sending incremental file list +anaconda-ks.cfg +fedora +rsync: mkstemp " /rsync/.anaconda-ks.cfg.KWf7JF " failed: Permission denied (13) +rsync: mkstemp " /rsync/.fedora.fL3zPC " failed: Permission denied (13) +sent 760 bytes received 211 bytes 277.43 bytes/sec +total size is 883 speedup is 0.91 +rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1330) [sender = 3.2.3] +``` + +**Permiso denegado, ¿cómo se soluciona?** + +Primero compruebe los permisos del directorio /rsync/ . Obviamente, no hay permiso "w". Podemos utilizar la herramienta `setfacl` para dar permisos: + +```bash +[root@Rocky ~ ] # ls -ld /rsync/ +drwxr-xr-x 2 root root 4096 November 2 15:05 /rsync/ +``` + +```bash +[root@Rocky ~ ] # setfacl -mu:testrsync:rwx /rsync/ +[root@Rocky ~ ] # getfacl /rsync/ +getfacl: Removing leading ' / ' from absolute path names +# file: rsync/ +# owner: root +# group: root +user::rwx +user:testrsync:rwx +group::rx +mask::rwx +other::rx +``` + +Inténtelo de nuevo, ¡éxito! + +```bash +[root@fedora ~ ] # rsync -avz /root/* testrsync@192.168.100.4:/rsync/ +testrsync@192.168.100.4 ' s password: +sending incremental file list +anaconda-ks.cfg +fedora +sent 760 bytes received 54 bytes 180.89 bytes/sec +total size is 883 speedup is 1.08 +``` From d1a335fe9aeae74058b75bd1d4d5f1f9fc613aaf Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Wed, 10 Aug 2022 09:04:17 -0400 Subject: [PATCH 11/14] New translations 01_rsync_overview.md (Spanish) --- .../learning_rsync/01_rsync_overview.es.md | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 docs/books/learning_rsync/01_rsync_overview.es.md diff --git a/docs/books/learning_rsync/01_rsync_overview.es.md b/docs/books/learning_rsync/01_rsync_overview.es.md new file mode 100644 index 0000000000..71cecdceb7 --- /dev/null +++ b/docs/books/learning_rsync/01_rsync_overview.es.md @@ -0,0 +1,60 @@ +--- +title: Breve descripción de rsync +author: tianci li +contributors: Steven Spencer +update: 2022-Mar-08 +--- + +# Resumen de las copias de seguridad + +¿Qué es una copia de seguridad? + +La copia de seguridad se refiere a la duplicación de los datos en un sistema de archivos o en una base de datos. En caso de error o de desastre, los datos efectivos del sistema pueden restablecerse a tiempo y permitir el funcionamiento normal del sistema. + +¿Cuáles son los métodos de copia de seguridad? + +* Copia de seguridad completa: Se refiere a una copia única de todos los archivos, carpetas o datos contenidos en el disco duro o en la base de datos. (Pros: El mejor, puede recuperar los datos de forma más rápida. Desventajas: Ocupa un espacio mayor en el disco duro). +* Copia de seguridad incremental: Se refiere a la copia de seguridad de los datos actualizada después de la última copia de seguridad completa o incremental realizada. El proceso es así, como una copia de seguridad completa el primer día; una copia de seguridad de los datos recientemente añadidos el segundo día, en lugar de una copia de seguridad completa; el tercer día, una copia de seguridad de los datos recién añadidos sobre la base del segundo día, relativo al día siguiente, y así sucesivamente. +* Copia de seguridad diferencial: Se refiere a la copia de seguridad de los archivos modificados después de la copia completa de seguridad. Por ejemplo, una copia de seguridad completa el primer día; una copia de seguridad de los nuevos datos el segundo día; una copia de seguridad de los nuevos datos del segundo al tercer día del tercer día; y una copia de seguridad de todos los nuevos datos del segundo día al cuarto día, y así sucesivamente. +* Copia de seguridad selectiva: Se refiere a respaldar una parte concreta del sistema. +* Copia de seguridad en frío: Se refiere a la copia de seguridad que se realiza cuando el sistema está apagado o estado de mantenimiento. Los datos respaldados son exactamente los mismos que los del sistema durante ese estado o período de tiempo. +* Copia de seguridad caliente: Se refiere a la copia de seguridad que se realiza cuando el sistema está en operación normal. Como los datos en el sistema se actualizan en cualquier momento, los datos almacenados en la copia de seguridad tienen un cierto retraso en relación a los datos reales del sistema. +* Copia de seguridad remota: Se refiere a la copia de seguridad de los datos que se encuentra en otra ubicación geográfica para evitar la pérdida de datos y la interrupción de los servicios causada por incendios, desastres naturales, robo, etc. + +## Resumen de rsync + +En un servidor, respaldé la primera partición en la segunda partición, algo que se conoce comúnmente como "copia de seguridad local". Las herramientas específicas de copia de seguridad son `tar` , `dd` , `volcado` , `cp`, etc. Aunque los datos están respaldados en este servidor, si el hardware no puede arrancar correctamente, los datos no se podrán recuperar. Para solucionar este problema con la copia de seguridad local, hemos introducido otro tipo de copia de seguridad: la "copia de seguridad remota". + +Algunos dirán: ¿Porqué no puedo utilizar el comando `tar` o `cp` en el primer servidor y enviarlo al segundo servidor a través de `scp` o `sftp`? + +En un entorno de producción, la cantidad de datos que se maneja es relativamente grande. En primer lugar, tanto `tar` como `cp` consumen mucho tiempo y ocupan el rendimiento del sistema. La transmisión de datos a través de `scp` o `sftp` también consume un gran ancho de banda de red, lo que no está permitido en el entorno real de producción. En segundo lugar, estos comandos o herramientas deben ser introducidos manualmente por el administrador y deben integrarse con crontab para la ejecución de la tarea programada. Sin embargo, el tiempo establecido por crontab no es fácil de entender, y no es apropiado que los datos sean respaldados si el tiempo es demasiado corto o demasiado largo. + +Por lo tanto, tiene que haber una copia de seguridad de los datos en el entorno de producción que necesite cumplir los siguientes requisitos: + +1. Las copias de seguridad se transmiten por la red. +2. Sincronización de los archivos de datos en tiempo real. +3. Una carga menor sobre los recursos del sistema y una mayor eficiencia. + +`rsync` parece satisfacer todas las necesidades listadas. Utiliza el acuerdo de licencia GNU de código abierto. Es una herramienta de copia de seguridad incremental rápida. La última versión es 3.2.3 (2020-08-06). Puede visitar el [sitio web oficial de rsync](https://rsync.samba.org/) para obtener más información. + +En términos de soporte de plataforma, la mayoría de los sistemas tipo Unix están soportados, ya sea GNU/Linux o BSD. Además, existen herramientas relacionadas con `rsync` que se ejecutan bajo la plataforma Windows, como por ejemplo cwRsync. + +La herramienta `rsync` original fue mantenida por el programador australiano Andrew Tridgell (se muestra en la Figura 1, situada más abajo), y ahora es mantenido por Wayne Davison (se muestra en la Figura 2, situada más abajo). Puede dirigirse al [ proyecto alojado en github ](https://github.com/WayneD/rsync) para obtener toda la información que necesite. + +![ Andrew Tridgell ](images/Andrew_Tridgell.jpg) ![ Wayne Davison ](images/Wayne_Davison.jpg) + +!!! nota "nota" + + **rsync en sí es sólo una herramienta incremental de copia de seguridad y no tiene la función de sincronización de datos en tiempo real (necesita ser complementada por otros programas). Además, la sincronización se realiza de forma unidireccional. Si quiere realizar la sincronización de forma bidireccional necesita interactuar con otras herramientas.** + +### Principios y características básicas + +¿Cómo consigue `rsync` una copia de seguridad eficiente mediante la sincronización de datos unidireccional? + +El núcleo de `rsync` es su algoritmo de **suma de verificación**. Si está interesado en conocer como funciona, puede dirigirse a [Cómo funciona Rsync](https://rsync.samba.org/how-rsync-works.html) y [El algoritmo Rsync](https://rsync.samba.org/tech_report/) para obtener más información. Esta sección está fuera de la competencias del autor de este documento y no se cubrirá con demasiado detalle. + +Las características de `rsync` son: + +* El directorio se puede actualizar por completo recursivamente; +* Puede retener selectivamente los atributos de sincronización de los archivos, como enlaces, su el propietario, el grupoal que pertenece, los permisos correspondientes, la fecha/hora de modificación, etc. y puede retener algunos de los atributos; +* Soporte para dos protocolos para la transmisión de archivos, uno es el protocolo ssh, el otro es el protocolo rsync. From d0331395c25b39b4fa465b1de556d4a6b2bbbaf2 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Thu, 11 Aug 2022 04:58:53 -0400 Subject: [PATCH 12/14] New translations 07_rsync_unison_use.md (Spanish) --- .../learning_rsync/07_rsync_unison_use.es.md | 147 ++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 docs/books/learning_rsync/07_rsync_unison_use.es.md diff --git a/docs/books/learning_rsync/07_rsync_unison_use.es.md b/docs/books/learning_rsync/07_rsync_unison_use.es.md new file mode 100644 index 0000000000..001c858dbc --- /dev/null +++ b/docs/books/learning_rsync/07_rsync_unison_use.es.md @@ -0,0 +1,147 @@ +--- +title: Utilizar unison +author: tianci li +contributors: Steven Spencer +update: 2021-11-06 +--- + +# Resumen + +Como mencionamos anteriormente, la sincronización unidireccional utiliza rsync + inotify-tools. En algunos escenarios especiales, puede ser un requisito la sincronización bidireccional, lo que requiere la utilización de las herramientas inotify-tools e unison. + +## Preparación del entorno + +* Rocky Linux 8 y Fedora 34 requieren la compilación e instalación del código fuente de **inotify-tools**, alog que no está específicamente explicado en este documento. +* Ambas máquinas deben tener configurada la autenticación sin contraseña, aquí utilizamos el protocolo SSH +* [ocaml](https://github.com/ocaml/ocaml/) utiliza la versión v4.12.0, [unison](https://github.com/bcpierce00/unison/) utiliza la versión v2.51.4. + +Una vez que el entorno esté preparado, se puede verificar de la siguiente manera: + +```bash +[root@Rocky ~]# inotifywa +inotifywait inotifywatch +[root@Rocky ~]# ssh -p 22 testrsync@192.168.100.5 +Last login: Thu Nov 4 13:13:42 2021 from 192.168.100.4 +[testrsync@fedora ~]$ +``` + +```bash +[root@fedora ~]# inotifywa +inotifywait inotifywatch +[root@fedora ~]# ssh -p 22 testrsync@192.168.100.4 +Last login: Wed Nov 3 22:07:18 2021 from 192.168.100.5 +[testrsync@Rocky ~]$ +``` + +!!! tip "Consejo" + + Se deben editar los archivos de configuración **/etc/ssh/sshd_config** de las dos máquinas y habilitar la opción PubkeyAuthentication sí + +## Instalar unison en Rocky Linux 8 + +Ocaml es un lenguaje de programación, y la capa inferior de unison depende de el. + +```bash +[root@Rocky ~]# wget -c https://github.com/ocaml/ocaml/archive/refs/tags/4.12.0.tar.gz +[root@Rocky ~]# tar -zvxf 4.12.0.tar.gz -C /usr/local/src/ +[root@Rocky ~]# cd /usr/local/src/ocaml-4.12.0 +[root@Rocky /usr/local/src/ocaml-4.12.0]# ./configure --prefix=/usr/local/ocaml && make world opt && make install +... +[root@Rocky ~]# ls /usr/local/ocaml/ +bin lib man +[root@Rocky ~]# echo PATH=$PATH:/usr/local/ocaml/bin >> /etc/profile +[root@Rocky ~]# . /etc/profile +``` + +```bash +[root@Rocky ~]# wget -c https://github.com/bcpierce00/unison/archive/refs/tags/v2.51.4.tar.gz +[root@Rocky ~]# tar -zvxf v2.51.4.tar.gz -C /usr/local/src/ +[root@Rocky ~]# cd /usr/local/src/unison-2.51.4/ +[root@Rocky /usr/local/src/unison-2.51.4]# make UISTYLE=txt +... +[root@Rocky /usr/local/src/unison-2.51.4]# ls src/unison +src/unison +[root@Rocky /usr/local/src/unison-2.51.4] cp -p src/unison /usr/local/bin +``` + +## Instalar unison en Fedora 34 + +La misma operación. + +```bash +[root@fedora ~]# wget -c https://github.com/ocaml/ocaml/archive/refs/tags/4.12.0.tar.gz +[root@feodora ~]# tar -zvxf 4.12.0.tar.gz -C /usr/local/src/ +[root@fedora ~]# cd /usr/local/src/ocaml-4.12.0 +[root@fedora /usr/local/src/ocaml-4.12.0]# ./configure --prefix=/usr/local/ocaml && make world opt && make install +... +[root@fedora ~]# ls /usr/local/ocaml/ +bin lib man +[root@fedora ~]# echo PATH=$PATH:/usr/local/ocaml/bin >> ATI/profile +[root@fedora ~]#. /etc/profile +``` + +```bash +[root@fedora ~]# wget -c https://github.com/bcpierce00/unison/archive/refs/tags/v2.51.4.tar.gz +[root@fedora ~]# tar -zvxf v2.51.4.tar.gz -C /usr/local/src/ +[root@fedora ~]# cd /usr/local/src/unison-2.51.4/ +[root@fedora /usr/local/src/unison-2.51.4]# make UISTYLE=txt +... +[root@fedora /usr/local/src/unison-2.51.4]# ls src/unison +src/unison +[root@fedora /usr/local/src/unison-2.51.4]# cp -p src/unison /usr/local/bin +``` + + +## Demo + +**Nuestro requisito es que el directorio /dir1/ de Rocky Linux 8 se sincronice automáticamente con el directorio /dir2/ de Fedora 34; al mismo tiempo, el directorio /dir2/ de Fedora 34 se sincroniza automáticamente con el directorio /dir1/ de Rocky Linux 8** + +### Configurar Rocky Linux 8 + +```bash +[root@Rocky ~]# mkdir /dir1 +[root@Rocky ~]# setfacl -m u:testrsync:rwx /dir1/ +[root@Rocky ~]# vim /root/unison1.sh +#!/bin/bash +a="/usr/local/inotify-tools/bin/inotifywait -mrq -e create,delete,modify,move /dir1/" +b="/usr/local/bin/unison -batch /dir1/ ssh://testrsync@192.168.100.5//dir2" +$a | while read directory event file +do + $b &>> /tmp/unison1.log +done +[root@Rocky ~]# chmod +x /root/unison1.sh +[root@Rocky ~]# bash /root/unison1.sh & +[root@Rocky ~]# jobs -l +``` + +### Configurar Fedora 34 + +```bash +[root@fedora ~]# mkdir /dir2 +[root@fedora ~]# setfacl -m u:testrsync:rwx /dir2/ +[root@fedora ~]# vim /root/unison2.sh +#!/bin/bash +a="/usr/local/inotify-tools/bin/inotifywait -mrq -e create,delete,modify,move /dir2/" +b="/usr/local/bin/unison -batch /dir2/ ssh://testrsync@192.168.100.4//dir1" +$a | while read directory event file +do + $b &>> /tmp/unison2.log +done +[root@fedora ~]# chmod +x /root/unison2.sh +[root@fedora ~]# bash /root/unison2.sh & +[root@fedora ~]# jobs -l +``` + +!!! tip "Consejo" + + Para la sincronización bidireccional se deben iniciar los scripts en ambas máquinas, de lo contrario se mostrará un error. + +!!! tip "Consejo" + + Si desea iniciar este script en el arranque + `[root@Rocky ~]# echo "bash /root/unison1.sh &" >> /etc/rc.local` + `[root@Rocky ~]# chmod +x /etc/rc.local` + +!!! tip "Consejo" + + Si quiere detener el proceso correspondiente de este script, puede encontrarlo utilizando los comandos `htop` y **kill** From 234418a70e68fd1fcc7f383983922b9afdc20417 Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Thu, 11 Aug 2022 04:58:54 -0400 Subject: [PATCH 13/14] New translations 05_rsync_authentication-free_login.md (Spanish) --- .../05_rsync_authentication-free_login.es.md | 100 ++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 docs/books/learning_rsync/05_rsync_authentication-free_login.es.md diff --git a/docs/books/learning_rsync/05_rsync_authentication-free_login.es.md b/docs/books/learning_rsync/05_rsync_authentication-free_login.es.md new file mode 100644 index 0000000000..72d191ea6f --- /dev/null +++ b/docs/books/learning_rsync/05_rsync_authentication-free_login.es.md @@ -0,0 +1,100 @@ +--- +title: Protocolo de inicio de sesión con autenticación sin contraseña de rsync +author: tianci li +contributors: Steven Spencer +update: 2021-11-04 +--- + +# Prefacio + +Gracias al artículo [Breve descripción de rsync](01_rsync_overview.md) conocemos que rsync es una herramienta incremental de sincronización. Cada vez que se ejecuta el comando `rsync`, los datos se pueden sincronizar una vez pero no se pueden sincronizar en tiempo real. ¿Cómo solucionarlo? + +Mediante la herramienta inotify-tools, puede realizar una sincronización en tiempo real. Debido a que se trata de una sincronización de datos en tiempo real, el prerrequisito es iniciar sesión sin autenticación de contraseña. + +**Independientemente de si es protocolo utilizado es rsync o SSH, con ambos se puede lograr la autenticación sin contraseña.** + +## Protocolo de inicio de sesión con autenticación sin contraseña de SSH + +Primero, generar un par de claves públicas y privadas en el cliente, siga presionando Enter después de teclear el comando. El par de claves se guarda en el directorio /root/.ssh/ + +```bash +[root@fedora ~]# ssh-keygen -t rsa -b 2048 +Generating public/private rsa key pair. +Enter file in which to save the key (/root/.ssh/id_rsa): +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in /root/.ssh/id_rsa +Your public key has been saved in /root/.ssh/id_rsa.pub +The key fingerprint is: +SHA256: TDA3tWeRhQIqzTORLaqy18nKnQOFNDhoAsNqRLo1TMg root@fedora +The key's randomart image is: ++---[RSA 2048]----+ +|O+. +o+o. .+. | +|BEo oo*....o. | +|*o+o..*.. ..o | +|.+..o. = o | +|o o S | +|. o | +| o +. | +|....=. | +| .o.o. | ++----[SHA256]-----+ +``` + +Luego, utiliza el comando `scp` para subir el archivo de clave pública al servidor. Por ejemplo, he subido esta clave pública al usuario **testrsync** + +```bash +[root@fedora ~]# scp -P 22 /root/.ssh/id_rsa.pub root@192.168.100.4:/home/testrsync/ +``` + +```bash +[root@Rocky ~]# cat /home/testrsync/id_rsa.pub >> /home/testrsync/.ssh/authorized_keys +``` + +Intente iniciar sesión sin autenticación, ¡éxito! + +```bash +[root@fedora ~]# ssh -p 22 testrsync@192.168.100.4 +Last login: Tue Nov 2 21:42:44 2021 from 192.168.100.5 +[testrsync@Rocky ~]$ +``` + +!!! tip "Consejo" + + Se deben editar el archivo de configuración **/etc/ssh/sshd_config** de la máquina y habilitar la opción PubkeyAuthentication sí + +## Protocolo de inicio de sesión con autenticación sin contraseña de rsync + +En el lado del cliente, el servicio rsync configura una variable de entorno en el sistema-**RSYNC_PASSWORD**, que está vacía por defecto, como se muestra a continuación: + +```bash +[root@fedora ~]# echo "$RSYNC_PASSWORD" + +[root@fedora ~]# +``` + +Si desea conseguir el inicio de sesión sin contraseña, sólo necesita asignar un valor a esta variable. El valor asignado es la contraseña establecida para el usuario virtual li. Al mismo tiempo, declare esta variable como una variable global. + +```bash +[root@Rocky ~]# cat /etc/rsyncd_users.db +li:13579 +``` + +```bash +[root@fedora ~]# exportar RSYNC_PASSWORD=13579 +``` + +Inténtelo de nuevo, ¡éxito! No aparecen nuevos archivos, por lo que rsync no muestra la lista de archivos transferidos. + +```bash +[root@fedora ~]# rsync -avz li@192.168.100.4::share /root/ +receiving incremental file list +./ + +sent 30 bytes received 193 bytes 148.67 bytes/sec +total size is 883 speedup is 3.96 +``` + +!!! tip "Consejo" + + Puede escribir esta variable en **/etc/profile** para que configurarla de manera permanente en el sistema. El contenido es: `export RSYNC_PASSWORD=13579` From 6ea7f974dd474995ae1ea412dcef0f0cd0d3a02a Mon Sep 17 00:00:00 2001 From: Rocky Linux Automation <75949597+rockylinux-auto@users.noreply.github.com> Date: Thu, 11 Aug 2022 04:58:55 -0400 Subject: [PATCH 14/14] New translations 04_rsync_configure.md (Spanish) --- .../learning_rsync/04_rsync_configure.es.md | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 docs/books/learning_rsync/04_rsync_configure.es.md diff --git a/docs/books/learning_rsync/04_rsync_configure.es.md b/docs/books/learning_rsync/04_rsync_configure.es.md new file mode 100644 index 0000000000..5bb12d881e --- /dev/null +++ b/docs/books/learning_rsync/04_rsync_configure.es.md @@ -0,0 +1,31 @@ +--- +title: Archivo de configuración de rsync +author: tianci li +update: 2021-11-04 +--- + +# /etc/rsyncd.conf + +En el artículo anterior [Demo de rsync 02](03_rsync_demo02.md) se introdujeron algunos parámetros básicos. Este artículo sirve cómocomplemento para la utilización de otros parámetros. + +| Parámetros | Descripción | +| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| fake super = yes | Yes significa que no es necesario que el demonio se ejecute como root para almacenar los atributos completos del archivo. | +| uid = | | +| gid = | Dos parámetros para especificar el usuario y el grupo utilizados para transferir los archivos cuando el demonio de rsync como se ejecuta root. El valor por defecto es nobody. | +| use chroot = yes | Si es necesario bloquear el directorio raíz antes de la transmisión. Para aumentar la seguridad, rsync estable este parametro de forma predeterminada a yes. | +| max connections = 4 | Número máximo de conexiones permitidas, el valor por defecto es 0, lo que significa que no hay ninguna restricción. | +| lock file = /var/run/rsyncd.lock | El archivo de bloqueo especificado, que se asocia con el parámetro "max connections". | +| exclude = lost+found/ | Excluye los directorios que no necesitan ser transferidos. | +| transfer logging = yes | Si se activa el formato de registro tipo ftp para registrar las subidas y las descargas realizadas por rsync. | +| timeout = 900 | Especifica el tiempo de espera. Si no se transmiten datos en el tiempo especificado, rsync terminará su ejecución. La unidad utilizada aqui son los segundos y el valor por defecto es 0 lo que significa que nunca se agota el tiempo de espera. | +| ignore nonreadable = yes | Si se ignoran o no los archivos sobre los que el usuario no tiene permisos. | +| motd file = /etc/rsyncd/rsyncd.motd | Se utiliza para especificar la ruta del archivo de mensajes. Por defecto, no hay ningún archivo motd. Un archivo motd contiene el mensaje de bienvenida que se muestra cuando el usuario realiza un inicio de sesión. | +| hosts allow = 10.1.1.1/24 | Se utiliza para especificar a qué IP o segmento de red pueden acceder los clientes. Puede rellenar la ip, el segmento de red, el nombre del hostv o el dominio, y separar múltiples valores mediante espacios. Por defecto, permite el acceso a todo el mundo. | +| hosts deny = 10.1.1.20 | A qué IP o segmento de red no pueden acceder los clientes especificados por el usuario. Si los hosts con acceso permitido y los hosts con el acceso denegado tienen el mismo nivel de coincidencia, eventualmente el cliente no tendrá acceso. Si la dirección del cliente no está ni en la lista de hosts permitidos ni en la de hosts denegados, el cliente tiene permitido el acceso. Por defecto, no existe este parámetro. | +| auth users = li | Permite habilitar los usuarios virtuales, se pueden definir diferentes usuarios separados mediante comas. | +| syslog facility = daemon | Define el nivel de detalle en los archivos de registro. Se pueden los siguientes valores: auth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security, syslog, user, uucp, local0, local1, local2 local3, local4, local5, local6 y local7. El valor predeterminado es daemon. | + +## Configuración recomendada + +![ foto ](images/rsync_config.jpg)