0

特定のマウント ポイントが 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よりも包括的な公式ドキュメントはありますか? ドキュメント全体は、おそらくより多くのレンズユーザー向けではなく、新しいレンズ開発者向けに書かれているようです。

4

1 に答える 1