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 つの中央の場所から複数のサーバーを管理および制御できます。これは、実行する必要がある複数の反復的なタスクがある場合に特に理想的です。したがって、これらの各リモート ノードにログインしてタスクを実行する代わりに、中央の場所から快適に実行してサーバーを快適に管理できます。
これは、アプリケーションのデプロイメントの一貫性を維持し、人的エラーを減らし、反復的でやや日常的なタスクを自動化したい場合に有益です。
もちろん、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
あるいは、グループごとにリストすることもできます。以下の例では、 サーバーがウェブサーバーとデータベースの 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 コード スニペットでは、-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 であり、/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 のコア コンポーネントを見てきましたが、これらをすぐに参照して、作業を進めながら選択できるようになることを願っています。次のトピックにご参加ください。