From 3e9296b43d89547d72bd49d8f9dffb740a9ba1e8 Mon Sep 17 00:00:00 2001 From: duoduo369 Date: Thu, 24 Apr 2014 19:03:26 +0800 Subject: [PATCH] Add fabric section: config several servers. --- docs/scenarios/admin.rst | 45 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/docs/scenarios/admin.rst b/docs/scenarios/admin.rst index 85fd5b8f5..ca097b972 100644 --- a/docs/scenarios/admin.rst +++ b/docs/scenarios/admin.rst @@ -64,6 +64,51 @@ and we can deploy with: $ fab deploy +If you deploy many servers, one problem is each server has a different password, the +following code show how to config different servers. + +.. code-block:: python + + from fabric.api import * + + env.roledefs = { + 'server1': ['usename@ip1:port1',], + 'server2': ['usename@ip2:port2',], + } + + + env.passwords = { + 'usename@ip1:port1': 'password1', + 'usename@ip2:port2': 'password2', + } + + # env.password = 'xxxxxx' # if all hosts have the same password, + # use env.password for short + + COMAND = 'ls -l | wc' + + @roles('server1') + def test_remote(): + run(COMAND) + + def test_local(): + local(COMAND) + + @roles('server2') + def download(remote_path, local_path='~/download'): + get(remote_path, local_path) + + def do(): + execute(test_local) + execute(test_remote) + +And you can test with: + +.. code-block:: console + + $ fab do + $ fab download('/remote_path/to/file') + Additional features include parallel execution, interaction with remote programs, and host grouping.