Puppet 4.4 リリースノート ピックアップ

Puppet4.4.0(2016/3/16リリース)の、リリースノートで個人的に気になる変更をピックアップしてみました。動作確認とかはしてないので、間違っている部分があればご指摘ください。

**4.4では、機能追加が多めです。**

この投稿時点で、すでに4.6が出ています。
過去バージョンでの変更のフォロー用です。

# Puppet 4.4.0

Released March 16, 2016.

## New features

### Iterable and Iterator Types added

#### PUP-5730

指定の間隔nで繰り返す、step関数が追加されました。

> PUP-5730: The iterative function an_iterable.step(n) has been added. It yields every nth successor from its input iterable when chained into another function. (後略...)

配列での利用例が、Function Referenceの方に記載されています。
data配列の要素を先頭から、３個間隔で処理する例です。

https://docs.puppet.com/puppet/latest/reference/function.html#step

```puppet
# For the array $data, call a block with the first element and then with each 3rd successor element
$data = [1,2,3,4,5,6,7,8]
$data.step(3) |$item| {
 notice($item)
}
# Puppet notices the values '1', '4', '7'.
```

### Arrays from Iterator values with splat

#### PUP-5836

ループ処理に使う配列が簡単に用意できる、*(splat operator)が追加されました。

> PUP-5836: It is possible to produce an Array from Iterator values by using the splat operator. As an example the expression:

```puppet
*[1,2,3].reverse_each 
# produces [3,2,1] 
```

## Misc new features and behaviors

#### PUP-5729

逆順に繰り返す、reverse_each関数が追加されました。

> PUP-5729: The function reverse_each has been added. It works similar to the each function but iterates over elements in reverser order. (後略...)

配列での利用例が、Function Referenceの方に記載されています。
data配列の要素を、後ろから順に処理する例です。

https://docs.puppet.com/puppet/latest/reference/function.html#reverseeach

```puppet
# Puppet will log a notice for each of the three items
# in $data in reverse order.
$data = [1,2,3]
$data.reverse_each |$item| { notice($item) }
```

逆順なので、3,2,1です。

#### PUP-1376

定義の一部をスキップするskip_tags設定が追加されました。

> PUP-1376: This adds a new skip_tags setting, as a compliment to the tags setting. This new setting allows skipping resources based on tags, and is applied before the tags setting is applied.

使い方は、以前試した投稿をご参考に。
[Puppetで定義の一部を無効化するskip_tags](http://qiita.com/kijibato/items/ba8018e5db2a9d6f501f)

#### PUP-5608

非推奨ながらRuby 2.3をサポート。

> PUP-5608: This adds initial Ruby 2.3 support. However, note that using Puppet with 2.3.0 is not yet recommended.

#### PUP-1072

fileリソースで、source属性にURLを設定できるようになりました。HTTPやHTTPS経由で直接ファイル取得できます。

> PUP-1072: This adds support for ‘http’ and ‘https’ URLS as source attributes to the file resource.

使い方は、以前試した投稿をご参考に。
[Puppet4.xではじめるサーバ設定自動化 7（ファイル変更）](http://qiita.com/kijibato/items/a21ac405cf48e26adc97#%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92web%E3%81%8B%E3%82%89%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B)

#### PUP-4748

（マスター側にないファイルを削除する）purge属性で変更があったときに、依存関係を定義しているリソースにイベントが通知されるようになりました。

> PUP-4748: It’s now possible to purge a resource that has downstream dependents, such as notifying a service to restart. This reinstates behavior that was possible prior to PUP-1963.

## Bug Fixes

環境によっては、影響ありそうなバグがいくつか修正されているようです。
細かいので省略。

# Puppet 4.4.1

Released March 24, 2016.

## Enhancements

#### PUP-5877

Hieraのファイルに記載する値に、.(ドット)が使えるようになりました。（どんな場面で使うかは不明。Facter?）

> PUP-5877: Hiera data files that provide values at the environment and module levels can now provide values from variables with a . in their names, provided that name is properly quoted. For example, this value from production/data/common.yaml is now legal:

```puppet
    env_production_hardware_platform: "%{'hardware.platform'}"
```

その他、バグ修正は省略。

# Puppet 4.4.2

Released April 26, 2016.

セキュリティ関連の修正(CVE-2016-2785)とバグ修正

# 参考

Puppet 4.4 Release Notes
https://docs.puppet.com/puppet/4.4/reference/release_notes.html