Как дождаться перезагрузки сценария оболочки в Fabric 2 - PullRequest
1 голос
/ 22 мая 2019

Я использую Fabric 2 и пытаюсь запустить скрипт оболочки на нескольких хостах последовательно. В скрипте он настраивает несколько параметров и перезагружает этот хост. Однако, когда я запускаю свою задачу, она заканчивается после запуска сценария на первом хосте (я предполагаю, что соединение SSH завершается из-за перезагрузки). Я попытался установить для параметра warn_only значение True, но не вижу, где установить это значение в Fabric 2.

Добавление:

with settings(warn_only=True):

выдает ошибку «NameError: глобальное имя« настройки »не определены».

Существует ли правильный формат warn_only? Если это невозможно в Fabric 2, есть ли способ продолжить выполнение моей задачи независимо от этой перезагрузки?

Мой сценарий:

from fabric import *
import time
import csv

@task
def test(ctx):

    hosts = ['1.1.1.1', '2.2.2.2']

    for host in hosts:
        c = Connection(host=host, user="user", connect_kwargs={"password": "password"})

        c.run("./shell_script.sh")

        configured = False

        while not configured:
            result = c.run("cat /etc/hostname")
            if result != "default": configured = True
            time.sleep(10)

1 Ответ

0 голосов
/ 23 мая 2019

Таким образом, существует обходной путь для запуска задачи с флагом -w, который включит warn_only и даст мне желаемую функциональность.Хотя было бы предпочтительнее установить это свойство в коде.

...