Ansible

HOME > Ansible

Ansible:記事リスト

Ansibleのカテゴリーには以下の記事がリストされています。

Ansibleの変数優先順位と設定スコープを整理する|vars・defaults・group_vars・host_varsの使い分け

「インベントリに変数を書いたのに、なぜかPlaybookの値で上書きされてしまう」
「roleを別プロジェクトに流用したら、意図しない値で動いてインフラを壊しかけた」

Ansibleの変数トラブルで時間を取られた経験はないでしょうか。こうした問題の多くは、Ansibleが持つ「22段階の変数優先順位」を把握していないことが原因です。変数をどこに書くかによって、どの値が最終的に使われるかが変わる——これがAnsible変数設計の核心です。

この記事では、Ansible変数の定義場所ごとの優先順位、group_vars・host_varsで環境差分を管理するパターン、roleのdefaults/varsの使い分けを実際のYAMLとコマンド出力を交えて解説します。
「変数をどこに書くべきか」の判断基準を身につければ、環境ごとの設定ミスや予期しない上書きを大幅に減らせます。

この記事のポイント

・Ansible変数は22段階の優先順位を持ち、extra_vars(-e)が最高優先度
・group_vars/host_varsでステージング・本番の環境差分を安全に管理できる
・roleのdefaults(上書き可)とvars(固定)を使い分けるのが設計の基本
・debugモジュールと-vオプションで変数の実値をその場で確認できる

続きを読む "Ansibleの変数優先順位と設定スコープを整理する|vars・defaults・group_vars・host_varsの使い分け"

Ansibleの冪等性設計|command・shellモジュールの罠と安全なPlaybookの4原則

「Ansibleを使い始めたのに、同じPlaybookを2回実行したらエラーになった」「手動でサーバーを触った後にAnsibleを流すと設定が壊れる」——Ansibleを導入した現場でこうした問いに直面することがあります。
原因の多くは、Playbook設計の段階で「冪等性(べきとうせい)」の考え方が抜けていることにあります。冪等性とは「何度実行しても同じ結果が得られる性質」のことで、Ansibleの設計思想の核心です。

この記事では、Ansibleが冪等性を必要とする理由から、冪等性を破壊してしまうアンチパターン、そして現場で機能する4つの設計原則まで体系的に解説します。
RHEL 10 / Rocky Linux 9 の実環境で確認した実行例つきで説明しているので、自分のPlaybookにすぐ応用できます。

この記事のポイント

・Ansibleの冪等性とは「何度実行しても同じ状態に収束する」設計の性質
・command/shell乱用とstate未指定が冪等性を破壊する2大アンチパターン
・4原則:モジュール優先・creates条件付け・state明示・handler活用
・--checkと--diffで実行前に変更内容を事前確認する設計フロー

続きを読む "Ansibleの冪等性設計|command・shellモジュールの罠と安全なPlaybookの4原則"

Ansibleのwhen条件・loop・tagsでPlaybookを制御する方法|環境ごとの分岐と対象タスクを絞り込む設計パターン

「本番サーバーとテスト環境で別々のパッケージをインストールしたい」
「ユーザーアカウントを10件、同じ設定で一括作成したい。コピペを繰り返すのはつらい」
「Playbookが100行を超えてきた。今日はNginxの設定変更だけ反映して、他のタスクはスキップしたい」
「設定ファイルの書き込みが失敗したとき、自動でバックアップから元に戻したい」

Ansibleを本格的に使い始めると、必ずこうした要求に直面します。単純な「命令を並べるだけ」のPlaybookは、環境差分への対応・複数リソースの一括操作・部分実行・エラー時の自動回復が必要になった瞬間に限界を迎えます。

この記事では、Ansibleの制御フロー3本柱であるwhen条件式(実行分岐)・loop繰り返し処理tags部分実行を体系的に解説します。さらに本番運用で欠かせないblock・rescue・alwaysによるエラーハンドリング設計も含め、RHEL 10 / Rocky Linux 9の実行例とともに説明します。

この記事のポイント

・whenはOS種別・ファクト変数・register結果・グループ判定など多様な条件を記述できる
・loopはリスト・辞書を使った繰り返しで複数ユーザー・パッケージの一括操作を簡潔に書ける
・tagsで「インストールだけ」「設定だけ」を選択実行でき大規模Playbookの運用効率が上がる
・block/rescue/alwaysはPythonのtry/except/finallyに相当するエラーハンドリング構造
・3つを組み合わせれば環境別インストール・一括作成・差分適用を1Playbookで表現できる

続きを読む "Ansibleのwhen条件・loop・tagsでPlaybookを制御する方法|環境ごとの分岐と対象タスクを絞り込む設計パターン"

Ansible GalaxyでRoleを管理する方法|requirements.ymlと自社role設計の実践

「AnsibleのPlaybookを書くたびにNginxやMySQLのroleをゼロから書いている。誰かが公開していれば使いたいのに、どこから探せばいいか分からない」
Ansibleを使い始めると、こういった悩みが必ず出てきます。

実は、AnsibleにはAnsible Galaxyという公式のrole共有プラットフォームがあります。世界中のエンジニアが作成したroleが多数登録されており、ansible-galaxy installコマンド1本で自分のプロジェクトに取り込めます。コミュニティroleを上手に活用すれば、構成管理の開発コストを大幅に削減できます。

この記事では、Ansible GalaxyからのroleインストールとPlaybookへの組み込み方、requirements.ymlによる依存バージョン管理、そして自社独自roleの骨格設計まで解説します。単なるコマンドリファレンスではなく、チーム開発で実際に使える設計パターンを重点的に扱います。実行環境はRHEL 10 / Rocky Linux 9です。

この記事のポイント

・Ansible Galaxyはコミュニティroleの公式共有プラットフォームで1コマンドで取り込める
・requirements.ymlでrole依存とバージョンを宣言しチームで環境を統一できる
・ansible-galaxy role initで自社roleの骨格を生成し再利用しやすい設計を実現できる
・本番環境ではバージョン固定とGalaxy/Automation Hubの使い分けが品質の鍵になる

続きを読む "Ansible GalaxyでRoleを管理する方法|requirements.ymlと自社role設計の実践"

Ansible動的インベントリ設計|aws_ec2プラグインでEC2ホストを自動取得する仕組みと設定パターン

「EC2インスタンスを起動するたびにhosts.iniを手動で書き直している。Auto ScalingでIPが変わったらもうPlaybookが動かない」
AWSでAnsibleを使い始めたエンジニアが必ずぶつかる壁だ。クラウド環境では静的なインベントリファイルとインフラの実態がすぐに乖離する。その結果、「インベントリにあるホストが実際には存在しない」エラーや、「起動したばかりのインスタンスがPlaybookの対象にならない」という問題が頻発する。

この記事では、Ansibleの動的インベントリ(Dynamic Inventory)の仕組みと、aws_ec2プラグインを使ったEC2ホスト自動取得の設定パターンを解説する。aws_ec2.yamlの記述方法、タグベースのグループ設計、ansible-inventoryコマンドによる動作確認、静的インベントリとの併用設計、トラブルシュートまで、設計の観点から順を追って説明する。
動作確認環境: RHEL 10 / Ubuntu 24.04 LTS、Ansible 2.17(amazon.aws 8.x)、boto3 1.34。

この記事のポイント

・aws_ec2プラグインはEC2 APIをリアルタイムで呼び出してホスト一覧を自動生成する
・aws_ec2.yaml 1ファイルにリージョン・フィルター・グループ条件を定義できる
・タグ(Env/Role)のkeyed_groupsでhosts.ini不要の自動グループ化が実現できる
・ansible-inventory --graphで取得結果を確認してからPlaybookを実行するのが安全な手順

続きを読む "Ansible動的インベントリ設計|aws_ec2プラグインでEC2ホストを自動取得する仕組みと設定パターン"

AnsibleのJinja2テンプレートとhandler設計|設定ファイルの動的生成とサービス自動再起動の仕組み

「設定ファイルをサーバーごとに手作業でコピーしているが、環境ごとに内容を変えるのが面倒だ」
「Ansibleで設定ファイルを配布した後、サービスのreloadを毎回手動でやっている」

こんな悩みは、Ansibleを使い始めたエンジニアが必ずぶつかる壁だ。copyモジュールで静的ファイルを配布するだけでは、環境ごとの差異(ホスト名・ポート番号・SSL設定の有無など)を吸収できない。設定変更のたびに手動でサービスを再起動するのは自動化の恩恵を半分しか受けていない状態だ。

この記事では、Ansibleの templateモジュール(Jinja2テンプレートで設定ファイルを動的生成)と handler/notify(設定変更を検知してサービスを自動再起動)の仕組みを、httpd.confを題材に解説する。動作確認環境: RHEL 10 / Rocky Linux 9・Ansible 2.17。概念から実際のPlaybook設計まで順を追って説明する。

この記事のポイント

・templateモジュールはJinja2で変数・条件分岐を埋め込める設定ファイル配布モジュール
・copyとtemplateの違いはJinja2レンダリングの有無だけ
・handlerはnotify時のみPlay終了後に1回だけ実行される通知型タスク
・template + handlerで設定配布→変更検知→再起動を完全自動化できる

続きを読む "AnsibleのJinja2テンプレートとhandler設計|設定ファイルの動的生成とサービス自動再起動の仕組み"

Ansible Vaultでシークレットを安全に管理する方法|パスワードファイルや暗号化変数の実践例

「playbookにパスワードを直書きしてしまっている……」
そう気づいた瞬間、ぞっとした経験はないでしょうか。Ansibleはサーバーを自動設定できる便利なツールですが、DBのパスワードやAPIキーをplaybookにベタ書きしてしまうと、Gitにコミットした瞬間に認証情報が漏洩するリスクが生まれます。

この記事では、Ansibleに標準搭載されている Ansible Vault を使って、パスワードや秘密鍵などのシークレット情報を安全に暗号化・管理する方法を解説します。vault-passwordファイルによるパスワードレス実行、変数ファイルの部分暗号化、CI/CD連携まで実践的な手順をカバーします。

この記事のポイント

・ansible-vault encrypt でファイルを丸ごと暗号化できる
・vault_password_fileで対話入力なし自動実行が可能になる
・!vault タグで変数ファイルの一部だけを暗号化できる
・ansible-vault view/edit でファイルを復号せずに編集できる

続きを読む "Ansible Vaultでシークレットを安全に管理する方法|パスワードファイルや暗号化変数の実践例"

AnsibleとシェルスクリプトSSHループの違い|構成管理に踏み出す判断

「サーバーが10台を超えたあたりから、SSHループのシェルスクリプトが手に負えなくなってきた」
そういう相談を受けることが多くなりました。

シェルスクリプトでSSHを束ねる手法は、台数が少ないうちは確かに便利です。しかしある規模を超えると、スクリプトの複雑さ・冪等性の欠如・メンテナンスコストが一気に牙を剥いてきます。

この記事では、シェルスクリプトSSHループとAnsibleが「どこが違うのか」を概念レベルで整理し、どのタイミングでAnsibleに踏み出すべきかを判断できる知識を提供します。コマンド一覧のリファレンスではなく、「なぜAnsibleが必要なのか」という設計思想の解説を軸にしています。

この記事のポイント

・SSHループは「手順の自動化」、Ansibleは「状態の自動化」という根本的な違いがある
・冪等性(何度実行しても同じ結果になる性質)の有無が最大の分岐点
・サーバー台数が10台超・設定変更が月1回以上ならAnsibleへの移行が効果的
・inventoryとrole分離で、設定の再利用性と可読性が大幅に向上する

続きを読む "AnsibleとシェルスクリプトSSHループの違い|構成管理に踏み出す判断"

Terraformのmoduleとfor_each・countで構成を再利用する設計パターン

「Terraformコードが増えるにつれて、似たようなリソース定義が至る所にコピーされてしまう」
Terraformを使い始めると、最初はうまくいく。VPCを作り、EC2を作り、サブネットを定義する。しかし3つ目、4つ目の環境を作り始めたとき、コードが爆発的に膨らんでいることに気づく。

この記事では、terraform moduleの使い方と、for_each・ countを組み合わせた構成の再利用設計パターンを解説します。moduleの基本構造から、countとfor_eachの使い分け基準、localsブロックを使った環境設定の一元管理まで、実務で通用するパターンを段階的に説明します。

この記事のポイント

・terraform moduleでリソース定義を再利用可能な単位にまとめられる
・countは数値で繰り返し、for_eachはマップで繰り返す
・削除が伴う変更にはfor_eachの方がリスクが低い
・inputとoutputを設計すればmodule間を疎結合につなげられる

続きを読む "Terraformのmoduleとfor_each・countで構成を再利用する設計パターン"

Ansibleのinventory・role・module設計|現場で崩れない構成管理の基礎

「Ansibleを使い始めたけれど、ファイルが増えるにつれて管理が混乱してきた」「inventoryをどう分けるべきか、roleはどう設計すればいいかが分からない」
こういった悩みは、Ansibleを実務で使い始めた多くのエンジニアが通る道です。

チュートリアルの段階ではひとつのPlaybookに全部書いても問題ありません。ですが、管理するサーバー台数が増え、環境(開発・本番)が分かれ、チームで共有するようになった瞬間に「なぜこう書いたのか誰も分からない」状態に陥ります。

この記事では、ansible inventory role module の3軸を軸に、現場で崩れない構成管理の設計方針を解説します。「ファイルの置き場所の原則」「roleの分割粒度」「moduleの選び方」まで、実際に手を動かしながら理解できる内容にしています。

この記事のポイント

・ansible inventory は環境別(dev/prod)に分離し host_vars で個体差を吸収する
・role は機能単位(nginx/mariadb)で分割し依存性を ansible-galaxy で管理する
・module は「冪等性が保証されるか」を基準に選択。command/shell は最終手段
・inventory・role・module の設計が揃って初めて構成管理が安定する

続きを読む "Ansibleのinventory・role・module設計|現場で崩れない構成管理の基礎"

AnsibleでAWS上にNginx・PHP・MariaDBを自動構築する実践手順

「AWSのEC2に毎回手作業でNginxやPHPを入れている」「環境を再現しようとしたら設定が違っていた」
こういう悩みを抱えているLinuxエンジニアは少なくありません。

この記事では、AnsibleをつかってAWS EC2上にNginx・PHP・MariaDBを自動構築する実践的な手順を解説します。
Inventoryファイルの設計からRole分割、Playbookの実行・確認まで、現場で再現できるレベルで説明します。

この記事のポイント

・ansible-playbookコマンド1本でEC2にLEMP環境を自動構築できる
・RoleでNginx・PHP・MariaDBを分離すれば再利用性が大きく上がる
・Inventoryに接続情報を集約することで複数台管理も一元化できる
・AWSセキュリティグループのポート開放を事前に忘れると接続でつまずく

続きを読む "AnsibleでAWS上にNginx・PHP・MariaDBを自動構築する実践手順"

手作業のサーバー設定から卒業する|構成管理ツールAnsibleの入門ハンズオン

「またあの作業か……」サーバーが増えるたびに、同じSSH接続と同じコマンド打鍵を繰り返していませんか?
10台ならまだ我慢できます。しかし20台・50台と増えた瞬間、手作業は「管理の限界」にぶつかります。

この記事では、構成管理ツール Ansible(アンシブル)の入門から実践的なPlaybook設計まで、完全初心者でも理解できるように解説します。
「コマンドを1台ずつ打つ」作業から卒業して、インフラ自動化の入口に立ちましょう。

この記事のポイント

・Ansibleはエージェント不要でSSH経由だけでサーバーを自動設定できる
・Inventoryで対象サーバーを定義し、Playbookで手順を宣言的に書く
・べき等性(何度実行しても同じ結果)がAnsibleの最大の強み
・セミナーLP(ansible.linuxmaster.jp)で実機ハンズオンを体験できる

続きを読む "手作業のサーバー設定から卒業する|構成管理ツールAnsibleの入門ハンズオン"

Linux無料マニュアル(図解60P) 名前とメールで30秒登録