cognifloyd.bitbucket-sources

Ansibleロール: Bitbucketソース

ビルド状態

このロールは、アクセスキーを使用してBitbucketのクラウドリポジトリをクローンまたはプルします。クローンしたリポジトリは、指定されたユーザーが所有する任意の場所に配置できます。ユーザーや場所が存在しない場合は、作成されます。

このロールは、include_roleimport_roleを使って複数回使用できます。その他の方法は未検証です。

CIでテストしたシナリオ:

  • 匿名のHTTPSによるgitパブリックリポジトリ
  • キーを使ったSSHによるgitパブリックリポジトリ
  • キーを使ったSSHによるgitプライベートリポジトリ
  • 匿名のHTTPSによるhgパブリックリポジトリ

TODO: hgプライベートリポジトリのサポートにはSSHキーを設定する方法が必要です。 TODO: SSHによるhgパブリックリポジトリのサポートはテストが必要です(キーはSSH設定に含める必要があります)。

注意: これはcognifloyd/ansible-role-bitbucket_sourcesから移動されました。

要件

このロールは、ソースコントロールの実行可能ファイル(gitまたはhg)がすでにインストールされていることを前提としています。非標準の実行可能ファイルの場所を指定する必要がある場合は、オプションの変数bitbucket_sources_executableを設定してください。

ロールの変数

クローンURLの構成

このロールは、BitbucketクラウドリポジトリのURLを生成するために、次の3つの変数(以下、便利に<type>, <account>, <name>と呼びます)を使用します:

  • bitbucket_sources_repo_type (有効なオプション: "git", "hg")
  • bitbucket_sources_repo_account
  • bitbucket_sources_repo_name

<type>がgitまたはhgに応じて、URLは次のようになります(詳細はBitbucketのドキュメントを参照):

bitbucket_sources_altsshyesに設定すると、altssh URLを使用できます:

SSHを使用したくない場合は、bitbucket_sources_protocolhttpsに設定できます(デフォルトはsshです)。 このロールは、匿名HTTPSのみをサポートしています。HTTPSを使用すると、次のようなURLになります:

  • https://bitbucket.org/<account>/<name>.git
  • https://bitbucket.org/<account>/<name>

クローン先

リポジトリはbitbucket_sources_destにクローンされ、bitbucket_sources_owner:bitbucket_sources_groupが所有します(以下、便利に<dest>, <owner>, <group>と呼びます)。<dest>の親ディレクトリは<owner>:<group>が所有するディレクトリでなければならず、存在しない場合は作成されます。ディレクトリのパーミッションはbitbucket_sources_modeで定義されたモードを持ちます。

クローンはbitbucket_sources_ownerによって作成され、bitbucket_sources_groupが設定され、そのユーザー/グループのパーミッションを持ちます。

Bitbucketはリポジトリにアクセスするために何らかの認証情報を必要とするため、bitbucket_sources_keyBitbucketアクセキーを提供する必要があります。もし、キーがコントローラからansible_hostにコピーされるべきでない場合(例: キーがターゲットのansible_hostで生成された場合や、別のロール/プレイでキーをデプロイした場合など)、bitbucket_sources_key_copyfalseまたはnoに設定してください。

** TODO: ** このロールに公開鍵をBitbucketにプッシュするオプションを追加します。これは、bitbucket_sources_key_copyの値に応じて、ansible_host(trueの場合)またはansible_controller(falseの場合)からキーを取得します。サフィックス用の追加の変数が必要になるかもしれませんが、おそらく{{ bitbucket_sources_key }}.pubで済むでしょう。関連のAPIはデプロイキー(1つ以上のリポジトリに対する読み取り専用アクセス用)およびSSHキー(特定のユーザーに対する完全なアクセス用)です。何らかのログイン認証情報が必要になります。

** defaults/main.yml **:

bitbucket_sources_repo_type: git
bitbucket_sources_owner: "{{ ansible_user }}"
bitbucket_sources_group: "{{ ansible_user }}"
bitbucket_sources_mode: 0755
bitbucket_sources_altssh: no
bitbucket_sources_key_dest: "~{{ bitbucket_sources_owner }}/.ssh/{{ bitbucket_sources_key | basename }}"
bitbucket_sources_key_copy: yes
bitbucket_sources_force: no

** vars/main.yml **:

none

** ロールパラメーター **:

これらはロールパラメータとして設定する必要があります(デフォルトはありませんので、定義されていない場合はアサーションが失敗します):

bitbucket_sources_repo_account: "<bitbucketユーザー>"
bitbucket_sources_repo_name: "<bitbucketリポジトリ(.gitなし)>"
bitbucket_sources_dest: "~<user>/scm/<account>/<name>.git"
bitbucket_sources_key: "~/.ssh/access_key"

デフォルトを上書きすることもできます(上記を参照)。他のオプションの変数には以下が含まれます:

bitbucket_sources_version: a83b8a42
bitbucket_sources_executable: "/home/acme/gentoo-prefix/usr/bin/git"
bitbucket_sources_force: yes

** TODO: ** hgが指定されたキーを使用する方法がわかりません。

** グローバルスコープ変数 **: グローバルスコープから読み取られる変数(例: hostvars、group varsなど)

デフォルトでは<owner><group>ansible_userに設定されています。

ansible_user

** 他のロールからの変数 **: 他のロールから読み取られる変数

none

依存関係

外部依存関係はありません。

例プレイブック

- hosts: vagrant
  tasks:
    - name: Bitbucketからexample-magnificentをクローンまたは強制更新。
      include_role:
        name: theatro.bitbucket_sources
        allow_duplicates: yes
        public: no
      vars:
        bitbucket_sources_repo_type: git
        bitbucket_sources_repo_account: example
        bitbucket_sources_repo_name: magnificent
        bitbucket_sources_dest: /var/scm/bitbucket/example/magnificent.git
        bitbucket_sources_owner: vagrant
        bitbucket_sources_group: vagrant
        bitbucket_sources_key: "~/.ssh/example_access_key"
        bitbucket_sources_force: yes

ライセンス

MIT

著者情報

このタスクはJacob Floydによって作成され、Theatroで雇われています。2017年に、私は他のプレイブックからこれらのタスクを抽出しました。この多くを書いた後、webbylab.sourcesStouts.sourceを見つけました。「sources」という名前は私の作業中の「bitbucket-repo-clone」よりも遥かに良かったので、「bitbucket-sources」を使うことにしました。残念ながら、私はEL 7を使用しているため、これらのUbuntu中心のロールは、かなりの調整が必要でした。

プロジェクトについて

Clone/update a bitbucket cloud repository

インストール
ansible-galaxy install cognifloyd.bitbucket-sources
ライセンス
Unknown
ダウンロード
105
所有者