我正在尝试编写一个基本的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()
问题:
import socket
和import paramiko
吗?print_contents()
,update_upgrade()
和install_memcached()
- 它们只会在deploy()
函数中调用。每个函数都需要成为@task
装饰器的任务吗?deploy()
?或者我们可以使用该功能的任何其他名称,例如。 update_all()
?