RHEL8/CetnOS8/Oracle Linux 8でのパッケージ自動アップデートはdnf-automaticで提供されることになった。
[RHEL8基本的なシステム設定の構成]-[第12章 ソフトウェアパッケージの管理]の「12.1. Red Hat Enterprise Linux 8 におけるソフトウェア管理ツール」にある説明と「DNF Automaticドキュメント」を見てみたが、いまいち分からない点があった。
それは[emitters]セクションのemit_viaで指定する文字列と、[email]セクション、[command]セクション、[command_mail]セクションの関係性である。
/etc/dnf/automatic.conf のRHEL8インストール時点でのemit_viaは「emit_via = stdio」となっている。
その上に「Default is email,stdio」なんて書いてあるけど、stdioで設定されている。
emit_via=stdioの場合
「emit_via=stdio」の場合、標準出力にdnf automaticでの実行結果が出力される。
出力された先はシステムログになっているので journalctlコマンドで確認できる。設定によっては /var/log/messages にも出力されることになる。
emit_via=emailの場合
「emit_via=email」の場合、[email]セクションに行われている設定が使用される。
メール送信は pythonのsmtplibを使用したSMTPプロトコルによって行われるため、適切に設定されていない場合は下記の様なエラーになる。
emit_via=commandの場合
「emit_via=command」の場合、[command]セクションにある設定が使用される。
command_formatとstdin_formatを調整して、コマンド実行オプションとそのコマンドに対する標準入力設定を調整する必要がある。
emit_via=command_emailの場合
「emit_via=command_email」の場合、[command_email]セクションにある設定が使用される。
やってること自体は[command]の場合とほぼ同じで、追加設定としてemail_fromとemail_toが指定できるようになっている感じである。
わざわざcommandとcommand_emailを分けている理由がわからない・・・
emit_via=motdの場合
「emit_via=motd」の場合、/etc/motdファイルに結果を出力することが出来る。
どう設定すればいいのか?
動作確認のやりやすさとしては、「emit_via=stdio,command_email」として、[command_email]セクションでメールを送る設定が良いでしょう。
メールが送れない場合、command_formatに書かれている「”mail -Ssendwait -s {subject} -r {email_from} {email_to}”」を元に、例えば下記の様な形で実行して確認をすることが出来ます。
$ cat /etc/hosts | mail -Ssendwait -s testmail -r root@localhost root
-bash: mail: command not found
$
あ・・・最小インストールだとmailコマンドが入ってないですね・・・
command_emailを使用する場合は「sudo dnf install mailx」でmailxパッケージを追加インストールしてください。
“RHEL8/CentOS8のdnf automaticのemitters設定を調べた” への1件の返信