preztoをインストールしてみた
最近、自分のMacBookにpreztoを入れてみたので、今回はその話をしたいと思います。
prezto
preztoはzsh向けのフレームワークで、コマンドラインでの作業を快適にするための様々なプラグインが利用できます。
zsh向けのフレームワークとしては、他にもoh-my-zshなども有名です。
自分は元々oh-my-zshを使っていたのですが、preztoのほうが軽いという話をちらほら聞いたので、使ってみようかなと思った次第です。
インストール
インストールは、こちらに書いてある通りに実施すればOKです。
GitHub - sorin-ionescu/prezto: The configuration framework for Zsh
$ zsh $ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto" $ setopt EXTENDED_GLOB $ for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do $ ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}" $ done $ chsh -s /bin/zsh
あとは、zshを起動し直せばOKです。
プロンプトのデザインが変わっているかと思います。
preztoでは、プロンプトのデザインを好みに応じて変えることができます。
ただ、デザインを変える場合、必要に応じてRicty for Powerline
などのプラグインを入れる必要があります。
その辺の話は次回したいと思います。
参考
この記事は以下を参考にしています。
GitHub - sorin-ionescu/prezto: The configuration framework for Zsh
Customizing Your Prezto Prompt
AntigenでPreztoを導入 - Qiita
oh-my-zshを使っていて重いと感じている方、preztoはいかが? - Qiita
マニフェストでグループを作ってみる part3
今回は、以下の記事で使用したコマンドの解説を行います。
具体的には、puppet agent
コマンドの解説です。
マニフェストでグループを作ってみる - ressyのナレッジ的なブログ
puppet agentコマンド
グループ作成をした際は以下の2種類を実行していました。
# puppet agent -t --verbose --noop # puppet agent -t --verbose
オプションの違いだけですが、挙動は大きく変わるのでその辺も解説します。
Agentサーバにマニフェストを適用する場合、puppet agent
コマンドを使用します。
このコマンドによって、Masterサーバ上にあるマニフェスト/etc/puppet/manifests/site.pp
が適用されます。
-t
オプション
Agent/Master構成を組んでいる場合、2種類の動作モードが選択できます。
- デーモンとして動作させ、30分ごとにマニフェストを取得する
- 一度だけ動作させて終了する
-t
オプションは、2.の動作を行うためのオプションです。
これを外した場合、1.の動作を行います(agentがデーモンとして起動する)。
※ 外した場合の動作は検証したことがないので、どこかの機会でやってみたいです。
--verbose
オプション
--verbose
オプションは、実行内容を確認するためのオプションです。
puppet agent
コマンドを使う際は、基本的につけたほうが良いと思います。
--noop
オプション
--noop
オプションは、マニフェストの適用をシミュレーションするためのオプションです。
いきなりマニフェストを適用するのではなく、意図した通りに適用されそうかテストをする目的で使用できます。
ですので、puppet agent
コマンドで適用する場合は、事前に--noop
オプションを使うことをお勧めします。
問題ないことを確認してから、--noop
オプションを外して実行すればOKです。
私が、グループ作成の際にマニフェストを適用する前に--noop
オプションをつけていたのも、このような理由です。
参考
この記事は、以下を参考にしています。
Basic Agent/Master Puppet ~ Agent/Master方式Puppetの基礎 — Documentation — Puppet
マニフェストでグループを作ってみる part2
今回は、前回実施したグループ作成について、マニフェストの内容を解説します。
実行したコマンドについては、次回解説します。
マニフェストでグループを作ってみる - ressyのナレッジ的なブログ
マニフェストの内容
前回は、グループ作成のためにこのような記述をしました。
# cat /etc/puppet/manifests/site.pp group { 'testgroup': ensure => present, gid => 5000, }
マニフェストを記述する場合、おおよそ以下のようなルールで記述します。
<リソースタイプ> { <リソース名>: <パラメータ1> => <値1>, <パラメータ2> => <値2>, … }
リソースタイプ
<リソースタイプ>
とは、設定すべき項目の種類を指定します。
今回の場合、グループを作成したかったのでgroup
と指定しています。
他にも、パッケージインストール関連の場合はpackage
、設定ファイルの記述に関するものであればfile
など、リソースの種類は多々あります。
具体的には以下を参照すると良いでしょう。
https://docs.puppet.com/puppet/latest/reference/type.html
リソース名
<リソース名>
は、設定対象を表します。
リソースタイプをgroup
とした場合、リソース名には作成するグループの名前を指定します。
今回はtestgroup
というグループを作成しています。
パラメータ、値
<パラメータ>
は文字通り設定に必要なパラメータの種類を、<値>
はパラメータの値を記述します。
パラメータは、各リソース共通のパラメータもあれば、リソース固有のパラメータもあります。
ensure
は各リソース共通のパラメータで、このリソースに対してどのような処理を行うか指定します。
間違った言い方かもしれませんが、簡単にいうと「有効」「無効」を指定すると思えば良いでしょう。
ensure => present
とすると「有効」、つまりグループを作成します。ensure => absent
とすると「無効」、つまりグループを削除します。
gid
は、リソースタイプgroup
やuser
で使用できるパラメータで、文字通りグループIDを指定します。
今回の場合、グループtestgroup
のグループIDを5000
にしています。
マニフェストの内容に関する解説は以上です。
今回は、gidを指定するだけの簡単な例でしたが、パラメータは他にもあります。
詳しいことはいかに記載されていますので、参考にしてみてください。
https://docs.puppet.com/puppet/latest/reference/type.html#group
今回はここまで。
次回は、実行したコマンドに関する解説をします。
参考資料
この記事は以下を参考にしています。
Resource Type Reference (Single-Page) — Documentation — Puppet
Puppetを使ったLinuxシステムの設定自動管理 - さくらのナレッジ
マニフェストでグループを作ってみる
前回までで、Puppetのインストールを完了しました。
今回から、マニフェストを少しずつ書いていこうと思います。
グループを作成するマニフェストを書いてみる
マニフェストを使用して、各サーバにグループtestgroup
を作成してみましょう。
ファイル/etc/puppet/manifests/site.pp
を新規作成します。
# touch /etc/puppet/manifests/site.pp
この拡張子.pp
のファイルが、マニフェストを記述するファイルとなります。
こちらに作成するグループを書いていきます。
# vi /etc/puppet/manifests/site.pp group { 'testgroup': ensure => present, gid => 5000, }
これはgid 5000のグループtestgroup
を作成する記述です。
この記述の具体的な意味は次回解説します。
今回は、とりあえずグループを作るだけにします。
マニフェストをいきなり、Agentに適用する前にテストをしましょう。
Agent/Master構成の場合、puppet agent
コマンドによってマニフェストを適用しますが、いきなり適用せずマニフェストを正常に適用できるかテストすることができます。
マニフェストを適用したいAgentサーバにて、以下のコマンドを実行すればOKです。
オプションの意味も次回解説します。
# puppet agent -t --verbose --noop Info: Retrieving pluginfacts Info: Retrieving plugin Info: Caching catalog for dbs01 Info: Applying configuration version '**********' Notice: /Stage[main]/Main/Group[testgroup]/ensure: current_value absent, should be present (noop) Notice: Class[Main]: Would have triggered 'refresh' from 1 events Notice: Stage[main]: Would have triggered 'refresh' from 1 events Info: Creating state file /var/lib/puppet/state/state.yaml Notice: Finished catalog run in 0.15 seconds
上記実行結果は、勉強環境のdbs01で実行した例です。
Notice: /Stage[main]/Main/Group[testgroup]/...
という部分が確認できると思います。
エラーが出なければ、あとは実際に適用します。
先ほどの、実行コマンドから--noop
を外してもう一回実行すればOKです。
# puppet agent -t --verbose Info: Retrieving pluginfacts Info: Retrieving plugin Info: Caching catalog for dbs01 Info: Applying configuration version '**********'
testgroup
が作成されたか確認します。
# cat /etc/group | grep testgroup testgroup:x:5000:
無事に作成されたことが確認できます。
あとは、これを他のAgentサーバについても同様に実行すればOKです。
今回はここまで。
次回は、今回取り上げたマニフェストの記述やコマンドについて解説します。
Puppetをインストールする part5
今回は、こちらの続きをやっていきます。
http://ressy-tech.hatenablog.jp/entry/tech/puppet/install4
5. Master側での署名確認(Master)
前回は、AgentのインストールとMasterへの接続テストを行いました。
今回は、Master側でAgentの証明書へ署名を行います。
この作業が必要なのは、MasterはAgentからの接続が、正規ホストからのものであることを認証しているためです。
まずは、署名待ちになっている証明書を確認します。
以下のように実行しましょう。
# puppet cert list --all "dbs01" (SHA256) xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx "web01" (SHA256) yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy + "mgs01" (SHA256) zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz (alt names: ....)
ホスト名の前に、+
がついて入れば署名済み、ついていなければ署名されてない状態となります。
上記の場合、WEB01とDBS01が署名されてない状態となります。
※ MGS01は、Masterサーバと兼用しているためか、私の環境では最初から署名済みでした。
この部分は定かではないので、少し調べる必要がありそうです。
署名されてない証明書に署名をしましょう。
以下を実行します。
# puppet cert sign --all Notice: Signed certificate request for web01 Notice: Removing file Puppet::SSL::CertificateRequest web01 at '/var/lib/puppet/ssl/ca/requests/web01' Notice: Signed certificate request for dbs01 Notice: Removing file Puppet::SSL::CertificateRequest dbs01 at '/var/lib/puppet/ssl/ca/requests/dbs01'
改めて、puppet cert list --all
を実行しましょう。
# puppet cert list --all + dbs01" (SHA256) xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx + "web01" (SHA256) yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy:yy + "mgs01" (SHA256) zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz:zz (alt names: ....)
全てのホスト名の前に+
がつきました。
これで全てのサーバの署名が完了しました。
Puppetのインストールで必要な作業は以上になります。
ここまでを実施して、初めてマニフェストを各サーバへ適用できるようになりました。
次回は、マニフェストを実際に書いてみます。
Puppetをインストールする part4
今回は、こちらの続きをやっていきます。
Puppetをインストールする part3 - ressyのナレッジ的なブログ
4. Puppetのインストールと設定(Agent)
Agentをインストールします。
私の勉強環境ではWEB01、DBS01、MGS01の全サーバがインストール先となります。
各々のAgentサーバにて以下を実行します。
# yum install puppet -y
Agent側では、Masterサーバを明示する必要があります。
そのために、ファイル/etc/puppet/puppet.conf
にMasterサーバのホスト名を設定します。
[agent]
のセクション内に以下のように記述してください。
[main] … [agent] … server = MGS01
記述したら、Masterへの接続テストを行います。
Agentサーバ全てで実施してください。
例えばDBS01で実行した場合、以下のようになります。
# puppet agent -t --verbose Info: Caching certificate for ca Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml Info: Creating a new SSL certificate request for dbs01 Info: Certificate Request fingerprint (SHA256): xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx Info: Caching certificate for ca
Error:
で始まるメッセージがなければOKです。
今回はここまで。
次回は、Master側での自動署名の確認を行います。
これが終われば、Puppetのインストールは一旦完了です。
Puppetをインストールする part3
今回は、こちらの続きをやっていきます。
Puppetをインストールする part2 - ressyのナレッジ的なブログ
3. Puppetのインストールと設定(Master)
AgentとMasterではインストールするパッケージが少し違います。
まずはMasterサーバ(私の勉強環境ではMGS01)をインストールします。
Masterサーバにて以下を実行します。
# yum install puppet-server -y
インストール後、ファイル/etc/puppet/puppet.conf
に変更の適用時にファイルの差分を表示するための設定を追加します。
[main] … show_diff = true [agent] …
puppet.confには、デフォルトで[main]
セクションと[agent]
セクションが記述されています。
[main]
セクションには共通設定を、[agent]
セクションにはAgent固有の設定を入れます。
他にも、[master]
セクションや[user]
セクションがありますが、ここでは記事では省略します。
あとは、サービスを起動します。
# /etc/init.d/puppetmaster start
今回はここまで。
次回は、Agentのインストールをします。