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


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

このシリーズのタイトルは「AnsibleAutomation試験のRedHat認定スペシャリスト(EX407)」で、このAnsibleシリーズで取り上げるRed Hat Enterprise Linux7.5およびAnsible2.7に基づく次の試験目標をカバーしています。

お住まいの国で料金を表示して試験に登録するには、AnsibleAutomation試験ページを確認してください。

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

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

これは、アプリケーションデプロイメントの一貫性を維持し、人的エラーを減らし、反復的でややありふれたタスクを自動化する場合に役立ちます。

もちろん、Puppet、Chef、Saltなど、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

または、グループごとに一覧表示することもできます。以下の例では、サーバーはWebサーバーとデータベースの2つのグループに分類されています。このようにして、IPアドレスではなく、グループ名に従って参照できます。これにより、操作プロセスがさらに簡素化されます。

[webservers]
10.200.50.60
10.200.50.61

[databases]
10.200.50.70
10.200.50.71

大規模な実稼働環境にいる場合は、複数のサーバーを持つ複数のグループを持つことができます。

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

たとえば、CentOS7にApacheWebサーバーをインストールして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

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

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

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

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

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

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

プログラミングのバックグラウンドがある場合は、変数を使用した可能性があります。基本的に、変数は値を表します。変数には文字、数字、アンダースコアを含めることができますが、常に文字で始める必要があります。

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

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

  • Playbook variables
  • Inventory variables
  • Special variables

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のコアコンポーネントを確認したので、それらを指先で保持し、前進するときにそれらを選択できるようになっていることを願っています。次のトピックにご参加ください。