Я хочу использовать Fabric для развертывания кода моего веб-приложения на серверах разработки, тестирования и производства. Мой fabfile:
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 , env.hosts устанавливается правильно. Однако это нежизнеспособный вариант, как и декоратор. Передача хостов в командной строке в конечном итоге приведет к созданию какого-то сценария оболочки, который вызывает fabfile, я бы предпочел, чтобы один единственный инструмент выполнял эту работу должным образом.
В документации Fabric говорится, что «env.hosts - это просто объект списка Python». По моим наблюдениям, это просто неправда.
Кто-нибудь может объяснить, что здесь происходит? Как я могу настроить хост для развертывания?