私は書いた自動化されたインストールのための信頼できる役割etckeeper
。
user.emailを設定しないと、gitが文句を言うことがわかりました。場合によっては、gitコミットは失敗します。これには、パッケージのインストール時にetckeeperへの自動コミットが含まれ、インストールが失敗する可能性があります。したがって、次のようなタスクを追加する必要があります。他の人はすべてそうです:)。
残念ながら、場合によっては正常に動作するようです。そしてetckeeperを手動で使っても問題はないようです。 user.email
で言及されたことがない地図時間。
user.email
Ansible ロールを設定する必要がありますか?だとしたら…一部その理由は意図的なものです。役割の説明に入れることができるか、etckeeperまたはgitのパッチを正当化するための説明がありますか?
答え1
更新:次のバージョン(1.18.8)で修正する必要があります。
この問題を数回経験した後、ソースコードを調べる必要があると感じました。
- Gitコミットには「Eメールアドレス」が絶対に必要です。それ以外の場合はコミットを拒否します。
- システムのホスト名が完全修飾ドメイン名で解決できる場合、gitは電子メールを「自動検出」します。 (資格を得るには少なくとも1つは必要です
.
。)または/etc/mailname
存在する場合は、sを確認せずにsより優先して使用してください.
。 - etckeeper は、ユーザー名とシステムのホスト名で構成されるメールアドレスを git に渡そうとします。 gitは、ホスト部分がFQDNでない場合でも、明示的に指定されたEメールを受け入れます。使用する場合、
sudo
etckeeper は環境で SUDO_USER を使用します。使用するとsu
環境には何もないため、etckeeperはそのユーザーの所有者からユーザーを読み取ります。端末。
したがって、設定がなく、ホスト名がFQDNとして解決されない場合はgit commit
失敗します。etckeeper vcs commit
user.email
etckeeper commit
場合によっては動作しませんgit commit
。以前にテストしたとき、2つの間に混乱があったようです。
etckeeper
で実行してもsudo
失敗しません。で実行してもsu
失敗しません。 rootとしてログインして実行しても失敗しません。ルート所有のttyを見つけて電子メールを転送しますroot@HOSTNAME
。
etckeeper commit
次の場合にのみ失敗します。
user.email
git
、ANDに設定されていません- システムのホスト名をFQDNとして解決できません。
- /etc/mailnameが存在しません(Debian eximパッケージで作成されましたか?)。
- etckeeperはsudoでは実行されません。
- etckeeperはttyでは実行されません。
最後に、テストの結果、ansibleで実行されるコマンドはttyで実行されないことがわかりました。 (ssh
接続とパスワードがあっても、sudo
ansibleは次のように説明されています。擬似ttyを使用する必要があります)。