ウェブサイト検索

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 プレイブックの再利用と共有が非常に簡単になります。こうすることで、ユーザーが多くの冗長なコードを記述して他のシステム管理タスクに費やしていた時間を大幅に節約できます。このガイドは以上です。