Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
otros:fabric [2013/08/25 17:01] alfred [Tareas complejas] |
otros:fabric [2020/05/09 09:25] (actual) |
||
|---|---|---|---|
| Línea 106: | Línea 106: | ||
| </code> | </code> | ||
| Ejecutará ''get_versión'' únicamente en los hosts: www1, www2, www3, www4, www5, nas1 y nas2. | Ejecutará ''get_versión'' únicamente en los hosts: www1, www2, www3, www4, www5, nas1 y nas2. | ||
| + | |||
| + | ==== Gestión de errores ==== | ||
| + | <code python> | ||
| + | def test(): | ||
| + | with settings(warn_only=True): | ||
| + | result = local('./manage.py test my_app', capture=True) | ||
| + | if result.failed and not confirm("Tests failed. Continue anyway?"): | ||
| + | abort("Aborting at user request.") | ||
| + | </code> | ||
| ===== Ejemplos ===== | ===== Ejemplos ===== | ||
| ==== Copiar un directorio ==== | ==== Copiar un directorio ==== | ||
| Línea 120: | Línea 129: | ||
| </code> | </code> | ||
| + | ==== Llamadas complejas ==== | ||
| + | <code python> | ||
| + | def install(pkg=None): | ||
| + | if pkg is not None: | ||
| + | env["pkg"] = pkg | ||
| + | elif pkg is None and env.get("pkg") is None: | ||
| + | env["pkg"] = prompt("Which package? ") | ||
| + | sudo('yum install -y %s' % env["pkg"]) | ||
| + | </code> | ||
| + | <code> | ||
| + | $ fab --hosts=host1,host2,host3 install | ||
| + | $ fab --hosts=host1,host2,host3 install:pkg=wormux | ||
| + | $ fab --hosts=host1,host2,host3 install:wormux | ||
| + | $ fab --skip-bad-hosts -u user -p 12345 -i ~/.ssh/id_dsa --warn-only --hosts=host1,host2,host3,host4 --parallel --pool-size=20 install:pkg=wormux | ||
| + | </code> | ||
| + | ==== Script que ejecuta tareas según host ==== | ||
| + | * {{:otros:fabric:fabric-executing.zip|script}} | ||
| + | ===== Tips & tricks ===== | ||
| + | ==== Utilizar un fichero con los nombres de hosts ==== | ||
| + | <code python> | ||
| + | def set_hosts(): | ||
| + | env.hosts = open('hosts', 'r').readlines() | ||
| + | </code> | ||
| + | Con esta tarea pondríamos los hostnames en un fichero llamado host y podríamos lanzar nuestro fabfile así: | ||
| + | <code> | ||
| + | $ fab --skip-bad-hosts -u user -p 12345 -i ~/.ssh/id_dsa --warn-only --parallel set_hosts | ||
| + | </code> | ||
| + | |||
| + | ==== Ejecutar comandos en un directorio concreto ==== | ||
| + | Usando ''with'': | ||
| + | <code python> | ||
| + | with cd("~/gitrepo"): | ||
| + | run('git add --all') | ||
| + | run('git commit -m "My super awesome automated commit script for `date`"') | ||
| + | </code> | ||
| + | |||
| + | ==== Usar los nombres en ssh.config ==== | ||
| + | <code python> | ||
| + | from fabric.api import run, env | ||
| + | env.use_ssh_config = True | ||
| + | </code> | ||