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に変更するように気をつけましょう〜

カテゴリー: AnsibleBlog

adachin

1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

2件のコメント

wint: fav魔 (@wint7) · 2018/01/31 3:31 pm

sudoers は設定ミスると危険なので、 validate option を使ったほうがいいですね。

参考:
http://docs.ansible.com/ansible/latest/lineinfile_module.html#examples の sudoers のサンプル

    あだちん · 2018/01/31 5:52 pm

    おおおおありがとうございます!

コメントを残す

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