はじめに
Ansible は、IT 業界で広く採用されている強力なオープンソースの自動化ツールです。Ansible が進化するにつれて、最新の機能と改善点を活用するために、インストールを最新の状態に保つことが重要です。このチュートリアルでは、この実験環境で使用されているオペレーティングシステムである Ubuntu 上で、Ansible を最新バージョンにアップグレードするプロセスを説明します。
Ansible の理解と現在のバージョンの確認
Ansible をアップグレードする前に、Ansible が何であるかを理解し、現在インストールされているバージョンを確認しておくと役立ちます。
Ansible とは?
Ansible は、構成管理、アプリケーションのデプロイ、およびタスクの自動化を簡素化するオープンソースの自動化プラットフォームです。システムの望ましい状態を記述するドキュメントであるプレイブックを作成するために、YAML 構文を使用します。
Ansible の主な利点には以下が含まれます。
- エージェントレスアーキテクチャ (Agentless architecture): 管理対象ノードにエージェントをインストールする必要はありません
- シンプルな構文 (Simple syntax): 人間が読める YAML ファイルを使用します
- 冪等性実行 (Idempotent execution): 同じプレイブックを複数回実行しても、同じ結果が得られます
- 拡張性 (Extensible): カスタムモジュールとプラグインをサポートします
現在の Ansible バージョンの確認
まず、Ansible がすでにインストールされているかどうか、そしてインストールされている場合はどのバージョンであるかを確認することから始めましょう。ターミナルを開き、以下を実行します。
ansible --version
次のような出力が表示されるはずです。
ansible [core 2.12.0]
config file = /etc/ansible/ansible.cfg
configured module search path = ['/home/labex/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3/dist-packages/ansible
ansible collection location = /home/labex/.ansible/collections:/usr/share/ansible/collections
executable location = /usr/bin/ansible
python version = 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0]
jinja version = 3.0.3
libyaml = True
最初の行には、現在の Ansible バージョンが表示されます。このような出力が表示されない場合、Ansible はまだインストールされていない可能性がありますが、次のステップでインストールするので問題ありません。
Ansible のバージョン管理の理解
Ansible は、major.minor.patch の 3 つの数字を使用したセマンティックバージョニング (semantic versioning) に従います。
- メジャーバージョン (Major version): プレイブックの変更が必要になる可能性のある重要な変更
- マイナーバージョン (Minor version): 互換性を壊すことなく追加された新機能
- パッチバージョン (Patch version): バグ修正と軽微な改善
Ansible が何であるかを理解し、現在のバージョンを確認したので、次のステップで Ansible のインストールまたはアップグレードに進む準備ができました。
Ubuntu への Ansible のインストールまたはアップグレード
このステップでは、Ubuntu 22.04 システムに Ansible をインストールまたはアップグレードします。最新の安定版を入手するために、公式の Ansible PPA (Personal Package Archive) を使用します。
Ansible PPA リポジトリの追加
まず、PPA を追加するために必要な依存関係があることを確認する必要があります。
sudo apt update
sudo apt install -y software-properties-common
このコマンドは、パッケージインデックスを更新し、add-apt-repository コマンドを提供する software-properties-common パッケージをインストールします。
次に、公式の Ansible PPA リポジトリを追加しましょう。
sudo add-apt-repository --yes --update ppa:ansible/ansible
リポジトリがシステムに追加されたことを示す出力が表示されます。--yes フラグは追加を自動的に確認し、--update はパッケージリストをすぐに更新します。
最新の Ansible バージョンのインストール
リポジトリを追加したので、最新バージョンの Ansible をインストールできます。
sudo apt install -y ansible
-y フラグは、確認を求めることなく、インストールを自動的に確認します。
このコマンドは、Ansible がまだ存在しない場合はインストールし、すでにインストールされている場合は PPA で利用可能な最新バージョンにアップグレードします。
インストールまたはアップグレードの検証
インストールが完了したら、Ansible が正しくインストールされていることを確認し、そのバージョンを確認しましょう。
ansible --version
出力には、PPA で利用可能な最新バージョンの Ansible が表示されるはずです。以前に古いバージョンがインストールされていた場合は、新しいバージョン番号が表示されるはずです。
検証スクリプトの進捗状況を追跡するために、マーカーファイルを作成しましょう。
touch /tmp/ansible_version_checked
touch /tmp/ansible_installed
これで、Ubuntu システムに Ansible を正常にインストールまたはアップグレードしました。次のステップでは、基本的な Ansible コマンドを使用して、インストールが正しく機能していることを確認する方法を説明します。
シンプルなプレイブックによる Ansible インストールの検証
Ansible がインストールされたので、シンプルな Ansible プレイブックを作成して実行し、正しく動作することを確認しましょう。プレイブックは、システムの望ましい状態と、その状態に到達するために Ansible が実行する必要があるタスクを記述する YAML ファイルです。
テストプレイブックの作成
まず、Ansible プロジェクト用のディレクトリを作成しましょう。
mkdir -p ~/project/ansible-test
cd ~/project/ansible-test
次に、組み込みのコードエディタを使用して、シンプルなプレイブックを作成しましょう。WebIDE で、左側のサイドバーにある「Explorer」アイコンをクリックし、先ほど作成した ansible-test ディレクトリに移動して、test-playbook.yml という名前の新しいファイルを作成します。
このファイルに次の内容を追加します。
---
- name: Test Ansible Installation
hosts: localhost
connection: local
gather_facts: no
tasks:
- name: Print a message
debug:
msg: "Ansible is installed and working correctly!"
- name: Get Ansible version
command: ansible --version
register: ansible_version_output
- name: Display Ansible version
debug:
msg: "{{ ansible_version_output.stdout_lines[0] }}"
- name: Create a test file
file:
path: /tmp/ansible-test-file.txt
state: touch
mode: "0644"
このプレイブックは、次のことを行います。
- ローカルマシン (
localhost) をターゲットにします - 成功メッセージを出力します
- Ansible のバージョンを取得して表示します
/tmp/ansible-test-file.txtにテストファイルを作成します
プレイブックの実行
次に、プレイブックを実行して、Ansible が正しく動作していることを確認しましょう。
cd ~/project/ansible-test
ansible-playbook test-playbook.yml
次のような出力が表示されるはずです。
PLAY [Test Ansible Installation] ***********************************************
TASK [Print a message] *********************************************************
ok: [localhost] => {
"msg": "Ansible is installed and working correctly!"
}
TASK [Get Ansible version] *****************************************************
changed: [localhost]
TASK [Display Ansible version] *************************************************
ok: [localhost] => {
"msg": "ansible [core 2.12.0]"
}
TASK [Create a test file] ******************************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=4 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
出力は、すべてのタスクが正常に完了したことを示しています。recap の changed=2 は、2 つのタスクがシステムに変更を加えたこと (バージョンの取得とファイルの作成) を示しています。
テストファイルの検証
テストファイルが作成されたかどうかを確認しましょう。
ls -l /tmp/ansible-test-file.txt
指定した権限でファイルがリストされているはずです。
-rw-r--r-- 1 labex labex 0 Aug 30 12:34 /tmp/ansible-test-file.txt
検証スクリプトのために、このステップを完了としてマークしましょう。
touch /tmp/ansible_playbook_tested
おめでとうございます!シンプルなプレイブックを実行することにより、最新バージョンの Ansible を正常にインストールし、正しく動作することを確認しました。これにより、Ansible のインストールが完全に機能し、使用できる状態であることが確認されました。
Ansible の設定とモジュールの理解
Ansible がインストールされ、動作するようになったので、その設定とモジュールの概念を探求しましょう。
Ansible の設定
Ansible は、その動作を制御するために設定ファイルを使用します。主な設定ファイルは ansible.cfg で、いくつかの場所に存在できます。デフォルトの設定ファイルを見てみましょう。
ls -la /etc/ansible/
デフォルトの Ansible ディレクトリ構造が表示されるはずです。
total 20
drwxr-xr-x 2 root root 4096 Aug 30 12:00 .
drwxr-xr-x 85 root root 4096 Aug 30 12:00 ..
-rw-r--r-- 1 root root 8669 Aug 30 12:00 ansible.cfg
-rw-r--r-- 1 root root 1021 Aug 30 12:00 hosts
デフォルトのインベントリファイルである hosts ファイルを見てみましょう。
cat /etc/ansible/hosts
インベントリファイルには、Ansible が管理できるホストのリストが含まれています。デフォルトでは、コメントアウトされた例が含まれています。
カスタム設定の作成
プロジェクトディレクトリに独自の Ansible 設定ファイルを作成しましょう。WebIDE で、~/project/ansible-test ディレクトリに ansible.cfg という名前の新しいファイルを作成し、次の内容を記述します。
[defaults]
inventory = ./inventory
host_key_checking = False
stdout_callback = yaml
次に、シンプルなインベントリファイルを作成しましょう。WebIDE で、~/project/ansible-test ディレクトリに inventory という名前の新しいファイルを作成し、次の内容を記述します。
[local]
localhost ansible_connection=local
Ansible モジュールの探索
Ansible モジュールは、特定のタスクを実行する再利用可能なコード単位です。利用可能なモジュールの一部を探求しましょう。
ansible-doc -l | wc -l
このコマンドは、利用可能なすべてのモジュールをリストし、それらをカウントします。通常、1000 を超える多数のモジュールが表示されるはずです。
プレイブックで使用した file モジュールなど、特定のモジュールのドキュメントを表示しましょう。
ansible-doc file
ドキュメントビューアを終了するには、q を押します。
より複雑なプレイブックの作成
次に、さらにいくつかの Ansible モジュールをデモンストレーションする、より高度なプレイブックを作成しましょう。WebIDE で、~/project/ansible-test ディレクトリに modules-demo.yml という名前の新しいファイルを作成し、次の内容を記述します。
---
- name: Ansible Modules Demo
hosts: localhost
connection: local
gather_facts: yes
tasks:
- name: Display system information
debug:
msg: "System: {{ ansible_distribution }} {{ ansible_distribution_version }}"
- name: Create a directory
file:
path: /tmp/ansible-demo
state: directory
mode: "0755"
- name: Copy a file
copy:
content: "Created by Ansible modules demo playbook\n"
dest: /tmp/ansible-demo/info.txt
mode: "0644"
- name: Gather information about a file
stat:
path: /tmp/ansible-demo/info.txt
register: file_info
- name: Show file information
debug:
msg: "File created at {{ file_info.stat.mtime }}"
このプレイブックを実行しましょう。
cd ~/project/ansible-test
ansible-playbook modules-demo.yml
プレイブックは次のことを行います。
- システムに関する情報を表示します
/tmp/ansible-demoにディレクトリを作成します- カスタムコンテンツを含むファイルを作成します
- ファイルに関する情報を収集します
- ファイルの変更時刻を表示します
検証スクリプトのために、このステップを完了としてマークしましょう。
touch /tmp/ansible_modules_explored
これで、Ansible の設定、インベントリファイルについて学び、さまざまなモジュールを探求しました。これらは、Ansible を効果的に使用するための不可欠なコンポーネントです。
まとめ
この実験(Lab)では、Ubuntu システムに Ansible をインストールし、最新バージョンにアップグレードする方法を習得しました。いくつかの重要なタスクを達成しました。
- Ansible の基本とバージョン管理システムを理解しました
- 公式 PPA リポジトリを使用して Ansible をインストールまたはアップグレードしました
- シンプルなプレイブックを作成して実行することにより、インストールを検証しました
- Ansible の設定ファイルとインベントリ管理を探求しました
- Ansible モジュールとそのドキュメントについて学びました
- さまざまなタスクを実行するために、より複雑なプレイブックを作成し、実行しました
これらのスキルは、自動化プロジェクトで Ansible を使用するための強固な基盤を提供します。Ansible のインストールを最新の状態に保つことで、最新の機能、バグ修正、およびセキュリティアップデートを利用できます。
Ansible の旅を続ける中で、ロール、コレクション、およびエンタープライズ管理のための Ansible AWX/Tower などのより高度なトピックを探求できます。これらのツールは、より洗練された自動化ワークフローを構築し、大規模なインフラストラクチャを管理するのに役立ちます。


