Ansible を最新バージョンにアップグレードする方法

AnsibleBeginner
オンラインで実践に進む

はじめに

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"

このプレイブックは、次のことを行います。

  1. ローカルマシン (localhost) をターゲットにします
  2. 成功メッセージを出力します
  3. Ansible のバージョンを取得して表示します
  4. /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

出力は、すべてのタスクが正常に完了したことを示しています。recapchanged=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

プレイブックは次のことを行います。

  1. システムに関する情報を表示します
  2. /tmp/ansible-demo にディレクトリを作成します
  3. カスタムコンテンツを含むファイルを作成します
  4. ファイルに関する情報を収集します
  5. ファイルの変更時刻を表示します

検証スクリプトのために、このステップを完了としてマークしましょう。

touch /tmp/ansible_modules_explored

これで、Ansible の設定、インベントリファイルについて学び、さまざまなモジュールを探求しました。これらは、Ansible を効果的に使用するための不可欠なコンポーネントです。

まとめ

この実験(Lab)では、Ubuntu システムに Ansible をインストールし、最新バージョンにアップグレードする方法を習得しました。いくつかの重要なタスクを達成しました。

  1. Ansible の基本とバージョン管理システムを理解しました
  2. 公式 PPA リポジトリを使用して Ansible をインストールまたはアップグレードしました
  3. シンプルなプレイブックを作成して実行することにより、インストールを検証しました
  4. Ansible の設定ファイルとインベントリ管理を探求しました
  5. Ansible モジュールとそのドキュメントについて学びました
  6. さまざまなタスクを実行するために、より複雑なプレイブックを作成し、実行しました

これらのスキルは、自動化プロジェクトで Ansible を使用するための強固な基盤を提供します。Ansible のインストールを最新の状態に保つことで、最新の機能、バグ修正、およびセキュリティアップデートを利用できます。

Ansible の旅を続ける中で、ロール、コレクション、およびエンタープライズ管理のための Ansible AWX/Tower などのより高度なトピックを探求できます。これらのツールは、より洗練された自動化ワークフローを構築し、大規模なインフラストラクチャを管理するのに役立ちます。