# Ansible とは

Ansible とは、IT 自動化ツールです。 Ansible を利用するとシステムの構成、ソフトウェアの展開、より高度な IT タスク (継続的なデプロイメントやダウンタイムなしのローリング更新など) のオーケストレーションが可能になります。

Ansible docs: https://docs.ansible.com/ansible/latest/index.html (opens new window)

Ansible is an IT automation tool. It can configure systems, deploy software, and orchestrate more advanced IT tasks such as continuous deployments or zero downtime rolling updates.
1

github: https://github.com/ansible/ansible (opens new window)

Ansible is a radically simple IT automation system. It handles configuration management, application deployment, cloud provisioning, ad-hoc task execution, network automation, and multi-node orchestration. Ansible makes complex changes like zero-downtime rolling updates with load balancers easy. More information on the Ansible website.
1

# Ansible の特徴

  • エージェントレスである
    • Ansible は対象の管理は基本的にOpenSSH (opens new window)を利用する為、専用のクライアント/デーモンを必要としません
  • 状態を管理しない
    • Ansible には対象となるマシン情報(Inventory) を持ちますが、そのマシンの状態を保有することはありません。Inventory ファイルは ansible playbooks などで利用するためのものであり、状態を管理・監視することはありません
  • 冪等性を持つ
    • Ansible は playbooks を基本的に何回実行しても結果は同じになります。例えば httpd のインストールタスク等はインストール済みであれば複数回実行しても 2 回目以降は実行済みとして処理され、二度実行されることがありません。

Ansible の記述には基本的にYAML (opens new window)と呼ばれる記述(解読)言語が用いられておりユーザにも読み書きしやすいようになっています。

# Ansible の構成

Ansibleは、コントロールノードと管理対象ホストという 2 種類のマシンで構成されています。Ansible はコントロールノードからインストールおよび実行されます。

Ansibleはエージェントレス、ということからAnsibleのインストールはコントロールノードのみに行えばよく、管理対象にインストールする必要はありません。

Ansible のインストールはRPMによる提供もされていますが、現在ではpipによるインストールが推奨されています。

Ansibleパッケージは長らく単一のパッケージとなっていましたが、2.10 以降、Ansible のパッケージ方針には大幅な変更がなされ、Ansibleの実行部分と、タスクを実行する(モジュール)の分離がなされ、それぞれ別のパッケージで提供されるようになっています。

# Ansible の基本用語

本講義に限らず、Ansible に登場する基本的な用語の解説。 基本的には以下の引用ですが、一部追加・割愛しています。

Ansible Trail Map (opens new window)

# Target Node / Host

Ansible から操作する対象で、ホストとも表現されます。Ansible では、Target Node に特別なエージェントなどのインストールは必要ありません。Ansible は、Linux サーバやネットワーク機器、クラウド等の様々なものを操作対象にできます。

# Inventory

操作・管理対象とする Target Node を纏めたリストを指します。Inventory 内において Target Node は複数のグループに分類して登録することができます。この Inventory は、Ansible による処理を実施する場合に必要です。

# Roles

既知のファイル構造に基づいて特定の変数、タスク、およびハンドラーを自動的に読み込むようひとまとめにしたものです。 ロールでコンテンツをグループ化すると、他のユーザーとのロールの共有が容易になります。

# Task

Ansible における、処理(ステップ)の最小単位です。実行対象に対してあってほしい状態や実施する処理を記述します。

# Module

Ansible において対象に対して何かを実施する際に用いる最小の部品(プログラム)で、Task ごとに一つの Module を指定して利用します。

# Play

インベントリ内の対象範囲と実施する 1 つ以上の Task を記載します。

# Playbook

Ansible において、自動化の手順書にあたります。

Playbook の中には、1 つ以上の Play が含まれます。このトレイルマップでは Playbook には 1 つの Play のみの構成となっています。

# [演習]Ansible の導入

では、実際にAnsibleを使ってみましょう。

# Ansible のインストール

これまで ansible のインストールは dnf(yum) によるインストールでした。 しかしながら昨今のansible は pip にてインストールすることが推奨されています。 従って、今回はpipを用いてインストールしてみましょう。

ただし、演習環境にはpipコマンドがインストールされていない為、 まずはpipのインストールから行う必要があります。 以下をそれぞれ実行し、ansible のインストールまで行ってください

  • pip のインストール
    dnf install python3-pip
    
    1
  • ansible のインストール
    pip install ansible
    
    1
  • ansible のインストール確認
    ansible --version
    
    1

ここまで実行したならば以下のような出力が得られるはずです。

 ansible --version
ansible [core 2.15.3]
  config file = /ansible/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.9/site-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.9.16 (main, May 29 2023, 00:00:00) [GCC 11.3.1 20221121 (Red Hat 11.3.1-4)] (/usr/bin/python3)
  jinja version = 3.
1
2
3
4
5
6
7
8
9

ansible-core の 2.5.13やそれぞれのバージョンには実行する時期によって異なることがありますが問題ありません。


CC BY-SA Licensed | Copyright (c) 2023, Internet Initiative Japan Inc.