54

そのため、自分でロールを作成するのではなく、可能であれば Ansible Galaxy を使い始めるべきだと考えました。最初のロールをインストールしたところ、インストールされました/etc/local/ansible/roles(私はOSXを使用しています)。

実際に必要な場所に、このロールをどのようにインストールするのだろうか? ロールを必要な場所にコピーするだけですか、それとも Ansible でそれを行う方法はありますか?

4

6 に答える 6

43

一般に、すべての共有ロールを、すべてのプロジェクトで共有される 1 つのマスター フォルダーに固定します。これにより、同じ役割の複数のコピーを手動でコピー/貼り付けして更新するという面倒な作業が回避されます。

各プロジェクトを変更して、ローカル プロジェクト フォルダーに加えて、そのマスター フォルダーでロールを探すようansible.cfgに指示します。ansible

サンプルansible.cfg:

[defaults]
roles_path = ~/Code/ansible_roles 

Ansible は、最初にローカル プロジェクトでロールを検索し、次に を検索しroles_pathます。複数のパスをコロンで区切って指定できます。

デフォルトでは、 は で構成されansible-galaxy install username.rolenameた にロールをインストールするので、必要な操作はほとんどこれだけです。roles_pathansible.cfg

ロールをマスター フォルダーではなく、特定のプロジェクトにインストールしたい場合があります。たとえば、2 つのロールに、同じロールの異なるバージョンを必要とするロールの依存関係がある場合に、バージョンの競合を回避するためです。その場合、-p ROLES_PATHor--roles-path=ROLES_PATHオプションを使用できます。

ansible-galaxy install username.rolename -p ~/Code/project_deploy/ansible/roles/

Ansible 1.9 では、プロジェクトの でロールをインストールする場所を手動で指定できますrequirements.yml。残念ながら、このpathパラメーターは Ansible 2 で削除されました

# from galaxy
- src: jeffwidman.elasticsearch

# from private github repo, installing to a relative path
- src: https://github.com/jeffwidman/private_ansible_role
  path: vagrant/roles/

さらにカスタマイズしたい場合は、さまざまなレベルの特異性で簡単に設定できる複数のansible.cfg ファイルのサポートを追加するための未解決の問題があります。roles_pathAnsible はANSIBLE_CONFIGansible.cfg現在の作業ディレクトリ、.ansible.cfgホーム ディレクトリ、または/etc/ansible/ansible.cfg最初に見つかった方の を読み取ります。

于 2015-09-22T22:29:32.863 に答える
1

私は自分の役割にグローバルな道を望んでいました。~/.ansible.cfg に ansible.cfg を置くことで、これを行うことができます。プロジェクトベースのものが常に優先されます。

cat ~/.ansible.cfg
[defaults]
roles_path = ~/.ansible/roles
于 2016-08-10T19:53:15.337 に答える