複数のPuppetマスターを使用してOpenSource Puppet 4をデプロイします。 パートI.準備

複数のPuppetマスターを使用したOpenSource Puppet 4のデプロイ。 パートII Puppet Mastersのセットアップ

複数のPuppetマスターを使用したOpenSource Puppet 4のデプロイ。 パートIII。 Puppetを使用したPuppet-dbのセットアップ



まえがき



パペットを使用した私の経験。 この記事を書く前に、スタンドアロン構成でOpen Source Puppetバージョン3を使用し、それを使用して数百のホストを管理しました。 しかし、管理対象ホストの数が1,000を超え、近い将来に数千を超えると脅かされています。 複数のPuppet Masterサーバーとpostgresqlを備えた別のPuppetDBサーバーを備えたオープンソースPuppetバージョン4を展開することにより、負荷分散を展開し、フォールトトレランスを向上させることが決定されました。 また、エンドホスト構成の環境を保存するためにgitサーバーのgitリポジトリを使用します。



Puppet Deployment Habrahabrの記事の概要



まず、habrahabrに関する既存の記事の概要を簡単に説明します。



最新のPuppetサーバーをゼロからセットアップする

「サーバーの最新のPuppetをゼロからセットアップする」という記事の翻訳はgrundicによって行われましたが 、そのオリジナルはGoogleのキャッシュでしか見つかりませんでした。 この記事は、出版物の準備の基礎として私に取られました。 元の記事「サーバーの最新のPuppetのゼロからのセットアップ」で説明されている詳細、およびその翻訳への翻訳者の追加は、すでに少し時代遅れになっています。 これと、さらに微妙な点についての説明を共有したいという欲求が、私自身の記事を書くきっかけになりました。



Puppet 4ベースのLinuxシステムの展開オプション。パートIII:Puppet Server(cfpuppetserver)のインストール

この記事は、著者andvgalがインフラストラクチャ全体の展開について説明するシリーズの一部です。 この記事では、著者は、記事の著者が開発したcfpuppetserverパッケージを使用して、パペットのインストールプロセスを自動化することを提案しています。 非常に興味深いが、初心者の操り人形師にとっては難しい。



負荷がかかっている人形

Badoo社の興味深い記事。Puppet3のメカニズムを明らかにする多数のスキームが含まれています。



初心者のための操り人形または操り人形になる方法

この記事は順調に始まり、Puppetに関する基本的な概念を説明しています。 記事の最後で、著者のAecktannは続編を約束しますが、残念ながら、これは4年間で登場していません。



Puppet、構成管理システム。 2部構成の記事: パートIパートII

著者spanasikは、Puppetに関する基本的な概念を示し、他のコンポーネントなしでスタンドアロンのパペットマスターをインストールする方法についても説明します。



はじめに



Puppetに関する一般情報。 Puppetエージェントは、ノードと呼ばれる管理対象ノードにインストールされます。 特定の時間間隔(デフォルトでは30分)で、PuppetエージェントはPuppetサーバーに接続し、Puppetサーバーがインストールされているノード(ファクト)に関するデータを送信します。 サーバーから管理対象ノードの構成の説明、および構成を構成するために必要なデータとツールを受け取ります。



管理対象ノードの構成は、パペットサーバーにテキストファイルとして保存されます。 そのようなファイルはマニフェストと呼ばれます。 マニフェストは環境内で一緒になります。 各パペット環境には、独自のマニフェストのセットが含まれています。 デフォルトの環境は実稼働と呼ばれます。 テストでは、通常、開発環境を使用します。 各管理対象ノードは、一度に1つの環境にのみ存在できます。



パペットマニフェストを含むテキストファイルを含む環境は通常、gitリポジトリに格納され、gitリポジトリに配置できます。 各環境には、gitリポジトリにブランチがあります。



各パペットサーバーの環境を同期するには、gitリポジトリのpost-receiveフックを使用して起動されるR10kロボットが使用されます。 このロボットの詳細については、作成者のブログをご覧ください。



パペットエージェントによってパペットサーバーに送信されたデータは、サーバー上のテキストファイルとしてローカルに保存することも、PuppetDBデータベースに保存することもできます。 PuppetDBを使用すると、Puppetの高度な機能を使用でき、サードパーティのアプリケーションでも使用できます。



Puppetの基本機能を拡張するために、 Puppet Forge 、GitHub、または別のソースからダウンロードしたり、独自に作成したりできるさまざまなモジュールが使用されます



サーバー名



puppetmaster.example.comはクラスターの名前です。

puppet - master01.example.com -Puppet Masterノード1、 認証局サービスも動作します。

puppet - master02.example.com -Puppetマスターノード2。

したがって、puppet-masterN.example.com-Puppet MasterノードNを続行できます。puppet-master02.example.comに対して行ったすべての設定は、後続のノードに適しています。

puppet - db.example.com -PuppetDBサーバー、postgresqlサーバー。

sgl-git.example.comは、パペットマニフェスト環境を含むgitリポジトリを保存するgitサーバーです。



サーバー上のOSについて



Ubuntu 16.04はすべてのサーバーにインストールされます。



ユーザー



aspetrenko -sudo(すべてのサーバーに存在)を実行する権限を持つ管理者ユーザー。

gitolite3 -git-server gitolite3が機能するユーザー(sgl-gitサーバー上)。

r10k -r10kロボットが動作するユーザー(パペットマスターサーバー上)。



DNSセットアップ



DNSサーバーの構成オプションは、Puppetのドキュメントの対応するセクションで説明されています 。 私の場合、 ラウンドロビンDNSセクションで説明されているアプローチが使用されます。 これは基本的に重要ではありませんが。



キーを使用したSSH認証



aspetrenko、aspetrenko.pub-管理者の秘密鍵と公開鍵。

gitolite3、gitolite3.pub -gitolite3ユーザーのキー。 gitolite3ユーザーがログインして環境の更新を開始できるように、公開キーgitolite3.pubは、各パペットマスターサーバー上のr10kユーザーの認証キー(〜/ ssh / authorized_keys)のリストに配置する必要があります。

r10k、r10k.pub -r10kユーザーのキー。 r10kロボットがgitサーバーにログインし、gitリポジトリから環境を取得してローカルファイルシステムの環境を更新できるように、公開キーr10k.pubをgitolite3管理リポジトリ(gitolite-adminリポジトリのkeydirディレクトリ)に配置する必要があります。 鍵は、ssh-keygenを使用して任意のコンピューターで作成できます。 キーはパスワード保護なしで作成する必要があります。これにより、人間の介入なしに認証を行うことができます。 管理キーを作成し、公開キーをsgl-gitにコピーします。



aspetrenko@aspetrenko-pc:~$ ssh-keygen -t rsa -f ~/.ssh/aspetrenko aspetrenko@aspetrenko-pc:~$ scp ~/.ssh/aspetrenko.pub aspetrenko@sgl-git:/home/aspetrenko/.ssh/
      
      





gitolite3管理キーとして機能します。 puppet-master01サーバーとpuppet-master02サーバーでr10kのユーザーを作成します。



 sudo useradd -m -s /bin/bash r10k
      
      





そして、ユーザーr10kパスワードを設定します。



 sudo passwd r10k
      
      





パスワードを使用すると、インストールプロセス中により便利になります。 次に、パスワード入力をオフにして、キーのみで認証を終了できます。



puppet-master01でr10kユーザーキーを作成し、プライベートキーをpuppet-master02サーバーにコピーします。



 aspetrenko@puppet-master01:~$ sudo su - r10k r10k@puppet-master01:~$ ssh-keygen -t rsa -f ~/.ssh/r10k r10k@puppet-master01:~$ scp /home/r10k/.ssh/r10k r10k@puppet-master02:/home/r10k/.ssh/
      
      





git-server gitolite3のインストール中に、同じ名前gitolite3のユーザーが自動的に作成されます。 gitolite3がpuppet-environmentsリポジトリのpost-receiveフックを使用してR10kロボットを起動できるように、このユーザーの公開鍵をpuppet-master01およびpuppet-master02サーバー上のユーザーr10kの信頼できるキーのリストに追加する必要があります。



キーを使用した自動化の詳細については、 こちらをご覧ください 。 その結果、次の図のようになります。







Gitサーバーをインストールして構成する



gitoliteの詳細については、公式ドキュメントまたはオタク誌を参照してください。



sgl-gitにgitolite3をインストールします



gitとperlをインストールします。



 aspetrenko@sgl-git:~$ sudo apt install git perl
      
      





Ubuntuリポジトリからgitoliteインストールを実行します。



 aspetrenko@sgl-git:~$ sudo apt install gitolite3
      
      





インストール中に、aspetrenko.pub管理者公開鍵への絶対パスを示します。 間違えた場合、管理者キーへのパスはgitolite3システムユーザーから次のように指定できます。



 aspetrenko@sgl-git:~$ sudo su - gitolite3 gitolite3@sgl-git:~$ $HOME/bin/gitolite setup -pk /home/aspetrenko/.ssh/aspetrenko.pub
      
      





キーは、admin.pubという名前でkeydirディレクトリのgitolite-admin管理リポジトリに保存されます。



Gitolite3は、リポジトリをホームディレクトリ/ var / lib / gitolite3 / repositories /に格納します。 リポジトリを私のような別の場所に保存する場合は、次のように転送できます。

/etc/gitolite3/gitolite.rcファイルの「%RC =(」セクションに追加します



 # Custom path for repos GL_REPO_BASE => "/media/data/repositories",
      
      





そして、リポジトリを新しい場所に移動します。



 sudo mv /var/lib/gitolite3/repositories /media/data/
      
      





gitolite3を構成する



/ var / lib / gitolite3 / repositoriesディレクトリのgitリポジトリを直接編集することはできません。 サーバー上のリポジトリを操作するaspetrenko-pcコンピューターでは、〜/ .ssh / configファイルでsgl-gitのssh認証設定を指定します。



 host sgl-git.example.com HostName sgl-git.example.com IdentityFile ~/.ssh/aspetrenko User gitolite3
      
      





aspetrenkoは管理者の秘密鍵です。 管理リポジトリをホームディレクトリに複製します。



 aspetrenko@aspetrenko-pc:~$ mkdir sgl-git aspetrenko@aspetrenko-pc:~$ cd sgl-git aspetrenko@aspetrenko-pc:~/sgl-git$ git clone gitolite3@sgl-git.example.com:gitolite-admin
      
      





サーバーがパスワードを要求する場合、sshキーを使用したアクセスが正しく構成されていません。 その結果、以下が得られます。



 aspetrenko@aspetrenko-pc:~/sgl-git/gitolite-admin$ tree . ├── conf │  └── gitolite.conf └── keydir └── admin.pub 2 directories, 2 files
      
      





リポジトリのアクセス設定は、ファイルgitolite-admin / conf / gitolite.confにあります



 aspetrenko@aspetrenko-pc:~/sgl-git/gitolite-admin$ cat conf/gitolite.conf repo gitolite-admin RW+ = admin repo testing RW+ = @all
      
      





adminは、gitolite3を構成するときにキーが指定されたユーザーです。



 aspetrenko@aspetrenko-pc:~/sgl-git$ cat gitolite-admin/keydir/admin.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIFC/2v1S4WvvITHAXCuVle7dLZz0zL7z4dAWXvmMcqCLepfGI1suDBby6PW04tVwHvniAW5B/5HbZ2Fr7zCoeMrhGE5Z76/DBfidhO15CZbAMPOcs3X7aP4aZFK2GfiXCt7/yunP6f3zp3i6KbsZhcSeeUmmkeQFwccJsstVJbj9ciWHrLN/UDHwT5OTBVFKBpRZGM5pT6xzvWaPNN4IRlk5AN4ClrhWf13 aspetrenko@aspetrenko-pc
      
      





ユーザーr10kの公開キーをgitolite3管理リポジトリに配置します。



 r10k@puppet-master01:~$ scp /home/r10k/.ssh/r10k.pub aspetrenko@aspetrenko-pc:/home/aspetrenko/sgl-git/gitolite-admin/keydir
      
      





r10k.pubキーをgitに追加します。



 aspetrenko@aspetrenko-pc:~/sgl-git/gitolite-admin$ git add keydir/r10k.pub
      
      





puppet環境を保存するためのリポジトリを作成するには、aspetrenko-pcで、gitolite-admin / conf / gitolite.confファイルに次の行を追加します。



 repo puppet-environments RW+ = admin R = r10k
      
      





変更をgitにコミットします。



 aspetrenko@aspetrenko-pc:~/sgl-git/gitolite-admin$ git commit -a -m "Add puppet-environments repo" [master 585326d] Add puppet-environments repo 1 file changed, 3 insertions(+)
      
      





そして、すべてをsgl-gitに送信します。



 aspetrenko@aspetrenko-pc:~/sgl-git/gitolite-admin$ git push Counting objects: 7, done. Delta compression using up to 2 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (4/4), 411 bytes | 0 bytes/s, done. Total 4 (delta 0), reused 0 (delta 0) remote: Initialized empty Git repository in /media/data/repositories/puppet-environments.git/ To gitolite3@sgl-git:gitolite-admin 7946dea..585326d master -> master
      
      





フックを使用して、Gitolite3はsgl-gitに新しい空のリポジトリを作成します。



 aspetrenko@sgl-git:~$ sudo ls /media/data/repositories/puppet-environments.git branches config gl-conf HEAD hooks info objects refs
      
      





ユーザーgitolite3のキーを作成し、各サーバーpuppet-master01およびpuppet-master02上のユーザーr10kの信頼できるキーのリストに公開キーを追加することを忘れないでください。



 aspetrenko@sgl-git:~$ sudo su - gitolite3 gitolite3@sgl-git:~$ ssh-keygen -t rsa -f ~/.ssh/gitolite3 gitolite3@sgl-git:~$ ssh-copy-id -i ~/.ssh/gitolite3.pub r10k@puppet-master01 gitolite3@sgl-git:~$ ssh-copy-id -i ~/.ssh/gitolite3.pub r10k@puppet-master02
      
      





gitolite3秘密鍵は、/ var / lib / gitolite3 / .sshディレクトリーに表示されるはずです。



複数のPuppetマスターを使用してOpenSource Puppet 4をデプロイします。 パートII Puppet Mastersのセットアップ



All Articles