Merge remote-tracking branch 'origin/master' into leap_master
[puppet_stdlib.git] / readmes / README_ja_JP.md
1 # stdlib
2
3 #### 目次
4
5 1. [モジュールの説明 - モジュールの機能とその有益性](#モジュールの説明)
6 1. [セットアップ - stdlib導入の基本](#セットアップ)
7 1. [使用 - 設定オプションと追加機能](#使用方法)
8 1. [リファレンス - モジュールの機能と動作について](#参考)
9     1. [クラス](#クラス)
10     1. [定義タイプ](#定義タイプ)
11     1. [データタイプ](#データタイプ)
12     1. [Facts](#facts)
13     1. [関数](#関数)
14 1. [制約 - OS互換性など](#制約)
15 1. [開発 - モジュール貢献についてのガイド](#開発)
16 1. [コントリビュータ](#コントリビュータ)
17
18
19 ## モジュールの説明
20
21 このモジュールでは、Puppetモジュールリソースの標準ライブラリを提供しています。Puppetモジュールでは、この標準ライブラリを広く使用しています。stdlibモジュールは、以下のリソースをPuppetに追加します。
22
23  * ステージ
24  * Facts
25  * 関数
26  * 定義タイプ
27  * データタイプ
28  * プロバイダ
29
30 > *注:* バージョン3.7のPuppet Enterpriseには、stdlibモジュールが含まれていません。Puppet Enterpriseを使用している場合は、Puppetと互換性のあるstdlibの最新リリースをインストールする必要があります。
31
32 ## セットアップ
33
34 stdlibモジュールを[インストール](https://docs.puppet.com/puppet/latest/modules_installing.html)し、この標準ライブラリの関数、Facts、リソースをPuppetに追加します。
35
36 stdlibに依存するモジュールを記述する場合は、必ずmetadata.jsonで[依存関係を特定](https://docs.puppet.com/puppet/latest/modules_metadata.html#specifying-dependencies)してください。
37
38 ## 使用方法
39
40 stdlibのほとんどの機能は、Puppetに自動的にロードされます。Puppetで標準化されたランステージを使用するには、`include stdlib`を用いてマニフェスト内でこのクラスを宣言してください。
41
42 宣言すると、stdlibがモジュール内の他のすべてのクラスを宣言します。現在モジュールに含まれている他のクラスは、`stdlib::stages`のみです。
43
44 `stdlib::stages`クラスは、インフラストラクチャ、言語ランタイム、アプリケーションレイヤの配備に関する各種のランステージを宣言します。ハイレベルステージは、以下のとおりです(順番どおり)。
45
46   * setup
47   * main
48   * runtime
49   * setup_infra
50   * deploy_infra
51   * setup_app
52   * deploy_app
53   * deploy
54
55 使用例:
56
57 ```puppet
58 node default {
59   include stdlib
60   class { java: stage => 'runtime' }
61 }
62 ```
63
64 ## リファレンス
65
66 * [パブリッククラス](#パブリッククラス)
67 * [プライベートクラス](#プライベートクラス)
68 * [定義タイプ](#定義タイプ)
69 * [データタイプ](#データタイプ)
70 * [Facts](#facts)
71 * [関数](#関数)
72
73 ### クラス
74
75 #### パブリッククラス
76
77 `stdlib`クラスにはパラメータはありません。
78
79 #### プライベートクラス
80
81 * `stdlib::stages`: Puppetのランステージの標準セットを管理します。
82
83 ### 定義タイプ
84
85 #### `file_line`
86
87 任意の行がファイル内に確実に含まれるようにします。最初と最後の空白を含め、行全体をマッチさせます。その行が与えられたファイルに含まれない場合は、Puppetがファイルの最後にその行を追加し、望ましい状態を確保します。1つのファイル内で複数のリソースを宣言し、複数の行を管理することが可能です。
88
89 例:
90
91 ```puppet
92 file_line { 'sudo_rule':
93   path => '/etc/sudoers',
94   line => '%sudo ALL=(ALL) ALL',
95 }
96
97 file_line { 'sudo_rule_nopw':
98   path => '/etc/sudoers',
99   line => '%sudonopw ALL=(ALL) NOPASSWD: ALL',
100 }
101 ```
102
103 上の例では、指定された両方の行が、ファイル `/etc/sudoers`に確実に含まれます。
104
105 マッチ例:
106
107 ```puppet
108 file_line { 'bashrc_proxy':
109   ensure => present,
110   path   => '/etc/bashrc',
111   line   => 'export HTTP_PROXY=http://squid.puppetlabs.vm:3128',
112   match  => '^export\ HTTP_PROXY\=',
113 }
114 ```
115
116 上の例では、`match`により、'export'で始まり'HTTP_PROXY'と続く行が探され、その行が行内の値に置き換えられます。
117
118 マッチ例:
119
120     file_line { 'bashrc_proxy':
121       ensure             => present,
122       path               => '/etc/bashrc',
123       line               => 'export HTTP_PROXY=http://squid.puppetlabs.vm:3128',
124       match              => '^export\ HTTP_PROXY\=',
125       append_on_no_match => false,
126     }
127
128 このコードの例では、`match`によってexportで始まりHTTP_PROXYが続く行が検索され、その行が行内の値に置き換えられます。マッチするものが見つからない場合、ファイルは変更されません。
129
130  `ensure => absent`を用いたマッチ例:
131
132 ```puppet
133 file_line { 'bashrc_proxy':
134   ensure            => absent,
135   path              => '/etc/bashrc',
136   line              => 'export HTTP_PROXY=http://squid.puppetlabs.vm:3128',
137   match             => '^export\ HTTP_PROXY\=',
138   match_for_absence => true,
139 }
140 ```
141
142 上の例では、`match`により、'export'で始まり'HTTP_PROXY'と続く行が探され、その行が削除されます。複数の行がマッチし、`multiple => true`パラメータが設定されていない場合は、エラーが生じます。
143
144 エンコード例:
145
146 ```puppet
147 file_line { "XScreenSaver":
148   ensure   => present,
149   path     => '/root/XScreenSaver'
150   line     => "*lock: 10:00:00",
151   match    => '^*lock:',
152   encoding => "iso-8859-1",
153 }
154 ```
155
156 ファイルにUTF-8に対応しない特殊文字が用いられていると、「Invalid byte sequence in UTF-8」(UTF-8で無効なバイト列)というエラーメッセージが表示されます。この場合は、ファイルエンコーディングを決定し、`encoding`属性で指定してください。
157
158 **Autorequire:** Puppetが管理しているファイルに、管理対象となる行が含まれている場合は、`file_line`リソースと当該ファイルの暗黙的な依存関係が設定されます。
159
160 **パラメータ**
161
162 パラメータは、別途説明がない限り、すべてオプションです。
163
164 ##### `after`
165
166 このパラメータで指定された行の後に、Puppetが正規表現を用いて新規の行を追加します(既存の行が規定の位置に追加されます)。
167
168 値: 正規表現を含む文字列
169
170 デフォルト値: `undef`
171
172 ##### `encoding`
173
174 適正なファイルエンコードを指定します。
175
176 値: 有効なRuby文字エンコードを指定する文字列
177
178 デフォルト: 'UTF-8'
179
180 ##### `ensure`: リソースが存在するかどうかを指定します。
181
182 値: 'present'、'absent'
183
184 デフォルト値: 'present'
185
186 ##### `line`
187
188 **必須**
189
190 `path`パラメータにより位置を示されたファイルに追加する行を設定します。
191
192 値: 文字列
193
194 ##### `match`
195
196 ファイル内の既存の行と比較する正規表現を指定します。マッチが見つかった場合、新規の行を追加するかわりに、置き換えられます。正規表現の比較は行の値に照らして行われ、マッチしない場合は、例外が発生します。
197
198 値: 正規表現を含む文字列
199
200 デフォルト値: `undef`
201
202
203 ##### `match_for_absence`
204
205 `ensure => absent`の場合にマッチを適用するかどうかを指定します。`true`に設定してマッチを設定すると、マッチする行が削除されます。`false`に設定すると(デフォルト)、`ensure => absent`の場合にマッチが無視され、代わりに`line`の値が使用されます。`ensure => present`になっている場合は、このパラメータは無視されます。
206
207 ブーリアン
208
209 デフォルト値: `false`
210
211 ##### `multiple`
212
213 `match`および`after`により複数の行を変更できるかどうかを指定します。`false`に設定すると、複数の行がマッチする場合に例外が発生します。
214
215 値: `true`、`false`
216
217 デフォルト値: `false`
218
219
220 ##### `name`
221
222 リソースの名称として使用する名前を指定します。リソースのnamevarをリソースの規定の`title`と異なるものにしたい場合は、`name`で名前を指定します。
223
224 値: 文字列
225
226 デフォルト値: タイトルの値
227
228 ##### `path`
229
230 **必須**
231
232 `line`で指定された行を確保するファイルを指定します。
233
234 値: 当該ファイルの絶対パスを指定する文字列
235
236 ##### `replace`
237
238 `match`パラメータとマッチする既存の行を上書きするかどうかを指定します。`false`に設定すると、`match`パラメータにマッチする行が見つかった場合、その行はファイルに配置されません。
239
240 ブーリアン
241
242 デフォルト値: `true`
243
244 ### データタイプ
245
246 #### `Stdlib::Absolutepath`
247
248 厳密な絶対パスタイプ。UnixpathタイプおよびWindowspathタイプの異形を使用します。
249
250 使用可能なインプット例:
251
252 ```shell
253 /var/log
254 ```
255
256 ```shell
257 /usr2/username/bin:/usr/local/bin:/usr/bin:.
258 ```
259
260 ```shell
261 C:\\WINDOWS\\System32
262 ```
263
264 使用不可能なインプット例:
265
266 ```shell
267 ../relative_path
268 ```
269
270 #### `Stdlib::Httpsurl`
271
272 HTTPS URLに一致します。
273
274 使用可能なインプット例:
275
276 ```shell
277 https://hello.com
278 ```
279
280 使用不可能なインプット例:
281
282 ```shell
283 httds://notquiteright.org`
284 ```
285
286 #### `Stdlib::Httpurl`
287
288 HTTPSおよびHTTP URLの両方に一致します。
289
290 使用可能なインプット例:
291
292 ```shell
293 https://hello.com
294
295 http://hello.com
296 ```
297
298 使用不可能なインプット例:
299
300 ```shell
301 httds://notquiteright.org
302 ```
303
304 #### `Stdlib::MAC`
305
306 [RFC5342](https://tools.ietf.org/html/rfc5342)で定義されるMACアドレスに一致します。
307
308 #### `Stdlib::Unixpath`
309
310 Unixオペレーティングシステムのパスに一致します。
311
312 使用可能なインプット例:
313
314 ```shell
315 /usr2/username/bin:/usr/local/bin:/usr/bin:
316
317 /var/tmp
318 ```
319
320 使用不可能なインプット例:
321
322 ```shell
323 C:/whatever
324 ```
325
326 #### `Stdlib::Windowspath`
327
328 Windowsオペレーティングシステムのパスに一致します。
329
330 使用可能なインプット例:
331
332 ```shell
333 C:\\WINDOWS\\System32
334
335 C:\\
336
337 \\\\host\\windows
338 ```
339
340 使用不可能なインプット例:
341
342 ```shell
343 /usr2/username/bin:/usr/local/bin:/usr/bin:.
344 ```
345
346 ### Facts
347
348 #### `package_provider`
349
350 Puppetがこのシステムのパッケージ管理に使用するデフォルトのプロバイダを返します。
351
352 #### `is_pe`
353
354 Puppet Enterpriseがインストールされているかどうかを返します。PE 3.x以降のプラットフォームでは何も報告されません。
355
356 #### `pe_version`
357
358 インストールされているPuppet Enterpriseのバージョンを返します。PE 3.x以降のプラットフォームでは何も報告されません。
359
360 #### `pe_major_version`
361
362 インストールされているPuppet Enterpriseのメジャーバージョンを返します。PE 3.x以降のプラットフォームでは何も報告されません。
363
364 #### `pe_minor_version`
365
366 インストールされているPuppet Enterpriseのマイナーバージョンを返します。PE 3.x以降のプラットフォームでは何も報告されません。
367
368 #### `pe_patch_version`
369
370 インストールされているPuppet Enterpriseのパッチバージョンを返します。
371
372 #### `puppet_vardir`
373
374 PuppetまたはPuppet agentが稼働しているノードについて設定されたPuppet vardirの値を返します。
375
376 #### `puppet_environmentpath`
377
378 PuppetまたはPuppet agentが稼働しているノードについて設定されたPuppet環境の値を返します。
379
380 #### `puppet_server`
381
382 Puppet agentの`server`値を返します。この値は、agentが通信するPuppet masterのホストネームです。
383
384 #### `root_home`
385
386 ルートのホームディレクトリを決定します。
387
388 ルートのホームディレクトリを決定します。これは、オペレーティングシステムによって異なります。通常は'/root'です。
389
390 #### `service_provider`
391
392 Puppetがこのシステムのサービス管理に使用するデフォルトのプロバイダを返します。
393
394 ### 関数
395
396 #### `abs`
397
398 数字の絶対値を返します。たとえば、'-34.56'は'34.56'になります。
399
400 引数: 整数値または浮動小数点値のいずれかの単一の引数。
401
402 *タイプ*: 右辺値
403
404 #### `any2array`
405
406 任意のオブジェクトを、そのオブジェクトを含む配列に変換します。空の引数リストは空の配列に変換されます。ハッシュは、キーと値が交互になった配列に変換されます。配列は変換されません。
407
408 *タイプ*: 右辺値
409
410 #### `any2bool`
411
412 任意のオブジェクトをブーリアンに変換します。
413
414 * 'Y'、'y'、'1'、'T'、't'、'TRUE'、'yes'、'true'といった文字列は`true`を返します。
415 * '0'、'F'、'f'、'N'、'n'、'FALSE'、'no'、'false'といった文字列は`false`を返します。
416 * ブーリアンは元の値を返します。
417 * 0よりも大きい数字(または数字の文字列表現)は`true`を返します。それ以外は`false`を返します。
418 * undef値は`false`を返します。
419 * それ以外はすべて`true`を返します。
420
421 *タイプ*: 右辺値
422
423 #### `assert_private`
424
425 現在のクラスまたは定義をプライベートとして設定します。現在のモジュール外のクラスまたは定義タイプを呼び出すことはできません。
426
427 たとえば、クラス`foo::bar`で`assert_private()`がコールされると、クラスがモジュール`foo`の外から呼び出された場合、次のメッセージがアウトプットされます:`Class foo::bar is private`。
428
429 使用したいエラーメッセージを指定する方法:
430
431 ```puppet
432 assert_private("You're not supposed to do that!")
433 ```
434
435 *タイプ*: ステートメント
436
437 #### `base64`
438
439 文字列とbase64エンコードを相互に変換します。`action` ('encode'、'decode')とプレーンまたは base64でエンコードした`string`、およびオプションで`method` ('default'、'strict'、'urlsafe')が必要です。
440
441 下位互換性を得るには、`method`を`default`に設定します(指定されていない場合)。
442
443 *注:* この関数はRubyクラスの実装にあたり、UTF8との互換性がない可能性があります。互換性を確保するには、Ruby 2.4.0以降でこの関数を使用してください。
444
445 **例:**
446
447 ```puppet
448 base64('encode', 'hello')
449 base64('encode', 'hello', 'default')
450 # リターン: "aGVsbG8=\n"
451
452 base64('encode', 'hello', 'strict')
453 # リターン: "aGVsbG8="
454
455 base64('decode', 'aGVsbG8=')
456 base64('decode', 'aGVsbG8=\n')
457 base64('decode', 'aGVsbG8=', 'default')
458 base64('decode', 'aGVsbG8=\n', 'default')
459 base64('decode', 'aGVsbG8=', 'strict')
460 # リターン: "hello"
461
462 base64('encode', 'https://puppetlabs.com', 'urlsafe')
463 # リターン: "aHR0cHM6Ly9wdXBwZXRsYWJzLmNvbQ=="
464
465 base64('decode', 'aHR0cHM6Ly9wdXBwZXRsYWJzLmNvbQ==', 'urlsafe')
466 # リターン: "https://puppetlabs.com"
467 ```
468
469 *タイプ*: 右辺値
470
471 #### `basename`
472
473 パスの`basename`を返します。オプションの引数で拡張子が外れます。例:
474
475   * ('/path/to/a/file.ext')は'file.ext'を返します。
476   * ('relative/path/file.ext')は'file.ext'を返します。
477   * ('/path/to/a/file.ext', '.ext')は'file'を返します。
478
479 *タイプ*: 右辺値
480
481 #### `bool2num`
482
483 ブーリアンを数字に変換します。以下の値を変換します。
484
485 * `false`、'f'、'0'、'n'、'no'を0に変換します。
486 * `true`、't'、'1'、'y'、'yes'を1に変換します。
487
488 引数: インプットとして、単一のブーリアンまたは文字列。
489
490 *タイプ*: 右辺値
491
492 #### `bool2str`
493
494 オプションで提供される引数を用いて、ブーリアンを文字列に変換します。オプションの第2および第3の引数は、trueおよびfalseがそれぞれ何に変換されるかを表しています。与えられた引数が1つだけの場合は、ブーリアンから`true`または`false`を含む文字列に変換されます。
495
496 *例:*
497
498 ```puppet
499 bool2str(true)                    => `true`
500 bool2str(true, 'yes', 'no')       => 'yes'
501 bool2str(false, 't', 'f')         => 'f'
502 ```
503
504 引数: ブーリアン。
505
506 *タイプ*: 右辺値
507
508 #### `camelcase`
509
510 配列内の1つの文字列またはすべての文字列の大文字と小文字の別をCamelCase(大小文字混在)に変換します。
511
512 引数: 配列または文字列のいずれか。受け取ったものと同じタイプの引数を返しますが、CamelCaseの形式で返します。
513
514 *注:* この関数はRubyクラスの実装にあたり、UTF8との互換性がない可能性があります。互換性を確保するには、Ruby 2.4.0以降でこの関数を使用してください。
515
516  *タイプ*: 右辺値
517
518 #### `capitalize`
519
520 文字列または複数文字列の配列の最初の文字を大文字にし、各文字列の残りの文字を小文字にします。
521
522 引数: インプットとして、単一文字列または配列。*タイプ*: 右辺値
523
524 *注:* この関数はRubyクラスの実装にあたり、UTF8との互換性がない可能性があります。互換性を確保するには、Ruby 2.4.0以降でこの関数を使用してください。
525
526 #### `ceiling`
527
528 引数以上の最小整数を返します。
529
530 引数: 単一の数値。
531
532 *タイプ*: 右辺値
533
534 #### `chomp`
535
536 文字列または複数文字列の配列の最後から、レコード分離文字を削除します。たとえば、'hello\n'は'hello'になります。
537
538 引数: 単一の文字または配列。
539
540 *タイプ*: 右辺値
541
542 #### `chop`
543
544 最後の文字を削除した新しい文字列を返します。文字列が'\r\n'で終わる場合は、両方の文字が削除されます。`chop`を空文字列に適用すると、空文字列が返されます。レコード分離文字のみを削除する場合は、`chomp`関数を使用してください。
545
546 引数: インプットとして、文字列または複数文字列の配列。
547
548 *タイプ*: 右辺値
549
550 #### `clamp`
551
552 整数値に基づく分類により、当該領域[Min、X、Max]内で値を維持します(パラメータの順序は関係ありません)。文字列が変換され、数字として比較されます。値の配列は、さらなる処理が可能なリストに平坦化されます。例:
553
554   * `clamp('24', [575, 187])`は187を返します。
555   * `clamp(16, 88, 661)`は88を返します。
556   * `clamp([4, 3, '99'])`は4を返します。
557
558 引数: 文字列、配列、数字。
559
560 *タイプ*: 右辺値
561
562 #### `concat`
563
564 複数配列のコンテンツを、与えられた最初の配列に追加します。例:
565
566   * `concat(['1','2','3'],'4')`は['1','2','3','4']を返します。
567   * `concat(['1','2','3'],'4',['5','6','7'])`は['1','2','3','4','5','6','7']を返します。
568
569 *タイプ*: 右辺値
570
571 #### `convert_base`
572
573 与えられた整数または整数を表す10進数文字列を、指定した基数の文字列に変換します。例:
574
575   * `convert_base(5, 2)`は'101'になります。
576   * `convert_base('254', '16')`は'fe'になります。
577
578 #### `count`
579
580 配列のみで呼び出した場合は、空または`undef`**ではない**要素の数をカウントします。第2の引数を用いて呼び出した場合は、第2の引数にマッチする配列内の要素の数をカウントします。
581
582 *タイプ*: 右辺値
583
584 #### `deep_merge`
585
586 2つ以上のハッシュを再帰的に統合し、その結果得られたハッシュを返します。
587
588 ```puppet
589 $hash1 = {'one' => 1, 'two' => 2, 'three' => { 'four' => 4 } }
590 $hash2 = {'two' => 'dos', 'three' => { 'five' => 5 } }
591 $merged_hash = deep_merge($hash1, $hash2)
592 ```
593
594 得られるハッシュは、以下に相当します。
595
596 ```puppet
597 $merged_hash = { 'one' => 1, 'two' => 'dos', 'three' => { 'four' => 4, 'five' => 5 } }
598 ```
599
600 ハッシュである重複キーが存在する場合は、そうした重複キーが再帰的に統合されます。ハッシュではない重複キーが存在する場合は、最右のハッシュのキーが上位になります。
601
602 *タイプ*: 右辺値
603
604 #### `defined_with_params`
605
606 属性のリソースリファレンスとオプションでハッシュを取得します。特定の属性を持つリソースがすでにカタログに追加されている場合は`true`を返します。そうでない場合は`false`を返します。
607
608 ```puppet
609 user { 'dan':
610   ensure => present,
611 }
612
613 if ! defined_with_params(User[dan], {'ensure' => 'present' }) {
614   user { 'dan': ensure => present, }
615 }
616 ```
617
618 *タイプ*: 右辺値
619
620 #### `delete`
621
622 配列から任意の要素のインスタンスを、文字列からサブストリングを、またはハッシュからキーをすべて削除します。
623
624 例:
625
626 * `delete(['a','b','c','b'], 'b')`は['a','c']を返します。
627 * `delete('abracadabra', 'bra')`は'acada'を返します。
628 * `delete({'a' => 1,'b' => 2,'c' => 3},['b','c'])`は{'a'=> 1}を返します。
629 * `delete(['ab', 'b'], 'b')`は['ab']を返します。
630
631 *タイプ*: 右辺値
632
633 #### `delete_at`
634
635 決められたインデックス付き値を配列から削除します。
636
637 例: `delete_at(['a','b','c'], 1)`は['a','c']を返します。
638
639 *タイプ*: 右辺値
640
641 #### `delete_regex`
642
643 提示された正規表現にマッチする任意の要素のインスタンスを、配列またはハッシュからすべて削除します。文字列は1アイテム配列として処理されます。
644
645 *注:* この関数はRubyクラスの実装にあたり、UTF8との互換性がない可能性があります。互換性を確保するには、Ruby 2.4.0以降でこの関数を使用してください。
646
647
648
649
650 * `delete_regex(['a','b','c','b'], 'b')`は['a','c']を返します。
651 * `delete_regex({'a' => 1,'b' => 2,'c' => 3},['b','c'])`は{'a'=> 1}を返します。
652 * `delete_regex(['abf', 'ab', 'ac'], '^ab.*')`は['ac']を返します。
653 * `delete_regex(['ab', 'b'], 'b')`は['ab']を返します。
654
655 *タイプ*: 右辺値
656
657 #### `delete_values`
658
659 任意の値のインスタンスをハッシュからすべて削除します。
660
661 例:
662
663 * `delete_values({'a'=>'A','b'=>'B','c'=>'C','B'=>'D'}, 'B')`は{'a'=>'A','c'=>'C','B'=>'D'}を返します。
664
665 *タイプ*: 右辺値
666
667 #### `delete_undef_values`
668
669 `undef`値のインスタンスをアレイまたはハッシュからすべて削除します。
670
671 例:
672
673 * `$hash = delete_undef_values({a=>'A', b=>'', c=>`undef`, d => false})`は{a => 'A', b => '', d => false}を返します。
674
675 *タイプ*: 右辺値
676
677 #### `deprecation`
678
679 非推奨警告をプリントし、任意のキーについて警告を一度記録します:
680
681 ```puppet
682 deprecation(key, message)
683 ```
684
685 引数:
686
687 * キーを指定する文字列: Puppetプロセスの継続期間中にメッセージの数を少なく抑えるために、1つのキーにつき1つのメッセージのみを記録します。
688 * メッセージを指定する文字列: 記録されるテキスト。
689
690 *タイプ*: ステートメント
691
692 **`deprecation`に影響を与える設定**
693
694 Puppetの他の設定は、stdlibの`deprecation`関数に影響を与えます。
695
696 * [`disable_warnings`](https://docs.puppet.com/puppet/latest/reference/configuration.html#disablewarnings)
697 * [`max_deprecations`](https://docs.puppet.com/puppet/latest/reference/configuration.html#maxdeprecations)
698 * [`strict`](https://docs.puppet.com/puppet/latest/reference/configuration.html#strict):
699
700     * `error`: 非推奨メッセージにより、ただちに機能しなくなります。
701     * `off`: メッセージがアウトプットされません。
702     * `warning`: すべての警告を記録します。これがデフォルト設定です。
703
704 * 環境変数`STDLIB_LOG_DEPRECATIONS`
705
706   非推奨警告を記録するかどうかを指定します。これは特に、自動テストの際、移行の準備ができる前にログに情報が氾濫するのを避けるうえで役立ちます。
707
708   この変数はブーリアンで、以下の効果があります:
709
710   * `true`: 警告を記録します。
711   * `false`: 警告は記録されません。
712   * 値を設定しない場合: Puppet 4は警告を出しますが、Puppet 3は出しません。
713
714 #### `difference`
715
716 2つの配列の間の差異を返します。返される配列はオリジナル配列のコピーで、第2の配列にも見られるアイテムがあれば、それが取り除かれます。
717
718 例:
719
720 * `difference(["a","b","c"],["b","c","d"])`は["a"]を返します。
721
722 *タイプ*: 右辺値
723
724 #### `dig`
725
726 > 非推奨: この関数は、Puppet 4.5.0で、内蔵の[`dig`](https://docs.puppet.com/puppet/latest/function.html#dig)関数に置き換えられました。下位互換性を得るには、[`dig44()`](#dig44)を使用するか、新しいバージョンを使用してください。
727
728 パスを含むキー配列を通じて、複数レイヤーのハッシュおよびアレイ内の値を探します。この関数は各パスコンポーネントにより構造内を移動し、パスの最後で値を返すよう試みます。
729
730 この関数では、必要とされるパス引数に加え、デフォルトの引数を使用できます。パスが正しくない場合や、値が見つからない場合、その他のエラーが生じた場合は、デフォルトの引数を返します。
731
732 ```ruby
733 $data = {
734   'a' => {
735     'b' => [
736       'b1',
737       'b2',
738       'b3',
739     ]
740   }
741 }
742
743 $value = dig($data, ['a', 'b', 2])
744 # $value = 'b3'
745
746 # 可能なすべてのオプションを使用
747 $value = dig($data, ['a', 'b', 2], 'not_found')
748 # $value = 'b3'
749
750 # デフォルト値を使用
751 $value = dig($data, ['a', 'b', 'c', 'd'], 'not_found')
752 # $value = 'not_found'
753 ```
754
755 1. **$data** 取り扱うデータ構造。
756 2. **['a', 'b', 2]** パス配列。
757 3. **'not_found'** デフォルト値。何も見つからない場合に返されます。
758
759 デフォルト値: `undef`
760
761 *タイプ*: 右辺値
762
763 #### `dig44`
764
765 パスを含むキー配列を通じて、複数レイヤーのハッシュおよびアレイ内の値を探します。この関数は各パスコンポーネントにより構造内を移動し、パスの最後で値を返すよう試みます。
766
767 この関数では、必要とされるパス引数に加え、デフォルトの引数を使用できます。パスが正しくない場合や、値が見つからない場合、その他のエラーが生じた場合は、デフォルトの引数を返します。
768
769 ```ruby
770 $data = {
771   'a' => {
772     'b' => [
773       'b1',
774       'b2',
775       'b3',
776     ]
777   }
778 }
779
780 $value = dig44($data, ['a', 'b', 2])
781 # $value = 'b3'
782
783 # 可能なすべてのオプションを使用
784 $value = dig44($data, ['a', 'b', 2], 'not_found')
785 # $value = 'b3'
786
787 # デフォルト値を使用
788 $value = dig44($data, ['a', 'b', 'c', 'd'], 'not_found')
789 # $value = 'not_found'
790 ```
791
792 *タイプ*: 右辺値
793
794 1. **$data** 取り扱うデータ構造。
795 2. **['a', 'b', 2]** パス配列。
796 3. **'not_found'** デフォルト値。何も見つからない場合に返されます。
797    (オプション、デフォルトは`undef`)
798
799 #### `dirname`
800
801 パスの`dirname`を返します。たとえば、`dirname('/path/to/a/file.ext')`は'/path/to/a'を返します。
802
803 *タイプ*: 右辺値
804
805 #### `dos2unix`
806
807 与えられた文字列のUnixバージョンを返します。クロスプラットフォームテンプレートでファイルリソースを使用する場合に非常に役立ちます。
808
809 ```puppet
810 file { $config_file:
811   ensure  => file,
812   content => dos2unix(template('my_module/settings.conf.erb')),
813 }
814 ```
815
816 [unix2dos](#unix2dos)も参照してください。
817
818 *タイプ*: 右辺値
819
820 #### `downcase`
821
822 配列内の1つの文字列またはすべての文字列の大文字と小文字の別を、小文字に変換します。
823
824 *注:* この関数はRubyクラスの実装にあたり、UTF8との互換性がない可能性があります。互換性を確保するには、Ruby 2.4.0以降でこの関数を使用してください。
825
826 *タイプ*: 右辺値
827
828 #### `empty`
829
830 引数が要素を含まない配列かハッシュ、または空文字列である場合に、`true`を返します。引数が数値の場合に`false`を返します。
831
832 *タイプ*: 右辺値
833
834 #### `enclose_ipv6`
835
836 IPアドレスの配列を取得し、ipv6アドレスを大括弧でくくります。
837
838 *タイプ*: 右辺値
839
840 #### `ensure_packages`
841
842 配列またはハッシュ内のパッケージのリストを取得し、すでに存在しない場合にのみ、それらをインストールします。オプションで、ハッシュを第2のパラメータとして取得し、第3の引数として`ensure_resource()`または `ensure_resources()`関数に渡します。
843
844 *タイプ*: ステートメント
845
846 配列の場合:
847
848 ```puppet
849 ensure_packages(['ksh','openssl'], {'ensure' => 'present'})
850 ```
851
852 ハッシュの場合:
853
854 ```puppet
855 ensure_packages({'ksh' => { ensure => '20120801-1' } ,  'mypackage' => { source => '/tmp/myrpm-1.0.0.x86_64.rpm', provider => "rpm" }}, {'ensure' => 'present'})
856 ```
857
858 #### `ensure_resource`
859
860 リソースタイプ、タイトル、リソースを記述する属性のハッシュを取得します。
861
862 ```
863 user { 'dan':
864   ensure => present,
865 }
866 ```
867
868 この例では、すでに存在しない場合にのみリソースが作成されます:
869
870   `ensure_resource('user', 'dan', {'ensure' => 'present' })`
871
872 リソースがすでに存在しているものの、指定されたパラメータとマッチしない場合は、リソースの再作成が試みられ、重複リソース定義エラーにつながります。
873
874 リソースの配列を提示することも可能です。それぞれのリソースは、すでに存在しない場合に、指定のタイプおよびパラメータにより作成されます。
875
876 `ensure_resource('user', ['dan','alex'], {'ensure' => 'present'})`
877
878 *タイプ*: ステートメント
879
880 #### `ensure_resources`
881
882 ハッシュからリソース宣言を作成しますが、すでに宣言されているリソースとは対立しません。
883
884 リソースタイプ、タイトル、リソースを記述する属性のハッシュを指定します。
885
886 ```puppet
887 user { 'dan':
888   gid => 'mygroup',
889   ensure => present,
890 }
891
892 ensure_resources($user)
893 ```
894
895 リソースのハッシュを提示します。リストにあるリソースは、すでに存在しない場合に、指定のタイプおよびパラメータにより作成されます。
896
897     ensure_resources('user', {'dan' => { gid => 'mygroup', uid => '600' } ,  'alex' => { gid => 'mygroup' }}, {'ensure' => 'present'})
898
899 Hieraバックエンドから:
900
901 ```yaml
902 userlist:
903   dan:
904     gid: 'mygroup'
905     uid: '600'
906   alex:
907     gid: 'mygroup'
908 ```
909
910 ```puppet
911 ensure_resources('user', hiera_hash('userlist'), {'ensure' => 'present'})
912 ```
913
914 #### `fact`
915
916 指定されたfactの値を返します。構造化されたfactを参照する場合にドット表記を使用することができます。指定されたfactが存在しない場合は、Undefを返します。
917
918 使用例:
919
920 ```puppet
921 fact('kernel')
922 fact('osfamily')
923 fact('os.architecture')
924 ```
925
926 配列のインデックス: 
927
928 ```puppet
929 $first_processor  = fact('processors.models.0')
930 $second_processor = fact('processors.models.1')
931 ```
932
933 名前に「.」を含むfact:
934
935 ```puppet
936 fact('vmware."VRA.version"')
937 ```
938
939 #### `flatten`
940
941 ネストの深いアレイを平坦化し、結果として単一のフラット配列を返します。
942
943 たとえば、`flatten(['a', ['b', ['c']]])`は['a','b','c']を返します。
944
945 *タイプ*: 右辺値
946
947 #### `floor`
948
949 引数以下の最大整数を返します。
950
951 引数: 単一の数値。
952
953 *タイプ*: 右辺値
954
955 #### `fqdn_rand_string`
956
957 ランダムな英数字文字列を生成します。`$fqdn` factとオプションのシードを組み合わせると、反復的な無作為抽出が可能です。オプションで、この関数に使用する文字セットを指定することもできます(デフォルトは英数字)。
958
959 *使用例:*
960
961 ```puppet
962 fqdn_rand_string(LENGTH, [CHARSET], [SEED])
963 ```
964
965 *例:*
966
967 ```puppet
968 fqdn_rand_string(10)
969 fqdn_rand_string(10, 'ABCDEF!@#$%^')
970 fqdn_rand_string(10, '', 'custom seed')
971 ```
972
973 引数:
974
975 * 整数、得られる文字列の長さを指定。
976 * オプションで、文字セットを指定する文字列。
977 * オプションで、反復的な無作為抽出を可能にするシードを指定する文字列。
978
979 *タイプ*: 右辺値
980
981 #### `fqdn_rotate`
982
983 配列と文字列をランダムな回数で回転させます。`$fqdn` factとオプションのシードを組み合わせると、反復的な無作為抽出が可能です。
984
985 *使用例:*
986
987 ```puppet
988 fqdn_rotate(VALUE, [SEED])
989 ```
990
991 *例:*
992
993 ```puppet
994 fqdn_rotate(['a', 'b', 'c', 'd'])
995 fqdn_rotate('abcd')
996 fqdn_rotate([1, 2, 3], 'custom seed')
997 ```
998
999 *タイプ*: 右辺値
1000
1001 #### `fqdn_uuid`
1002
1003 DNSネームスペースのFQDN文字列をもとに、[RFC 4122](https://tools.ietf.org/html/rfc4122)有効バージョン5 UUIDを返します:
1004
1005   * fqdn_uuid('puppetlabs.com')は'9c70320f-6815-5fc5-ab0f-debe68bf764c'を返します。
1006   * fqdn_uuid('google.com')は'64ee70a4-8cc1-5d25-abf2-dea6c79a09c8'を返します。
1007
1008 *タイプ*: 右辺値
1009
1010 #### `get_module_path`
1011
1012 現在の環境について、指定されたモジュールの絶対パスを返します。
1013
1014 ```puppet
1015 $module_path = get_module_path('stdlib')
1016 ```
1017
1018 *タイプ*: 右辺値
1019
1020 #### `getparam`
1021
1022 リソースのパラメータの値を返します。
1023
1024 引数: リソースリファレンスおよびパラメータの名前。
1025
1026 たとえば、以下の場合は'param_value'を返します:
1027
1028 ```puppet
1029 define example_resource($param) {
1030 }
1031
1032 example_resource { "example_resource_instance":
1033   param => "param_value"
1034 }
1035
1036 getparam(Example_resource["example_resource_instance"], "param")
1037 ```
1038
1039 *タイプ*: 右辺値
1040
1041 #### `getvar`
1042
1043 リモートネームスペースの変数を調べます。
1044
1045 例:
1046
1047 ```puppet
1048 $foo = getvar('site::data::foo')
1049 # $foo = $site::data::fooに相当
1050 ```
1051
1052 この関数は、ネームスペースそのものが文字列に保存されている場合に役立ちます:
1053
1054 ```puppet
1055 $datalocation = 'site::data'
1056 $bar = getvar("${datalocation}::bar")
1057 # $bar = $site::data::barに相当
1058 ```
1059
1060 *タイプ*: 右辺値
1061
1062 #### `glob`
1063
1064 パスパターンに一致するパスの文字列配列を返します。
1065
1066 引数: パスパターンを指定する文字列または文字列配列。
1067
1068 ```puppet
1069 $confs = glob(['/etc/**/*.conf', '/opt/**/*.conf'])
1070 ```
1071
1072 *タイプ*: 右辺値
1073
1074 #### `grep`
1075
1076 配列内を検索し、提示された正規表現に一致する要素を返します。
1077
1078 たとえば、`grep(['aaa','bbb','ccc','aaaddd'], 'aaa')`は['aaa','aaaddd']を返します。
1079
1080 *タイプ*: 右辺値
1081
1082 #### `has_interface_with`
1083
1084 種類および値に基づきブーリアンを返します:
1085
1086   * macaddress
1087   * netmask
1088   * ipaddress
1089   * network
1090
1091 *例:*
1092
1093 ```puppet
1094 has_interface_with("macaddress", "x:x:x:x:x:x")
1095 has_interface_with("ipaddress", "127.0.0.1")    => true
1096 ```
1097
1098 種類が提示されていない場合は、インターフェースの有無が確認されます:
1099
1100 ```puppet
1101 has_interface_with("lo")                        => true
1102 ```
1103
1104 *タイプ*: 右辺値
1105
1106 #### `has_ip_address`
1107
1108 一部のインターフェース上で、リクエストされたIPアドレスがクライアントに存在する場合は`true`を返します。この関数は`interfaces` factで反復され、`ipaddress_IFACE` factsをチェックし、簡単な文字列比較を実行します。
1109
1110 引数: IPアドレスを指定する文字列。
1111
1112 *タイプ*: 右辺値
1113
1114 #### `has_ip_network`
1115
1116 リクエストされたネットワーク内でIPアドレスがクライアントに存在する場合は`true`を返します。この関数は`interfaces` factで反復され、 `network_IFACE` factsをチェックし、簡単な文字列比較を実行します。
1117
1118 引数: IPアドレスを指定する文字列。
1119
1120 *タイプ*: 右辺値
1121
1122 #### `has_key`
1123
1124 ハッシュに特定のキー値があるかどうかを判定します。
1125
1126 *例*:
1127
1128 ```
1129 $my_hash = {'key_one' => 'value_one'}
1130 if has_key($my_hash, 'key_two') {
1131   notice('we will not reach here')
1132 }
1133 if has_key($my_hash, 'key_one') {
1134   notice('this will be printed')
1135 }
1136 ```
1137
1138 *タイプ*: 右辺値
1139
1140 #### `hash`
1141
1142 配列をハッシュに変換します。
1143
1144 たとえば、`hash(['a',1,'b',2,'c',3])`は{'a'=>1,'b'=>2,'c'=>3}を返します。
1145
1146 *タイプ*: 右辺値
1147
1148 #### `intersection`
1149
1150 2つの共通部分の配列を返します。
1151
1152 たとえば、`intersection(["a","b","c"],["b","c","d"])`は["b","c"]を返します。
1153
1154 *タイプ*: 右辺値
1155
1156 #### `is_a`
1157
1158 ブーリアンチェックにより、変数が任意のデータタイプのものかどうかを判定します。これは`=~`タイプチェックに相当します。この関数はPuppet 4と、"future"パーサーを備えたPuppet 3でのみ使用できます。
1159
1160 ```
1161 foo = 3
1162 $bar = [1,2,3]
1163 $baz = 'A string!'
1164
1165 if $foo.is_a(Integer) {
1166   notify  { 'foo!': }
1167 }
1168 if $bar.is_a(Array) {
1169   notify { 'bar!': }
1170 }
1171 if $baz.is_a(String) {
1172   notify { 'baz!': }
1173 }
1174 ```
1175
1176 * タイプに関する詳細は、[Puppetタイプシステム](https://docs.puppetlabs.com/latest/type.html#about-resource-types)を参照してください。
1177 * 値のタイプを特定する各種の方法については、[`assert_type()`](https://docs.puppetlabs.com/latest/function.html#asserttype)関数を参照してください。
1178
1179 #### `is_absolute_path`
1180
1181 **非推奨。今後のバージョンのstdlibでは削除されます。[`validate_legacy`](#validate_legacy)を参照してください。**
1182
1183 与えられたパスが絶対パスである場合に`true`を返します。
1184
1185 *タイプ*: 右辺値
1186
1187 #### `is_array`
1188
1189 **非推奨。今後のバージョンのstdlibでは削除されます。[`validate_legacy`](#validate_legacy)を参照してください。**
1190
1191 この関数に渡された変数が配列である場合に`true`を返します。
1192
1193 *タイプ*: 右辺値
1194
1195 #### `is_bool`
1196
1197 **非推奨。今後のバージョンのstdlibでは削除されます。[`validate_legacy`](#validate_legacy)を参照してください。**
1198
1199 この関数に渡された変数がブーリアンである場合に`true`を返します。
1200
1201 *タイプ*: 右辺値
1202
1203 #### `is_domain_name`
1204
1205 **非推奨。今後のバージョンのstdlibでは削除されます。[`validate_legacy`](#validate_legacy)を参照してください。**
1206
1207 この関数に渡された文字列が構文的に正しいドメイン名である場合に`true`を返します。
1208
1209 *タイプ*: 右辺値
1210
1211 #### `is_email_address`
1212
1213 この関数に渡された文字列が有効なメールアドレスである場合にtrueを返します。
1214
1215 *タイプ*: 右辺値
1216
1217
1218 #### `is_float`
1219
1220 **非推奨。今後のバージョンのstdlibでは削除されます。[`validate_legacy`](#validate_legacy)を参照してください。**
1221
1222 この関数に渡された変数がフロート型である場合に`true`を返します。
1223
1224 *タイプ*: 右辺値
1225
1226 #### `is_function_available`
1227
1228 **非推奨。今後のバージョンのstdlibでは削除されます。[`validate_legacy`](#validate_legacy)を参照してください。**
1229
1230 文字列を引数として受け入れ、Puppetランタイムがその名前を用いて関数にアクセスできるかどうかを判定します。関数が存在する場合は`true`、存在しない場合は`false`を返します。
1231
1232 *タイプ*: 右辺値
1233
1234 #### `is_hash`
1235
1236 **非推奨。今後のバージョンのstdlibでは削除されます。[`validate_legacy`](#validate_legacy)を参照してください。**
1237
1238 この関数に渡された変数がハッシュである場合に`true`を返します。
1239
1240 *タイプ*: 右辺値
1241
1242 #### `is_integer`
1243
1244 **非推奨。今後のバージョンのstdlibでは削除されます。[`validate_legacy`](#validate_legacy)を参照してください。**
1245
1246 この文字列に返された変数が整数である場合に`true`を返します。
1247
1248 *タイプ*: 右辺値
1249
1250 #### `is_ip_address`
1251
1252 **非推奨。今後のバージョンのstdlibでは削除されます。[`validate_legacy`](#validate_legacy)を参照してください。**
1253
1254 この関数に渡された文字列が有効なIPアドレスである場合に`true`を返します。
1255
1256 *タイプ*: 右辺値
1257
1258 #### `is_ipv6_address`
1259
1260 **非推奨。今後のバージョンのstdlibでは削除されます。[`validate_legacy`](#validate_legacy)を参照してください。**
1261
1262 この関数に渡された文字列が有効なIPv6アドレスである場合に`true`を返します。
1263
1264 *タイプ*: 右辺値
1265
1266 #### `is_ipv4_address`
1267
1268 **非推奨。今後のバージョンのstdlibでは削除されます。[`validate_legacy`](#validate_legacy)を参照してください。**
1269
1270 この関数に渡された文字列が有効なIPv4アドレスである場合に`true`を返します。
1271
1272 *タイプ*: 右辺値
1273
1274 #### `is_mac_address`
1275
1276 この関数に渡された文字列が有効なMACアドレスである場合に`true`を返します。
1277
1278 *タイプ*: 右辺値
1279
1280 #### `is_numeric`
1281
1282 **非推奨。今後のバージョンのstdlibでは削除されます。[`validate_legacy`](#validate_legacy)を参照してください。**
1283
1284 この関数に渡された変数が数字である場合に`true`を返します。
1285
1286 *タイプ*: 右辺値
1287
1288 #### `is_string`
1289
1290 **非推奨。今後のバージョンのstdlibでは削除されます。[`validate_legacy`](#validate_legacy)を参照してください。**
1291
1292 この関数に渡された変数が文字列である場合に`true`を返します。
1293
1294 *タイプ*: 右辺値
1295
1296 #### `join`
1297
1298 区切り文字を用いて、配列を文字列に結合します。たとえば、`join(['a','b','c'], ",")`は"a,b,c"になります。
1299
1300 *タイプ*: 右辺値
1301
1302 #### `join_keys_to_values`
1303
1304 区切り文字を用いて、ハッシュの各キーをそのキーに対応する値と結合し、結果を文字列として返します。
1305
1306 値が配列の場合は、キーは各要素の前に置かれます。返される値は、平坦化した配列になります。
1307
1308 たとえば、`join_keys_to_values({'a'=>1,'b'=>[2,3]}, " is ")`は["a is 1","b is 2","b is 3"]になります。
1309
1310 *タイプ*: 右辺値
1311
1312 #### `keys`
1313
1314 ハッシュのキーを配列として返します。
1315
1316 *タイプ*: 右辺値
1317
1318 #### `length`
1319
1320 与えられた文字列、配列、ハッシュの長さを返します。廃止された`size()`関数に代わるものです。
1321
1322 *タイプ*: 右辺値
1323
1324 #### `loadyaml`
1325
1326 配列、文字列、ハッシュを含むYAMLファイルをロードし、対応するネイティブデータタイプでデータを返します。
1327
1328 例:
1329
1330 ```puppet
1331 $myhash = loadyaml('/etc/puppet/data/myhash.yaml')
1332 ```
1333
1334 第2のパラメータは、ファイルが見つからなかった場合、または構文解析できなかった場合に返されます。
1335
1336 例:
1337
1338 ```puppet
1339 $myhash = loadyaml('no-file.yaml', {'default'=>'value'})
1340 ```
1341
1342 *タイプ*: 右辺値
1343
1344 #### `loadjson`
1345
1346 配列、文字列、ハッシュを含むJSONファイルをロードし、対応するネイティブデータタイプでデータを返します。
1347
1348 例:
1349
1350 ```puppet
1351 $myhash = loadjson('/etc/puppet/data/myhash.json')
1352 ```
1353
1354 第2のパラメータは、ファイルが見つからなかった場合、または構文解析できなかった場合に返されます。
1355
1356 例:
1357
1358 ```puppet
1359   $myhash = loadjson('no-file.json', {'default'=>'value'})
1360   ```
1361
1362 *タイプ*: 右辺値
1363
1364 #### `load_module_metadata`
1365
1366 ターゲットモジュールのmetadata.jsonをロードします。モジュールのバージョンや、モジュールの動的サポートに関するオーサーシップの判定に使用できます。
1367
1368 ```puppet
1369 $metadata = load_module_metadata('archive')
1370 notify { $metadata['author']: }
1371 ```
1372
1373 モジュールのメタデータファイルが存在しない場合、カタログコンパイルに失敗します。これを避ける方法は、以下のとおりです:
1374
1375 ```
1376 $metadata = load_module_metadata('mysql', true)
1377 if empty($metadata) {
1378   notify { "This module does not have a metadata.json file.": }
1379 }
1380 ```
1381
1382 *タイプ*: 右辺値
1383
1384 #### `lstrip`
1385
1386 文字列の左側のスペースを取り除きます。
1387
1388 *タイプ*: 右辺値
1389
1390 #### `max`
1391
1392 すべての引数の最大値を返します。少なくとも1つの引数が必要です。
1393
1394 引数: 数字または数字を表す文字列。
1395
1396 *タイプ*: 右辺値
1397
1398 #### `member`
1399
1400 変数が配列の構成要素かどうかを判定します。変数には文字列、配列、fixnumが使用できます。
1401
1402 たとえば、`member(['a','b'], 'b')`および`member(['a','b','c'], ['b','c'])`は`true`を返し、`member(['a','b'], 'c')`および`member(['a','b','c'], ['c','d'])`は`false`を返します。
1403
1404 *注*: この関数は、ネスト化した配列には対応していません。最初の引数にネスト化した配列が含まれている場合は、再帰的処理は行われません。
1405
1406 *タイプ*: 右辺値
1407
1408 #### `merge`
1409
1410 2つ以上のハッシュを統合し、その結果得られたハッシュを返します。
1411
1412 *例*:
1413
1414 ```puppet
1415 $hash1 = {'one' => 1, 'two' => 2}
1416 $hash2 = {'two' => 'dos', 'three' => 'tres'}
1417 $merged_hash = merge($hash1, $hash2)
1418 # 得られるハッシュは、以下に相当します:
1419 # $merged_hash =  {'one' => 1, 'two' => 'dos', 'three' => 'tres'}
1420 ```
1421
1422 重複キーが存在する場合は、最右のハッシュのキーが上位になります。
1423
1424 *タイプ*: 右辺値
1425
1426 #### `min`
1427
1428 すべての引数の最小値を返します。少なくとも1つの引数が必要です。
1429
1430 引数: 数字または数字を表す文字列。
1431
1432 *タイプ*: 右辺値
1433
1434 #### `num2bool`
1435
1436 数字または数字の文字列表現を正当なブーリアンに変換します。0または非数字は`false`になります。0より大きい数字は`true`になります。
1437
1438 *タイプ*: 右辺値
1439
1440 #### `parsejson`
1441
1442 JSONの文字列を正確なPuppet構造に変換します(ハッシュ、配列、文字列、整数、またはそれらの組み合わせとして)。
1443
1444 引数:
1445 * 第1の引数として、変換されるJSON文字列。
1446 * オプションで、第2のエラーとして、変換に失敗した場合に返される結果。
1447
1448 *タイプ*: 右辺値
1449
1450 #### `parseyaml`
1451
1452 YAMLの文字列を正確なPuppet構造に変換します。
1453
1454 引数:
1455 * 第1の引数として、変換されるYAML文字列。
1456 * オプションで、第2のエラーとして、変換に失敗した場合に返される結果。
1457
1458 *タイプ*: 右辺値
1459
1460 #### `pick`
1461
1462 値のリストから、未定義または空文字列ではない最初の値を返します。引数から任意の数字をとり、すべての値が未定義または空の場合はエラーが生じます。
1463
1464 ```puppet
1465 $real_jenkins_version = pick($::jenkins_version, '1.449')
1466 ```
1467
1468 *タイプ*: 右辺値
1469
1470 #### `pick_default`
1471
1472 値のリストにある最初の値を返します。`pick()`関数とは異なり、`pick_default()`は、すべての引数が空の場合も失敗にはなりません。そのため、デフォルトとして空の値を使用できます。
1473
1474 *タイプ*: 右辺値
1475
1476 #### `prefix`
1477
1478 配列のすべての要素、またはハッシュのキーに接頭辞を適用します。
1479
1480 例:
1481
1482 * `prefix(['a','b','c'], 'p')`は['pa','pb','pc']を返します。
1483 * `prefix({'a'=>'b','b'=>'c','c'=>'d'}, 'p')`は{'pa'=>'b','pb'=>'c','pc'=>'d'}を返します。
1484
1485 *タイプ*: 右辺値
1486
1487 #### `pry`
1488
1489 現在のスコープオブジェクトでpryデバッグセッションを起動します。コンパイル中の特定ポイントにおけるマニフェストコードのデバッグに役立ちます。`puppet apply`の実行中またはフォアグラウンドでPuppet masterを実行しているときにのみ使用する必要があります。PuppetのRubyGemsに`pry` gemがインストールされている必要があります。
1490
1491 *例:*
1492
1493 ```puppet
1494 pry()
1495 ```
1496
1497 pryセッションで役立つコマンドは以下のとおりです:
1498
1499 * `catalog`を実行すると、現在カタログをコンパイルしているコンテンツを見られます。
1500 * `cd catalog`および`ls`を実行すると、カタログメソッドおよびインスタンス変数を見られます。
1501 * `@resource_table`を実行すると、現在のカタログリソーステーブルを見られます。
1502
1503 #### `pw_hash`
1504
1505 crypt関数を用いてパスワードをハッシュします。ほとんどのPOSIXシステムで使えるハッシュを提供します。
1506
1507 この関数の最初の引数は、ハッシュするパスワードです。`undef`または空文字列の場合は、この関数により`undef`が返されます。
1508
1509 この関数の第2の引数は、使用するハッシュのタイプです。適切なcrypt(3)ハッシュ指定子に変換されます。有効なハッシュタイプは以下のとおりです:
1510
1511 |ハッシュタイプ            |指定子|
1512 |---------------------|---------|
1513 |MD5                  |1        |
1514 |SHA-256              |5        |
1515 |SHA-512 (推奨)|6        |
1516
1517 この関数の第3の引数は、使用するソルトです。
1518
1519 この関数は、Puppet masterのcrypt(3)実装を使用しています。お使いの環境に複数の異なるオペレーティングシステムが含まれている場合は、この関数を使用する前に、互換性があることを確認してください。
1520
1521 *タイプ*: 右辺値
1522
1523 *注:* この関数はRubyクラスの実装にあたり、UTF8との互換性がない可能性があります。互換性を確保するには、Ruby 2.4.0以降でこの関数を使用してください。
1524
1525 #### `range`
1526
1527 '(start, stop)'の形式で与えられた場合に、領域を配列として外挿します。たとえば、`range("0", "9")`は[0,1,2,3,4,5,6,7,8,9]を返します。ゼロパディングされた文字列は、自動的に整数に変換されます。したがって、`range("00", "09")`は[0,1,2,3,4,5,6,7,8,9]を返します。
1528
1529 非整数文字列を使用できます:
1530
1531 * `range("a", "c")`は["a","b","c"]を返します。
1532 * `range("host01", "host10")`は["host01", "host02", ..., "host09", "host10"]を返します。
1533
1534 末尾のゼロを明示的に含める必要があります。そうでないと、下層のRuby関数が適切に機能しません。
1535
1536 第3の引数を渡すと、生成された領域がその間隔で刻まれます。例:
1537
1538 * `range("0", "9", "2")`は["0","2","4","6","8"]を返します。
1539
1540 *タイプ*: 右辺値
1541
1542 #### `regexpescape`
1543
1544 文字列または文字列の配列を正規表現エスケープします。インプットとして、単一の文字列または配列のいずれかが必要です。
1545
1546 *タイプ*: 右辺値
1547
1548 #### `reject`
1549
1550 配列を検索し、提示された正規表現に一致する要素をすべてリジェクトします。
1551
1552 たとえば、`reject(['aaa','bbb','ccc','aaaddd'], 'aaa')`は['bbb','ccc']を返します。
1553
1554 *タイプ*: 右辺値
1555
1556 #### `reverse`
1557
1558 文字列または配列の順序を逆転します。
1559
1560 #### `round`
1561
1562  数値を最も近い整数に丸めます。
1563
1564 *タイプ*: 右辺値
1565
1566 #### `rstrip`
1567
1568 文字列の右側のスペースを取り除きます。
1569
1570 *タイプ*: 右辺値
1571
1572 #### `seeded_rand`
1573
1574 整数の最大値と文字列のシード値を取り、最大値よりも小さい反復可能かつランダムな整数を返します。`fqdn_rand`と同様ですが、シードにノード固有のデータが追加されません。
1575
1576 *タイプ*: 右辺値
1577
1578 #### `shell_escape`
1579
1580 文字列をエスケープし、Bourneシェルコマンドラインで安全に使用できるようにします。得られる文字列はクォートなしで使用する必要があり、ダブルクォートまたはシングルクォートでの使用は意図されていません。この関数は、Rubyの`Shellwords.shellescape()`関数と同様に挙動します。[Rubyドキュメント](http://ruby-doc.org/stdlib-2.3.0/libdoc/shellwords/rdoc/Shellwords.html#method-c-shellescape)を参照してください。
1581
1582 例:
1583
1584 ```puppet
1585 shell_escape('foo b"ar') => 'foo\ b\"ar'
1586 ```
1587
1588 *タイプ*: 右辺値
1589
1590 #### `shell_join`
1591
1592 与えられた文字列の配列からコマンドライン文字列を構築します。各配列アイテムが、Bourneシェルで使用できるようにエスケープされます。その後、すべてのアイテムがまとめられ、間にシングルスペースが配されます。この関数は、Rubyの`Shellwords.shelljoin()`関数と同様に挙動します。[Rubyドキュメント](http://ruby-doc.org/stdlib-2.3.0/libdoc/shellwords/rdoc/Shellwords.html#method-c-shelljoin)を参照してください。
1593
1594 例:
1595
1596 ```puppet
1597 shell_join(['foo bar', 'ba"z']) => 'foo\ bar ba\"z'
1598 ```
1599
1600 *タイプ*: 右辺値
1601
1602 #### `shell_split`
1603
1604 文字列をトークンの配列に分割します。この関数は、Rubyの`Shellwords.shellsplit()`関数と同様に挙動します。[Rubyドキュメント](http://ruby-doc.org/stdlib-2.3.0/libdoc/shellwords/rdoc/Shellwords.html#method-c-shellsplit)を参照してください。
1605
1606 *例:*
1607
1608 ```puppet
1609 shell_split('foo\ bar ba\"z') => ['foo bar', 'ba"z']
1610 ```
1611
1612 *タイプ*: 右辺値
1613
1614 #### `shuffle`
1615
1616 文字列または配列の順序をランダム化します。
1617
1618 *タイプ*: 右辺値
1619
1620 #### `size`
1621
1622 文字列、配列、ハッシュの要素数を返します。この関数は、今後のリリースでは廃止されます。Puppet 4では、`length`関数を使用してください。
1623
1624 *タイプ*: 右辺値
1625
1626 #### `sort`
1627
1628 文字列と配列を語彙的に分類します。
1629
1630 *タイプ*: 右辺値
1631
1632 *注:* この関数はRubyクラスの実装にあたり、UTF8との互換性がない可能性があります。互換性を確保するには、Ruby 2.4.0以降でこの関数を使用してください。
1633
1634 #### `squeeze`
1635
1636 文字列内の連続した繰り返し('aaaa'など)を単一文字に置き換え、新たな文字列を返します。
1637
1638 *タイプ*: 右辺値
1639
1640 #### `str2bool`
1641
1642 特定の文字列をブーリアンに変換します。値'1'、'true'、't'、'y'、'yes'を含む文字列は`true`に変換されます。値'0'、'false'、'f'、'n'、'no'を含む文字列、および空文字列または未定義文字列は`false`に変換されます。その他の値の場合、エラーが生じます。このチェックでは、大文字と小文字は区別されません。
1643
1644 *タイプ*: 右辺値
1645
1646 #### `str2saltedsha512`
1647
1648 OS Xバージョン10.7以上で使用されるソルト付きSHA512パスワードハッシュに文字列を変換します。hexバージョンのソルト付きSHA512パスワードハッシュを返します。これは、有効なパスワード属性としてPuppetマニフェストに挿入することができます。
1649
1650 *タイプ*: 右辺値
1651
1652 *注:* この関数はRubyクラスの実装にあたり、UTF8との互換性がない可能性があります。互換性を確保するには、Ruby 2.4.0以降でこの関数を使用してください。
1653
1654 #### `strftime`
1655
1656 フォーマットされた時刻を返します。
1657
1658 たとえば、`strftime("%s")`はUnixエポックからの経過時間を返し、`strftime("%Y-%m-%d")`は日付を返します。
1659
1660 引数: `strftime`フォーマットで時間を指定する文字列。詳細については、Ruby [strftime](https://ruby-doc.org/core-2.1.9/Time.html#method-i-strftime)ドキュメントを参照してください。
1661
1662 *タイプ*: 右辺値
1663
1664 *注:* この関数はRubyクラスの実装にあたり、UTF8との互換性がない可能性があります。互換性を確保するには、Ruby 2.4.0以降でこの関数を使用してください。
1665
1666 *フォーマット:*
1667
1668 * `%a`: 曜日の名称の短縮形('Sun')
1669 * `%A`: 曜日の完全な名称('Sunday')
1670 * `%b`: 月の名称の短縮形('Jan')
1671 * `%B`: 月の完全な名称('January')
1672 * `%c`: 推奨される地域の日付および時刻の表現
1673 * `%C`: 世紀(2009年であれば20)
1674 * `%d`: その月の日(01..31)
1675 * `%D`: 日付(%m/%d/%y)
1676 * `%e`: その月の日、1桁の場合は半角空白で埋める( 1..31)
1677 * `%F`: %Y-%m-%d(ISO 8601の日付フォーマット)と同等
1678 * `%h`: %bと同等
1679 * `%H`: 24時間制の時(00..23)
1680 * `%I`: 12時間制の時(01..12)
1681 * `%j`: 年中の通算日(001..366)
1682 * `%k`: 24時間制の時、1桁の場合は半角空白で埋める( 0..23)
1683 * `%l`: 12時間制の時、1桁の場合は半角空白で埋める( 0..12)
1684 * `%L`: ミリ秒(000..999)
1685 * `%m`: その年の月(01..12)
1686 * `%M`: 分(00..59)
1687 * `%n`: 改行(\n)
1688 * `%N`: 秒の小数点以下の桁、デフォルトは9桁(ナノ秒)
1689   * `%3N`: ミリ秒(3桁)
1690   * `%6N`: マイクロ秒(6桁)
1691   * `%9N`: ナノ秒(9桁)
1692 * `%p`: 午前または午後('AM'または'PM')
1693 * `%P`: 午前または午後('am'または'pm')
1694 * `%r`: 12時間制の時刻(%I:%M:%S %pと同等)
1695 * `%R`: 24時間制の時刻(%H:%M)
1696 * `%s`: Unixエポック、1970-01-01 00:00:00 UTCからの経過秒
1697 * `%S`: 秒(00..60)
1698 * `%t`: タブ文字(   )
1699 * `%T`: 24時間制の時刻(%H:%M:%S)
1700 * `%u`: 月曜日を1とした、曜日の数値表現(1..7)
1701 * `%U`: 最初の日曜日を第1週の始まりとした、現在の週を表す数(00..53)
1702 * `%v`: VMS形式の日付(%e-%b-%Y)
1703 * `%V`: ISO 8601形式の暦週(01..53)
1704 * `%W`: 最初の月曜日を第1週の始まりとした、現在の週を表す数(00..53)
1705 * `%w`: 曜日(日曜が0、0..6)
1706 * `%x`: 推奨される日付のみの表現、時刻はなし
1707 * `%X`: 推奨される時刻のみの表現、日付はなし
1708 * `%y`: 世紀なしの年(00..99)
1709 * `%Y`: 世紀ありの年
1710 * `%z`: タイムゾーン、UTCからのオフセット(+0900など)
1711 * `%Z`: タイムゾーンの名称
1712 * `%%`: '%'文字
1713
1714 #### `strip`
1715
1716 1つの文字列、または配列内のすべての文字列から、冒頭および末尾の空白を削除します。たとえば、`strip("    aaa   ")`は"aaa"になります。
1717
1718 *タイプ*: 右辺値
1719
1720 #### `suffix`
1721
1722 配列のすべての要素、またはハッシュのすべてのキーに接尾辞を適用します。
1723
1724 例:
1725
1726 * `suffix(['a','b','c'], 'p')`は['ap','bp','cp']を返します。
1727 * `suffix({'a'=>'b','b'=>'c','c'=>'d'}, 'p')`は{'ap'=>'b','bp'=>'c','cp'=>'d'}を返します。
1728
1729 *タイプ*: 右辺値
1730
1731 #### `swapcase`
1732
1733 文字列の現在の大文字と小文字を入れ替えます。たとえば、`swapcase("aBcD")`は"AbCd"になります。
1734
1735 *タイプ*: 右辺値
1736
1737 *注:* この関数はRubyクラスの実装にあたり、UTF8との互換性がない可能性があります。互換性を確保するには、Ruby 2.4.0以降でこの関数を使用してください。
1738
1739 #### `time`
1740
1741 現在のUnixエポック時刻を整数として返します。
1742
1743 たとえば、`time()`は'1311972653'などを返します。
1744
1745 *タイプ*: 右辺値
1746
1747 #### `to_bytes`
1748
1749 引数をバイトに変換します。
1750
1751 たとえば、"4 kB"は"4096"になります。
1752
1753 引数: 単一の文字列。
1754
1755 *タイプ*: 右辺値
1756
1757 #### `to_json`
1758
1759 入力値をJSON形式の文字列に変換します。
1760
1761 例えば、`{ "key" => "value" }`は`{"key":"value"}`になります。
1762
1763 *タイプ*: 右辺値
1764
1765 #### `to_json_pretty`
1766
1767 入力値を整形されたJSON形式の文字列に変換します。
1768
1769 例えば、`{ "key" => "value" }`は`{\n  \"key\": \"value\"\n}`になります。
1770
1771 *タイプ*: 右辺値
1772
1773 #### `to_yaml`
1774
1775 入力値をYAML形式の文字列に変換します。
1776
1777 例えば、`{ "key" => "value" }`は`"---\nkey: value\n"`になります。
1778
1779 *タイプ*: 右辺値
1780
1781 #### `try_get_value`
1782
1783 **非推奨:** `dig()`に置き換えられました。
1784
1785 ハッシュおよび配列の複数レイヤー内の値を取得します。
1786
1787 引数:
1788
1789 * 第1の引数として、パスを含む文字列。この引数は、ゼロではじまり、パス区切り文字(デフォルトは"/")で区切ったハッシュキーまたは配列インデックスの文字列として提示してください。この関数は各パスコンポーネントにより構造内を移動し、パスの最後で値を返すよう試みます。
1790
1791 *デフォルトの第2の引数。パスが正しくない場合や、値が見つからない場合、その他のエラーが生じた場合は、この引数が返されます。
1792 * 最後の引数として、パス区切り文字。
1793
1794 ```ruby
1795 $data = {
1796   'a' => {
1797     'b' => [
1798       'b1',
1799       'b2',
1800       'b3',
1801     ]
1802   }
1803 }
1804
1805 $value = try_get_value($data, 'a/b/2')
1806 # $value = 'b3'
1807
1808 # 可能なすべてのオプションを使用
1809 $value = try_get_value($data, 'a/b/2', 'not_found', '/')
1810 # $value = 'b3'
1811
1812 # デフォルト値を使用
1813 $value = try_get_value($data, 'a/b/c/d', 'not_found')
1814 # $value = 'not_found'
1815
1816 # カスタム区切りを使用
1817 $value = try_get_value($data, 'a|b', [], '|')
1818 # $value = ['b1','b2','b3']
1819 ```
1820
1821 1. **$data** 取り扱うデータ構造。
1822 2. **'a/b/2'** パス文字列。
1823 3. **'not_found'** デフォルト値。何も見つからない場合に返されます。
1824    (オプション、デフォルトは`undef`)
1825 4. **'/'** パス区切り文字。
1826    (オプション、デフォルトは*'/'*)
1827
1828 *タイプ*: 右辺値
1829
1830 #### `type3x`
1831
1832 **非推奨**。この関数は、今後のリリースで廃止されます。 
1833
1834 与えられた値のタイプを説明する文字列を返します。タイプとしては、文字列、配列、ハッシュ、フロート、整数、ブーリアンが可能です。Puppet 4では、この代わりに新しいタイプシステムを使用してください。
1835
1836 引数:
1837
1838 * 文字列
1839 * 配列
1840 * ハッシュ
1841 * フロート
1842 * 整数
1843 * ブーリアン
1844
1845 *タイプ*: 右辺値
1846
1847 #### `type_of`
1848
1849 この関数は下位互換性を得るために提供されていますが、Puppetで提供されている内蔵の[type()関数](https://docs.puppet.com/puppet/latest/reference/function.html#type)の使用を推奨します。
1850
1851 与えられた値のリテラル型を返します。Puppet 4が必要です。`if type_of($some_value) <= Array[String] { ... }`のように(これは`if $some_value =~ Array[String] { ... }`に相当します)、`<=`を用いたタイプの比較に役立ちます。
1852
1853 *タイプ*: 右辺値
1854
1855 #### `union`
1856
1857 2つ以上の配列を重複なしで結合したものを返します。
1858
1859 たとえば、`union(["a","b","c"],["b","c","d"])`は["a","b","c","d"]を返します。
1860
1861 *タイプ*: 右辺値
1862
1863 #### `unique`
1864
1865 文字列および配列から重複を削除します。
1866
1867 たとえば、`unique("aabbcc")`は'abc'を、`unique(["a","a","b","b","c","c"])`は["a","b","c"]を返します。
1868
1869 *タイプ*: 右辺値
1870
1871 #### `unix2dos`
1872
1873 与えられた文字列のDOSバージョンを返します。クロスプラットフォームテンプレートでファイルリソースを使用する場合に役立ちます。
1874
1875 *タイプ*: 右辺値
1876
1877 ```puppet
1878 file { $config_file:
1879   ensure  => file,
1880   content => unix2dos(template('my_module/settings.conf.erb')),
1881 }
1882 ```
1883
1884 [dos2unix](#dos2unix)も参照してください。
1885
1886 #### `upcase`
1887
1888 オブジェクト、配列、オブジェクトのハッシュを大文字に変換します。変換されるオブジェクトは、大文字化に対応するものでなければなりません。
1889
1890 たとえば、`upcase('abcd')`は'ABCD'を返します。
1891
1892 *タイプ*: 右辺値
1893
1894 *注:* この関数はRubyクラスの実装にあたり、UTF8との互換性がない可能性があります。互換性を確保するには、Ruby 2.4.0以降でこの関数を使用してください。
1895
1896 #### `uriescape`
1897
1898 文字列または文字列の配列をURLエンコードします。
1899
1900 引数: 単一の文字列または文字列の配列。
1901
1902 *タイプ*: 右辺値
1903
1904 *注:* この関数はRubyクラスの実装にあたり、UTF8との互換性がない可能性があります。互換性を確保するには、Ruby 2.4.0以降でこの関数を使用してください。
1905
1906 #### `validate_absolute_path`
1907
1908 ファイルシステムの絶対パスを表す任意の文字列の有効性を確認します。WindowsおよびUnix形式のパスで機能します。
1909
1910 以下の値が渡されます:
1911
1912 ```puppet
1913 $my_path = 'C:/Program Files (x86)/Puppet Labs/Puppet'
1914 validate_absolute_path($my_path)
1915 $my_path2 = '/var/lib/puppet'
1916 validate_absolute_path($my_path2)
1917 $my_path3 = ['C:/Program Files (x86)/Puppet Labs/Puppet','C:/Program Files/Puppet Labs/Puppet']
1918 validate_absolute_path($my_path3)
1919 $my_path4 = ['/var/lib/puppet','/usr/share/puppet']
1920 validate_absolute_path($my_path4)
1921 ```
1922
1923 以下の値は失敗になり、コンパイルが中止されます:
1924
1925 ```puppet
1926 validate_absolute_path(true)
1927 validate_absolute_path('../var/lib/puppet')
1928 validate_absolute_path('var/lib/puppet')
1929 validate_absolute_path([ 'var/lib/puppet', '/var/foo' ])
1930 validate_absolute_path([ '/var/lib/puppet', 'var/foo' ])
1931 $undefined = `undef`
1932 validate_absolute_path($undefined)
1933 ```
1934
1935 *タイプ*: ステートメント
1936
1937 #### `validate_array`
1938
1939 **非推奨。今後のバージョンのstdlibでは削除されます。[`validate_legacy`](#validate_legacy)を参照してください。**
1940
1941 渡されたすべての値が配列データ構造であることを確認します。このチェックで不合格となった値がある場合は、カタログコンパイルが中止されます。
1942
1943 以下の値が渡されます:
1944
1945 ```puppet
1946 $my_array = [ 'one', 'two' ]
1947 validate_array($my_array)
1948 ```
1949
1950 以下の値は失敗になり、コンパイルが中止されます:
1951
1952 ```puppet
1953 validate_array(true)
1954 validate_array('some_string')
1955 $undefined = `undef`
1956 validate_array($undefined)
1957 ```
1958
1959 *タイプ*: ステートメント
1960
1961 #### `validate_augeas`
1962
1963 Augeasレンズを用いて文字列を確認します。
1964
1965 引数:
1966
1967 * 第1の引数として、テストする文字列。
1968 * 第2の引数として、使用するAugeasレンズの名前。
1969 * オプションの第3の文字列として、ファイル内で見つかるべき**ではない**パスのリスト。
1970 * オプションの第4の引数として、ユーザに表示するエラーメッセージ。
1971
1972 Augeasがレンズによる文字列の構文解析に失敗した場合は、構文エラーによりコンパイルが中止されます。 
1973
1974 `$file`変数は、Augeasツリーでテストされる一時ファイルのロケーションを示します。
1975
1976 たとえば、$passwdcontentにユーザの`foo`が含まれないようにするには、第3の引数を以下のようにします:
1977
1978 ```puppet
1979 validate_augeas($passwdcontent, 'Passwd.lns', ['$file/foo'])
1980 ```
1981
1982 エラーメッセージを生成して表示するには、第4の引数を以下のようにします:
1983
1984 ```puppet
1985 validate_augeas($sudoerscontent, 'Sudoers.lns', [], 'Failed to validate sudoers content with Augeas')
1986 ```
1987
1988 *タイプ*: ステートメント
1989
1990 #### `validate_bool`
1991
1992 **非推奨。今後のバージョンのstdlibでは削除されます。[`validate_legacy`](#validate_legacy)を参照してください。**
1993
1994 渡されたすべての値が`true`または`false`のいずれかであることを確認します。
1995 このチェックで不合格となった値がある場合は、カタログコンパイルが中止されます。
1996
1997 以下の値が渡されます:
1998
1999 ```puppet
2000 $iamtrue = true
2001 validate_bool(true)
2002 validate_bool(true, true, false, $iamtrue)
2003 ```
2004
2005 以下の値は失敗になり、コンパイルが中止されます:
2006
2007 ```puppet
2008 $some_array = [ true ]
2009 validate_bool("false")
2010 validate_bool("true")
2011 validate_bool($some_array)
2012 ```
2013
2014 *タイプ*: ステートメント
2015
2016 #### `validate_cmd`
2017
2018 外部コマンドにより文字列を確認します。
2019
2020 引数:
2021 * 第1の引数として、テストする文字列。
2022 * 第2の引数として、テストコマンドのパス。この引数は、ファイルパスのプレースホルダ―として%をとります(%プレースホルダーが与えられていない場合、デフォルトはコマンド末尾)。パスした文字列を含む一時ファイルに対してコマンドが起動した場合や、ゼロではない値が返された場合は、構文エラーによりコンパイルが中止されます。
2023 * オプションの第3の引数として、ユーザに表示するエラーメッセージ。
2024
2025 ```puppet
2026 # デフォルトのパス末尾
2027 validate_cmd($sudoerscontent, '/usr/sbin/visudo -c -f', 'Visudo failed to validate sudoers content')
2028 ```
2029
2030 ```puppet
2031 # ファイルロケーションとして%を使用
2032 validate_cmd($haproxycontent, '/usr/sbin/haproxy -f % -c', 'Haproxy failed to validate config content')
2033 ```
2034
2035 *タイプ*: ステートメント
2036
2037 #### `validate_domain_name`
2038
2039 **非推奨。今後のバージョンのstdlibでは削除されます。[`validate_legacy`](#validate_legacy)を参照してください。**
2040
2041 渡されたすべての値が構文的に正しいドメイン名であることを確認します。このチェックで不合格となった値がある場合は、カタログコンパイルが中止されます。
2042
2043 以下の値が渡されます:
2044
2045 ~~~
2046 $my_domain_name = 'server.domain.tld'
2047 validate_domain_name($my_domain_name)
2048 validate_domain_name('domain.tld', 'puppet.com', $my_domain_name)
2049 ~~~
2050
2051 以下の値が不合格となり、コンパイルが中止されます: 
2052
2053 ~~~
2054 validate_domain_name(1)
2055 validate_domain_name(true)
2056 validate_domain_name('invalid domain')
2057 validate_domain_name('-foo.example.com')
2058 validate_domain_name('www.example.2com')
2059 ~~~
2060
2061 *タイプ*: ステートメント
2062
2063 #### `validate_email_address`
2064
2065 渡されたすべての値が有効なメールアドレスであることを確認します。このチェックで不合格となった値がある場合、コンパイルが失敗します。
2066
2067 以下の値が渡されます:
2068
2069 ~~~
2070 $my_email = "waldo@gmail.com"
2071 validate_email_address($my_email)
2072 validate_email_address("bob@gmail.com", "alice@gmail.com", $my_email)
2073 ~~~
2074
2075 以下の値が不合格となり、コンパイルが中止されます: 
2076
2077 ~~~
2078 $some_array = [ 'bad_email@/d/efdf.com' ]
2079 validate_email_address($some_array)
2080 ~~~
2081
2082 *タイプ*: ステートメント
2083
2084 #### `validate_hash`
2085
2086 **非推奨。今後のバージョンのstdlibでは削除されます。[`validate_legacy`](#validate_legacy)を参照してください。**
2087
2088 渡されたすべての値がハッシュデータ構造であることを確認します。このチェックで不合格となった値がある場合は、カタログコンパイルが中止されます。
2089
2090 以下の値が渡されます:
2091
2092 ```puppet
2093 $my_hash = { 'one' => 'two' }
2094 validate_hash($my_hash)
2095 ```
2096
2097 以下の値は失敗になり、コンパイルが中止されます:
2098
2099 ```puppet
2100 validate_hash(true)
2101 validate_hash('some_string')
2102 $undefined = `undef`
2103 validate_hash($undefined)
2104 ```
2105
2106 *タイプ*: ステートメント
2107
2108 #### `validate_integer`
2109
2110 **非推奨。今後のバージョンのstdlibでは削除されます。[`validate_legacy`](#validate_legacy)を参照してください。**
2111
2112 整数または整数の配列を確認します。いずれかがチェックで不合格になった場合には、カタログコンパイルが中止されます。
2113
2114 引数:
2115
2116 * 第1の引数として、整数または整数の配列。
2117 * オプションの第2の引数として、最大値。第1の引数(のすべての要素)は、この最大値以下でなければなりません。
2118 * オプションの第3の引数として、最小値。第1の引数(のすべての要素)は、この最小値以上でなければなりません。
2119
2120 第1の引数が整数または整数の配列でない場合や、第2または第3の引数が整数に変換できない場合は、この関数は失敗になります。ただし、最小値が与えられている場合は(この場合に限られます)、第2の引数を空文字列または`undef`にすることが可能です。これは、最小チェックを確実に行うためのプレースホルダーとして機能します。
2121
2122 以下の値が渡されます:
2123
2124 ```puppet
2125 validate_integer(1)
2126 validate_integer(1, 2)
2127 validate_integer(1, 1)
2128 validate_integer(1, 2, 0)
2129 validate_integer(2, 2, 2)
2130 validate_integer(2, '', 0)
2131 validate_integer(2, `undef`, 0)
2132 $foo = `undef`
2133 validate_integer(2, $foo, 0)
2134 validate_integer([1,2,3,4,5], 6)
2135 validate_integer([1,2,3,4,5], 6, 0)
2136 ```
2137
2138 * 加えて、上述のすべて。ただし、文字列として渡された値を任意に組み合わせたもの('1'または"1")。
2139 * 加えて、上述のすべて。ただし、負の整数値を(適切に)組み合わせたもの。
2140
2141 以下の値は失敗になり、コンパイルが中止されます:
2142
2143 ```puppet
2144 validate_integer(true)
2145 validate_integer(false)
2146 validate_integer(7.0)
2147 validate_integer({ 1 => 2 })
2148 $foo = `undef`
2149 validate_integer($foo)
2150 validate_integer($foobaridontexist)
2151
2152 validate_integer(1, 0)
2153 validate_integer(1, true)
2154 validate_integer(1, '')
2155 validate_integer(1, `undef`)
2156 validate_integer(1, , 0)
2157 validate_integer(1, 2, 3)
2158 validate_integer(1, 3, 2)
2159 validate_integer(1, 3, true)
2160 ```
2161
2162 * 加えて、上述のすべて。ただし、文字列として渡された値を任意に組み合わせたもの (`false`、または"false")。
2163 * 加えて、上述のすべて。ただし、負の整数値を不適切に組み合わせたもの。
2164 * 加えて、上述のすべて。ただし、配列内の非整数アイテムまたは最大/最小引数を用いたもの。
2165
2166 *タイプ*: ステートメント
2167
2168 #### `validate_ip_address`
2169
2170 **非推奨。今後のバージョンのstdlibでは削除されます。[`validate_legacy`](#validate_legacy)を参照してください。**
2171
2172 IPv4アドレスかIPv6アドレスかにかかわらず、引数がIPアドレスであることを確認します。また、ネットマスクによりIPアドレスを確認します。
2173
2174 引数: IPアドレスを指定する文字列。
2175
2176 以下の値が渡されます:
2177
2178 ```puppet
2179 validate_ip_address('0.0.0.0')
2180 validate_ip_address('8.8.8.8')
2181 validate_ip_address('127.0.0.1')
2182 validate_ip_address('194.232.104.150')
2183 validate_ip_address('3ffe:0505:0002::')
2184 validate_ip_address('::1/64')
2185 validate_ip_address('fe80::a00:27ff:fe94:44d6/64')
2186 validate_ip_address('8.8.8.8/32')
2187 ```
2188
2189 以下の値は失敗になり、コンパイルが中止されます:
2190
2191 ```puppet
2192 validate_ip_address(1)
2193 validate_ip_address(true)
2194 validate_ip_address(0.0.0.256)
2195 validate_ip_address('::1', {})
2196 validate_ip_address('0.0.0.0.0')
2197 validate_ip_address('3.3.3')
2198 validate_ip_address('23.43.9.22/64')
2199 validate_ip_address('260.2.32.43')
2200 ```
2201
2202
2203 #### `validate_legacy`
2204
2205 指定したタイプおよび非推奨の確認関数の両方に照らして値を確認します。両方にパスした場合はそのままパスし、片方の確認のみにパスした場合はエラーが生じ、両方の確認でfalseが返された場合は失敗になります。
2206
2207 引数:
2208
2209 * 値のチェックに用いるタイプ。
2210 * 過去の確認関数のフルネーム。
2211 * チェックする値。
2212 * 過去の確認関数に必要な引数の不特定数。
2213
2214 例:
2215
2216 ```puppet
2217 validate_legacy("Optional[String]", "validate_re", "Value to be validated", ["."])
2218 ```
2219
2220 この関数は、Puppet 3形式の引数確認(stdlibの`validate_*`関数を使用)からPuppet 4データタイプへのモジュールのアップデートに対応しており、Puppet 3形式の確認に頼っている場合も機能性が中断することはありません。
2221
2222 > 注: この関数は、Puppet 4.4.0 (PE 2016.1)以降にのみ対応しています。
2223
2224 ##### モジュールユーザへ
2225
2226 Puppet 4を使用している場合、`validate_legacy`関数を使えば、非推奨のPuppet 3の`validate_*`関数を探し、分離することができます。これらの関数は、stdlibバージョン4.13時点で非推奨になっており、今後のstdlibバージョンでは削除されます。
2227
2228 Puppet 4では、[データタイプ](https://docs.puppet.com/puppet/latest/reference/lang_data.html)を用いた改良版の定義タイプチェックが可能です。データタイプでは、Puppet 3の`validate_*`関数で見られた、矛盾につながるいくつかの問題を回避できます。たとえば、[validate_numeric](#validate_numeric)では、数字だけでなく、数字の配列や数字のように見える文字列も意図せず許可されていました。
2229
2230 Puppet 4とともに、非推奨の `validate_*`関数を用いたモジュールを使用している場合は、非推奨メッセージが表示されることがあります。`validate_legacy`関数を使えば、そうした差異を可視化し、より明快なPuppet 4構文に簡単に移行することができます。
2231
2232 表示される非推奨メッセージは、使用しているモジュールやデータによって異なることがあります。以下の非推奨メッセージは、Puppet 4でのみデフォルトで表示されます:
2233
2234 * `Notice: Accepting previously invalid value for target type '<type>'`: このメッセージは、情報提供の目的のみで表示されるものです。使用している値は、新形式で許可されていますが、旧確認関数では無効となります。
2235 * `Warning: This method is deprecated, please use the stdlib validate_legacy function`: モジュールがまだ`validate_legacy`にアップグレードされていません。[deprecation](#deprecation)オプションを使用してさしあたり警告を解除するか、モジュールの開発者によりフィックスを提出してください。この問題の解決方法については、以下の[モジュール開発者へ](#モジュール開発者へ)を参照してください。
2236 * `Warning: validate_legacy(<function>) expected <type> value, got <actual type>_`: コードが渡す値は、Puppet 3形式の確認では認められますが、次バージョンのモジュールでは認められません。ほとんどの場合、数字またはブーリアンからクォートを削除すれば、この問題を解決することができます。
2237 * `Error: Evaluation Error: Error while evaluating a Resource Statement, Evaluation Error: Error while evaluating a Function Call, validate_legacy(<function>) expected <type> value, got <actual type>`: コードの渡す値は、新形式の確認でも旧形式の確認でも認められません。
2238
2239 ##### モジュール開発者へ
2240
2241 `validate_legacy`関数は、モジュールユーザの使用している機能を中断させずに、 Puppet 3形式の確認からPuppet 4形式の確認に移行するのに役立ちます。
2242
2243 Puppet 4形式の確認に移行すれば、[データタイプ](https://docs.puppet.com/puppet/latest/reference/lang_data.html)を用いた、より明確な定義タイプチェックが可能になります。Puppet 3の`validate_*` 関数の多くは、確認という点で驚くほど多くの穴があります。たとえば、[validate_numeric](#validate_numeric)では、細部をコントロールできないため、数字だけでなく、数字の配列や数字のように見える文字列も許可されます。
2244
2245 クラスおよび定義タイプの各パラメータについて、使用する新しいPuppet 4データタイプを選択してください。たいていの場合、新しいデータタイプにより、元の`validate_*`関数とは異なる値のセットを使用できるようになります。以下のような状況になります:
2246
2247 |              | `validate_` pass | `validate_` fail |
2248 | ------------ | ---------------- | ---------------- |
2249 | マッチタイプ | パス             | パス、通告     |
2250 | 失敗タイプ   | パス、非推奨 | 失敗             |
2251
2252 現在のところ、確認後のコードでも、すべての可能な値に対処する必要がありますが、新形式にマッチする値のみを渡すように、コードのユーザがマニフェストを変更することができます。
2253
2254 stdlibの`validate_*`関数それぞれについて、マッチする`Stdlib::Compat::*`タイプがあり、適切な値のセットが許可されます。注意事項については、stdlibソースコードの `types/`ディレクトリにあるドキュメントを参照してください。
2255
2256 たとえば、数字のみが許可されるクラスを与えると、以下のようになります:
2257
2258 ```puppet
2259 class example($value) {
2260   validate_numeric($value)
2261 ```
2262
2263 得られる確認コードは、以下のようになります:
2264
2265 ```puppet
2266 class example(
2267   Variant[Stdlib::Compat::Numeric, Numeric] $value
2268 ) {
2269   validate_legacy(Numeric, 'validate_numeric', $value)
2270 ```
2271
2272 ここでは、`$value`のタイプが`Variant[Stdlib::Compat::Numeric, Numeric]`と定義されています。これにより、任意の`Numeric` (新形式)のほか、`validate_numeric`で(`Stdlib::Compat::Numeric`を通じて)これまで許可されていたすべての値を使用できます。
2273
2274 `validate_legacy`を呼び出すと、適切なログまたは失敗メッセージのトリガーが処理されます。これには、新形式、以前の確認関数の名称、およびその関数のすべての引数が必要です。
2275
2276 お使いのモジュールがまだPuppet 3をサポートしている場合は、これは互換性を破る変更になります。`metadata.json`要件セクションをアップデートしてモジュールがもうPuppet 3をサポートしていないことを示し、モジュールのメジャーバージョンを放棄してください。この変更を加えても、モジュールに関する既存のすべてのテストにパスするはずです。新たに可能になった値について、追加のテストを作成してください。
2277
2278 これは互換性を破る変更であることから、取り除きたいすべてのパラメータについて [`deprecation`](#deprecation)をコールしたり、パラメータにさらなる制約を追加したりする良い機会でもあります。
2279
2280 このバージョンのリリース後、互換性を破る変更を加えた別のリリースを公開し、すべての互換性タイプおよび `validate_legacy`のコールを削除することができます。その時点で、コードを実行し、過去に可能だった値に関する残余要素を取り除くこともできます。
2281
2282 そうした変更については、必ずCHANGELOGおよびREADMEで通告してください。
2283
2284 #### `validate_numeric`
2285
2286 **非推奨。今後のバージョンのstdlibでは削除されます。[`validate_legacy`](#validate_legacy)を参照してください。**
2287
2288 数値または数値の配列や文字列を確認します。いずれかがチェックに失敗した場合には、カタログコンパイルが中止されます。
2289
2290 引数:
2291
2292 * 数値、または数値の配列か文字列。
2293 * オプションで、最大値。第1の引数(のすべての要素) は、この最大値以下でなければなりません。
2294 * オプションで、最小値。第1の引数(のすべての要素)は、この最小値以上でなければなりません。
2295
2296 第1の引数が数値(整数またはフロート)または数値の配列が文字列でない場合や、第2および第3の引数が数値に変換できない場合は、この関数は失敗になります。最小値が与えられている場合は(この場合に限られます)、第2の引数を空文字列または`undef`にすることが可能です。これは、最小チェックを確実に行うためのプレースホルダーとして機能します。
2297
2298 パスおよび失敗の使用については、[`validate_integer`](#validate-integer)を参照してください。同じ値がパスおよび失敗します。ただし、`validate_numeric`では、浮動小数点値も許可されます。
2299
2300 *タイプ*: ステートメント
2301
2302 #### `validate_re`
2303
2304 **非推奨。今後のバージョンのstdlibでは削除されます。[`validate_legacy`](#validate_legacy)を参照してください。**
2305
2306 1つまたは複数の正規表現に照らして、文字列の簡単な確認を行います。
2307
2308 引数:
2309
2310 * 第1の引数として、テストする文字列。この引数が文字列でない場合、コンパイルが中止されます。クォートを用いて強制的に文字列化してください。
2311 * 第2の引数として、文字列化した正規表現(区切り文字//なし)または正規表現の配列。
2312 * オプションの第3の引数として、ユーザに表示するエラーメッセージ。
2313
2314 第2の引数の正規表現が第1の引数で渡した文字列にマッチしない場合は、構文エラーによりコンパイルが中止されます。
2315
2316 以下の文字列により、正規表現に照らして確認が行われます:
2317
2318 ```puppet
2319 validate_re('one', '^one$')
2320 validate_re('one', [ '^one', '^two' ])
2321 ```
2322
2323 以下の文字列では、確認に失敗し、コンパイルが中止されます:
2324
2325 ```puppet
2326 validate_re('one', [ '^two', '^three' ])
2327 ```
2328
2329 エラーメッセージの設定方法:
2330
2331 ```puppet
2332 validate_re($::puppetversion, '^2.7', 'The $puppetversion fact value does not match 2.7')
2333 ```
2334
2335 強制的に文字列化するには、クォートを使用してください:
2336
2337   ```
2338   validate_re("${::operatingsystemmajrelease}", '^[57]$')
2339   ```
2340
2341 *タイプ*: ステートメント
2342
2343 #### `validate_slength`
2344
2345 **非推奨。今後のバージョンのstdlibでは削除されます。[`validate_legacy`](#validate_legacy)を参照してください。**
2346
2347 文字列(または文字列の配列)が指定した長さ以下であることを確認します。
2348
2349 引数:
2350
2351 * 第1の引数として、文字列または文字列の配列。
2352 * 第2の引数として、長さの最大値を示す数値。
2353 * オプションの第3の引数として、長さの最小値を示す数値。
2354
2355   以下の値が渡されます:
2356
2357 ```puppet
2358 validate_slength("discombobulate",17)
2359 validate_slength(["discombobulate","moo"],17)
2360 validate_slength(["discombobulate","moo"],17,3)
2361 ```
2362
2363 以下の値は失敗になります:
2364
2365 ```puppet
2366 validate_slength("discombobulate",1)
2367 validate_slength(["discombobulate","thermometer"],5)
2368 validate_slength(["discombobulate","moo"],17,10)
2369 ```
2370
2371 *タイプ*: ステートメント
2372
2373 #### `validate_string`
2374
2375 **非推奨。今後のバージョンのstdlibでは削除されます。[`validate_legacy`](#validate_legacy)を参照してください。**
2376
2377 渡したすべての値が文字列データ構造であることを確認します。このチェックに失敗した値がある場合は、カタログコンパイルが中止されます。
2378
2379 以下の値が渡されます:
2380
2381 ```puppet
2382 $my_string = "one two"
2383 validate_string($my_string, 'three')
2384 ```
2385
2386 以下の値は失敗になり、コンパイルが中止されます:
2387
2388 ```puppet
2389 validate_string(true)
2390 validate_string([ 'some', 'array' ])
2391 ```
2392
2393 *注:* validate_string(`undef`)は、このバージョンの関数APIでは失敗しません。
2394
2395 代わりに、以下を使用してください:
2396
2397   ```
2398   if $var == `undef` {
2399     fail('...')
2400   }
2401   ```
2402
2403 *タイプ*: ステートメント
2404
2405 #### `validate_x509_rsa_key_pair`
2406
2407 OpenSSLにより、PEMフォーマットされたX.509認証およびプライベートキーを確認します。
2408 認証の署名が提供されたキーから作成されたものであることを確認します。
2409
2410 このチェックに失敗した値がある場合は、カタログコンパイルが中止されます。
2411
2412 引数:
2413
2414 * 第1の引数として、X.509認証。
2415 * 第2の引数として、RSAプライベートキー。
2416
2417 ```puppet
2418 validate_x509_rsa_key_pair($cert, $key)
2419 ```
2420
2421 *タイプ*: ステートメント
2422
2423 #### `values`
2424
2425 与えられたハッシュの値を返します。
2426
2427 たとえば、`$hash = {'a'=1, 'b'=2, 'c'=3} values($hash)`を与えると、[1,2,3]を返します。
2428
2429 *タイプ*: 右辺値
2430
2431 #### `values_at`
2432
2433 ロケーションをもとに、配列内の値を探します。
2434
2435 引数:
2436
2437 * 第1の引数として、解析したい配列。
2438 * 第2の引数として、以下の値の任意の組み合わせ:
2439   * 単一の数値インデックス。
2440   * 'start-stop'の形式での範囲(4-9など)。
2441   * 上記を組み合わせた配列。
2442
2443 例:
2444
2445 * `values_at(['a','b','c'], 2)`は['c']を返します。
2446 * `values_at(['a','b','c'], ["0-1"])`は['a','b']を返します。
2447 * `values_at(['a','b','c','d','e'], [0, "2-3"])`は['a','c','d']を返します。
2448
2449 *タイプ*: 右辺値
2450
2451 #### `zip`
2452
2453 与えられた第1の配列から1つの要素をとり、与えられた第2の配列の対応する要素と結合します。これにより、n-要素配列のシーケンスが生成されます。*n*は、引数の数より1大きくなります。たとえば、`zip(['1','2','3'],['4','5','6'])`は["1", "4"], ["2", "5"], ["3", "6"]を返します。*タイプ*: 右辺値。
2454
2455 ## 制約
2456
2457 Puppet Enterprise 3.7では、stdlibモジュールがPEに含まれていません。PEユーザは、Puppetと互換性のあるstdlibの最新リリースをインストールする必要があります。
2458
2459 ### バージョン互換性
2460
2461 バージョン | Puppet 2.6 | Puppet 2.7 | Puppet 3.x | Puppet 4.x |
2462 :---------------|:-----:|:---:|:---:|:----:
2463 **stdlib 2.x**  | **あり** | **あり** | なし | なし
2464 **stdlib 3.x**  | なし    | **あり**  | **あり** | なし
2465 **stdlib 4.x**  | なし    | **あり**  | **あり** | なし
2466 **stdlib 4.6+**  | なし    | **あり**  | **あり** | **あり**
2467 **stdlib 5.x**  | なし    | なし  | **あり**  | **あり**
2468
2469 **stdlib 5.x**:  stdlib 5.xのリリース時には、Puppet 2.7.xのサポートが廃止されます。[この説明](https://github.com/puppetlabs/puppetlabs-stdlib/pull/176#issuecomment-30251414)を参照してください。
2470
2471 ## 開発
2472
2473 Puppet ForgeのPuppet Labsモジュールはオープンプロジェクトで、良い状態に保つためには、コミュニティの貢献が必要不可欠です。Puppetが役に立つはずでありながら、私たちがアクセスできないプラットフォームやハードウェア、ソフトウェア、デプロイ構成は無数にあります。私たちの目標は、できる限り簡単に変更に貢献し、みなさまの環境で私たちのモジュールが機能できるようにすることにあります。最高の状態を維持できるようにするために、コントリビュータが従う必要のあるいくつかのガイドラインが存在します。詳細については、[モジュールコントリビューションガイド](https://docs.puppetlabs.com/forge/contributing.html)を参照してください。
2474
2475 このモジュールのバグの報告または調査は、
2476 [http://tickets.puppetlabs.com/browse/MODULES](http://tickets.puppetlabs.com/browse/MODULES)からお願いします。
2477
2478 ## コントリビュータ
2479
2480 コントリビュータのリストは、[https://github.com/puppetlabs/puppetlabs-stdlib/graphs/contributors](https://github.com/puppetlabs/puppetlabs-stdlib/graphs/contributors)で見ることができます。