Puppet(パペット)


GitHub Actionsでpuppetの利用

記事:


バージョンとEOL


puppetserverの起動時のタイムアウトを延長

puppet v3のデフォルトが2分で、起動時にタイムアウトしてしまう事がある。
puppet v5のデフォルトは5分になっている。


mongodb


ファイルの存在チェック


現在の設定値の表示

puppet.confに未定義だが、デフォルト値を確認したい時など。


Could not find class


古いrpmパッケージの取得/yum repoがダウンした時


octocatalog-diff: 2つのブランチ間の変更を表示


VM/dockerで試す時


ベストプラクティス


Selectorsを使って インストール/アンインストール処理

三項演算子同じような処理がしたい時


undefined method ... for nil:NilClass


provider: pipを使えるようにする


プロキシを経由して実行する


create_resources: 複数回のリソース呼び出し時にハッシュを渡す

ハッシュで複数項目を定義して、複数回のリソース(ファイル等)呼び出し時に利用できる。

hieraからhashを渡す時にも使える。


puppet実行時に色(エスケープシーケンス)を付けない


hieraをローカルでテストする


hiera:設定値をyamlファイルで管理


文字列の置換


テンプレート(Templates)


セキュリティアップデート


Error: Could not retrieve catalog from remote server: SSL_connect returned=1 errno=0 state=SSLv3 read server session ticket A:...


facter: Illegal instruction

puppetでこのエラーが出て調べた所、facterのエラーメッセージだった。
なぜか、t1.microで発生し、m1.smallでは発生しなかった。


既存ファイルの先頭に追加する


古いpuppet reportsを削除する

puppet masterの/var/lib/puppet/reports/に古い*.yamlが貯まって、ディスクが溢れる場合がある。


r10k: 環境毎にmanifestとmoduleを分ける


fqdn_rand : ランダム


stdlib:sortやjoinといったよく使われる関数を追加


デバッグメッセージの表示


MySQL


メール通知


stage:実行の順序を指定できる


プロセス監視 monitのインストール

サーバに常駐して指定したプロセスを監視し、落ちたら自動的に再起動等を設定できる


ログ管理 td-agent(fluentd)のインストール

fluentdの安定版であるtd-agentをpuppetでインストール


naveで異なるバージョンのnodejsをインストールするmodule


pp/erb/yamlファイルの構文チェック


エラー


エラー「Duplicate definition」


エラー「Host is missing hostname and/or domain」


終了ステータスの詳細を得る

0, 2の場合は成功と見なして良い

puppet agent --server server.localdomain --no-daemonize --verbose --onetime --detailed-exitcodes
echo $?

カスタムfacter

facter変数や任意のリソースタイプを追加できる


Rubyスクリプトで拡張する


環境変数 FACTER_varname として定義する場合

export FACTER_my_key1=value1
export FACTER_my_key2=value2
export FACTER_my_key3=value3

facter | grep my
my_key1 => value1
my_key2 => value2
my_key3 => value3

/etc/facter/facts.d/ 以下に固定ファイルを置いて定義する場合

sudo mkdir -p /etc/facter/facts.d/
sudo vim /etc/facter/facts.d/my.txt
----
my_key1=value1
my_key2=value2
my_key3=value3
----

facter | grep my
my_key1 => value1
my_key2 => value2
my_key3 => value3

/etc/puppet/modules/MY_MODULE/lib/facter/ 以下にプログラムを配置する場合


AmazonWebService


Puppet Dashboard


正規表現


軽量化/スケーラビリティ


puppetlabsで公開されているモジュールのインストール


モジュール

マニフェスト,テンプレート,ファイルのセット

puppet-iptables

iptablesを設定してくれる


タグ

特定リソースだけ実行したいなどに使える。


puppetrun

デフォルトでは30分でagentがpuppetmasterに取りに行くが、任意のタイミングで実行させたい時にpuppetrunが使える


ファイルサーバ

masterからagentへファイルを配布できる

Could not run: Invalid mount files


プロバイダ

OSのコマンドの違いを吸収してくれる中間レイヤー


masterからagentへ向けての操作

masterからagentへ操作(puppet kick)したい時


関数(Function)


条件文


変数と配列

undef
未定義。if(undef)はfalse

変数の型を表示

$var1_class=inline_template("<%= $var1.class %>")
notify { "$var1":
      message => "class: $var1_class" }

Facter変数


リソース

/etc/hosts


仮想リソース


依存関係

マニフェストでリソースの依存関係を定義できる


リソースタイプ


リソースコマンド


define


class

複数のリソースを一つにまとめ、名前を付けられる。
defineとの違いは、インスタンスの数。一つの場合はclass、複数の場合はdefine


node

どのクライアントに適用させるかを記述する


ヘルパーモード


エラー「Host is missing hostname and/or domain」


自動署名

特定ドメインだけ自動承認させる事で、サーバ側で「puppetca sign」する手間が省ける


エラー:クライアントが登録できない


マニフェスト(DSL)


基本

  1. サーバ上で以下パスにファイルを追加する。例:site.pp
    /etc/puppet/manifests/site.pp
  2. 例:ファイルのパーミッションを変更
    file { '/etc/hosts':
        owner => 'root',
        group => 'root',
        mode  => 644,
    }
  3. マニフェスト構文チェック
    # 2.7.x
    puppet parser validate manifests/site.pp
    
    # 2.6.x
    puppet --parseonly manifests/site.pp
  4. dry-run & diff(実際には適用しない)
    # 2.7.x
    puppet agent --noop --test
    
    # 2.6.x
    puppet agent --noop
  5. マニフェスト更新
    puppet apply manifests/site.pp
  6. デフォルトでは30分後にクライアントに適用されている

デフォルト


yumrepo

/etc/yum.repos.d/REPONAME.repo を作成するリソース


package

package {
    がある。手動でwgetならうまくいくケースがある
#geshi(bash){{
package { 'zabbix-jp-release':0
	ensure => installed,
	provider => rpm,
	source => 'http://www.zabbix.jp/binaries/relatedpkgs/rhel6/x86_64/zabbix-jp-release-6-5.noarch.rpm'
}

exec


file


user


コマンド


puppetサーバコマンド


puppetクライアントコマンド


puppetインストール


puppet-serverインストール


添付ファイル: fileresolver.rb 992件 [詳細] filepuppet-module-td-agent.centos.patch 1200件 [詳細] filenodejs-init.pp.centos.patch 1048件 [詳細] filepuppet-module-rpmforge.zip 1038件 [詳細] filepuppet-example.zip 1168件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-12-22 (水) 16:14:27