Ansibleでファイル管理

レイ
2024-09-30
2024-09-30

Ansible_Logo皆さんごきげんよう~ おれちゃんでござる!

前回はAnsibleのことを大枠説明しまして、とても便利なツールだと説得できましたね!ね!だから今回はAnsibleのPlaybookを作成するときの各大きいパターンを踏んで細かいところを説明したいと思います。ファイル管理という一番一般的な設定作業から始めたいとおもいます。

簡単のコピペ

一番一般的な方法から始まります。ファイルをコピペするです。

先ずはコピーしたいファイルをファイルフォルダーに入れます。

例えば右に添付したように色んなファイルをfiles配下に置きまして、次はtaskのyamlファイルにコードでこれを実際に動かせます。

以上の内容のように書けばfiles配下にある指定されたファイルをdestのところにコピペします。デフォルトではrootの権限でコピペされてるからownerとgroupでそれを設定できます。もちろん他に色んな細かいオプションありますよ。すべては以下にリンクに書いてありあ。

https://docs.ansible.com/ansible/latest/collections/ansible/builtin/copy_module.html

ラインチェック

既存設定ファイルの内容を確認したかったらファイル丸ごと上書きするよりいい方法があります。以下のコードでできます。

こうすると/etc/security/access.confの中にlineで書いてあるラインはちゃんとあると確認します

insertafterのことで書いてあるラインはEOF、いわゆるファイルの最後に加われます。他のオプションいくつかありますが以下のリンクにもっと詳しく書いてあります。

https://docs.ansible.com/ansible/latest/collections/ansible/builtin/lineinfile_module.html

複数のラインの場合だったらblockinfileというモジュールを使えます。

append_newlineとpreprend_newlineでブロックの前後に改行入れます。他に様々なオプションあるので以下のリンクもと詳しく書いてあります。

https://docs.ansible.com/ansible/latest/collections/ansible/builtin/blockinfile_module.html

次はもうちょっと難しいパターンをあげたいと思います。それは、もしファイルをコピーする前何箇所を変更したいときです。そういう時templateを使います。

Template

テンプレートはとても便利な機能です。まずはtemplatesというフォルダーに.j2拡張子を加わったファイルを入れます。ファイルの中にAnsibleの変数に入れ替えたいところをjinja2という言語で反映できます。

jinja2でif/elseの条件などもできますので以上に便利です。

例えば以下はデフォルトのApacheテストページになります。

varsフォルダーの中のmain.yamlを見るとこの変数になります。

ルートディレクトリにあるmain.yamlを確認するとappの変数はチェックできます。

それでinventory.yamlのapache_settingsの部分を拝見すると書いてある値を確認できます。

今の例ではhttp_hostはhogehoge.co.jpです。

tasksの中にテンプレートは以下のように定義されます。

もっと詳しく調べたっから以下のリンクご覧ください。

https://docs.ansible.com/ansible/latest/collections/ansible/builtin/template_module.html

最後に

これでAnsibleを使って自動化への道を一歩進みました!一番基本基礎なファイルコピーという動作から始まりましたがこれからどんどん色んな例を挙げるつもりです。

お楽しみにしてね ^^💦