Merge branch 'main' into IAC-1143
[puppet-modules/puppetlabs-apt.git] / readmes / README_ja_JP.md
1 # apt
2
3 #### 目次
4
5
6 1. [説明 - モジュールの機能とその有益性](#module-description)
7 1. [セットアップ - apt導入の基本](#setup)
8     * [aptが影響を与えるもの](#what-apt-affects)
9     * [aptの使用を開始する](#beginning-with-apt)
10 1. [使用 - 設定オプションと追加機能](#usage)
11     * [GPGキーの追加](#add-gpg-keys)
12     * [バックポートの優先度を上げる](#prioritize-backports)
13     * [パッケージリストの更新](#update-the-list-of-packages)
14     * [特定のリリースのピン止め](#pin-a-specific-release) 
15     * [PPA (Personal Package Archive)レポジトリの追加](#add-a-personal-package-archive-repository)
16     * [HieraからのAptの構成](#configure-apt-from-hiera)
17     * [デフォルトのsources.listファイルの置き換え](#replace-the-default-sourceslist-file)
18 1. [参考 - モジュールの機能と動作について](#reference)
19 1. [制約 - OS互換性など](#limitations)
20 1. [開発 - モジュール貢献についてのガイド](#development)
21
22 ## モジュールの概要
23
24 aptモジュールを導入すると、Puppetを使用してAPT (Advanced Package Tool)のソース、キー、その他の構成オプションを管理できます。
25
26 APTとは、Debian、Ubuntu、およびその他いくつかのオペレーティングシステムで利用可能なパッケージマネージャです。aptモジュールは、APTのパッケージ管理を自動化するのに役立つ一連のクラス、定義型、およびfactsを提供します。
27
28 **注意**: このモジュールが実行中のDebian/Ubuntu (もしくは派生OS)のバージョンを正しく自動検出するためには、'lsb-release'パッケージがインストールされていることを確認する必要があります。これをプロビジョニングレイヤの一部にするか(多くのDebianシステムまたは派生OSシステムを実行する場合はこちらを推奨)、この依存関係を自動的に取得する機能をもつFacter 2.2.0以降をインストールしておくことを強くお勧めします。
29
30 ## セットアップ
31
32 ### aptが影響を与えるもの
33
34 * システムの`preferences`ファイルと`preferences.d`ディレクトリ
35 * システムの `sources.list`ファイルと`sources.list.d`ディレクトリ
36 * システムレポジトリ
37 * 認証キー
38
39 **注意:** このモジュールには`purge`パラメータがあります。このパラメータを`true`に設定すると、 ノードの `sources.list(.d)`および`preferences(.d)`の構成のうち、Puppetを通して宣言されていないものがすべて**破棄**されます。このパラメータのデフォルトは`false`です。
40
41 ### aptの使用を開始する
42
43 デフォルトのパラメータでaptモジュールを使用するには、`apt`クラスを宣言します。
44
45 ```puppet
46 include apt
47 ```
48
49 **注意:** メインの`apt`クラスは、このモジュールに含まれるその他すべてのクラス、型、定義型によって要求されます。このモジュールを使用する際は、このクラスを必ず宣言する必要があります。
50
51 ## 使用
52
53 ### GPGキーの追加
54
55 **警告:** 短いキーIDを使用すると、衝突攻撃が有効になる可能性があり、セキュリティに深刻な問題が生じます。常に、完全なフィンガープリントを使用してGPGキーを識別することを推奨します。このモジュールでは短いキーの使用が許可されていますが、それを使用した場合、セキュリティ警告が発行されます。
56
57 `apt::key`の定義型を宣言するには、次のように記述します。
58
59 ```puppet
60 apt::key { 'puppetlabs':
61   id      => '6F6B15509CF8E59E6E469F327F438280EF8D349F',
62   server  => 'pgp.mit.edu',
63   options => 'http-proxy="http://proxyuser:proxypass@example.org:3128"',
64 }
65 ```
66
67 ### バックポートの優先度を上げる
68
69 ```puppet
70 class { 'apt::backports':
71   pin => 500,
72 }
73 ```
74
75 デフォルトでは、`apt::backports`クラスはバックポート用のピンファイルをドロップし、優先度200にピン止めします。これは、通常のデフォルト値である500よりも低いため、`ensure => latest`に設定されているパッケージは、明示的な許可がない限り、バックポートからアップグレードされることはありません。
76
77 `pin`パラメータを使用して優先度を500に上げると、通常のポリシーが有効になり、Aptは最新のバージョンをインストールするか、最新のバージョンにアップグレードします。これはつまり、`package`リソースの`ensure`属性を明示的に`installed`/`present`もしくは特定のバージョンに設定していない限り、あるパッケージがバックポートから利用できる場合は、そのパッケージと依存関係がバックポートから取得されるということです。
78
79 ### パッケージリストの更新
80
81 デフォルトでは、`apt`クラスをインクルードした後の最初のPuppet実行時と、`notify  => Exec['apt_update']`が発生するたびに(別の言い方をすれば、構成ファイルが更新されるか、関連するその他の変更が行われるたびに)、Puppetは`apt-get update`を実行します。`update['frequency']`を'always'に設定すると、Puppet実行時に毎回更新が行われます。`update['frequency']`は'daily'や'weekly'に設定することも可能です。
82
83 ```puppet
84 class { 'apt':
85   update => {
86     frequency => 'daily',
87   },
88 }
89 ```
90 `Exec['apt_update']`がトリガされると、`Notice`メッセージが生成されます。デフォルトの[agentロギングレベル](https://docs.puppet.com/puppet/latest/configuration.html#loglevel)は`notice`であるため、このレポジトリの更新は、ログおよびagentレポートに記録されます。[Foreman](https://www.theforeman.org)など、一部のツールでは、このような更新通知が重要な変更としてレポートされます。これらの更新がレポートに記録されないようにするには、`Exec['apt_update']`の[loglevel](https://docs.puppet.com/puppet/latest/metaparameter.html#loglevel)メタパラメータをagentロギングレベルよりも高い値に設定します。
91
92 ```puppet
93 class { 'apt':
94   update => {
95     frequency => 'daily',
96     loglevel  => 'debug',
97   },
98 }
99 ```
100
101 ### 特定のリリースのピン止め
102
103 ```puppet
104 apt::pin { 'karmic': priority => 700 }
105 apt::pin { 'karmic-updates': priority => 700 }
106 apt::pin { 'karmic-security': priority => 700 }
107 ```
108
109 ディストリビューションのプロパティを使用して、より複雑なピンを指定することもできます。
110
111 ```puppet
112 apt::pin { 'stable':
113   priority        => -10,
114   originator      => 'Debian',
115   release_version => '3.0',
116   component       => 'main',
117   label           => 'Debian'
118 }
119 ```
120
121 複数のパッケージをピン止めするには、配列またはスペース区切りの文字列としてその情報を`packages`パラメータに渡します。
122
123 ### PPA (Personal Package Archive)レポジトリの追加
124
125 ```puppet
126 apt::ppa { 'ppa:drizzle-developers/ppa': }
127 ```
128
129 ### `/etc/apt/sources.list.d/`へのAptソースの追加
130
131 ```puppet
132 apt::source { 'debian_unstable':
133   comment  => 'This is the iWeb Debian unstable mirror',
134   location => 'http://debian.mirror.iweb.ca/debian/',
135   release  => 'unstable',
136   repos    => 'main contrib non-free',
137   pin      => '-10',
138   key      => {
139     'id'     => 'A1BD8E9D78F7FE5C3E65D8AF8B48AD6246925553',
140     'server' => 'subkeys.pgp.net',
141   },
142   include  => {
143     'src' => true,
144     'deb' => true,
145   },
146 }
147 ```
148
149 Puppet Aptレポジトリをソースとして使用するには、次のように記述します。
150
151 ```puppet
152 apt::source { 'puppetlabs':
153   location => 'http://apt.puppetlabs.com',
154   repos    => 'main',
155   key      => {
156     'id'     => '6F6B15509CF8E59E6E469F327F438280EF8D349F',
157     'server' => 'pgp.mit.edu',
158   },
159 }
160 ```
161
162 ### HieraからのAptの構成
163
164 ソースをリソースとして直接指定するかわりに、単純に`apt`クラスをインクルードして、値をHieraから自動的に取得するように構成できます。
165
166 ```yaml
167 apt::sources:
168   'debian_unstable':
169     comment: 'This is the iWeb Debian unstable mirror'
170     location: 'http://debian.mirror.iweb.ca/debian/'
171     release: 'unstable'
172     repos: 'main contrib non-free'
173     pin: '-10'
174     key:
175       id: 'A1BD8E9D78F7FE5C3E65D8AF8B48AD6246925553'
176       server: 'subkeys.pgp.net'
177     include:
178       src: true
179       deb: true
180
181   'puppetlabs':
182     location: 'http://apt.puppetlabs.com'
183     repos: 'main'
184     key:
185       id: '6F6B15509CF8E59E6E469F327F438280EF8D349F'
186       server: 'pgp.mit.edu'
187 ```
188
189 ### デフォルトの`sources.list`ファイルの置き換え
190
191 デフォルトの`/etc/apt/sources.list`を置き換える例を以下に示します。以下のコードと合わせて、`purge`パラメータを必ず使用してください。使用しない場合、Apt実行時にソース重複の警告が出ます。
192
193 ```puppet
194 apt::source { "archive.ubuntu.com-${lsbdistcodename}":
195   location => 'http://archive.ubuntu.com/ubuntu',
196   key      => '630239CC130E1A7FD81A27B140976EAF437D05B5',
197   repos    => 'main universe multiverse restricted',
198 }
199
200 apt::source { "archive.ubuntu.com-${lsbdistcodename}-security":
201   location => 'http://archive.ubuntu.com/ubuntu',
202   key      => '630239CC130E1A7FD81A27B140976EAF437D05B5',
203   repos    => 'main universe multiverse restricted',
204   release  => "${lsbdistcodename}-security"
205 }
206
207 apt::source { "archive.ubuntu.com-${lsbdistcodename}-updates":
208   location => 'http://archive.ubuntu.com/ubuntu',
209   key      => '630239CC130E1A7FD81A27B140976EAF437D05B5',
210   repos    => 'main universe multiverse restricted',
211   release  => "${lsbdistcodename}-updates"
212 }
213
214 apt::source { "archive.ubuntu.com-${lsbdistcodename}-backports":
215  location => 'http://archive.ubuntu.com/ubuntu',
216  key      => '630239CC130E1A7FD81A27B140976EAF437D05B5',
217  repos    => 'main universe multiverse restricted',
218  release  => "${lsbdistcodename}-backports"
219 }
220 ```
221
222 ### APTソースやプロキシのログイン設定を`/etc/apt/auth.conf`で管理する
223
224 APTバージョン1.5以降、認証が必要なAPTソースやプロキシについて、ユーザ名やパスワードなどのログイン設定を`/etc/apt/auth.conf`ファイルに定義できるようになりました。この方法は、`source.list`内にログイン情報を直接記述するよりも推奨されます。直接記述した場合、通常、あらゆるユーザから読み取り可能になるためです。
225
226 `/etc/apt/auth.confファイルのフォーマットは、(ftpやcurlによって使用される) netrcに従い、ファイルパーミッションが制限されています。詳しくは、[こちら](https://manpages.debian.org/testing/apt/apt_auth.conf.5.en.html)を参照してください。
227
228 オプションの`apt::auth_conf_entries`パラメータを使用して、ログイン設定を含むハッシュの配列を指定します。このハッシュに含めることができるのは、`machine`、`login`、および`password`キーのみです。
229
230 ```puppet
231 class { 'apt':
232   auth_conf_entries => [
233     {
234       'machine'  => 'apt-proxy.example.net',
235       'login'    => 'proxylogin',
236       'password' => 'proxypassword',
237     },
238     {
239       'machine'  => 'apt.example.com/ubuntu',
240       'login'    => 'reader',
241       'password' => 'supersecret',
242     },
243   ],
244 }
245 ```
246
247 ## リファレンス
248
249 ### Facts
250
251 * `apt_updates`: `upgrade`で入手可能な更新がある、インストール済みパッケージの数。
252
253 * `apt_dist_updates`: `dist-upgrade`で入手可能な更新がある、インストール済みパッケージの数。
254
255 * `apt_security_updates`: `upgrade`で入手可能なセキュリティ更新がある、インストール済みパッケージの数。
256
257 * `apt_security_dist_updates`: `dist-upgrade`で入手可能なセキュリティ更新がある、インストール済みパッケージの数。
258
259 * `apt_package_updates`: `upgrade`で入手可能な更新がある、すべてのインストール済みパッケージの名前。Facter 2.0以降では、このデータのフォーマットは配列で、それ以前のバージョンでは、コンマ区切りの文字列です。
260
261 * `apt_package_dist_updates`: `dist-upgrade`で入手可能な更新がある、すべてのインストール済みパッケージの名前。Facter 2.0以降では、このデータのフォーマットは配列で、それ以前のバージョンでは、コンマ区切りの文字列です。
262
263 * `apt_update_last_success`: 直近で成功した`apt-get update`実行のエポックタイムによる日付(/var/lib/apt/periodic/update-success-stampのmtimeに基づく)。
264
265 * `apt_reboot_required`: 更新がインストールされた後に再起動が必要かどうかを決定します。
266
267 ### 詳細情報
268
269 その他すべてのリファレンスマニュアルについては、[REFERENCE.md](https://github.com/puppetlabs/puppetlabs-apt/blob/main/REFERENCE.md)を参照してください。
270
271 ## 制約
272
273 このモジュールは、[実行ステージ](https://docs.puppetlabs.com/puppet/latest/reference/lang_run_stages.html)に分割するようには設計されていません。
274
275 サポート対象のオペレーティングシステムの全リストについては、[metadata.json](https://github.com/puppetlabs/puppetlabs-apt/blob/main/metadata.json)を参照してください。
276
277 ### 新しいソースまたはPPAの追加
278
279 新しいソースまたはPPAを追加し、同一のPuppet実行において、その新しいソースまたはPPAからパッケージをインストールするには、`package`リソースが`Apt::Source`または`Apt::Ppa`に従属し、かつ`Class['apt::update']に従属する必要があります。[コレクタ](https://docs.puppetlabs.com/puppet/latest/reference/lang_collectors.html)を追加することによって、すべてのパッケージが`apt::update`の後に来るように制御することもできますが、その場合、循環依存が発生したり、[仮想リソース](https://docs.puppetlabs.com/puppet/latest/reference/lang_collectors.html#behavior)と関係したりすることがあります。以下のコマンドを実行する前に、すべてのパッケージのプロバイダがaptに設定されていることを確認してください。
280
281 ```puppet
282 Class['apt::update'] -> Package <| provider == 'apt' |>
283 ```
284
285 ## 開発
286
287 Puppet ForgeのPuppet Labsモジュールはオープンプロジェクトで、良い状態に保つためには、コミュニティの貢献が必要不可欠です。Puppetが役に立つはずでありながら、私たちがアクセスできないプラットフォームやハードウェア、ソフトウェア、デプロイ構成は無数にあります。私たちの目標は、できる限り簡単に変更に貢献し、みなさまの環境で私たちのモジュールが機能できるようにすることにあります。最高の状態を維持できるようにするために、コントリビュータが従う必要のあるいくつかのガイドラインが存在します。
288
289 詳細については、[モジュール貢献ガイド](https://docs.puppetlabs.com/forge/contributing.html)を参照してください。
290
291 すでにご協力いただいている方のリストについては、[コントリビュータのリスト](https://github.com/puppetlabs/puppetlabs-apt/graphs/contributors)をご覧ください。