ウェブサイト検索

Ansible のコアコンポーネントを理解する - パート 1


Red Hat Certified Specialist in Ansible Automation 試験 (EX407) は、Ansible を使用して自動化するスキルをテストする Red Hat による新しい認定プログラムです。システムとアプリケーションの構成。

このシリーズは「Red Hat Certified Specialist in Ansible Automation 試験 (EX407)」というタイトルで、Red Hat Enterprise Linux 7.5 に基づいた次の試験目標をカバーします。 Ansible 2.7 については、このAnsible シリーズで説明します。

料金を確認し、あなたの国で試験に登録するには、Ansible Automation 試験ページを確認してください。

Ansible シリーズのこのパート 1 では、Ansible のコア コンポーネントの基本的な概要について説明します。

Ansible のコアコンポーネントを理解する

Ansible は、RedHat による無料のオープンソース自動化プラットフォームで、1 つの中央の場所から複数のサーバーを管理および制御できます。これは、実行する必要がある複数の反復的なタスクがある場合に特に理想的です。したがって、これらの各リモート ノードにログインしてタスクを実行する代わりに、中央の場所から快適に実行してサーバーを快適に管理できます。

これは、アプリケーションのデプロイメントの一貫性を維持し、人的エラーを減らし、反復的でやや日常的なタスクを自動化したい場合に有益です。

もちろん、PuppetChefSaltなどのAnsibleの代替手段は他にもあります。ただし、 使いやすく学習も簡単なAnsible が主に好まれます。

なぜ学ぶのが簡単なのでしょうか?と疑問に思われるかもしれません。これは、Ansible が構成ジョブと自動化ジョブでYAML (Yet Another Markup Language) を使用しており、人間が判読でき、非常に理解しやすいためです。 YAML は、リモート サーバーと通信するためにリモート ノードにエージェントをインストールする必要がある他の自動化プラットフォームとは異なり、SSH プロトコルを使用してリモート サーバーと通信します。

Ansible を始める前に、先に進むときに迷ったり混乱したりしないように、いくつかの基本的な用語を理解しておくことが重要です。

在庫

インベントリは、管理および構成しているサーバーまたはノードのリストが含まれるテキスト ファイルです。通常、サーバーはホスト名または IP アドレスに基づいてリストされます。

インベントリ ファイルには、次のように IP アドレスで定義されたリモート システムを含めることができます。

10.200.50.50
10.200.50.51
10.200.50.52

あるいは、グループごとにリストすることもできます。以下の例では、 サーバーがウェブサーバーデータベースの 2 つのグループに配置されています。こうすることで、IP アドレスではなくグループ名に基づいてそれらを参照できます。これにより、操作プロセスがさらに簡素化されます。

[webservers]
10.200.50.60
10.200.50.61

[databases]
10.200.50.70
10.200.50.71

大規模な運用環境では、複数のサーバーを持つ複数のグループを作成できます。

プレイブック

プレイブックは、リモート ホストまたはホスト マシンのグループでタスクを実行する方法を定義する一連の構成管理スクリプトです。スクリプトまたは命令はYAML 形式で記述されます。

たとえば、CentOS 7 に Apache Web サーバーをインストールするためのプレイブック ファイルを作成し、それをhttpd.yml という名前にすることができます。

プレイブックを作成するには、次のコマンドを実行します。

touch playbook_name.yml

たとえば、httpd という名前の Playbook を作成するには、次のコマンドを実行します。

touch httpd.yml

YAML ファイルは、 図に示すように3 つのハイフンで始まります。ファイル内に次の命令を追加します。

---
- name: This installs and starts Apache webserver
  hosts: webservers

  tasks:
  - name: Install Apache Webserver 
    yum:   name=httpd  state=latest

 - name: check httpd status
    service:   name=httpd  state=started

上記のプレイブックは、 インベントリ ファイルでウェブサーバーとして定義されているリモート システムにApache Web サーバーをインストールします。 Web サーバーのインストール後、Ansible は Apache Web サーバーが起動して実行されているかどうかを後で確認します。

モジュール

モジュールは、リモート ホストまたはサーバー上でコマンドを実行するためにプレイブックで使用される個別のコード単位です。各モジュールの後には引数が続きます。

モジュールの基本的な形式はキー: 値です。

- name: Install apache packages 
    yum:   name=httpd  state=present

上記の YAML コード スニペットでは、-nameyum がモジュールです。

演劇

ansible のプレイは、サーバー上で実行されるタスクを定義するスクリプトまたは命令です。プレイのコレクションがプレイブックを構成します。言い換えれば、プレイブックは複数のプレイを集めたものであり、それぞれのプレイがサーバー上で実行されるタスクを明確に規定しています。プレイは YAML 形式で存在します。

変数

プログラミングの経験がある場合は、変数を使用したことがあるでしょう。基本的に、変数は値を表します。変数には文字、数字、アンダースコアを含めることができますが、必ず文字で始めなければなりません。

変数は、システムごとに命令が異なる場合に使用されます。これは、構成中やさまざまなサービスや機能中に特に当てはまります。

変数には主に 3 つのタイプがあります。

  • プレイブック変数
  • 在庫変数
  • 特殊変数

Ansible では、変数は最初にvars k を使用して定義され、次に変数名と値が続きます。

構文は次のとおりです。

vars:
Var name1: ‘My first variable’
	Var name2:  ‘My second variable’

以下のコードを考えてみましょう。

- hosts: webservers
  vars: 
    - web_directory:/var/www/html/

上記の例では、変数は web_directory であり、/var/www/html/ パスにディレクトリを作成するように ansible に指示します。

事実

ファクトは、Ansible がホスト システム上で Playbook を実行するときに収集されるシステム プロパティです。プロパティには、ホスト名、OS ファミリ、CPU タイプ、CPU コアなどが含まれます。

使用可能なファクトの数を確認するには、コマンドを発行します。

ansible localhost -m setup

ご覧のとおり、 デフォルトでは膨大な数の事実が表示されています。次に示すように、フィルター パラメーターを使用して結果をさらに絞り込むことができます。

ansible localhost -m setup -a "filter=*ipv4"

設定ファイル

Ansible では、構成ファイルは、Ansible の実行方法を決定するさまざまなパラメータ設定を含むファイルです。デフォルトの構成ファイルは、/etc/ansible/ ディレクトリにある ansible.cfg ファイルです。

次のコマンドを実行すると、構成ファイルを表示できます。

cat /etc/ansible/ansible.cfg

ご覧のとおり、インベントリライブラリのファイル パス、sudo ユーザー、プラグイン フィルター、モジュールなど、いくつかのパラメーターが含まれています。これらのパラメーターはコメントするだけで調整できます。を取り出し、その中の値を変更します。

さらに、デフォルトの構成ファイルとは別に、複数の構成ファイルを Ansible で使用することができます。

まとめ

Ansible のコア コンポーネントを見てきましたが、これらをすぐに参照して、作業を進めながら選択できるようになることを願っています。次のトピックにご参加ください。