Ansibleで、正規表現でパターンにマッチした文字列を置換先として使う

Ansible完全読本

replaceで置換するときに、正規表現でパターンにマッチした文字列を置換先として使う機能(この機能の名前を知らないんですけど)をどうやったら良いか分からず試行錯誤しました。で、とりあえず公式ドキュメントを見たら書いてありました。

– replace: dest=/etc/hosts regexp='(\s+)old\.host\.name(\s+.*)?$’ replace=’\1new.host.name\2′ backup=yes

AnsibleはPythonで書かれているので、Pythonの正規表現機能がだいたい使えるはずですね。php.iniやmy.cnfの書き換えはこのモジュールを使うと簡単です。

こういう環境変数の書き換えは、ついつい本番を直接触りたくなりますよ。それをグッとこらえつつ、AnsibleのPlaybookを書いて、ローカルVagrantで動作を確認した上で、最後に本番にansible-playbookしています。少しメンテナンスコストが高い気もするんですけど、スケールアウトやクラウドサービスへのロックイン回避のため続けようと思います。