ウェブサイト検索

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


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

このシリーズのタイトルは「Red Hat 認定 Ansible 自動化スペシャリスト試験 (EX407)」となり、Red Hat Enterprise Linux 7.5 と Ansible 2.7 に基づく以下の試験内容をカバーします。これは、このAnsible シリーズで取り上げる予定です。

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

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

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

Ansibleは、RedHatによる無料のオープンソース自動化プラットフォームであり、複数のサーバーを1つの中央位置から管理および制御することができます。特に、複数回繰り返し行う必要があるタスクがある場合に最適です。したがって、これらのリモートノードにそれぞれログインして作業を行う代わりに、中央の場所から快適に作業を行い、サーバーを手軽に管理できます。

これは、アプリケーションの展開の一貫性を保ち、人為的エラーを減らし、反復的でやや退屈な作業を自動化したいときに有益です。

もちろん、Ansibleの他にも、Puppet、Chef、Saltなどの代替手段があります。しかし、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ウェブサーバーをインストールするためのplaybookファイルを作成し、それをhttpd.ymlと名付けることができます。

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

$ touch playbook_name.yml

例えば、httpdというプレイブックを作成するには、コマンドを実行します。

$ 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ウェブサーバーをインストールします。ウェブサーバーのインストール後、Ansibleはその後、Apacheウェブサーバーが起動して動作しているかどうかを確認します。

モジュール

モジュールは、リモートホストやサーバーでコマンドを実行するためのプレイブックで使用される離散的なコードユニットです。各モジュールは引数によって続きます。

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

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

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

演劇

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であり、ansibleに/var/www/html/パスにディレクトリを作成するよう指示します。

事実

事実は、Ansibleがホストシステムでプレイブックを実行するときに収集するシステムのプロパティです。プロパティには、ホスト名、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のコアコンポーネントを確認した後、これらを手元に保ち、次に進む際に選び出す準備が整ったことを願っています。次のトピックで私たちに参加してください。

関連記事: