Ansible Galaxy でロールを作成およびダウンロードして使用する方法 - パート 9
Ansible シリーズのパート 9 では、Ansible Galaxy でロールを作成してダウンロードし、それらを使用する方法を学習します。 Ansible は、複雑なタスクを効率的な方法でシームレスに自動化する、シンプルかつ効果的な構成管理および自動デプロイメント ツールです。単一の Playbook ファイルを使用して、単一の制御ノードから数百、さらには数千のサーバーを管理できます。
ただし、異なる環境で同じサービスを管理するための Playbook を作成するのは非常に面倒な場合があり、通常はコードの冗長性につながります。さらに、複雑さが増すと、すべてのデバイスの管理がさらに困難になる可能性があります。
役割が登場します。 Ansible では、ロールはプレイブックを再利用可能なファイルに分割するために使用され、同様のタスクを実行する必要がある他のいくつかのインスタンスで使用できます。これにより、プレイブックを何度も書き直す必要がなくなり、時間とエネルギーが大幅に節約されました。
ロールは単に Playbook の機能です。ロールには、タスク、ファイル、モジュール、変数、テンプレートなど、プレイブックを構成するほとんどのものが付属しています。また、各役割は特定のタスクまたは目的の出力に限定されていることに注意してください。
Ansible ロールの作成
Ansible でロールを作成するには、構文を使用するだけです。
ansible-galaxy init role_name
現在の作業ディレクトリに複数のディレクトリとファイルが作成されます。この場合、 /etc/ansible/roles ディレクトリにロールを作成することにしました。
Apache というロールを作成しましょう。
ansible-galaxy init apache
役割のディレクトリ構造を一目で確認するには、tree コマンドを使用します。
tree apache
ご覧のとおり、いくつかのディレクトリが作成されていますが、それらのすべてが Playbook で使用されるわけではありません。
ここで、新しく作成したロールを Playbook で使用するには、新しいロールのタスク ディレクトリに含まれるmain.yml ファイルでタスクを定義します。
/apache/tasks/main.yml
---
- hosts: database_servers
tasks:
- name: Install Apache2 on Ubuntu webserver
apt:
name: apache2
state: installed
その後、Playbook ファイルを作成し、次のようにロールを呼び出します。
---
- hosts: webservers
roles:
- apache
Ansible Galaxy からのロールのインストール
ロールは、Ansible Galaxy プラットフォームを使用して Ansible コミュニティ内の他のユーザーとコードを共有する際に重要な役割を果たします。 Ansible Galaxy では、Web サーバーやデータベースのインストール、監視ツールなどのさまざまなタスクを実行する何千ものロールが用意されています。
Ansible Galaxy は、プレイブックで利用してタスクを合理化するのに役立つ Ansible ロールのデータベースまたはリポジトリです。
Ansible Galaxy でロールを検索するには、コマンドを実行するだけです。
ansible-galaxy search <role>
たとえば、mysql という名前のロールを検索するには、実行します。
ansible-galaxy search mysql
ご覧のとおり、検索キーワード mysql に一致するロールが何百もあります。ただし、すべての役割が意図したとおりに実行されるわけではないため、説明を注意深く読むことをお勧めします。
ロールに関する詳細情報を収集するには、Ansible コマンドを実行するだけです。
ansible-galaxy info 5KYDEV0P5.skydevops-mysql
この例では、ロール 5KYDEV0P5.skydevops-mysql をインストールします。
ansible-galaxy install 5KYDEV0P5.skydevops-mysql
ロールはダウンロードされ、/etc/ansible/roles にあるデフォルトのロール ディレクトリに抽出されます。
その後、ロールはプレイブック内で呼び出すことができます。たとえば、次のようになります。
---
- name: Install MySQL server
hosts: webservers
roles:
• 5KYDEV0P5.skydevops-mysql
これで、次のように Ansible プレイブックを安全に実行できるようになります。
ansible-playbook install_mysql.yml
さらに、Web ブラウザ経由で Ansible Galaxy にアクセスし、ダッシュボードに示されているさまざまなタスクを実行するためのロールを手動で検索できます。
たとえば、elasticsearch などの監視ロールを検索するには、[監視] オプションをクリックし、表示されているようにロールを検索します。
Ansible Galaxy を使用すると、最も人気のあるロールと最もダウンロードされたロールをリストすることで、ユーザーが最適なロールを簡単にインストールできるようになります。特定のロールに関する詳細情報を取得するには、そのロールをクリックするだけです。
たとえば、Playbook では複数のロールを指定することもできます。
---
- name: Install MySQL server
hosts: webservers
roles:
• 5KYDEV0P5.skydevops-mysql
• Aaronpederson.mariadb
インストールされている役割を一覧表示するには、単に実行します。
ansible-galaxy list
結論
ロールを使用すると、Ansible プレイブックの再利用と共有が非常に簡単になります。こうすることで、ユーザーが多くの冗長なコードを記述して他のシステム管理タスクに費やしていた時間を大幅に節約できます。このガイドは以上です。