3

Ansible を使用して Bitbucket からリポジトリのクローンを作成しようとすると、タスクが「ハング」したように見えます。

ドキュメントでいくつかの情報を見つけましたが、SSH を使用していません。

タスクがハングしているように見える場合は、まずリモート ホストが known_hosts にあることを確認します。SSH は、リモート ホストとの最初の接続を許可するようにユーザーに要求します。1 つの解決策は、.ssh/config に StrictHostKeyChecking no を追加して、ユーザーに代わって接続を受け入れて承認することです。ただし、たとえば、sudo を True に設定するなど、別のユーザーとして実行すると、root はユーザーの .ssh/config 設定を参照しません。

これらは、私が試した 2 つの Playbook です。どちらも「ハング」します。

ハンドブック #1

- hosts: staging_mysql
  user: ec2-user
  sudo: yes

  vars_files:
    - vars/mercurial.yml

  tasks:
    - name: Mercurial credentials setup
      action: template src=templates/hgrc.j2 dest=/home/ec2-user/.hgrc

    - name: Install Mercurial
      action: yum name=hg

    - name: Setup API repository
      action: command hg clone https://bbusername@bitbucket.org/username/my-repo -r default --debug

ハンドブック #2

- hosts: staging_mysql
  user: ec2-user
  sudo: yes

  vars_files:
    - vars/mercurial.yml

  tasks:
    - name: Mercurial credentials setup
      action: template src=templates/hgrc.j2 dest=/home/ec2-user/.hgrc

    - name: Install Mercurial
      action: yum name=hg

    - name: Clone API repo
      hg: dest=/home/ec2-user repo=https://bbusername@bitbucket.org/username/my-repo

どんな助けでも大歓迎です。前もって感謝します!

4

5 に答える 5

4

プライベートリポジトリを複製したい人にとっては、より良い答えが見つかりました。Bitbucket には「デプロイ キー」と呼ばれる機能があります。プロジェクトにログインし、[設定] と [デプロイ キー] に移動します。「キーを追加」し、hg の前に、プロジェクトのデプロイ プロセス内でこのキーを提供します。

- file: dest=/var/www/someuser/.ssh/config state=touch mode=600

- lineinfile: dest=/var/www/someuser/.ssh/config
              line="Host bitbucket.org"
              state=present

- copy: src=someuser.key dest=/var/www/someuser/.ssh/id_rsa mode=0600
- copy: src=someuser.key.pub dest=/var/www/someuser/.ssh/id_rsa.pub mode=0600


- lineinfile: dest=/var/www/someuser/.ssh/config
              line="IdentityFile ~/.ssh/id_rsa"

- lineinfile: dest=/var/www/someuser/.ssh/config
              line="    StrictHostKeyChecking no"
              insertafter="Host bitbucket.org"
              state=present

- name: install site code
  hg: repo='ssh://hg@bitbucket.org/somecode'
      dest=someuser
      revision=stable
  tags: someuser_code
于 2014-11-23T18:51:37.180 に答える
2

ssh よりも HTTPS プロトコルを使用して BitBucket にアクセスする方が簡単だと思います。BitBucket でプライベート リポジトリを使用している場合は、Ansible を使用$HOME/.hgrcしてサーバーに を作成 (またはコピー) する必要があります。

.hgrc ファイルの内容は次のとおりです。

[auth]
bb.prefix = https://bitbucket.org/{{ user }}/
bb.username = {{ user }}
bb.password = {{ password }}

2 つの追加のヒント:

  1. bbusername@BitBucket の URL を入力する必要はなくなりました。
  2. リポジトリにアクセスできる別のユーザーを BB に作成し、Ansible ホストで自分のユーザーとして設定します。誰かがあなたのサイトに侵入した場合、リポジトリを変更することはできますが、削除することはできません。すべてがバージョン管理されているため、いつでも変更をロールバックできます。
于 2013-10-03T01:00:45.553 に答える
1

このソリューションでは、ssh(https の資格情報を保存する代わりに ssh 展開キーを使用できるようにするため) を使用~/.ssh/known_hostsし、関連するエントリを事前入力してhg、ホスト キーの検証を受け入れるプロンプトでハングしないようにします。known_hostsこれは、sudo を使用するかどうかに関係なく機能するはずです - 正しいユーザーのファイルに入力する限り

# copy the deploy key to ~/.ssh/id_rsa of the ansible user - we use copy here to
# simplify things but really you should use ansible vault or something similar
- name: copy deploy key
  copy: src=id_rsa_deploy dest=/home/{{ ansible_ssh_user }}/.ssh/id_rsa
    owner={{ ansible_ssh_user }} group={{ ansible_ssh_user }} mode=0600

- name: add bitbucket to deploy user's ~/.ssh/known_hosts
  lineinfile: dest=/home/{{ ansible_ssh_user }}/.ssh/known_hosts line="bitbucket.org ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw=="

- name: 2 add bitbucket to deploy user's ~/.ssh/known_hosts
  lineinfile: dest=/home/{{ ansible_ssh_user }}/.ssh/known_hosts line="|1|w3ouhSzx3veHkFkoo/0KlzmLWiY=|dyifJ0YlWhJOElkc09kd5ZP2i6c= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw=="

- name: 3 add bitbucket to deploy user's ~/.ssh/known_hosts
  lineinfile: dest=/home/{{ ansible_ssh_user }}/.ssh/known_hosts line="|1|/an77APTih6pDOBpi0GcQ8b5uno=|VOep3g6ll+3Xd8WdUQ/1BqtiF1A= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw=="

- name: copy repo
  hg: repo={{ project.repo }} dest={{ project.local_repo }}
于 2014-10-07T18:37:23.830 に答える
0

実際にどのように hg リポジトリにアクセスしていますか? Playbook の最後のタスクをオフにしてから、ログインして手動で hg clone を試してみて、何が起こるかを確認してください。確かにパスワードの入力を求めていると思います。

于 2013-05-08T20:52:36.243 に答える