そのため、自分でロールを作成するのではなく、可能であれば Ansible Galaxy を使い始めるべきだと考えました。最初のロールをインストールしたところ、インストールされました/etc/local/ansible/roles
(私はOSXを使用しています)。
実際に必要な場所に、このロールをどのようにインストールするのだろうか? ロールを必要な場所にコピーするだけですか、それとも Ansible でそれを行う方法はありますか?
そのため、自分でロールを作成するのではなく、可能であれば Ansible Galaxy を使い始めるべきだと考えました。最初のロールをインストールしたところ、インストールされました/etc/local/ansible/roles
(私はOSXを使用しています)。
実際に必要な場所に、このロールをどのようにインストールするのだろうか? ロールを必要な場所にコピーするだけですか、それとも Ansible でそれを行う方法はありますか?
一般に、すべての共有ロールを、すべてのプロジェクトで共有される 1 つのマスター フォルダーに固定します。これにより、同じ役割の複数のコピーを手動でコピー/貼り付けして更新するという面倒な作業が回避されます。
各プロジェクトを変更して、ローカル プロジェクト フォルダーに加えて、そのマスター フォルダーでロールを探すようansible.cfg
に指示します。ansible
サンプルansible.cfg
:
[defaults]
roles_path = ~/Code/ansible_roles
Ansible は、最初にローカル プロジェクトでロールを検索し、次に を検索しroles_path
ます。複数のパスをコロンで区切って指定できます。
デフォルトでは、 は で構成されansible-galaxy install username.rolename
た にロールをインストールするので、必要な操作はほとんどこれだけです。roles_path
ansible.cfg
ロールをマスター フォルダーではなく、特定のプロジェクトにインストールしたい場合があります。たとえば、2 つのロールに、同じロールの異なるバージョンを必要とするロールの依存関係がある場合に、バージョンの競合を回避するためです。その場合、-p ROLES_PATH
or--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_path
Ansible はANSIBLE_CONFIG
、ansible.cfg
現在の作業ディレクトリ、.ansible.cfg
ホーム ディレクトリ、または/etc/ansible/ansible.cfg
最初に見つかった方の を読み取ります。
私は自分の役割にグローバルな道を望んでいました。~/.ansible.cfg に ansible.cfg を置くことで、これを行うことができます。プロジェクトベースのものが常に優先されます。
cat ~/.ansible.cfg
[defaults]
roles_path = ~/.ansible/roles