Unify usage of sudo() and ansible(..., become=true, become_user="...")
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
Start by tracing the sudo() context manager and the direct ansible module invocation shown in the example, then compare how explicit become and become_user arguments are handled. Done means an ansible module called inside sudo(user="root") runs as root without explicit become arguments, while the existing explicit-become behavior remains unchanged; verify this with the supplied example.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
It's possible to elevate privileges with sudo() in a context manager. This works fine.
Unfortunately, the privilege elevation does not affect the direct invocation of Ansible modules. That means Ansible modules must get elevated privileges with become=True, become_user="root" additionally even if sudo permissions are already set.
Please extend Testinfra to automatically use the elevated privileges from the sudo context manager when calling Ansible modules.
Example:
def test_sudo(host):
with open("result.txt", "w") as f:
whoami_wo_sudo = ansiblehost.check_output("id")
shell_wo_sudo = ansiblehost.ansible("shell id", check=False)
with ansiblehost.sudo(user="root"):
whoami_w_sudo = ansiblehost.check_output("id")
shell_w_sudo = ansiblehost.ansible("shell id", check=False)
shell_w_become = ansiblehost.ansible("shell id", check=False, become=True, become_user="root")
print(f"""\
Test results
============
without sudo:
OS cmd "whoami": {whoami_wo_sudo}
Ansible module "shell": {shell_wo_sudo["stdout"]}
with sudo:
OS cmd "whoami": {whoami_w_sudo}
with sudo & without become:
Ansible module "shell": {shell_w_sudo["stdout"]}
with sudo & with become:
Ansible module "shell": {shell_w_become["stdout"]}
""", file=f)
# cat result.txt
Test results
============
without sudo:
OS cmd "whoami": uid=999(ansible) gid=999(ansible) groups=999(ansible)
Ansible module "shell": uid=999(ansible) gid=999(ansible) groups=999(ansible)
with sudo:
OS cmd "whoami": uid=0(root) gid=0(root) groups=0(root)
with sudo & without become:
Ansible module "shell": uid=999(ansible) gid=999(ansible) groups=999(ansible)
with sudo & with become:
Ansible module "shell": uid=0(root) gid=0(root) groups=0(root)
- Lenguaje dominante
- Python
- Estrellas
- 2.5k
- Forks
- 360
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de pytest-dev/pytest-testinfra
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 58/100
pytest-dev/pytest-testinfra#815 ·
-
service is_enabled does not work with exit code 4Posiblemente ocupada @pfuntner la tomó hace 573 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 45/100
pytest-dev/pytest-testinfra#801 · 1 comentario ·
-
Chroot backendAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
pytest-dev/pytest-testinfra#789 · 1 comentario ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 42/100
pytest-dev/pytest-testinfra#788 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 25/100
pytest-dev/pytest-testinfra#786 ·
Todos los issues de pytest-dev/pytest-testinfra
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
btclib-org/btclib-node#2132 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
freelawproject/juriscraper#2367 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
infra tech-debt
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
docs(k8s-api-proxy): name the service-account-token Secret path in the read-write mode commentAbiertoneeds-triage
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
gke-labs/kube-agents#4190 ·
Los mantenedores suelen responder en 1 día