Questions tagged «fabric»

9
通过架构以部署用户身份激活virtualenv
我想在本地运行我的结构脚本,这将依次登录到我的服务器,切换用户以进行部署,激活项目.virtualenv,这将把dir更改为项目并发出git pull。 def git_pull(): sudo('su deploy') # here i need to switch to the virtualenv run('git pull') 我通常使用来自virtualenvwrapper的workon命令,该命令提供激活文件,后激活文件会将我放在项目文件夹中。在这种情况下,似乎因为结构是在shell中运行的,所以控制权移交给了结构,所以我不能将bash的源内置到'$ source〜/ .virtualenv / myvenv / bin / activate'中。 有人举一个例子,并解释他们如何做到这一点吗?

5
将参数传递给结构任务
从命令行调用“ fab”时,如何将参数传递给Fabric任务?例如: def task(something=''): print "You said %s" % something $ fab task "hello" You said hello Done. 是否可以在没有提示的情况下执行此操作fabric.operations.prompt?
123 python  fabric 

15
如何在Fabric文件中设置目标主机
我想使用Fabric将我的Web应用程序代码部署到开发,登台和生产服务器。我的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: 当我创建Fabric文档中set_hosts()所示的任务时,env.hosts设置正确。但是,这不是一个可行的选择,装饰器也不是。在命令行上传递主机最终会导致某种形式的shell脚本调用fabfile,我更愿意使用一个工具来正确完成这项工作。 它在Fabric文档中说“ env.hosts仅仅是Python列表对象”。根据我的观察,这根本不是事实。 谁能解释这是怎么回事?如何设置要部署到的主机?
107 python  host  fabric 


7
Fabric收到错误时如何继续执行任务
当我定义一个任务在多个远程服务器上运行时,如果该任务在一个服务器上运行并退出并出现错误,Fabric将停止并中止该任务。但我想让Fabric忽略该错误并在下一台服务器上运行该任务。我怎样才能做到这一点? 例如: $ fab site1_service_gw [site1rpt1] Executing task 'site1_service_gw' [site1fep1] run: echo 'Nm123!@#' | sudo -S route [site1fep1] err: [site1fep1] err: We trust you have received the usual lecture from the local System [site1fep1] err: Administrator. It usually boils down to these three things: [site1fep1] err: [site1fep1] err: #1) Respect …
94 python  fabric 

4
如何在没有错误的情况下git commit什么?
我正在尝试编写一个执行脚本git commit;但是,如果没有要提交的内容,则git会退出,状态为1。部署脚本将其视为不成功,然后退出。我确实想检测实际要提交的故障,因此我不能仅仅给Fabric全面忽略git commit故障。如何允许忽略空提交故障,以便部署可以继续进行,但仍然可以捕获实际提交失败时导致的错误? def commit(): local("git add -p && git commit")
91 python  git  fabric 

4
使用Fabric时连接到〜/ .ssh / config中列出的主机
我Fabric无法识别自己所在的主机时遇到了麻烦~/.ssh/config。 我fabfile.py的如下: from fabric.api import run, env env.hosts = ['lulu'] def whoami(): run('whoami') 运行$ fab whoami给出: [lulu]跑:whoami 致命错误:lulu的名称查找失败 名称lulu在my中~/.ssh/config,如下所示: Host lulu hostname 192.168.100.100 port 2100 IdentityFile ~/.ssh/lulu-key 我首先想到的解决,这是添加类似lulu.lulu以/etc/hosts(我在Mac),但后来我也必须通过在身份文件面料-我宁愿让我的认证(即~/.ssh/config)从我的部署分开(即fabfile.py)。 同样,顺便说一句,如果您尝试连接到hosts文件中的主机,fabric.contrib.projects.rsync_project似乎并不会在中确认“端口” hosts.env(即,如果您使用hosts.env = [lulu:2100]调用rsync_project似乎尝试连接到lulu:21)。 Fabric是否无法识别此lulu名称?
83 python  ssh  fabric 

4
如何使用Fabric将目录复制到远程计算机?
我在本地计算机上有一个目录,我想使用Fabric将其复制到远程计算机上(并重命名)。我知道我可以使用复制文件put(),但是目录呢。我知道使用scp很容易,但是fabfile.py如果可能的话,我宁愿在我内部进行。
79 python  fabric 

4
在远程Shell中使用Fabric进行run()调用时,能否捕获错误代码?
通常,只要run()调用返回非零退出代码,Fabric就会退出。但是,对于某些电话,这是预期的。例如,当PNGOut无法压缩文件时,它将返回错误代码2。 目前,我只能通过使用shell逻辑(do_something_that_fails || true或do_something_that_fails || do_something_else)来规避此限制,但我希望能够将逻辑保留在纯Python中(Fabric承诺)。 有没有一种方法可以检查错误代码并对错误代码做出反应,而不是让Fabric死机而死?我仍然希望其他呼叫具有默认行为,因此通过修改环境来更改其行为似乎不是一个好选择(据我所知,您只能使用它来警告它而不是死亡)。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.