SVNのマニフェストストレージを使用したPuppet 4の基本的なインストールと設定

良い一日!

本日、Ubuntu Server 16.04上でSVNにマニフェストを保存してPuppet 4を準備します。 この記事では、 Graylog Collector Sidecarを介してGraylog2にログ収集エージェントをインストールおよび構成し、 Filebeatをバックエンドとして使用するためのシンプルなネイティブモジュールの作成例を検討します。 この例は、エレガントなソリューションのふりをするものではありませんが、例とともに重要な側面を説明しています。

Puppet Serverのソースマシンは、VPS Ubuntu 16.04-4Gbメモリ、2 CPUコアです。

行こう:

重要-サーバーと管理対象ノードは、名前で相互にアクセスできる必要があります! DNSを使用しない場合は、/ etc / hostsにホストを登録する必要があります。
サーバー上の例では:

172.16.248.189 ubuntu

メモに:

172.16.248.34 puppet

サーバー上のシステムを更新します。

apt-get update
apt-get upgrade
apt-get install mc #

公式のPuppetリポジトリを追加します。

cd /opt
curl -O https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
sudo dpkg -i puppetlabs-release-pc1-xenial.deb
sudo apt-get update

パッケージをインストールします。

sudo apt-get install puppetserver

Puppet Serverのメモリ割り当てを設定します(デフォルトでは、Puppetは2Gbを使用します):

sudo mcedit /etc/default/puppetserver

JAVA_ARGS="-Xms3g -Xmx3g -XX:MaxPermSize=256m"

サーバーを起動しましょう。

sudo systemctl start puppetserver

すべてが正常であることを確認します。

sudo systemctl status puppetserver

自動実行するサーバーを追加します。

sudo systemctl enable puppetserver

おめでとうございます! これでインストールと基本的なサーバーのセットアップが完了しました!

管理対象ノードへのpuppetエージェントのインストール:

公式のPuppetリポジトリを追加します。

cd /opt
curl -O https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
sudo dpkg -i puppetlabs-release-pc1-xenial.deb
sudo apt-get update

パッケージをインストールします。

sudo apt-get install puppet-agent

自動実行を開始して追加します。

sudo systemctl start puppet
sudo systemctl enable puppet

すべてが順調に進んだ場合、サーバー上でノードからの証明書に署名するリクエストが表示され、サーバー上の証明書のリストが表示されます。

sudo /opt/puppetlabs/bin/puppet cert list --all

hosname ubuntuを使用してノードの証明書に署名します。

sudo /opt/puppetlabs/bin/puppet cert sign ubuntu

結果は次のようになります。

root@puppet:/var/log# sudo /opt/puppetlabs/bin/puppet cert list --all
+ "puppet.my-domain.org" (SHA256) A4:A8:4E:B0:81:7F:A0:84:F3:03:03:F0:DE:81:E8:73:A9:01:7A:90:F6:A2:27:0D:62:18:F9:D9:7B:F0:F0:9F (alt names: "DNS:puppet", "DNS:puppet.my-domain.org")
+ "ubuntu" (SHA256) 79:37:37:3F:D5:5C:C1:D3:FF:8D:BC:14:82:11:CE:9F:A6:4C:1C:90:3C:A6:A8:7D:E0:D8:81:D8:D7:D8:43:05


インストールをテストします-たとえば、デフォルトのパペットマニフェスト、デフォルトのパスを作成します:

sudo nano /etc/puppetlabs/code/environments/production/manifests/site.pp
file {'/tmp/it_works.txt':
ensure => present,
mode => '0644',
content => "It works on ${ipaddress_eth0}!\n",
}

管理対象ノードで、エージェントを「sod」し、サーバーへの構成変更の適用を強制します。

sudo /opt/puppetlabs/bin/puppet agent --test

このマニフェストの結果は、次のノード上のファイル「it_works.txt」の作成になります。
/ tmp /:

cat /tmp/it_works.txt
It works on 172.16.248.189!

おめでとうございます! 管理対象ノードに最初のPuppetマニフェストを適用できました!

次に、デバッグとテストを高速化するために、エージェントがサーバーに接続する間隔を変更します(間隔は秒単位で設定されます)。

nano /etc/puppetlabs/puppet/puppet.conf
runinterval = 180

ここで、デフォルトノードの環境で最初の独自のモジュールを作成し、ノードに適用してみましょう-モジュールディレクトリを準備するサーバーで、Graylog(Graylog Collector Sidecar + Filebeat)のノードからログを組み立てるために必要なパッケージをインストールおよび構成するためのpdoruction(自転車):

mkdir /etc/puppetlabs/code/environments/production/collector_sidecar/modtest
mkdir /etc/puppetlabs/code/environments/production/modules/collector_sidecar/manifests
mkdir /etc/puppetlabs/code/environments/production/modules/collector_sidecar/files
chmod 777 /etc/puppetlabs/code/environments/production/modules/collector_sidecar/files
cd mkdir /etc/puppetlabs/code/environments/production/modules/collector_sidecar/manifests

/ etc / puppetlabs / code / environments / production / modules / collector_sidecar / filesディレクトリで、インストールに必要なパッケージをダウンロードします。
collector-sidecar_0.1.4-1_amd64.deb
filebeat-5.6.4-amd64.deb
そして私たちの場合に必要な設定はファイルです:
collector_sidecar.yml

デフォルトのマニフェストを作成および編集します。

touch init.pp
nano init.pp

class collector_sidecar {
# collector-sidecar /opt puppet
file { '/opt/collector-sidecar_0.1.4-1_amd64.deb':
ensure => present,
mode => '0644',
source => 'puppet:///modules/collector_sidecar/collector-sidecar_0.1.4-1_amd64.deb',
}
# filebeat /opt puppet
file { '/opt/filebeat-5.6.4-amd64.deb':
ensure => present,
mode => '0644',
source => 'puppet:///modules/collector_sidecar/filebeat-5.6.4-amd64.deb',
}
# collector-sidecar
package { 'collector-sidecar':
provider => dpkg,
ensure => installed,
source => '/opt/collector-sidecar_0.1.4-1_amd64.deb',
}
# - collector_sidecar.yml etc/graylog/collector-sidecar/
file { '/etc/graylog/collector-sidecar/collector_sidecar.yml':
mode => '0644',
source => 'puppet:///modules/collector_sidecar/collector_sidecar.yml',
require => Package['collector-sidecar'] #, , - collector-sidecar
}
# filebeat
package { 'filebeat':
provider => dpkg,
ensure => installed,
source => '/opt/filebeat-5.6.4-amd64.deb',
require => Package['collector-sidecar']
}
# graylog-collector-sidecar
exec { 'install_gcs_service':
command => '/usr/bin/graylog-collector-sidecar -service install',
creates => '/etc/systemd/system/collector-sidecar.service',
require => Package['collector-sidecar']
}
# collector-sidecar
service { 'collector-sidecar':
ensure => running,
enable => true,
require => Package['collector-sidecar']
}
# filebeat
service { 'filebeat':
ensure => running,
enable => true,
require => Package['filebeat']
}
}

Puppetの哲学を理解することは重要です。マニフェストは、Puppetをもたらす必要があるシステムの「構成の状態」を記述します。

これで、モジュールをデフォルトのマニフェストに「ハング」させることができます。

nano /etc/puppetlabs/code/environments/production/manifests/site.pp
#
node 'default' {
include 'collector_sidecar'
}

node 'ubuntu' {
include 'collector_sidecar'
}

サーバー上でドライランマニフェストをローカルで実行します-起動はエミュレートされますが、実際のアクションは実行されません。

/opt/puppetlabs/bin/puppet apply --noop /etc/puppetlabs/code/environments/production/manifests/site.pp

Puppetサーバーでログを監視することもデバッグに便利です。


tail -f puppetserver.log

ノードで、puppet-agentはログをsyslogに書き込みます。
tail -f /var/log/syslog

SVNのマニフェストストレージ
Subversionサーバーがあり、そのサーバー上にマニフェストを保存するためのリポジトリを準備します。
リポジトリ作成:

sudo svnadmin create /media/datadrive/svn/puppet

マニフェストをpuppetサーバーからsvnを使用してサーバーにコピーします。

scp -r administrator@puppet.my-domainorg/etc/puppetlabs/code/ /home/administrator/code/

作成したリポジトリにマニフェストをインポートします。

svn import /home/administrator/code/ svn://svn.my-domain.org/puppet -m 'init'

PuppetサーバーのPupppetマニフェストフォルダーでリポジトリをチェックアウトします。
svnクライアントがまだインストールされていない場合:

apt install subversion
svn co svn://svn.my-domain.org/puppet /etc/puppetlabs/code --username=puppet

次に、作業マシンでリポジトリの作業コピーを作成し、マニフェストに変更を加え、コミットを行い、Puppetサーバーを確認します。

svn up /etc/puppetlabs/code/

すべてが問題ない場合-n回ごとに作業コピーのcron更新に追加します。 または、コミット後のフックを実行できます。

Source: https://habr.com/ru/post/J342020/


All Articles