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年生まれ。 ランサーズ/SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、ランサーズにてサーバ系のお仕事も副業で行い、他社インフラレスポンス改善、ansibleでのインフラコード化を推進し、未経験によるエンジニア勉強会なども実施している。 そして「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/広報/VulsRepo init file,chatwork通知のコントリビュータでもある。 現在はDocker開発環境の提供,AWSで新サービスのインフラ構築,PHPバージョンアップ,分析基盤を担当しておりDigdag,embulk,BigQueryを使いこなそうと奮闘中。

2 thoughts on “【ansible】sudoersファイルはlineinfileで!”

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください