3

次のファブリック スクリプトは、私が使用する必要があるオープン ソースです。残念ながら、私はこのようなものに精通していません。ファブリック ファイルは次で始まります。

from fabric.api import *
import time

env.user = 'aegir'
env.shell = '/bin/bash -c'

# Download and import a platform using Drush Make
def build_platform(site, profile, webserver, dbserver, makefile, build):
  print "===> Building the platform..."
  run("drush make %s /var/aegir/platforms/%s" % (makefile, build))

ファブリック ファイルは、新しいビルドが Git プッシュによってトリガーされると、Jenkins サーバーによって実行されます。このファイルが実行されると、この最初のリモート アクション (最後の行) で次のエラーが発生します。

/usr/lib/python2.6/getpass.py:83: GetPassWarning: Can not control echo on the terminal.
  passwd = fallback_getpass(prompt, stream)
Warning: Password input may be echoed.
Password for aegir@o1.sub.aegir.local: ===> Building the platform...
[o1.sub.aegir.local] run: drush make https://raw.github.com/mig5/builds/master/mig5_platform.build /var/aegir/platforms/20121011010955
Traceback (most recent call last):
  File "/usr/lib/pymodules/python2.6/fabric/main.py", line 435, in main
    commands[name](*args, **kwargs)
  File "/usr/local/bin/fabfile.py", line 11, in build_platform
    run("drush make %s /var/aegir/platforms/%s" % (makefile, build))
  File "/usr/lib/pymodules/python2.6/fabric/network.py", line 390, in host_prompting_wrapper
    return func(*args, **kwargs)
  File "/usr/lib/pymodules/python2.6/fabric/operations.py", line 414, in run
    channel = connections[env.host_string]._transport.open_session()
  File "/usr/lib/pymodules/python2.6/fabric/network.py", line 65, in __getitem__
    self[real_key] = connect(user, host, port)
  File "/usr/lib/pymodules/python2.6/fabric/network.py", line 219, in connect
    password = prompt_for_password(password, text)
  File "/usr/lib/pymodules/python2.6/fabric/network.py", line 279, in prompt_for_password
    new_password = getpass.getpass(password_prompt)
  File "/usr/lib/python2.6/getpass.py", line 83, in unix_getpass
    passwd = fallback_getpass(prompt, stream)
  File "/usr/lib/python2.6/getpass.py", line 118, in fallback_getpass
    return _raw_input(prompt, stream)
  File "/usr/lib/python2.6/getpass.py", line 135, in _raw_input
    raise EOFError
EOFError
Build step 'Execute shell' marked build as failure
Finished: FAILURE

aegir ユーザーなどのパスワードを指定する必要がありますか? に含めようとしましたが(リモート マシンenv.password = ''で Aegir のユーザー パスワードを削除しました) 、何も解決しませんでした。passwd --delete aegirenv.user = 'aegir'

4

3 に答える 3

2

Ssh サービスは、パスワードのないユーザーのリモート アクセスを禁止します。aegirマシン上およびファブファイル内で、ユーザーのパスワードを設定するだけです。

于 2012-10-14T10:23:26.643 に答える
1

ログインが必要です。対話を避けるために、FABRIC マシンから公開鍵をコピーして、TARGET マシンの ~/.ssh/authorized_keys に貼り付けることができます。

キーではないもの (改行の導入など) を含めたり除外したりしないように、キーをそのままコピーする必要があります。

そしてこれを行います:

chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh/*
于 2014-08-26T11:00:56.683 に答える