DevOpsシリーズツールのPuppetインストールと基礎構成
9338 ワード
Puppetの概要:
PuppetはRuby言語(旧バージョン、4以降のサーバ側はClojure言語)に基づいて開発され、Unix(OS Xを含む)、Linux、Microsoft Windowsプラットフォームを管理できる構成管理ツールである.同時に研究開発及び運営メンテナンス人員に向けて、DevOpsを実現する重要なツールの一つである.
適用シーン:
統一配置管理ソフトウェア統一配置システム最適化パラメータ定期検出サービスが機械ハードウェア環境に基づいて自動的に対応するホスト上のソフトウェアに合理的な属性を配置するかどうかを検査する
Puppetの操作モデル:
配置レイヤー
Puppetは通常C/Sモードで動作し、サーバ側をPuppet master、クライアント側をAgent、クライアントホストをNodeと呼ぶ.Agentは、標準のSSL暗号化認証によりMasterに接続し、自機に必要な構成情報を取得する.Agentが構成情報を取得していない場合、または構成状態に達している場合、Puppetはシステムを変更しません.要求されたときにのみシステムを変更します.これはPuppetの重要な特徴であり、べき乗等性(Idempotency)と呼ばれ、この変更プロセスを一次構成実行(Configuration run)と呼びます.Agentは通常、デーモン・プロセスで実行され、デフォルトでは30分ごとにMasterと対話して構成項目が変化したかどうかを確認します.この間隔は、自分のニーズに応じて柔軟に調整できます.Agentはcronで実行したり、手動でトリガーしたりすることもできます.
言語とリソース抽象層の構成
多くのスクリプト言語(Shell Perlなど)は、コマンドまたはプロシージャ式、すなわち「どのように」所望の状態に達するか、Puppet言語は記述式であり、最終的な状態が何であるかを記述するだけで、どのように達成するかに関心を持たない.例えばvimパッケージをインストールする場合、手動でインストールするには以下の手順が必要です:1.パッケージをインストールするホスト2に接続する.vimがインストールされているかどうかを確認します.インストールされていない場合、ホストのオペレーティングシステムに従って適切なコマンドインストールを選択する必要があります.例えば、CentOSはyumコマンドを使用し、Ubuntuはapt-getコマンド4を使用します.インストールが完了し、返された結果に基づいてインストールが成功したかどうかを確認します.
事物層.
事物層はPuppetの作業エンジンであり、一つのPuppet事物は1台のAgentホストを配置する完全な過程を含み、以下のステップを含む.構成 を解析およびコンパイルするは、コンパイル後の構成をAgent上の に送信する. Agentにコンパイル後の構成を適用する 実行結果をMaster に報告する
ワークフロー AgentアクセスMaster Agent証明書に対する認証署名を含むアクセス信頼関係を確立し、AgentがMasterリソース にアクセスできるようにする信頼関係が確立された後、MasterはAgentのFacterを呼び出し、オペレーティングシステム、ホスト名、IPアドレス、CPUなどのAgentホストのいくつかのマシン変数を検出する.Agentはこれらの情報をSSL暗号化によりMasterに送信し,Masterはこれらの情報を変数として取得して使用する. Masterは、Agentの要求を受信し、それらをホストのmanifestsまたはENC(外部ノード分類器)に送信し、構成情報照会 を行う.
AgentのHOSTNAMEに従って対応するノードにマッチングし、構文チェックを行い、対応するCatalog を生成する.エージェントは、Catalogを受信と、ネイティブアプリケーションにおいて、Catalogの情報に基づいてFileファイルがMaster側から取得するか否かを判断し、ある場合はMaster Fileserverにファイル取得要求 を開始する.実行後の結果をMaster に報告する.トランザクション全体のインストールを完了する前に考慮する必要がある点:バージョン選択:Puppetの最良のバージョンは通常最新のリリース実行モードです:サーバ側-クライアントモードと独立実行モードDNS:AgentはMasterに接続するたびにドメイン名ファイアウォールを使用します:Puppet masterは8140ポートで傍受し、ファイアウォールを開いたら8140ポートを解放する必要があります.Iptablesの構成は以下の通りである:iptables-A INPUT-p tcp-m state--state NEW--dport 8140-j ACCEPTiptables-A INPUT-p tcp-m state--state NEW-s 172.16.0.0/16--sport 8140-j ACCEPTNTPクロック同期Puppetmaster:Windowsホスト上でハイブリッドバージョンの配置を実行できない:サービス側のバージョンはクライアントより高くなければならない.x以上は3.x及び以下のハードウェア要求:2~4コアCPU、4 GB以上のメモリ、約1000個のノードを管理できる インストール(公式サイトより)
Yum-based systemsTo enable the Puppet 5 Platform repository:1 Choose the package based on your operating system and version. The packages are located in the puppet5 directory of the yum.puppet.com repository and named using the following convention: -release--.noarch.rpm For instance, the package for Puppet 5 Platform on Red Hat Enterprise Linux 7 (RHEL 7) is puppet5-release-el-7.noarch.rpm.2 Use the rpm tool as root with the upgrade (-U) flag, and optionally the verbose (-v), and hash (-h) flags:
Note: For recent versions of Puppet, we no longer ship Puppet master components for RHEL 5. However, we continue to ship new versions of the puppet-agent package for RHEL 5 agents.
Apt-based systemsTo enable the Puppet 5 Platform repository:1 Choose the package based on your operating system and version. The packages are located in the apt.puppet.com repository and named using the convention -release-.debFor instance, the release package for Puppet Platform on Debian 7 “Wheezy” is puppet5-release-wheezy.deb. For Ubuntu releases, the code name is the adjective, not the animal.2 Download the release package and install it as root using the dpkg tool and the install flag (-i):wget https://apt.puppetlabs.com/puppet5-release-wheezy.deb3 sudo dpkg -i puppet5-release-wheezy.deb4 Run apt-get update after installing the release package to update the apt package lists.
Puppet Masterのインストール
yumがMasterをインストールすると、Agentパッケージもインストールされます.x以上のインストールパスは/opt/puppetlabs/ディレクトリ、プロファイルパスは/etc/puppetlabs/ディレクトリ
Puppet Agentのインストール
プロファイルの変更
Puppet5.xのプロファイルパスは/etc/puppetlabs/puppet/ディレクトリ下puppetである.confプロファイル概要:[main]Puppetグローバル構成[master]Puppet用Master構成[agent]Puppet用Agent構成
サービスの開始
Masterホストのメモリ構成が2 GB未満の場合、Java初期メモリを変更する必要があります
バッチ証明書
agent上でpuppet agent--test検証証明書の認証結果を実行し、エラーが発生した場合は、時間が同期しているかどうかを確認します.
構成アイテムの作成
PuppetはRuby言語(旧バージョン、4以降のサーバ側はClojure言語)に基づいて開発され、Unix(OS Xを含む)、Linux、Microsoft Windowsプラットフォームを管理できる構成管理ツールである.同時に研究開発及び運営メンテナンス人員に向けて、DevOpsを実現する重要なツールの一つである.
適用シーン:
統一配置管理ソフトウェア統一配置システム最適化パラメータ定期検出サービスが機械ハードウェア環境に基づいて自動的に対応するホスト上のソフトウェアに合理的な属性を配置するかどうかを検査する
Puppetの操作モデル:
配置レイヤー
Puppetは通常C/Sモードで動作し、サーバ側をPuppet master、クライアント側をAgent、クライアントホストをNodeと呼ぶ.Agentは、標準のSSL暗号化認証によりMasterに接続し、自機に必要な構成情報を取得する.Agentが構成情報を取得していない場合、または構成状態に達している場合、Puppetはシステムを変更しません.要求されたときにのみシステムを変更します.これはPuppetの重要な特徴であり、べき乗等性(Idempotency)と呼ばれ、この変更プロセスを一次構成実行(Configuration run)と呼びます.Agentは通常、デーモン・プロセスで実行され、デフォルトでは30分ごとにMasterと対話して構成項目が変化したかどうかを確認します.この間隔は、自分のニーズに応じて柔軟に調整できます.Agentはcronで実行したり、手動でトリガーしたりすることもできます.
言語とリソース抽象層の構成
多くのスクリプト言語(Shell Perlなど)は、コマンドまたはプロシージャ式、すなわち「どのように」所望の状態に達するか、Puppet言語は記述式であり、最終的な状態が何であるかを記述するだけで、どのように達成するかに関心を持たない.例えばvimパッケージをインストールする場合、手動でインストールするには以下の手順が必要です:1.パッケージをインストールするホスト2に接続する.vimがインストールされているかどうかを確認します.インストールされていない場合、ホストのオペレーティングシステムに従って適切なコマンドインストールを選択する必要があります.例えば、CentOSはyumコマンドを使用し、Ubuntuはapt-getコマンド4を使用します.インストールが完了し、返された結果に基づいてインストールが成功したかどうかを確認します.
Puppet vim, ,
package { ‘vim’:
ensure => present,
}
事物層.
事物層はPuppetの作業エンジンであり、一つのPuppet事物は1台のAgentホストを配置する完全な過程を含み、以下のステップを含む.
ワークフロー
Yum-based systemsTo enable the Puppet 5 Platform repository:1 Choose the package based on your operating system and version. The packages are located in the puppet5 directory of the yum.puppet.com repository and named using the following convention: -release--.noarch.rpm For instance, the package for Puppet 5 Platform on Red Hat Enterprise Linux 7 (RHEL 7) is puppet5-release-el-7.noarch.rpm.2 Use the rpm tool as root with the upgrade (-U) flag, and optionally the verbose (-v), and hash (-h) flags:
Enterprise Linux 7
sudo rpm -Uvh https://yum.puppet.com/puppet5/puppet5-release-el-7.noarch.rpm
Enterprise Linux 6
sudo rpm -Uvh https://yum.puppet.com/puppet5/puppet5-release-el-6.noarch.rpm
Enterprise Linux 5
wget https://yum.puppet.com/puppet5/puppet5-release-el-5.noarch.rpm
sudo rpm -Uvh puppet5-release-el-5.noarch.rpm
Note: For recent versions of Puppet, we no longer ship Puppet master components for RHEL 5. However, we continue to ship new versions of the puppet-agent package for RHEL 5 agents.
Fedora 26
sudo rpm -Uvh https://yum.puppet.com/puppet5/puppet5-release-fedora-26.noarch.rpm
Fedora 25
sudo rpm -Uvh https://yum.puppet.com/puppet5/puppet5-release-fedora-25.noarch.rpm
SuSE Enterprise Linux 12
sudo rpm -Uvh https://yum.puppet.com/puppet5/puppet5-release-sles-12.noarch.rpm
SuSE Enterprise Linux 11
sudo rpm -Uvh https://yum.puppet.com/puppet5/puppet5-release-sles-11.noarch.rpm
Apt-based systemsTo enable the Puppet 5 Platform repository:1 Choose the package based on your operating system and version. The packages are located in the apt.puppet.com repository and named using the convention -release-.debFor instance, the release package for Puppet Platform on Debian 7 “Wheezy” is puppet5-release-wheezy.deb. For Ubuntu releases, the code name is the adjective, not the animal.2 Download the release package and install it as root using the dpkg tool and the install flag (-i):wget https://apt.puppetlabs.com/puppet5-release-wheezy.deb3 sudo dpkg -i puppet5-release-wheezy.deb4 Run apt-get update after installing the release package to update the apt package lists.
Ubuntu 16.04 Xenial Xerus
wget https://apt.puppetlabs.com/puppet5-release-xenial.deb
sudo dpkg -i puppet5-release-xenial.deb
sudo apt update
Ubuntu 14.04 Trusty Tahr
wget https://apt.puppetlabs.com/puppet5-release-trusty.deb
sudo dpkg -i puppet5-release-trusty.deb
sudo apt-get update
Debian 9 Stretch
wget https://apt.puppetlabs.com/puppet5-release-stretch.deb
sudo dpkg -i puppet5-release-stretch.deb
sudo apt-get update
Debian 8 Jessie
wget https://apt.puppetlabs.com/puppet5-release-jessie.deb
sudo dpkg -i puppet5-release-jessie.deb
sudo apt-get update
Debian 7 Wheezy
wget https://apt.puppetlabs.com/puppet5-release-wheezy.deb
sudo dpkg -i puppet5-release-wheezy.deb
sudo apt-get update
[root@master1 yum.repos.d]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@master1 yum.repos.d]# sudo rpm -Uvh https://yum.puppet.com/puppet5/puppet5-release-el-7.noarch.rpm
[root@master1 yum.repos.d]# yum list |grep puppet
puppet5-release.noarch 5.0.0-1.el7 installed
bolt.x86_64 0.17.2-1.el7 puppet5
pdk.x86_64 1.4.1.1-1.el7 puppet5
puppet-agent.x86_64 5.4.0-1.el7 puppet5
puppet-client-tools.x86_64 1.2.2-1.el7 puppet5
puppet-release.noarch 1.0.0-1.el7 puppet5
puppetdb.noarch 5.2.0-1.el7 puppet5
puppetdb-termini.noarch 5.2.0-1.el7 puppet5
puppetserver.noarch 5.2.0-1.el7 puppet5
razor-server.noarch 1.7.1-1.el7 puppet5
Puppet Masterのインストール
[root@master1 yum.repos.d]# sudo yum install -y puppetserver
[root@master1 puppetlabs]# pwd
/opt/puppetlabs
[root@master1 puppetlabs]# bin/puppet --version
5.4.0
[root@master1 puppetlabs]# server/bin/puppetserver --version
puppetserver version: 5.2.0
yumがMasterをインストールすると、Agentパッケージもインストールされます.x以上のインストールパスは/opt/puppetlabs/ディレクトリ、プロファイルパスは/etc/puppetlabs/ディレクトリ
Puppet Agentのインストール
[root@master1 yum.repos.d]# sudo yum install -y puppet-agent
プロファイルの変更
Puppet5.xのプロファイルパスは/etc/puppetlabs/puppet/ディレクトリ下puppetである.confプロファイル概要:[main]Puppetグローバル構成[master]Puppet用Master構成[agent]Puppet用Agent構成
[main]
server = master1.tongwen.life # Puppet
autoflush = false #
logdir = /var/log/puppet #
rundir = /var/run/puppet # pid
[master]
reportdir = /var/lib/puppet/reports #
autosign = true #
autosign = /etc/puppet/autosign.conf
bindaddress = 0.0.0.0 #puppetserver
masterport = 8140 #puppetserver
evaltrace = true # true,
[agent]
certname = www1.tongwen.life #
daemonize = true # ,true
allow_duplicate_certs = true # , , 5
report = true #
reports = store, http #
report_server = master1.tongwen.life #store
report_port = 8140
reporturl = http://localhost:3000/reports/upload
runinterval = 20m # , 30m
splay = true # ,0
splaylimit = 10m #
configtimeout = 2m #
color = ansi #
ignorecache = true #
サービスの開始
Masterホストのメモリ構成が2 GB未満の場合、Java初期メモリを変更する必要があります
vi /etc/sysconfig/puppetserver
JAVA_ARGS="-Xms2g -Xmx2g
systemctl start puppetserver # server
systemctl start puppet # agent
バッチ証明書
[root@master1 puppetlabs]# puppet cert list
"node1.tongwen.life" (SHA256) E9:62:D5:7A:AD:1F:1D:DD:8F:0F:36:16:50:0C:
[root@master1 puppetlabs]# puppet cert sign node1.tongwen.life
Signing Certificate Request for:
"node1.tongwen.life" (SHA256) E9:62:D5:7A:AD:1F:1D:DD:8F:0F:36:16:50:0C:11:D6:02:39:7B:CB:8C:87:C9:25:E0:F7:A2:D7:D9:55:3B:37
Notice: Signed certificate request for node1.tongwen.life
Notice: Removing file Puppet::SSL::CertificateRequest node1.tongwen.life at '/etc/puppetlabs/puppet/ssl/ca/requests/node1.tongwen.life.pem'
[root@master1 puppetlabs]# puppet cert sign --all #
agent上でpuppet agent--test検証証明書の認証結果を実行し、エラーが発生した場合は、時間が同期しているかどうかを確認します.
[root@master1 puppetlabs]# ntpdate cn.ntp.org.cn
構成アイテムの作成
[root@master1 manifests]# pwd
/etc/puppetlabs/code/environments/production/manifests
vi site.pp
node 'node1.tongwen.life' {
package { 'vim':
ensure => present,
}
}