Ansible Galaxyでロールを作成およびダウンロードして使用する方法-パート9


Ansibleシリーズのパート9では、Ansible Galaxyでロールを作成およびダウンロードして、それらを使用する方法を学習します。 Ansibleは、複雑なタスクを効率的な方法でシームレスに自動化する、シンプルでありながら効果的な構成管理および自動展開ツールです。単一のプレイブックファイルを使用して、単一の制御ノードから数百または数千ものサーバーを管理できます。

ただし、異なる環境で同じサービスを管理するためのプレイブックを作成するのは非常に面倒な場合があり、これは通常、コードの冗長性につながります。さらに、複雑さが増すと、すべてのデバイスの管理が難しくなる可能性があります。

役割があります。 Ansibleでは、ロールはプレイブックを再利用可能なファイルに分割するために使用されます。再利用可能なファイルは、同様のタスクを実行する必要が生じた他のいくつかのインスタンスで使用できます。これにより、プレイブックを何度も書き直す必要がなくなり、時間とエネルギーを大幅に節約できます。

役割は、単にプレイブックの機能です。役割には、タスク、ファイル、モジュール、変数、テンプレートなど、プレイブックを構成するものがほぼ付属しています。また、各役割は特定のタスクまたは目的の出力に制限されていることに注意してください。

Ansibleロールの作成

Ansibleでロールを作成するには、構文を使用するだけです。

# ansible-galaxy init role_name 

複数のディレクトリとファイルが現在の作業ディレクトリに作成されます。この場合、/ etc/ansible/rolesディレクトリにロールを作成することにしました。

apacheという役割を作成しましょう。

# ansible-galaxy init apache

treeコマンドを使用して、ロールのディレクトリ構造を確認します。

# tree apache

ご覧のとおり、いくつかのディレクトリが作成されていますが、すべてがハンドブックで使用されるわけではありません。

ここで、プレイブックで新しく作成したロールを使用するには、新しいロールのtasksディレクトリに含まれているmain.ymlファイルでタスクを定義します。

/apache/tasks/main.yml

---

- hosts: database_servers

  tasks:

    - name: Install Apache2 on Ubuntu webserver
      apt:
         name: apache2
         state: installed

その後、プレイブックファイルを作成し、図のようにロールを呼び出します。

--- 
- hosts: webservers
  roles:
   - apache

AnsibleGalaxyからの役割のインストール

役割は、AnsibleGalaxyプラットフォームを使用してAnsibleコミュニティの他のユーザーとコードを共有する上で重要な役割を果たします。 Ansible Galaxyでは、Webサーバーやデータベースのインストール、監視ツールなど、さまざまなタスクを実行する何千もの役割を取得します。

Ansible Galaxyは、プレイブックで活用してタスクを合理化するのに役立つAnsibleロールのデータベースまたはリポジトリです。

Ansible Galaxyで役割を検索するには、コマンドを実行するだけです。

# ansible-galaxy search <role>

たとえば、mysqlrunという名前のロールを検索します。

# 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は、最も人気があり、最もダウンロードされている役割を一覧表示することで、ユーザーが最適な役割を簡単にインストールできるようにします。特定の役割の詳細を取得するには、その役割をクリックするだけです。

プレイブックでは、たとえば、複数の役割を指定することもできます。

---
- name: Install MySQL server
  hosts: webservers

 roles:
    • 5KYDEV0P5.skydevops-mysql
    • Aaronpederson.mariadb

インストールされている役割を一覧表示するには、を実行するだけです。

# ansible-galaxy list

役割を使用すると、Ansibleプレイブックの再利用と共有が非常に簡単になります。このようにして、ユーザーが多くの冗長なコードを記述しようとする時間を大幅に節約し、他のシステム管理タスクで使用されていたはずの時間を費やしすぎます。このガイドは以上です。