IBM Cloud Docs
Ansible のロールと Galaxy の作成

Ansible のロールと Galaxy の作成

Ansibleは、重要な Ansibleを再利用可能な役割と呼ばれるパーツに分割するために使用できます。 役割は、ターゲット・ホストで実行する一連のタスクを定義します。 ホストでそれらのタスクを実行するには、Ansible Playbook でその役割を参照する必要があります。

Ansible Galaxy は、自動化プロジェクトを簡素化するためにプレイブックに直接ドロップできる Ansible ロールのリポジトリーです。 新しいシステム管理者は、数時間で Ansible による自動化を始めるかもしれません。

独自の役割を作成するか、Ansible Galaxy の既存の役割を使用することができます。

Ansible での独自の役割の作成

Ansible Playbook を簡素化するために、役割を作成して Playbook でそれらの役割を参照することにより、Playbook のタスクを分離することができます。 既知のファイル構造に基づいて、関連する変数、ファイル、タスク、ハンドラ、およびその他の Ansible アーティファクトを自動的にロードするために使用します。

  1. 複数のホストで再利用する、Playbook 内のタスクを特定します。 例えば、すべてのホストで実行したいタスク、および Web サーバーとデータベースで実行したいタスクをグループ化することができます。 タスク・グループはそれぞれが、独自の役割になる可能性があります。

  2. GitHub リポジトリー内に Ansible 役割構造を作成します。 役割は、Ansible Playbook に関連する roles ディレクトリーに保管する必要があります。 役割ディレクトリには、 main.yml ファイル内のタスクを説明する /roles/db/ などのサブディレクトリを作成することができます。

    ├── roles
        └── db
            └── tasks
                └── main.yml
    ├── playbook.yaml
    ├── README.md
    
  3. 実行するタスクを 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
    
  4. 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 コミュニティーからのプリパッケージされた作業単位が提供されています。

  1. Ansibleをブラウズして、必要なロールを見つけます。

  2. requirements.yml ファイルを作成して、そこに必要なすべての役割を指定します。 Ansibleのロールを参照する方法の概要については Ansibleのドキュメントを参照してください。 次の例では、Ansible Galaxy の役割 andrewrothstein.kubectl を使用します。

    ---
    roles:
      - name: andrewrothstein.kubectl
    
  3. 次の例に示すように、Playbook に関連する GitHub リポジトリーに roles フォルダーを追加し、このフォルダーに requirements.yml ファイルを保管します。

        ├── roles
            └── requirements.yml
        ├── playbook.yaml
        ├── README.md
    
  4. Ansible Playbook で役割を参照します。 この例では、andrewrothstein.kubectl という名前の役割を使用します。

    - hosts: all
      roles:
        - role: andrewrothstein.kubectl
    

Ansible プレイブックの例についての詳細は、 IBM® が提供する Ansibleを参照してください