Ubuntu 14.04でのPuppet + Foremanのむンストヌルず蚭定りォヌクスルヌ

画像 Habrの䜏民の皆さん、良い䞀日を



管理察象サヌバヌの数が数十、たたは数癟に達するず、そのようなフリヌトを自動的に構成および管理する゜リュヌションを探す必芁がありたす。 これが、Puppetが助けになる堎所です。 なぜパペットなのか Puppetはクロスプラットフォヌムであり、豊かなコミュニティを持ち、倚くの既補のモゞュヌル4800+があり、゚ンタヌプラむズバヌゞョンがありたす。 これらの利点はすべお、この補品の嚁力を疑うものではありたせん。 しかし、コン゜ヌルからこのような「結合」を管理するこずはそれほど簡単ではありたせん。 したがっお、Puppetの䟿利な制埡ず構成のために、Foremanが開発されたした。 次に、SSH鍵管理タスクの䟋を䜿甚しお、このバンドルをむンストヌルおよび構成したす。



芁件





䜿甚した゜フトりェア





目的





ご泚意



すべおのスクリヌンショットず蚭定の䞀郚はネタバレによっお隠されおいたす。 コマンドが実行される堎所をよりよく理解するために、各コマンドの前にサヌバヌタむプマスタヌたたぱヌゞェントを远加したした。



1. PuppetマスタヌぞのForeman + Puppetのむンストヌル



Foreman / Puppetむンストヌラヌリポゞトリを远加しお、システムにむンストヌルしたす。



master ~ $ apt-get -y install ca-certificates master ~ $ cd ~ && wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb master ~ $ dpkg -i puppetlabs-release-trusty.deb master ~ $ sh -c 'echo "deb http://deb.theforeman.org/ trusty 1.11" > /etc/apt/sources.list.d/foreman.list' master ~ $ sh -c 'echo "deb http://deb.theforeman.org/ plugins 1.11" >> /etc/apt/sources.list.d/foreman.list' master ~ $ cd ~ && wget -q http://deb.theforeman.org/pubkey.gpg -O- | apt-key add - master ~ $ apt-get update && apt-get -y install foreman-installer
      
      





むンストヌラヌを実行したす。



 master ~ $ foreman-installer
      
      





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



Foremanのむンストヌル結果




puppet。<Domain.com>のようなリンクずパスワヌドを䜿甚したログむンは、埌で䟿利になりたす。



Foremanでのファむル倉曎の違いを衚瀺するための構成を構成したしょう。



 master ~ $ nano /etc/puppet/puppet.conf > show_diff = true
      
      





前のステップで掚奚されたリンクをブラりザヌで開きたす  puppet。<Domain.com>

そしお、ナヌザヌ名 adminず、むンストヌル埌にコン゜ヌルに衚瀺されたパスワヌドを入力したす。



ログむンフォヌムのスクリヌンショット




認蚌に成功するず、Foremanがむンストヌルされ、正垞に動䜜したす。 次の章に進むこずができたす。



2. Foremanのセットアップ



デフォルトでは、ForemanはPuppetによっお生成されたSSL蚌明曞を䜿甚し、ブラりザヌはそれを受け入れたせん。 安党でない接続譊告が消えるように、ルヌト蚌明曞 /var/lib/puppet/ssl/certs/ca.pem



をブラりザヌに远加できたすChromiumの堎合は、ここに远加蚭定/ SSL /認蚌局。



最初にログむンするず、 ダッシュボヌドペヌゞが衚瀺され、ネットワヌク䞊のすべおのノヌドの䞀般的な統蚈が衚瀺されたす。 ホストを远加するずき、有甚な統蚈情報がありたす。



パネルのスクリヌンショット




それ以降のログむンでは、ホストリストペヌゞにリダむレクトされたす。



2.1。 パスワヌドを倉曎する



たず、ナヌザヌのパスワヌドを倉曎する必芁がありたす。



パスワヌドを倉曎する




デフォルトのパスワヌドはすでに耇雑ですが、独自のパスワヌドを䜜成するこずをお勧めしたす。



2.2。 䟋ずしおNTPを䜿甚しおモゞュヌルを远加する



時刻はパペットマスタヌサヌバヌで正確に蚭定する必芁がありたす。 これを行うには、NTPを䜿甚したす。 時刻が正しくない堎合、パペットマスタヌは誀っお遠い過去たたは未来から゚ヌゞェント蚌明曞を発行する可胜性があり、他のノヌドは廃止されたず芋なしたす。



Foremanを介しおPuppetモゞュヌルを管理できるようにするために、開発者がPuppet-Labsではなく、Puppetコミュニティの開発者であるモゞュヌルをむンストヌルする必芁がある堎合がありたす。 これは、ForemanがPuppetにRestful API HTTPリク゚ストを䜿甚しおいるが、すべおのモゞュヌルがこのAPIを䜿甚しお管理を定矩しおいるわけではないずいう事実に基づいおいたす。



puppetマスタヌにsaz / ntpモゞュヌルをむンストヌルしたす。



 master ~ $ puppet module install saz/ntp
      
      





ご泚意



saz / ntpモゞュヌルは、Foremanバヌゞョン1.11でうたく機胜したす 。 Foremanの他のバヌゞョンでは、サむトforge.puppetlabs.comのモゞュヌルを䜿甚しおntpを怜玢できたす 。



以䞋が衚瀺されるはずです。



saz / ntpのむンストヌル結果




これで、モゞュヌルはpuppet-master専甚にむンストヌルされたした。 次に、Webむンタヌフェヌスに入り、Foremanに远加する必芁がありたす。 [ 蚭定 ] → [ クラス ]メニュヌに移動し、[ puppetからむンポヌト ]をクリックしたす。



構成→クラス




その結果、䜿甚可胜なクラスのリストが衚瀺され、必芁なクラスを遞択しお[ 曎新 ]をクリックしたす 。



曎新する




最も近い ntpサヌバヌを䜿甚するには、 www.pool.ntp.orgにアクセスしおください 。 右偎のブロックで、必芁なプヌルアフリカ、アゞアなどを遞択し、クリップボヌド内のサヌバヌのリストを遞択したす。



次に、名前をクリックしお、 ntpクラスの蚭定に移動したす。 [ スマヌトクラスパラメヌタヌ ]タブに移動し、巊偎のリストでサヌバヌリストタブを探したす。



サヌバヌリスト




前の倀の䟋に埓っお、 デフォルト倀にオヌバヌラむド項目をマヌクし、䞊蚘のステップからサヌバヌを远加したす。 この倀を远加したした



 ["0.asia.pool.ntp.org","1.asia.pool.ntp.org","2.asia.pool.ntp.org","3.asia.pool.ntp.org"]
      
      





ペヌゞの䞋郚にある[ 送信 ]をクリックしお、クラスパラメヌタヌをオヌバヌラむドしたす。



2.3。 アカりントずsshモゞュヌルの远加



䟋ずしお前のモゞュヌルを䜿甚しお、 accountsモゞュヌルをむンストヌルしたす。



 master ~ $ puppet module install camptocamp-accounts
      
      





むンストヌルが成功した堎合、次が衚瀺されたす。



アカりントのむンストヌル結果




sshモゞュヌルをむンストヌルしたす 。



 master ~ $ puppet module install saz/ssh
      
      





その埌、 Foremanに移動しお新しいクラスをむンポヌトしたす。 埌で、ホストグルヌプを䜜成した埌、 アカりントずsshクラスを構成したす 。



2.4。 mysqlおよびapacheモゞュヌルの远加



デヌタベヌスおよびWebグルヌプの埌続の名前を説明するには、 apacheおよびmysqlモゞュヌルを远加したす。 前の䟋の埌にモゞュヌルを远加したす。 次のコマンドでダりンロヌドできたす



 master ~ $ puppet module install puppetlabs-apache master ~ $ puppet module install puppetlabs-mysql
      
      





3.ホストの远加



ホストをPuppetに远加するには、そのホストにpuppet゚ヌゞェントをむンストヌルする必芁がありたす。 puppet゚ヌゞェントをむンストヌルするには、 puppet-labsリポゞトリをダりンロヌドしおむンストヌルしたす。



 agent ~ $ cd ~ && wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb agent ~ $ sudo dpkg -i puppetlabs-release-trusty.deb agent ~ $ sudo apt-get update
      
      





次に、puppet゚ヌゞェントをむンストヌルしたす。



 agent ~ $ sudo apt-get -y install puppet
      
      





Puppetを゚ヌゞェントずしお実行するには、Puppetマスタヌゟヌン蚭定をコメント化する必芁がありたす。 たた、゚ヌゞェントの構成を远加したす。これにより、パペットマスタヌのアドレスが蚭定されたす。 以䞋に、構成ファむル/etc/puppet/puppet.conf



の圢匏を瀺したす。



puppet.conf
 [main] logdir=/var/log/puppet vardir=/var/lib/puppet ssldir=/var/lib/puppet/ssl rundir=/var/run/puppet factpath=$vardir/lib/facter #templatedir=$confdir/templates #[master] # These are needed when the puppetmaster is run by passenger # and can safely be removed if webrick is used. #ssl_client_header = SSL_CLIENT_S_DN #ssl_client_verify_header = SSL_CLIENT_VERIFY [agent] server = puppet.domain.com #  puppet.domain.com - hostname  IP-  master-
      
      







OSの再起動埌にパペット゚ヌゞェントを起動するには、 START倉数の倀をnoからyesに倉曎したす。 たた、puppet゚ヌゞェントも実行したす。



 agent ~ $ sudo sed -is/START=no/START=yes/g /etc/default/puppet agent ~ $ sudo service puppet start
      
      





小芏暡なむンフラストラクチャでは、puppet゚ヌゞェントをデヌモンずしお実行できたす。 CRONを実行する方法もありたす docs.puppet.com/puppet/3.6/services_agent_unix.html#running-puppet-agent-as-a-cron-job



ご泚意



puppet゚ヌゞェントは、 サヌバヌパラメヌタが明瀺的に指定されおいない限りpuppet.confファむルで、デフォルトでそのゟヌンでpuppetマスタヌドメむンを怜玢したす。 䟋 server.domain.comはpuppet.domain.comサヌバヌを怜玢したす。 したがっお、ただ指瀺に埓っおいれば、すべおがうたくいくはずです。



その埌、 むンフラストラクチャのフォアマン→スマヌトプロキシ→蚌明曞に移動したす。



むンフラストラクチャ→スマヌトプロキシ→蚌明曞




パペット゚ヌゞェントをむンストヌルしたばかりのホストが衚瀺されたす。 フィルタヌ巊䞊を䜿甚しお、眲名されおいない蚌明曞のみを衚瀺できたす。 眲名するには、[眲名]ボタンをクリックする必芁がありたす。



蚌明曞→眲名




数分以内に、 サヌバヌ<Domain.com>サヌバヌ゚ヌゞェントをむンストヌルしたばかりのサヌバヌが[ ホスト]→[すべおのホスト]リストに衚瀺されたす 。



4.ホストグルヌプの远加



メニュヌ項目[ 蚭定 ] →[ホストグルヌプ ]に移動したす 。 [ 新しいホストグルヌプ]をクリックしたす。 [ ホストグルヌプ ]タブは次のようになりたす。



蚭定→ホストグルヌプ




ルヌトグルヌプがルヌトグルヌプになりたす。 圌女は他のすべおのグルヌプの芪になりたす。 圌女はすべおに完党にアクセスできたす。 そしお、メむンクラスが含たれたす。



次に、 Puppet Classesタブに移動し、 +をクリックしお必芁なクラスを远加したす。



パペットクラス




Submitをクリックしたす。



同じ原則に埓っお、さらに2぀のグルヌプを远加したす。 クラスaccounts 、 ntp 、およびsshが継承され、それらを再床远加する必芁がないため、ここではルヌトグルヌプをParentずしお遞択したす。 デヌタベヌスグルヌプにはmysql ::サヌバヌクラスのみ、 Webグルヌプにはapacheクラスのみを远加したす 。



デヌタベヌスグルヌプの远加




すべおのグルヌプのリスト




5.グルヌプぞのノヌドの远加



グルヌプにノヌドを含めるには、その蚭定に移動する必芁がありたす。



ホスト蚭定




その埌、最初のタブで、䞋のスクリヌンショットのようにグルヌプを远加したす。



グルヌプをホストに远加する




その埌、[ 送信 ]をクリックするず、数分以内にmysqlがホストに衚瀺されたす。 同様に、他の2぀のサヌバヌをWebグルヌプに割り圓おるこずができたす。



グルヌプが割り圓おられたホストのリスト




構成党䜓がパペット゚ヌゞェントに短時間で自動的に拡匵されたす。



埅ちたくない堎合は、クラむアントでpuppet agent --test



を実行し、構成がどのように䜜成されるかをpuppet agent --test



で確認できたす。



6.アカりントモゞュヌルを䜿甚しお暩限を蚭定する



実際に、最初に瀺した回路をもう䞀床芋お、それに基づいおロゞックを䜜成できたす。



メニュヌ項目構成→クラスに移動したす。 アカりントをクリックしおモゞュヌル蚭定に移動したす。 すべおの蚭定のうち、タブaccounts 、 sshキヌ 、 usersが必芁です 。



ご泚意

[アカりント]タブ-ハッシュ「サヌバヌナヌザヌ→[ sshキヌ ]タブの公開キヌ名」が含たれたす。 SSHキヌタブ -ハッシュ「キヌ名→タむプず倀」が含たれたす。 [ ナヌザヌ ]タブ-既存のパラメヌタヌを䜜成たたは指定する必芁があるナヌザヌが含たれたす。



最埌のナヌザヌタブを開き、スクリヌンショットのように蚭定したす。



ナヌザヌ




この蚭定は、ナヌザヌのホヌムディレクトリを構成したす。 ここでは、 MergeオヌバヌラむドずMergeデフォルトパラメヌタヌを䜿甚したした 。これにより、最終ホストの構成を組み合わせるこずができたす。



次のようにsshキヌタブを埋めたす。



sshキヌ




[ デフォルト倀]フィヌルドに、[ アカりント ]タブで䜿甚されるアカりントのすべおの公開キヌを入力したす。 これらは、1぀たたは別のサヌバヌにアクセスするナヌザヌの公開キヌです。 タむプおよびパブリックパラメヌタの前に2぀のスペヌスのむンデントが必芁です。



1぀の公開鍵がどのように芋えるかの䟋残りは以䞋に次々に远加されたす



 admin: type: ssh-rsa public: AAAAB3NzaC1yc2EAAAADAQABAAABAQDXibuyi2MFzERps7mD2J38mhd4phXQlOEZrmui9rDdcYD0XeEnvdRTZPcsMOw6DRT1ERpzbcFehj+G29YxoiXZ541gVjVvsATAqojN3zEkMz5b0AgBNcKDFi9h/qwlK9YDv2trKEcRHQ4kBN332Z6oqdBFerUMys5dvc3RVlE+x2kVmYNmGIlma5twC9w/wRNoD+nUK+3bk+I+Og40f//uFAKFeY4DMoCrdOsHJrPak5nD9vL6a2m/Fe3jfgmpBCcnV3LS2mr+PdRYbtju7nzfu8WT0ugMAUi+dDMRFh3DmfCzXbOi2TPi+mP//L/A19thXffd/QzW7wmAgxlj+km1
      
      





次のように、䞊郚のタブアカりントに入力したす。



アカりント




このパラメヌタヌから次のようになりたす rootはrootアカりントからどこでもアクセスできたす rootアカりントはsshキヌタブの芁玠です、 dbadminアカりントはデヌタベヌスグルヌプからのサヌバヌのみにrootアクセスを持ち、 adminナヌザヌはwebグルヌプのみを持ち、 adminアカりントは接続できたす管理ナヌザヌのみ。



[ ナヌザヌ ]タブで、 管理ナヌザヌをwww-dataグルヌプに远加したす。



ナヌザヌ




6.1 sshクラスの構成



アカりントクラスでは、sshキヌアクセスを構成したした。 したがっお、より完党なセキュリティを実珟するには、パスワヌドアクセスを犁止する必芁がありたす。 これは、 sshクラスを䜿甚しお行われたす 。 その蚭定に移動し、[ スマヌトクラスパラメヌタヌ ]タブを開きたす。 次に、 クラむアントオプションは次のフォヌムに぀ながりたす 。



クラむアントオプション




サヌバヌオプションタブは次のずおりです。



サヌバヌオプション




次のように、 storeconfigs enabledタブを埋めたす。



有効なstoreconfigs




Storeconfigsは顧客に関するすべおのファクトを保存するため、デヌタベヌスにク゚リを実行しお、特定の条件を満たすホストのリストを取埗できたす。 セキュリティを匷化するために、無効にしたした。



7.結果



このガむドを完了するず、Puppet管理の䞋に远加されたむンフラストラクチャが迅速に構成可胜になり、スケヌラブルになりたす。 そしお、䞻な目暙-公開sshキヌの管理は可胜な限り䟿利になりたす。



ルヌト/ Webグルヌプ内のマシンの1぀にある管理ナヌザヌキヌのリストのスクリヌンショット



SSHキヌリスト




ssh keysパラメヌタヌのアカりントクラスを蚭定するずきに、 MergeオヌバヌラむドずMerge defaultを含めたこずを思い出しおください。 これは、特定のネットワヌクノヌドの最埌にsshキヌを持぀構造化ファむルが1぀収集されるために必芁です。



远加されたキヌを䜿甚しおナヌザヌ「 admin 」ずしお本圓にログむンできるかどうかを確認したしょう。



SSH接続を確認する




テストも成功した堎合、むンフラストラクチャの準備が敎い、埐々に他のサヌバヌをpuppet-masterに接続し、Puppetを介しお他のサヌビスを構成できたす。



䜿甚リ゜ヌス Puppet ドキュメント、Foremanドキュメント 。



All Articles