ansibleでsudoersファイル管理するときに
毎回copyモジュールで管理していたんですが、
どうしても/etc/sudoersに直接書かなければならない環境は
lineinfileモジュールを使えばいい感じになりそうです。


■lineinfile – Ensure a particular line is in a file, or replace an existing line using a back-referenced regular expression.

http://docs.ansible.com/ansible/lineinfile_module.html

regexpは正規表現。

・Examples


■メンテしやすいように変数化してみた

基本stateでWhether the line should be there or not.(指定した行があってもなくても)入れてるので、
・adachinという文字列があったら上書き
・adachinという文字列がなかったら追記
みたいな感じ。
これで新しい人が来たら追記すればOK!


■まとめ

正規表現で完全に一致するように書けば問題なし。
sudoersファイルは構文エラー(改行コード)気付かずそのまま適用すると死ぬので、
特にwindowsだとデフォルトでCRLFからLFに変更するように気をつけましょう〜

The following two tabs change content below.
あだちん

あだちん

1989年生まれ。 Infra Engineer/SRE In Shibuya 2013年新卒に自宅サーバを構築し、この技術ブログを立ち上げたが、 2017年に電源が壊れConoHaにリプレイスした。 好きな構成管理ツールはansible,Terraform。 インフラならAWS/docker。言語はPython。 WEBサーバならH2O。そして脆弱性スキャナVuls追いながらVulsRepo init fileのコミッターでもある。 HIPHOPが好きすぎてTrack Makerでもある。

コメントを残す