Python Fabric部署脚本结构和语义

时间:2017-02-22 19:44:36

标签: python python-2.7 fabric

我正在尝试编写一个基本的Python Fabric部署脚本,并且我有一些初级问题。

以下是我目前的fabfile.py(根据此example修改):

#!/usr/bin/env python

from fabric.api import *
import socket
import paramiko

env.roledefs = {'dev':['server.domain.tld']}

@task
@roles("dev")
def print_contents():
    echo("Printing working directory contents:\n")
    run("ls")

@task
@roles("dev")
def update_upgrade():
    """ Update the default OS installation's basic default tools. """
    sudo("sudo apt-get update")
    sudo("apt-get -y upgrade")

@task
@roles("dev")
def install_memcached():
    """ Download and install memcached. """
    sudo("apt-get install -y memcached")

@task
@roles("dev")
def deploy():
    print_contents()
    # Update
    update_upgrade()
    # Install
    install_memcached()

问题:

  1. 我需要import socketimport paramiko吗?
  2. 我不打算直接调用函数print_contents()update_upgrade()install_memcached() - 它们只会在deploy()函数中调用。每个函数都需要成为@task装饰器的任务吗?
  3. 由于这是Fabric部署脚本,最终任务是否需要调用deploy()?或者我们可以使用该功能的任何其他名称,例如。 update_all()

0 个答案:

没有答案