У меня есть задача с аргументами. Я хотел бы запустить эту задачу на группе хостов с другим аргументом задачи в зависимости от хоста из другого скрипта Python.
Комментарий внутри execute
говорит о том, чтобы реализовать его в соответствии с руководством. Можно ли получить ссылку на этот урок? И если я заставлю его работать/заставлю его работать с передаваемыми аргументами, будет ли это долгожданным запросом на извлечение?
Я думаю, что это ближе всего к учебнику по Fabric 2: http://docs.fabfile.org/en/stable/getting_started.html.
Я хотел бы запустить эту задачу на группе хостов с другим аргументом задачи в зависимости от хоста из другого скрипта Python.
Не зная вашего точного варианта использования и отмечая, что Group еще не очень хорошо конкретизирована (основное внимание уделялось приведению Connection в хорошую форму), я укажу, что _до сих пор_ Group была задумана как API-интерфейс для удобства/оболочки только - это обычный случай: «Я даю вам список имен хостов и то, что нужно сделать, и вы делаете это для меня, и мне не нужно писать свой собственный цикл».
Для чего-то более сложного идея заключается в том, что все равно должно быть довольно легко сделать это самостоятельно, используя соединения, созданные вручную, в любой конструкции Python, соответствующей вашему варианту использования (итерации и т. д.). Таким образом, в этом случае у вас будет «мета» задача, выполняющая что-то вроде for hostname, kwargs in my_map_of_hostnames_to_kwargs.items(): othertask(Connection(hostname), **kwargs)
.
(Это по-прежнему оставляет pyinvoke/invoke # 170 или, что менее вероятно, # 4, но на данный момент оба они обходимы.)
Если вы предоставите подробную информацию о варианте использования, возможно, один из нас сможет уточнить.
Re: учебник: да, страница «Начало работы» — это учебник, конкретный бит, который притворяется, что знает о Group.execute, — http://docs.fabfile.org/en/v2/getting_started.html#bringing -it-all -вместе - но, как и выше, поведение еще не очень продумано!
Большое спасибо за этот учебник v2. Я нашел его источник на GitHub, но не стал его читать.
cxn = Connection(host)
— ключевой бит, который мне не хватало; части учебника, которые я нашел, не упоминали, что такое cxn, и я не копался достаточно, чтобы понять, что это просто соединение.
Я уже написал код, который мне был нужен, когда я опубликовал это, используя порт Fabric3, но с намерением перейти на v2, как только он появится на PyPi. Спасибо за ваше время, ребята!
Изменить: это может помочь будущим потенциальным пользователям, если вы добавите ссылку на этот учебник v2 в README здесь. Я бы запросил это, но это кажется слишком большим для изменения одной строки: p
Может не host
будет автоматически загружены из fabric.json
конфигурационного файла вместо передачи его в -D
аргумента в командной строке?
Эта функция крайне необходима для Fabric2. Есть идеи, когда он будет объединен?
Самый полезный комментарий
Эта функция крайне необходима для Fabric2. Есть идеи, когда он будет объединен?