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更新に追加します。 または、コミット後のフックを実行できます。



All Articles