こんにちは、yassanです。
今回は、必ず抑えておきたいAnsibleの便利機能を紹介します。
Ansibleはいわゆる構成管理ツールの一つです。
Ansibleでは、コードを実行してOS以上の設定をするのが主な使われ方と思います。
そんなAnsibleですが、ただ単にファイルを配信するツールと思われますが、
実際には便利な機能が多数リリースされています。
今回はその中でも、ベーシックでかつ強力な3つの機能について紹介します。
これを機に、Ansibleに興味を持っていただけると幸いです。
必ず抑えておきたいAnsibleの便利機能
ドライラン
ドライランとは、
コントロールノードのコードを実行しますが、ターゲットノードの環境を更新しない実行のことです。
(通常のランでは、当然ディレクトリやファイルを生成してしまいます。)
ドライランの位置づけとしては「Ansibleが正常に実行することができるよね?」というのを確認するための、
仮実行と思っていただければと思います。
ターゲットノードの環境を更新しないとはいえ、実行は実行なのでログは表示されます。
ログに表示されるのは、もし環境を更新した場合...のログが表示されます。
いきなりファイルを更新してしまうことに抵抗がある場合は、ドライランを使って試行してみると心理的不安を払拭できると思います。
チェックモード (「ドライラン」) — Ansible Documentation
差分出力
差分出力とは、
その名の通り実行前と実行後の差分を出力します。
ディレクトリやファイルの属性だけでなく、中の1行1行の差分も出力してくれます。
イメージとしては、Linuxコマンドのdiffコマンドと非常に近いです。
先ほどのドライランと組み合わせて使用することも可能です。
ファイルの更新がうまくいくか、試行してなおかつ差分まで確認することができます。
コード管理をGitで行っている場合は、commit履歴と照合することができれば、より効率的に差分を確認することができます。
バックアップ
バックアップとは、
ファイルを更新した場合に更新前のファイルも残しておく機能です。
厳密には、Ansibleの機能というよりも、その中の一部のモジュールに含まれる機能です。
copyモジュールやtemplateモジュールで使用することができます。
更新があるファイルだけを対象にバックアップを作成しますので、無駄にバックアップファイルが作成されることはありません。
バックアップファイルには、元のファイルの末尾にタスク名とタイムスタンプがくっついた形になります。
定期的にAnsibleを実行する運用になっている場合は、
バックアップファイルがゴミファイルとなってストレージを圧迫する可能性があります。
cronなどで定期的な削除も考慮した方が良いかもしれません。
ansible.builtin.copy – Copy files to remote locations — Ansible Documentation
ansible.builtin.template – Template a file out to a target host — Ansible Documentation
まとめ
内容をまとめると、
- ドライラン:実際にファイルを更新せず実行結果だけを出力する機能
- 差分表示:更新前と更新後の差分をファイルの中身まで出力する機能
- バックアップ:更新のあったファイルだけバックアップを作成する機能
です。
以上、必ず抑えておきたいAnsibleの便利機能 でした。
Ansible学習におすすめの教材
Ansibleについて、しっかりと基礎から学びたい、実践的なスキルを身につけたいと考えている方向けに、おすすめの教材を紹介します。
これらの書籍は、実際にAnsibleを活用してインフラエンジニアとして働く僕が参考にしている教材です。
Ansible実践ガイド 第3版 impress top gearシリーズ
プレイブックとインベントリの基礎と実例/Infrastructure as Code/DevOps/Windowsの設定管理/Docker、Azureにおけるクラウド管理/大規模環境の自動化管理/AWX Projectの導入/ネットワーク機器設定の自動化。Ansibleの基礎から応用事例に至るまで、実践的な活用手法を網羅。
Ansibleの基本的な考え方から始まり、Playbookのコードスタイルや規模に応じた構成など実用的な内容まで幅広く取り扱った書籍となります。
Ansibleはリリースサイクルが早いですが、こちらの書籍も第3版となり内容はきちんと追随することはできています。
AnsibleやIaCを初めて取り扱う方や、イマイチAnsibleを使いこなせている自信がない方におすすめです。
Ansibleによるシステム構成管理:基礎からCloud Modulesを使ったAWS構築まで
本コースではサーバーのミドルウェアのインストール・設定作業といったサーバーインフラの構築作業を、構成管理ツール「Ansible」(アンシブル)を使ってコード化し、自動化する方法を基礎から学びます。
また、Ansible 2.4より導入された「Cloud Modules」を使って、AWSクラウドに、EC2サーバーを起動する方法や、Route53、ELB ( Application Load Balancer )との連携方法も学びます。
Ansibleを使ったサーバーの構築・設定の自動化について学習することができます。
Ansibleとしての基礎だけでなく、Ansibleを使ったAWSの環境構築まで踏み込んで学ぶことができます。
Ansibleとパブリッククラウドを組み合わせて使いこなしたい方におすすめです。