特定のマウント ポイントが fstab に存在することを宣言/確認するために Augeas を使用しようとしています。既に存在する場合は、これらの $settings があることを確認してください。そうでない場合は、新しい行を作成してください。
しかし、私はオーゲアスにそれをさせることができませんでした。既存の行を変更したり、新しい行を追加したりできます。ただし、(疑似コード)のように両方ではありません。
if (line_exists) {
check_and_modify_line()
} else {
create_new_line()
}
にcheck_and_modify_line()
、これは機能します:
set /files/etc/fstab/*[file="/mnt/ISO"]/file "/mnt/ISO"
set /files/etc/fstab/*[file="/mnt/ISO"]/spec "nas:/ISO/iso"
set /files/etc/fstab/*[file="/mnt/ISO"]/vfstype "nfs"
set /files/etc/fstab/*[file="/mnt/ISO"]/opt "intr"
set /files/etc/fstab/*[file="/mnt/ISO"]/dump "0"
set /files/etc/fstab/*[file="/mnt/ISO"]/passno "0"
にcreate_new_line()
、これは機能します:
set /files/etc/fstab/01/spec "nas:/ISO/iso"
set /files/etc/fstab/01/file "/mnt/ISO"
set /files/etc/fstab/01/vfstype "nfs"
set /files/etc/fstab/01/opt[1] "intr"
set /files/etc/fstab/01/dump "0"
set /files/etc/fstab/01/passno "0"
しかし、上記の 2 つのセクションを 1 つのセクションに組み合わせる秘伝のソースは、私にはわかりません。そして、Augeas は宣言的/冪等であるべきだと思っていたので、Augeas に「この行が存在することを確認してください」と言えないのはかなり驚きです。
if/then/else スタイルのブロックもないようです。
if match /files/etc/fstab/*[file="/mnt/ISO"]
defnode isonode /files/etc/fstab/*[file="/mnt/ISO"]
else
defnode isonode /files/etc/fstab/01
set $isnode/file "/mnt/ISO"
set $isnode/bla "bla-bla"
これをすべて「設定」操作の単一の束または単一の.augファイルで実行する方法はありますか?
sudo augtool < mountpoint.aug
確かに、相互に排他的な -s を使用していくつかの augeas パペット リソースを使用することも、onlyif
たとえば bash や perl で grep、sed などを組み合わせてラッパーを使用することもできますが、Augeas ではなく、それを完全に使用することに固執することもできます...
ところで、Augeasを使用するための、tiny tourよりも包括的な公式ドキュメントはありますか? ドキュメント全体は、おそらくより多くのレンズユーザー向けではなく、新しいレンズ開発者向けに書かれているようです。