問題
スタンドアロンのミニオンでsalt.states.pkgrepo.managed
は、非標準のソフトウェア リポジトリを追加するために使用されています。発生している問題は、次のsudo zypper update
実行時にキーがシステムによって (自動) 受け入れられず、パッケージの更新またはインストールが妨げられ、次の状態が失敗することです。
使用された正確な状態で繰り返すにはmysuse.sls
:
suse-gis-repo:
pkgrepo.managed:
- name: Application_Geo
- humanname: Applications related to the earth (GIS, Mapping, geodesy, GPS, astronomy) (openSUSE_Leap_42.1)
- baseurl: http://download.opensuse.org/repositories/Application:/Geo/openSUSE_Leap_42.1/
- gpgcheck: 1
- gpgkey: http://download.opensuse.org/repositories/Application:/Geo/openSUSE_Leap_42.1//repodata/repomd.xml.key
問題は、状態の次のフェーズが実行されるときです。
packages_uptodate:
pkg.uptodate:
- refresh: True
以下に示す手動介入が必要なため、失敗します。
New repository or package signing key received:
Repository: Application_Geo
Key Name: Application:Geo OBS Project <Application:Geo@build.opensuse.org>
Key Fingerprint: 195E2111 06BC205D 2A9C2222 CC7F0748 9591C39B
Key Created: Thu 16 Jul 2015 08:01:27 PM CEST
Key Expires: Sat 23 Sep 2017 08:01:27 PM CEST
Rpm Name: gpg-pubkey-9591c39b-55a7f177
Do you want to reject the key, trust temporarily, or trust always? [r/t/a/? shows all options] (r):
解決の試み
- の最後の 2 行
suse-gis-repo
がコメント アウトされている (つまり、gpgchk
&gpgkey
) 場合でも、上記の問題は引き続き発生します。 zypper ar -G <URI>
gpgkey がチェックされないようにしますが、salt 状態ではこれを行うオプションはありません。salt.states.pkgrepo.managed
対応する実行モジュールを使用する試みを使用する代わりに、この問題を解決するための 1 つの試みが試みられzypper.mod_repo
ました。
#3 で説明されている例を以下に示します。
package_autoaccept_key:
module.run:
- name: zypper.mod_repo
- kwargs: {
repo: 'Application_Geo',
baseurl: 'http://download.opensuse.org/repositories/Application:/Geo/openSUSE_Leap_42.1/',
enabled: 'True',
refresh: 'True',
gpgcheck: 'True',
gpgautoimport: 'True'
}
エラーで:
local:
----------
ID: package_autoaccept_key
Function: module.run
Name: zypper.mod_repo
Result: False
Comment: Module function zypper.mod_repo is not available
Started: 02:18:34.108787
Duration: 543.087 ms
Changes:
Summary for local
------------
Succeeded: 0
Failed: 1
------------
質問
状態または実行モジュールを介して、キーを自律的に受け入れる (常に信頼する) 方法はありますか?
module.run
実行モジュールは、関数を介してスタンドアロンのミニオンで実行できますか?スタンドアロンのミニオンで実行できる場合、必要なモジュールが存在することを確認する最善の方法は何ですか?
状態で使用するアプローチは
module.run
、上記の問題に対する欠陥のあるアプローチですか? もしそうなら、それはなぜですか?