jonaspammer.bootstrap
// Este archivo está siendo generado por .github/workflows/gh-pages.yml - ¡todos los cambios locales se perderán eventualmente!
= ansible-role-bootstrap
Jonas Pammer <[email protected]>;
:toc: left
:toclevels: 2
:toc-placement!:
:source-highlighter: rouge
https://galaxy.ansible.com/jonaspammer/bootstrap[image:https://img.shields.io/badge/available%20on%20ansible%20galaxy-jonaspammer.bootstrap-brightgreen[Versión en Galaxy]]
// Insignias de estado muy relevantes
https://github.com/JonasPammer/ansible-role-bootstrap/actions/workflows/ci.yml[image:https://github.com/JonasPammer/ansible-role-bootstrap/actions/workflows/ci.yml/badge.svg[Pruebas CI]]
Un rol de Ansible para preparar un sistema Linux para ser gestionado por Ansible.
Este rol utiliza el https://docs.ansible.com/ansible-core/2.16/collections/ansible/builtin/raw_module.html[`módulo ansible.builtin.raw`]
en combinación con un "sistema de determinación de sistema operativo" propio
para instalar el conjunto mínimo de paquetes requeridos (`python` y `sudo`)
para permitir que Ansible gestione un sistema.
Este rol también asegura que haya un caché de paquetes actualizado para la mayoría de los sistemas.
En la mayoría de los casos, querrás utilizar este rol en combinación con mi
https://github.com/JonasPammer/ansible-role-core_dependencies[`rol de dependencias principales`].
[NOTA]
.RENUNCIA
=====
Este rol es un derivado de https://github.com/robertdebock/ansible-role-bootstrap/releases/tag/5.2.12[robertdebock/ansible-role-bootstrap v5.2.12 (27 de enero de 2022)]
(Licencia Apache 2.0, Copyright Robert de Bock ([email protected]))
con varios cambios/arreglos. +
Extracto de cambios de https://github.com/JonasPammer/ansible-role-bootstrap/releases[/releases] a continuación (con problemas acompañantes en el repositorio de robertdebock):
* El rol en sí debería pre-cargar el caché del gestor de paquetes:
https://github.com/robertdebock/ansible-role-bootstrap/pull/57[robertdebock/ansible-role-bootstrap#57]
( arreglo en
https://github.com/JonasPammer/ansible-role-bootstrap/pull/43[JonasPammer#43];
https://github.com/JonasPammer/ansible-role-bootstrap/pull/50[JonasPammer#50]
)
* cambió el valor predeterminado de `become` a `false`, agregó la capacidad de definir `become_user` por separado de `ansible_user`:
https://github.com/robertdebock/ansible-role-bootstrap/issues/63[robertdebock/ansible-role-bootstrap#63]
( arreglo en
https://github.com/JonasPammer/ansible-role-bootstrap/pull/61[JonasPammer#61]
)
* cambió el valor predeterminado de `bootstrap_become_user` a root
* usar `bootstrap_become_user` en los pasos de módulos de ansible también
* hacer que el rol sea compatible con podman especificando `/bin/sh`
https://github.com/robertdebock/ansible-role-bootstrap/pull/66[robertdebock/ansible-role-bootstrap#66]
( arreglo en
https://github.com/JonasPammer/ansible-role-bootstrap/pull/62[JonasPammer#62]
)
=====
toc::[]
[[meta]]
== 🔎 Metadatos
A continuación puedes encontrar información sobre...
* la versión de Ansible requerida para el rol
* las plataformas soportadas por el rol
* las https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html#role-dependencies[dependencias del rol]
.link:meta/main.yml[]
[source,yaml]
----
---
galaxy_info:
role_name: bootstrap
description: Un rol de Ansible para preparar un sistema Linux para ser gestionado por Ansible. Basado en el rol de robertdebock.
author: jonaspammer
license: "MIT"
min_ansible_version: "2.9"
platforms:
- name: EL # (Enterprise Linux)
versions:
- "9" # probado activamente: rockylinux9
- name: Fedora
versions:
- "38" # probado activamente: fedora38
- "39" # probado activamente: fedora39
- name: Debian
versions:
- bullseye # probado activamente: debian11
- bookworm # probado activamente: debian12
- name: Ubuntu
versions:
- focal # probado activamente: ubuntu2004
- jammy # probado activamente: ubuntu2204
galaxy_tags:
- bootstrap
- python
- sudo
dependencies: []
----
[[requirements]]
== 📌 Requisitos
// Cualquier requisito previo que puede no estar cubierto por este rol o Ansible debería mencionarse aquí.
El usuario de Ansible necesita poder `become`.
[[variables]]
== 📜 Variables del Rol
// Una descripción de las variables configurables para este rol debe ir aquí
// y cualquier variable que pueda/deba ser configurada a través de parámetros para el rol.
// Cualquier variable que se lea de otros roles y/o del ámbito global (es decir, hostvars, variables de grupo, etc.)
// también deben mencionarse aquí.
[source,yaml]
----
bootstrap_user: root
----
https://docs.ansible.com/ansible/latest/reference_appendices/special_variables.html#term-ansible_user[Nombre de usuario]
utilizado para conectarse a la máquina para las tareas `raw` primarias de _recolección de hechos simples_ / _instalación_.
[source,yaml]
----
bootstrap_become: false
bootstrap_become_user: root
----
Variables `become` y `become_user` pasadas a la mayoría de las tareas reales.
El valor por defecto de `bootstrap_become` se estableció en `false`
porque se asumió que `sudo` no está disponible
antes de la inicialización.
[source,yaml]
----
bootstrap_wait_for_host: false
----
Si se espera que el host esté disponible en `ansible_port` (22).
[source,yaml]
----
bootstrap_timeout: 3
----
Número máximo de segundos para esperar a que el sistema remoto sea accesible/utilizable antes de fallar.
[[public_vars]]
== 📜 Hechos/Variables definidas por este rol
Cada variable enumerada en esta sección
se define dinámicamente al ejecutar este rol (y solo se puede sobrescribir usando `ansible.builtin.set_facts`) _y_
se supone que se utilizará no solo internamente.
[[tags]]
== 🏷️ Etiquetas
// Consulta https://github.com/tribe29/ansible-collection-tribe29.checkmk/blob/main/roles/server/README.md#tags
// para un increíble ejemplo de agrupación de tareas usando etiquetas
Las tareas están etiquetadas con las siguientes
https://docs.ansible.com/ansible/latest/user_guide/playbooks_tags.html#adding-tags-to-roles[etiquetas]:
[cols="1,1"]
|===
|Etiquetas | Propósito
2+| Este rol aún no tiene etiquetas documentadas oficialmente.
|===
Puedes usar Ansible para omitir tareas o ejecutar solo ciertas tareas utilizando estas etiquetas. De forma predeterminada, se ejecutan todas las tareas cuando no se especifican etiquetas.
[[dependencies]]
== 👫 Dependencias
// Una lista de otros roles debería ir aquí,
// además de cualquier detalle en relación con los parámetros que pueden necesitar ser configurados para otros roles,
// o variables que se utilizan de otros roles.
[[example_playbooks]]
== 📚 Ejemplos de uso de Playbook
// Incluir ejemplos de cómo usar este rol en un playbook para escenarios comunes también es agradable para los usuarios:
[IMPORTANTE]
====
Debes desactivar la propiedad `gather_facts` del play en el que se usa este rol.
Si este rol finaliza correctamente, llamará por sí mismo al https://docs.ansible.com/ansible/latest/collections/ansible/builtin/setup_module.html[
módulo de configuración de Ansible] (efecto equivalente a que `gather_facts: true` lo daría).
No debe haber tareas antes de este rol.
====
.Playbook Mínimo
====
[source,yaml]
-----
---
- hosts: servers:&provisioned
name: Inicializar máquinas Linux para ser gestionadas por Ansible.
become: false
gather_facts: false
roles:
- role: jonaspammer.bootstrap
-----
====
.Cambiando el usuario de inicialización (por ejemplo, cuando root no es una opción)
====
[source,yaml]
-----
---
- hosts: servers:&provisioned
name: Inicializar máquinas Linux para ser gestionadas por Ansible.
become: false
gather_facts: false
vars:
bootstrap_user: "{{ ansible_user }}"
roles:
- role: jonaspammer.bootstrap
-----
====
.Utilizando become true (por ejemplo, cuando sabes que al menos tienes un sudo utilizable)
====
[source,yaml]
-----
---
- hosts: servers:&provisioned
name: Inicializar máquinas Linux para ser gestionadas por Ansible.
become: true
gather_facts: false
vars:
bootstrap_user: "{{ ansible_user }}"
bootstrap_become: true
roles:
- role: jonaspammer.bootstrap
-----
====
[[tested-distributions]]
== 🧪 Distribuciones probadas
Un rol puede funcionar en diferentes *distribuciones*, como Red Hat Enterprise Linux (RHEL),
incluso si no hay prueba para esta distribución exacta.
// buena referencia para seguir - el proyecto más estrellado y fijado de geerlingguy:
// https://github.com/geerlingguy/ansible-role-docker/blob/master/.github/workflows/ci.yml
|===
| Familia OS | Distribución | Fecha de lanzamiento de la distribución | Fin de vida de la distribución | Imagen Docker acompañante
// https://endoflife.date/rocky-linux
| Rocky
| Rocky Linux 8 (https://www.howtogeek.com/devops/is-rocky-linux-the-new-centos/[RHEL/CentOS 8 disfrazado])
| 2021-06
| 2029-05
| https://github.com/geerlingguy/docker-rockylinux8-ansible/actions?query=workflow%3ABuild[image:https://github.com/geerlingguy/docker-rockylinux8-ansible/workflows/Build/badge.svg?branch=master[CI]]
| Rocky
| Rocky Linux 9
| 2022-07
| 2032-05
| https://github.com/geerlingguy/docker-rockylinux9-ansible/actions?query=workflow%3ABuild[image:https://github.com/geerlingguy/docker-rockylinux9-ansible/workflows/Build/badge.svg?branch=master[CI]]
// https://endoflife.date/fedora (13 meses)
| RedHat
| Fedora 39
| 2023-11
| 2024-12
| https://github.com/geerlingguy/docker-fedora39-ansible/actions?query=workflow%3ABuild[image:https://github.com/geerlingguy/docker-fedora39-ansible/workflows/Build/badge.svg?branch=master[CI]]
// https://ubuntu.com/about/release-cycle
| Debian
| Ubuntu 20.04 LTS
| 2021-04
| 2025-04
| https://github.com/geerlingguy/docker-ubuntu2004-ansible/actions?query=workflow%3ABuild[image:https://github.com/geerlingguy/docker-ubuntu2004-ansible/workflows/Build/badge.svg?branch=master[CI]]
| Debian
| Ubuntu 22.04 LTS
| 2022-04
| 2027-04
| https://github.com/geerlingguy/docker-ubuntu2204-ansible/actions?query=workflow%3ABuild[image:https://github.com/geerlingguy/docker-ubuntu2204-ansible/workflows/Build/badge.svg?branch=master[CI]]
// https://wiki.debian.org/DebianReleases
// https://wiki.debian.org/LTS
| Debian
| Debian 11
| 2021-08
| 2024-06 (2026-06 LTS)
| https://github.com/geerlingguy/docker-debian11-ansible/actions?query=workflow%3ABuild[image:https://github.com/geerlingguy/docker-debian11-ansible/workflows/Build/badge.svg?branch=master[CI]]
| Debian
| Debian 12
| 2023-06
| 2026-06 (2028-06 LTS)
| https://github.com/geerlingguy/docker-debian12-ansible/actions?query=workflow%3ABuild[image:https://github.com/geerlingguy/docker-debian12-ansible/workflows/Build/badge.svg?branch=master[CI]]
|===
[[tested-ansible-versions]]
== 🧪 Versiones de Ansible probadas
Las versiones de Ansible probadas intentan mantenerse equivalentes al
https://github.com/ansible-collections/community.general#tested-with-ansible[
patrón de soporte de la colección `community.general` de Ansible].
Hasta la fecha de redacción es:
* 2.13 (Ansible 6)
* 2.14 (Ansible 7)
* 2.15 (Ansible 8)
* 2.16 (Ansible 9)
[[development]]
== 📝 Desarrollo
// Insignias sobre Convenciones en este Proyecto
https://conventionalcommits.org[image:https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg[Commits Convencionales]]
https://results.pre-commit.ci/latest/github/JonasPammer/ansible-role-bootstrap/master[image:https://results.pre-commit.ci/badge/github/JonasPammer/ansible-role-bootstrap/master.svg[estado de pre-commit]]
// image:https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white[pre-commit, link=https://github.com/pre-commit/pre-commit]
[[development-system-dependencies]]
=== 📌 Dependencias de la Máquina de Desarrollo
* Python 3.10 o mayor
* Docker
[[development-dependencies]]
=== 📌 Dependencias del Desarrollo
Las dependencias de desarrollo se definen en un
https://pip.pypa.io/en/stable/user_guide/#requirements-files[archivo de requisitos de pip]
llamado `requirements-dev.txt`.
A continuación se muestran instrucciones de instalación de ejemplo para Linux:
----
# "opcional": crea un entorno virtual de python y actívalo para la sesión de shell actual
$ python3 -m venv venv
$ source venv/bin/activate
$ python3 -m pip install -r requirements-dev.txt
----
[[development-guidelines]]
=== ℹ️ Directrices de Desarrollo de Roles de Ansible
Por favor echa un vistazo a mis https://github.com/JonasPammer/cookiecutter-ansible-role/blob/master/ROLE_DEVELOPMENT_GUIDELINES.adoc[
Directrices de Desarrollo de Roles de Ansible].
Si estás interesado, también he escrito algunas
https://github.com/JonasPammer/cookiecutter-ansible-role/blob/master/ROLE_DEVELOPMENT_TIPS.adoc[
Prácticas Generales de Desarrollo de Roles de Ansible (Mejores Prácticas)].
[[versioning]]
=== 🔢 Versionado
Las versiones se definen utilizando https://git-scm.com/book/en/v2/Git-Basics-Tagging[Etiquetas],
que a su vez son https://galaxy.ansible.com/docs/contributing/version.html[reconocidas y utilizadas] por Ansible Galaxy.
*Las versiones no deben comenzar con `v`.*
Cuando se empuja una nueva etiqueta, https://github.com/JonasPammer/ansible-role-bootstrap/actions/workflows/release-to-galaxy.yml[
un flujo de trabajo de CI de GitHub]
(image:https://github.com/JonasPammer/ansible-role-bootstrap/actions/workflows/release-to-galaxy.yml/badge.svg[CI de lanzamiento])
se encarga de importar el rol a mi cuenta de Ansible Galaxy.
[[testing]]
=== 🧪 Pruebas
Las pruebas automáticas se ejecutan en cada contribución utilizando Flujos de Trabajo de GitHub.
Las pruebas se concentran principalmente en ejecutar https://molecule.readthedocs.io/en/latest/[Molecule]
en un <<tested-distributions,variedad de distribuciones de linux>>
y usando <<tested-ansible-versions,varias versiones de Ansible>>.
La prueba de las moléculas también incluye un paso que lincea todos los playbooks de Ansible usando
https://github.com/ansible/ansible-lint#readme[`ansible-lint`]
para verificar las mejores prácticas y el comportamiento que podría mejorarse potencialmente.
Para ejecutar las pruebas, simplemente ejecuta `tox` en la línea de comandos.
Puedes pasar una variable de entorno opcional para definir la distribución del
contenedor Docker que se iniciará por la molécula:
----
$ MOLECULE_DISTRO=ubuntu2204 tox
----
Para una lista de valores posibles para `MOLECULE_DISTRO`,
mira la matriz definida en link:.github/workflows/ci.yml[].
==== 🐛 Depuración de un Contenedor de Moléculas
1. Ejecuta tus pruebas de moléculas con la opción `MOLECULE_DESTROY=never`, por ejemplo:
+
[subs="quotes,macros"]
----
$ *MOLECULE_DESTROY=never MOLECULE_DISTRO=#ubuntu1604# tox -e py3-ansible-#5#*
...
TAREA [ansible-role-pip : (redactado).] pas: [************************]
falló: [instancia-py3-ansible-9] => changed=false
...
pas: [___________________________________ resumen ____________________________________]
pre-commit: los comandos tuvieron éxito
ERROR: py3-ansible-9: comandos fallidos
----
2. Encuentra el nombre del contenedor docker provisionado por la molécula:
+
[subs="quotes"]
----
$ *docker ps*
#30e9b8d59cdf# geerlingguy/docker-debian12-ansible:latest "/lib/systemd/systemd" hace 8 minutos Arriba hace 8 minutos instancia-py3-ansible-9
----
3. Ingresa a un Shell bash del contenedor y haz tu depuración:
+
[subs="quotes"]
----
$ *docker exec -it #30e9b8d59cdf# /bin/bash*
root@instance-py3-ansible-2:/#
----
+
[PUNTO]
====
Si el fallo que intentas depurar es parte de tu paso `verify.yml` y no de `converge.yml`,
puedes querer saber que la salida de los módulos de ansible (`vars`), hosts (`hostvars`) y
variables de entorno se han almacenado en archivos tanto en el provisionador como dentro de la máquina docker en:
* `/var/tmp/vars.yml` (contiene variables de host bajo la clave `hostvars`)
* `/var/tmp/environment.yml`
¡Usa `grep`, `cat` o transfieres los archivos como desees!
====
+
[PUNTO]
=====
También puede ser útil saber que los archivos mencionados en la advertencia anterior
se adjuntan a los * artefactos de CI de GitHub * de una ejecución de flujo de trabajo determinada. +
Esto permite revisar la diferencia entre las ejecuciones
y así ayudar en la depuración de lo que causó la falla o degradado en general.
image::https://user-images.githubusercontent.com/32995541/178442403-e15264ca-433a-4bc7-95db-cfadb573db3c.png[]
=====
4. Después de terminar tu depuración, sal y destruye el contenedor:
+
[subs="quotes"]
----
root@instance-py3-ansible-2:/# *exit*
$ *docker stop #30e9b8d59cdf#*
$ *docker container rm #30e9b8d59cdf#*
_o_
$ *docker container prune*
----
==== 🐛 Depuración de versiones de paquetes instalados localmente
Aunque es una característica estándar en tox 3, esto https://github.com/tox-dev/tox/pull/2794[ahora] solo sucede cuando tox reconoce la presencia de una variable de CI.
Por ejemplo:
----
$ CI=true tox
----
[[development-container-extra]]
=== 🧃 PUNTO: Entorno de Desarrollo Ideal Contenerizado
Este proyecto ofrece una definición para un "Entorno de Desarrollo Contenerizado con 1 clic".
Este contenedor incluso permite ejecutar contenedores docker dentro de él (Docker-In-Docker, dind),
lo que permite la ejecución de moléculas.
Para usarlo:
1. Asegúrate de cumplir con los link:https://code.visualstudio.com/docs/remote/containers#_system-requirements[
requisitos del sistema de los Contenedores de Desarrollo de Visual Studio Code],
opcionalmente siguiendo la sección __Instalación__ de la página vinculada. +
Esto incluye: instalar Docker, instalar Visual Studio Code y
instalar la extensión necesaria.
2. Clona el proyecto en tu máquina
3. Abre la carpeta del repositorio en Visual Studio Code (_Archivo - Abrir Carpeta…_).
4. Si recibes un aviso en la esquina inferior derecha informándote sobre la presencia de la definición del devcontainer,
puedes presionar el botón adjunto para entrar en ella.
*De lo contrario,* también puedes ejecutar el comando de Visual Studio `Remote-Containers: Open Folder in Container` tú mismo (_Vista - Paleta de Comandos_ -> _escribe el comando mencionado_).
[PUNTO]
====
Recomiendo utilizar `Remote-Containers: Rebuild Without Cache and Reopen in Container`
de vez en cuando, ya que la función devcontainer a veces presenta problemas para reconocer
cambios realizados en su definición correctamente.
====
[NOTA]
=====
Es posible que debas configurar tu sistema anfitrión para permitir que el contenedor use tus claves SSH/GPG.
El procedimiento está descrito en https://code.visualstudio.com/remote/advancedcontainers/sharing-git-credentials[
en la documentación oficial del devcontainer bajo "Compartiendo credenciales de Git con tu contenedor"].
=====
[[cookiecutter]]
=== 🍪 CookieCutter
Este proyecto debe mantenerse sincronizado con
https://github.com/JonasPammer/cookiecutter-ansible-role[el CookieCutter del que fue modelado originalmente]
usando https://github.com/cruft/cruft[cruft] (si es posible) o alteración manual (de ser necesario)
en la mejor medida posible.
.Ejemplo oficial de uso de `cruft update`
____
image::https://raw.githubusercontent.com/cruft/cruft/master/art/example_update.gif[Ejemplo oficial de uso de `cruft update`]
____
==== 🕗 Registro de Cambios
Cuando se empuja una nueva etiqueta, un lanzamiento adecuado de GitHub será creado
por el mantenedor del repositorio para proporcionar un registro de cambios humano con un título y descripción.
[[pre-commit]]
=== ℹ️ Convenciones Generales de Linting y Formato
Las convenciones generales de linting y formato son
https://stackoverflow.blog/2020/07/20/linters-arent-in-your-way-theyre-on-your-side/[*sostenidas automáticamente* a estándares]
por varios https://pre-commit.com/[módulos `pre-commit`], al menos hasta cierto punto.
La ejecución automática de pre-commit se realiza en cada contribución utilizando
https://pre-commit.ci[`pre-commit.ci`]<<note_pre-commit-ci,*>>.
Las solicitudes de extracción incluso se corrigen automáticamente por la misma herramienta,
al menos a través de ganchos que alteran archivos automáticamente.
[NOTA]
====
Para no confundir:
Aunque algunos ganchos de pre-commit pueden ser capaces de advertirte sobre fallos de análisis de scripts en sintaxis o incluso en el código hasta cierto punto (por lo que los ganchos de pre-commit son *parte* de la suite de pruebas),
pre-commit en sí no ejecuta ninguna suite de pruebas real.
Para obtener información sobre pruebas, consulta <<testing>>.
====
[PUNTO]
====
[[note_pre-commit-ci]]
Sin embargo, te recomiendo que integres pre-commit en tu flujo de trabajo de desarrollo local por tu cuenta.
Esto se puede hacer ingresando en el directorio de tu proyecto clonado y ejecutando `pre-commit install`.
Hacer esto hará que git ejecute comprobaciones de pre-commit en cada confirmación que realices,
abandonando la confirmación si algún gancho falla.
También puedes, por ejemplo, ejecutar los ganchos de pre-commit en cualquier momento ejecutando `pre-commit run --all-files`.
====
== 💪 Contribuciones
https://open.vscode.dev/jonaspammer/ansible-role-bootstrap[image:https://img.shields.io/static/v1?logo=visualstudiocode&label=&message=Open%20in%20Visual%20Studio%20Code&labelColor=2c2c32&color=007acc&logoColor=007acc[Abre en Visual Studio Code]]
image:https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square[Pull Requests Bienvenidos]
// Incluido en README.adoc
:toc:
:toclevels: 3
Las siguientes secciones son de naturaleza genérica y están destinadas a ayudar a nuevos contribuyentes.
La "Documentación de Desarrollo" real de este proyecto se encuentra bajo <<development>>.
=== Preámbulo
Primero que nada, gracias por considerar contribuir a este proyecto.
Seguir estas pautas ayuda a comunicar que respetas el tiempo de los desarrolladores que gestionan y desarrollan este proyecto de código abierto.
A cambio, deberían reciprocitar ese respeto al abordar tu problema, evaluar cambios y ayudarte a finalizar tus pull requests.
[[cookiecutter--contributing]]
=== 🍪 CookieCutter
Este proyecto debe muchos de sus archivos a
https://github.com/JonasPammer/cookiecutter-ansible-role[el CookieCutter del que fue modelado originalmente].
Por favor verifica si la edición que tienes en mente es realmente aplicable a la plantilla
y si es así, realiza un cambio adecuado allí.
Tu cambio también puede ser aplicable parcialmente a la plantilla
así como parcialmente a algo específico de este proyecto,
en cuyo caso estarías creando múltiples PRs.
=== 💬 Commits Convencionales
Un contribuyente casual no tiene que preocuparse por seguir
https://github.com/JonasPammer/JonasPammer/blob/master/demystifying/conventional_commits.adoc[__la especificación__]
https://www.conventionalcommits.org/en/v1.0.0/[__por definición__],
ya que los pull requests se combinan en una sola confirmación en el proyecto.
Solo los colaboradores principales, es decir, aquellos con derechos para realizar push a las ramas de este proyecto, deben seguirla
(por ejemplo, para permitir que la determinación automática de versiones y la generación de registros de cambios funcione).
=== 🚀 Comenzando
Las contribuciones se realizan a este repositorio a través de Problemas y Pull Requests (PRs).
Algunas pautas generales que cubren ambos:
* Busca problemas y PRs existentes antes de crear el tuyo.
* Si nunca has contribuido antes, consulta https://auth0.com/blog/a-first-timers-guide-to-an-open-source-project/[
la guía para principiantes en el blog de Auth0] para recursos y consejos sobre cómo comenzar.
==== Problemas
Los problemas deben utilizarse para informar problemas, solicitar nuevas características, o para discutir cambios potenciales *antes* de crear un PR.
Cuando https://github.com/JonasPammer/ansible-role-bootstrap/issues/new[
creas un nuevo problema], se cargará una plantilla que te guiará a través de la recopilación y provisión de la información que necesitamos para investigar.
Si encuentras un problema que aborde el problema que estás teniendo,
por favor agrega tu propia información de reproducción al problema existente *en lugar de crear uno nuevo*.
Agregar una https://github.blog/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/[reacción]
también puede ayudar a indicar a nuestros mantenedores que un problema particular está afectando a más que solo al reportante.
==== Pull Requests
Los PRs a este proyecto siempre son bienvenidos y pueden ser una forma rápida de que tu arreglo o mejora se incluya en la siguiente versión.
https://blog.ploeh.dk/2015/01/15/10-tips-for-better-pull-requests/[En general], los PRs deben:
* Solo arreglar/agregar la funcionalidad en cuestión *O* abordar problemas de estilo/espacios en blanco ampliamente difundidos, no ambos.
* Agregar pruebas unitarias o de integración para la funcionalidad fijada o cambiada (si ya existe una suite de pruebas).
* *Abordar una sola preocupación*
* *Incluir documentación* en el repositorio
* Ser acompañados por una completa plantilla de Pull Request (cargada automáticamente cuando se crea un PR).
Para cambios que aborden funcionalidades principales o que requieran cambios disruptivos (por ejemplo, un lanzamiento importante),
es mejor abrir un problema para discutir tu propuesta primero.
En general, seguimos el flujo de trabajo de Git de "fork-and-pull":
1. Haz un fork del repositorio en tu propia cuenta de Github
2. Clona el proyecto en tu máquina
3. Crea una rama localmente con un nombre breve pero descriptivo
4. Realiza modificaciones en la rama
5. Siguiendo cualquier pauta de formato y pruebas específica de este repositorio
6. Sube los cambios a tu fork
7. Abre un PR en nuestro repositorio y sigue la plantilla de PR para que podamos revisar los cambios de manera eficiente.
[[changelog]]
== 🗒 Registro de Cambios
Por favor consulta la
https://github.com/JonasPammer/ansible-role-bootstrap/releases[Página de Lanzamientos de este Repositorio]
para un registro de cambios humano correspondiente a las
https://github.com/JonasPammer/ansible-role-bootstrap/tags[Etiquetas (Versiones) de este Proyecto].
Ten en cuenta que este proyecto sigue el versionado semántico.
Por favor informa sobre cualquier cambio accidental que rompa la compatibilidad de una actualización de versión menor.
== ⚖️ Licencia
.link:LICENSE[]
----
Licencia MIT
Copyright (c) 2022, Jonas Pammer
Por la presente se concede permiso, de forma gratuita, a cualquier persona que obtenga una copia
de este software y los archivos de documentación asociados (el "Software"), para tratar
el Software sin restricción, incluyendo sin limitación los derechos a usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar, y/o vender
copias del Software, y permitir a las personas a quienes se les proporcione el Software hacer lo mismo, sujeto a las siguientes condiciones:
El aviso de copyright anterior y este aviso de permiso se incluirán en todas
las copias o partes sustanciales del Software.
EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPLÍCITA O IMPLÍCITA, INCLUYENDO PERO NO LIMITÁNDOSE A LAS GARANTÍAS DE COMERCIALIZACIÓN,
ADECUACIÓN A UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS
AUTORES O TITULARES DE LOS DERECHOS DE AUTOR SERÁN RESPONSABLES POR CUALQUIER RECLAMO, DAÑOS O CUALQUIER OTRA
RESPONSABILIDAD, YA SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIO O DE CUALQUIER OTRA MANERA, QUE SURJA DE, FUERA O EN CONEXIÓN CON EL SOFTWARE O EL USO O CUALQUIER OTRO TRATO EN EL SOFTWARE.
----
Acerca del proyecto
An ansible role for preparing a linux system to be managed by ansible. Based on robertdebock's role.
Instalar
ansible-galaxy install jonaspammer.bootstrap
Licencia
mit
Descargas
171.6k
Propietario
DevOps is just FullStack with one additional layer