Я хочу использовать Fabric для развертывания кода веб-приложения на серверах разработки, промежуточного уровня и производства. Мой файл:
def deploy_2_dev():
deploy('dev')
def deploy_2_staging():
deploy('staging')
def deploy_2_prod():
deploy('prod')
def deploy(server):
print 'env.hosts:', env.hosts
env.hosts = [server]
print 'env.hosts:', env.hosts
Пример вывода:
host:folder user$ fab deploy_2_dev
env.hosts: []
env.hosts: ['dev']
No hosts found. Please specify (single) host string for connection:
Когда я создаю задачу set_hosts()
, как показано в Fabric docs, env.hosts устанавливается правильно. Однако это не жизнеспособный вариант, и не декоратор. Передача хостов в командной строке в конечном итоге приведет к какой-то оболочке script, которая вызывает fabfile, я бы предпочел, чтобы один инструмент правильно выполнял работу.
В документах Fabric говорится, что "env.hosts - это просто объект списка Python". Из моих наблюдений это просто неверно.
Может ли кто-нибудь объяснить, что здесь происходит? Как установить хост для развертывания?