Ansible のロールと Galaxy の作成
Ansibleは、重要な Ansibleを再利用可能な役割と呼ばれるパーツに分割するために使用できます。 役割は、ターゲット・ホストで実行する一連のタスクを定義します。 ホストでそれらのタスクを実行するには、Ansible Playbook でその役割を参照する必要があります。
Ansible Galaxy は、自動化プロジェクトを簡素化するためにプレイブックに直接ドロップできる Ansible ロールのリポジトリーです。 新しいシステム管理者は、数時間で Ansible による自動化を始めるかもしれません。
独自の役割を作成するか、Ansible Galaxy の既存の役割を使用することができます。
Ansible での独自の役割の作成
Ansible Playbook を簡素化するために、役割を作成して Playbook でそれらの役割を参照することにより、Playbook のタスクを分離することができます。 既知のファイル構造に基づいて、関連する変数、ファイル、タスク、ハンドラ、およびその他の Ansible アーティファクトを自動的にロードするために使用します。
-
複数のホストで再利用する、Playbook 内のタスクを特定します。 例えば、すべてのホストで実行したいタスク、および Web サーバーとデータベースで実行したいタスクをグループ化することができます。 タスク・グループはそれぞれが、独自の役割になる可能性があります。
-
GitHub リポジトリー内に Ansible 役割構造を作成します。 役割は、Ansible Playbook に関連する
roles
ディレクトリーに保管する必要があります。 役割ディレクトリには、main.yml
ファイル内のタスクを説明する/roles/db/
などのサブディレクトリを作成することができます。├── roles └── db └── tasks └── main.yml ├── playbook.yaml ├── README.md
-
実行するタスクを
main.yml
ファイルに追加します。 次の例では、MySQL コミュニティー・リポジトリーをダウンロードするタスクをメインの Playbook から分離し、このタスクをmain.yml
ファイルに追加しています。- name: Download MySQL Community Repo get_url: url: https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm dest: /tmp
-
Ansible Playbook で役割を参照します。
- name: deploy MySQL and configure the databases hosts: all remote_user: root roles: - db tasks: - shell: "hostname"
ロールに追加できるその他のファイルや条件の詳細については Ansibleを参照してください。
Ansible Galaxy にある役割のインストール
Ansibleの既存のロールをプレイブックで使用することもできます。 Ansible Galaxy では、役割およびコレクションとして使用可能な、Ansible コミュニティーからのプリパッケージされた作業単位が提供されています。
-
Ansibleをブラウズして、必要なロールを見つけます。
-
requirements.yml
ファイルを作成して、そこに必要なすべての役割を指定します。 Ansibleのロールを参照する方法の概要については Ansibleのドキュメントを参照してください。 次の例では、Ansible Galaxy の役割andrewrothstein.kubectl
を使用します。--- roles: - name: andrewrothstein.kubectl
-
次の例に示すように、Playbook に関連する GitHub リポジトリーに
roles
フォルダーを追加し、このフォルダーにrequirements.yml
ファイルを保管します。├── roles └── requirements.yml ├── playbook.yaml ├── README.md
-
Ansible Playbook で役割を参照します。 この例では、
andrewrothstein.kubectl
という名前の役割を使用します。- hosts: all roles: - role: andrewrothstein.kubectl
Ansible プレイブックの例についての詳細は、 IBM® が提供する Ansibleを参照してください