はじめに
Ansible の作業は、各自動化タスクが明確なプロジェクトディレクトリ内に整理されていると、保守が容易になります。RHCE スタイルの Ansible 作業では、Playbook、インベントリ、変数、ロールなどがすべて時間の経過とともに変化するテキストファイルであるため、ソース管理の習慣が求められます。
この実験では、/home/labex/project/rhce-ansible 配下に小さな Ansible プロジェクトを作成し、Git リポジトリとして初期化し、最初のインベントリを追加して、ベースラインをコミットします。プロジェクト自体は意図的に小さくしていますが、そのレイアウトはこの準備コース全体で使用される構造に準拠しています。
プロジェクトワークスペースの作成
このステップでは、プロジェクトディレクトリと、Ansible プロジェクトで使用される一連の初期フォルダを作成します。-p オプションは mkdir に対して、親ディレクトリが存在しない場合に作成し、ディレクトリが既に存在する場合でもエラーにしないよう指示します。
標準の LabEx ワークスペースに移動します。
cd /home/labex/project
インベントリ、Playbook、変数、ファイル、テンプレート、ロール用の共通サブディレクトリを含むプロジェクトディレクトリを作成します。
mkdir -p rhce-ansible/{inventory,playbooks,group_vars,host_vars,roles,files,templates}
これらのディレクトリ名は必須ではありませんが、慣習的に使用されています。早い段階でこれらを使用することで、後の実験でインベントリファイル、変数、再利用可能なロールコード、Playbook がコピーまたはテンプレート化するソースファイルがどこに配置されるかを把握しやすくなります。
新しいプロジェクトツリーをリスト表示します。出力には、作成したばかりのディレクトリが表示されるはずです。
find rhce-ansible -maxdepth 2 -type d | sort
find はプロジェクトツリー内のディレクトリを表示し、sort は順序を安定させます。現時点ではディレクトリは空ですが、その存在自体が後でコミットするベースライン構造となります。
Git の初期化とローカル ID の設定
このステップでは、プロジェクトを Git リポジトリに変換します。Git は変更履歴を隠しディレクトリ .git に保存します。ローカルで ID を設定することで、この実験を自己完結させ、グローバルなユーザー設定を変更せずに済みます。
プロジェクトディレクトリに移動します。
cd /home/labex/project/rhce-ansible
リポジトリを初期化します。
git init
Git はプロジェクト内に隠しディレクトリ .git を作成します。そのディレクトリがリポジトリデータベースとなり、目に見える Ansible ファイルは通常のプロジェクトツリー内に残ります。
このリポジトリでのコミットに使用するローカルの作成者名とメールアドレスを設定します。
git config user.name "LabEx RHCE Learner"
git config user.email "learner@example.com"
リポジトリの状態を確認します。Git は、まだ追跡対象のファイルがないブランチにいることを報告するはずです。
git status --short
短いステータス形式は意図的にコンパクトに表示されます。空のディレクトリは Git によって追跡されないため、実際のファイルを追加するまでこのコマンドが何も出力しない、あるいはほとんど出力しないのは正常です。
プロジェクトノートと無視ルールの追加
このステップでは、2 つの単純なプロジェクトファイルを追加します。README.md はプロジェクトの目的を説明し、.gitignore は一時ファイルを Git の履歴から除外します。
このステップでコマンドを実行する前に、相対パスが Ansible プロジェクトを指すようにプロジェクトディレクトリに戻ります。
cd /home/labex/project/rhce-ansible
ヒアドキュメントを使用して README.md を作成します。EOF マーカーの間のテキストは、表示されている通りにファイルに書き込まれます。
cat > README.md <<'EOF'
## RHCE Ansible Practice Project
This repository contains guided Ansible practice files for RHCE-style automation.
EOF
一般的な Ansible の一時成果物用に小さな .gitignore ファイルを作成します。
cat > .gitignore <<'EOF'
*.retry
.artifacts/
__pycache__/
EOF
*.retry パターンは古い Ansible ワークフローからのリトライファイルをカバーし、.artifacts/ は生成された出力の一般的な保存場所であり、__pycache__/ は Python のバイトコードをプロジェクト履歴から除外します。
両方のファイルを表示して、追跡する前に内容を確認します。
sed -n '1,20p' README.md .gitignore
最初のインベントリの作成
このステップでは、小さな静的インベントリを作成します。インベントリは Ansible が管理できるシステムを定義します。最初の実験では、control という名前のホストが ansible_connection=local を使用します。これは、Ansible が SSH を使用せずにこの同じ VM 上でタスクを実行することを意味します。
このステップでコマンドを実行する前に、相対パスが Ansible プロジェクトを指すようにプロジェクトディレクトリに戻ります。
cd /home/labex/project/rhce-ansible
inventory/hosts を作成します。
cat > inventory/hosts <<'EOF'
[control]
control ansible_connection=local
EOF
角括弧で囲まれた [control] 行はグループを定義します。次の行は control という名前のホストエイリアスを定義し、ansible_connection=local はこの最初のプロジェクトで SSH を使用しないよう Ansible に指示します。
ansible-inventory を使用してファイルを解析します。このコマンドは、Playbook で使用する前にインベントリの構文をチェックします。
ansible-inventory -i inventory/hosts --graph
グラフには、グループ control とホスト control が含まれているはずです。
ベースラインプロジェクトのコミット
このステップでは、ベースラインファイルを Git に追加し、最初のコミットを作成します。コミットは、後で検査できる名前付きのチェックポイントです。
このステップでコマンドを実行する前に、相対パスが Ansible プロジェクトを指すようにプロジェクトディレクトリに戻ります。
cd /home/labex/project/rhce-ansible
ファイルをステージングします。ステージングは、どの変更を次のコミットに含めるかを Git に伝えます。
git add README.md .gitignore inventory/hosts
ベースラインコミットを作成します。
git commit -m "Create Ansible project baseline"
コミットの出力には、リポジトリに追加されたファイルが表示されるはずです。Git がコミットするものがないと表示した場合は、git status --short を再実行し、README.md、.gitignore、inventory/hosts がステージングされていることを確認してください。
最終的なステータスと最新のコミットを検査します。クリーンなステータスは、追跡されているすべての変更がコミットされていることを意味します。
git status --short
git log --oneline -1
git status --short は空になり、git log --oneline -1 は新しいコミットメッセージを表示するはずです。これにより、後の実験で Ansible のコンテンツを追加する前に、正常な状態のチェックポイントが確保されます。
まとめ
クリーンな Ansible プロジェクトワークスペースを作成し、Git を初期化し、基本的なインベントリを追加して、最初のベースラインをコミットしました。これらのプロジェクトの習慣は、後の Playbook、変数、テンプレート、ロール、および検証ファイルの管理を容易にします。


