2013-11-22 7 views
21

私はAnsibleを使用しています。私はgitモジュールを動作させるのに苦労しています。 私は同じ問題を抱えている人々のいくつかの記事を読んでいます。私は責任ある文書を見ました。 gitを使うまでは、私が辿った明確なチュートリアルが見つかりましたが、私のリポジトリを使用すると問題が発生します.../ gitタスクがハングするだけです...エラーはありません。ここでaordin:gitモジュールがぶら下がっています

は、私のホストファイルです:

[web] 
dev1 ansible_ssh_host=10.0.0.101 ansible_ssh_user=root 

これはVMが自分のコンピュータ上のVirtualBox上で実行されている浮浪者です。

私はこのチュートリアルから脚本を取り、ステップ08まで、すべての手順をした:https://github.com/leucos/ansible-tuto/tree/master/step-08

私はその後、私は1つのタスク私のリポジトリを使用するには、「私のコードのデプロイ」を追加し、それが正常に動作し、私のVM上でそれを実行します...しかし、この作業は機能しません。これはbitbucketのプライベートレポジトリです。違いはありますか?

- hosts: web 
    tasks: 

    - name: Deploy our awesome application 
     action: git repo=https://github.com/leucos/ansible-tuto-demosite.git dest=/var/www/awesome-app 
     tags: deploy 

    - name: Deploy my code 
     action: git repo=https://[email protected]/YAmikep/djangotutorial.git dest=/var/www/my-app 
     tags: deploy 

は、ユーザーとの何かがあるかもしれません、またはユーザーがなど、ansible実行している、またはキーが、私は時間の前後にしようと、私はもっと今混乱しています...私は知りません今すぐデバッグして、何が間違っていて、何が欠けているのかを調べるにはどうすればいいですか?

ありがとうございました。

+1

非常に厳しいファイアウォールの背後にいない限り(22 outbound、yepなし)、HTTPSを使ってgit reposにアクセスすることは個人的にはお勧めできません。これは、大きなコミットを押すときに問題を引き起こす可能性があります。これは、HTTPプロキシ設定に悪い影響を与える可能性があります。もちろん、あなたのレポだけでなく、パスワードもクリアテキストで保存します。 ssh秘密鍵は、十分な時間だけ遠隔ホストにエージェント転送される方が望ましい。 – spacediver

+4

一般的な注意として。 'https:// github.com/account/repo-name.git' **という構文は、Ansibleタスクの配備キーでは動作しません**。しかし、構文 '[email protected]:account/repo-name.git' **は、有効な配備キーを持つ危険な作業で**動作します。構文は微妙ですが、注意することが重要です。 – avelis

+1

@avelisあなたのコメントは今日私を助けました。 'https'から' git'にURLを変更しました – sankargorthi

答えて

7

ユーザーがパスワードを要求した場合、gitモジュールはハングする可能性がありますが、git実行可能ファイルはバックグラウンドでプロンプトを表示します。 repoパラメータにはhttps://YAmikep:{yourpassword}@bitbucket.org/YAmikep/djangotutorial.gitを使用してみてください。または、git/sshキーを代わりに使用して、パスワードを必要としないようにしてください。

+1

私はsshキーとsshエージェントを使用していますが、私はこのチュートリアルに従っています:http://www.stavros.io/posts/example-provisioning-and-deployment-それは特定の作成されたユーザーとはうまく動作しません...私はgitの仕事をすることができますが、プロジェクトのために作成されたユーザーはできません。 – Michael

+0

@YAmikep - '[email protected]:YAmikep/djangotutorial.git'のレポアドレスで試しましたか?上記の例では、HTTPSプロトコルを使用しています。これにより、Bitbucketはキーを使用する代わりにパスワードの入力を求めるプロンプトを表示します。 Github 1は正常に機能しますが、BitbucketはYAmikepの資格を必要とします。 – mragh

+0

ユーザ名とパスワードは正しいが、それでも私は認証に失敗した。 –

3

私はこれに遭遇しました。私のケースでは、ホスト(bitbucket.org)の新しいsshキーを確認する際にgitがハングアップします。これはsshknownhostsモジュールで解決できます。これは、gitの前に実行され、ホストで.ssh/known_hostsを設定するため、その後gitを実行する必要はありません。

セキュリティ上の問題が発生する可能性があるので、モジュールのマニュアルを読んでください。

+1

これは私のためにぶら下がっているgitの問題を解決しました。 'sshknownhosts'は私のためには機能しませんでしたが、これはそうでした:https://github.com/brycebaril/ansible-known_hosts – mahemoff

+0

nice!答えを受け入れることを自由に感じてください;)UPD。まあ、あなたはTS%ではありません) – spacediver

+1

私はできればしたい! – mahemoff

3

fwiw私はこれも明らかに、複数のsshエージェント(osxクライアント)を実行しています。

のkillall ssh-agentの& &にeval `sshの-agent` & &のssh-追加-K

11

ありgitのモジュールがハングする可能性がある理由のカップルがありますが、によって固定 ほとんどの場合、git cloneコマンドは、サーバーの既知のホストにホストキーを追加する必要がある場合、確認を待機しています。これが問題かどうかを確認するには、--verboseフラグを使用して実行して、詳細モードで実行するようにします。これにより、エラーに関する詳細情報が表示されます。

あなたが知られているホストが問題であり、その後、次の2つの選択肢があることを確認した場合:gitモジュールはaccept_hostkeyパラメータを使用してこの問題を回避するために

ソリューション1を。

- name: ensure jquery repo is available 
    git: [email protected]:jquery/jquery.git version=master accept_hostkey=True 

溶液2

コアgitモジュールを使用する前にansible-sshknownhostsサードパーティのモジュールを使用する:

- name: ensure github is a known host 
    action: sshknownhosts host=github.com state=present 

- name: ensure jquery repo is available 
    git: [email protected]:jquery/jquery.git version=master accept_hostkey=True 

knownhostsコアansibleモジュールではないので、最初にインストールする必要があります。詳しくは、github repo docsを参照してください。情報honそれをインストールする方法。


別の解決策は、あなたが本当にあなたがそれをやっているのか分からない限りは、これを避けるために最善であるので、sshのホスト鍵チェックを無効にするが、これはセキュリティの意味を持っていることであろう。

+0

'action:sshknownhosts'は' sshknowhosts:host = ... 'と書かれますか? – chicks

+0

'accept_hostkey'フラグは私のためには機能しません。 '-o StrictHostKeyChecking = no'を' ssh_opts'に追加しました。 – chishaku

10

私は基本的にすべてを受け入れました(鍵を受け入れる、sshの設定を変更する、known_hostsファイル、ssh-agent転送、それ以外のものを忘れてしまった)。

私の髪の毛をすべて引っ張ってしまえば、私は最終的にSSH 秘密鍵がパスフレーズを必要とするかもしれないという事実に問題を釘付けにしました!

ローカルのsshエージェントがキーリングを格納したパスフレーズを使用して処理したため、すべてがローカルで機能するため、以前は気づいていませんでした。悪意のある仮想マシンでAnsibleを使用すると、このメカニズムは利用できず、パスフレーズが入力されるのを待ってgitモジュールが立ち往生しました。可能性のある原因が分かったら、パスフレーズのない特別な鍵ペアを作成し(セキュリティの側面はわかりましたか?)、公開鍵をbitbucket(/ github /いずれか)に追加しました。この特定のキーを使用すると、物事は円滑に進みました。

+0

これは命を救う人です! – physicalattraction

+0

正確には^(これは私に多くの時間を節約しました) – Benz

+0

どのようにpsswordlessキーを作成しますか?私は空白のパスワードを使用しようとしましたが、まだ停止しています(おそらく、誰かがEnterキーを押すのを待っています)。 –

関連する問題