CentOS6にpuppet2.6をインストール

## 参考

* [About Puppet Collections and packages — Documentation — Puppet](https://docs.puppet.com/puppet/latest/puppet_collections.html#puppet-collection-contents)

```bash:
centos7の場合、puppet2系は提供されていない。あとruby2.0が入る

https://yum.puppetlabs.com/el/7/products/x86_64/puppetlabs-release-7-12.noarch.rpm
```

## インストール

* 最新はpuppet3系だが、puppet2系と互換性がない
* puppet2.6とpuppet2.7でもうまく行かなかったため今回は2.6系最新の2.6.18をインストール。

```bash:puppetインストール
rpm -ivh https://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-12.noarch.rpm

#yum install puppet-server-2.7.26
yum install puppet-server-2.6.18
```

```rb:依存関係
=================================================================================================================================
 パッケージ                      アーキテクチャ        バージョン                       リポジトリー                        容量
=================================================================================================================================
インストールしています:
 puppet-server                   noarch                2.6.18-1.el6                     puppetlabs-products                 22 k
依存性関連でのインストールをします。:
 augeas-libs                     x86_64                1.0.0-10.el6                     base                               314 k
 compat-readline5                x86_64                5.2-17.1.el6                     base                               130 k
 dmidecode                       x86_64                1:2.12-7.el6                     base                                74 k
 facter                          x86_64                1:2.4.6-1.el6                    puppetlabs-products                 99 k
 libselinux-ruby                 x86_64                2.0.94-7.el6                     base                               100 k
 pciutils                        x86_64                3.1.10-4.el6                     base                                85 k
 pciutils-libs                   x86_64                3.1.10-4.el6                     base                                34 k
 puppet                          noarch                2.6.18-1.el6                     puppetlabs-products                816 k
 ruby                            x86_64                1.8.7.374-4.el6_6                base                               538 k
 ruby-augeas                     x86_64                0.4.1-3.el6                      puppetlabs-deps                     21 k
 ruby-libs                       x86_64                1.8.7.374-4.el6_6                base                               1.7 M
 ruby-shadow                     x86_64                1:2.2.0-2.el6                    puppetlabs-deps                     13 k
 virt-what                       x86_64                1.11-1.2.el6                     base                                24 k

トランザクションの要約
=================================================================================================================================
インストール        14 パッケージ

総ダウンロード容量: 3.9 M
インストール済み容量: 10 M
これでいいですか? [y/N]
```


## 設定

```bash:
# server
touch /etc/puppet/manifests/site.pp 
service puppetmaster start

# client
sed -i -e "s/#PUPPET_SERVER=puppet/PUPPET_SERVER=${HOSTNAME}/" /etc/sysconfig/puppet
service puppet start
puppet agent --server ${HOSTNAME} --test --noop
```

```bash:sign
# server
puppet cert --list --all
# 自分自身であればすでにsignされているので飛ばす
#puppet cert sign ${HOSTNAME}

# 念のため、certの削除方法
#puppet cert clean ${HOSTNAME}

# /etc/puppet/を2系のものに差し替えた時など、sslがおかしくなった場合は
#mv /var/lib/puppet/ssl /var/lib/puppet/ssl.bak
#service puppet restart
#service puppetmaster restart
```

## 動作例

*  例として「testgroup」という名前で GID「2000」のグループを作成

```puppet:/etc/puppet/manifests/site.pp
group { 'testgroup':
    ensure => present,
    gid    => 2000,
}
```

```bash:
# dry-run
puppet agent --server ${HOSTNAME} --test --noop --verbose
# 実行
puppet agent --server ${HOSTNAME} --test --verbose
```


## エラー例

```
$ puppet agent --server ${HOSTNAME} --test --noop --verbose
notice: Run of Puppet configuration client already in progress; skipping
```

ロックファイルが残っているのが原因との情報もあったが、
該当のロックファイルを見つけることができなかった。
1分後くらいに再度実行すると実行できた。