Tag: puppet

  • Puppetを使用したGridDBの設定方法

    Puppetを使用したGridDBの設定方法

    マニュアル作業で複数のノードを一度に設定するのは、非常に難しい作業です。たった1つのタイプミスが長時間に渡るデバッグを引き起こす恐れがあります。Puppetなどの設定管理システムでは、設定を複数のノードに展開し、値が一貫していることを保証しながら人為的なエラーを防止することでこの問題を解決します。 Puppetモジュールはこちらからダウンロードできます。(puppetforgeでも対応予定) https://griddb.net/en/resources/griddb- puppet-module.tgz  MULTICASTまたはFIXED_LISTモードでGridDB Standard Editionを設定できます。

    最初に用語の定義を説明しておくと、Puppetマスターとは、サーバーとすべての構成管理設定を保存するプロセスの両方を意味します。Puppetエージェントとは、マスターに接続して構成を適用するプロセスのことです。Puppetモジュールとは、エンドユーザーが特定のアプリケーションでPuppetを使用できるようにする、第三者の定義とテンプレートのセットです。 Hieraとは、Puppetのレシピ内で参照できるYAMLの定義です。

    Puppetモジュールをデプロイするために、まずはCentOS 7の3つのノード(Amazon AWSインスタンス)においてGridDBを新規にインストールします。ノードの1つはPuppetマスターとなり、GridDB設定が格納され、正確なドメイン名によって他のホストにアクセスすることができます。

    Puppetのインストールと設定

    3つのホスト上で、

    # echo "192.168.1.77 griddb1.example.com" >> /etc/hosts

    Puppetをインストールするには、まず先にPuppetlabs Repoをインストールしてから次にPuppetをインストールします。

    # rpm -Uvh https://yum.puppetlabs.com/puppet5/puppet5-release-el-7.noarch.rpm

    マスター上で、

    # yum -y install puppetserver

    もう1つのノード上で、

    # yum -y install puppet-agent

    Puppetマスターを開始します。

    # systemctl enable puppetmaster
    # systemctl start puppetmaster

    ファイアウォールを無効にするか、またはPuppetエージェントがマスターに接続するためのポート8140へのアクセスを許可する必要があります。

    # firewall-cmd --zone=public --port 8140/tcp

    Puppetがインストールされたら、エージェントを設定します。 マスターのホスト名は/etc/puppetlabs/puppet/puppet.confに追加する必要があります。スニペットは次のようになります:

    [main]
    server=griddb1.example.com

    次に、Puppetエージェントの証明書を生成し、3つのノードすべてで次のコマンドを実行します。

    # puppet agent --test

    その後、Puppetマスターで、次のコマンドを実行して証明書に署名します。

    # puppet cert sign griddb1.example.com
    # puppet cert sign griddb2.example.com
    # puppet cert sign griddb3.example.com

    次に、すべてのノードで “puppet agent –test”を再実行すると、以下のアウトプットが出るはずです。

    Info: Using configured environment 'production'
    Info: Retrieving pluginfacts
    Info: Retrieving plugin
    Info: Caching catalog for griddb1.example.com
    Info: Applying configuration version '1503328741'
    Notice: Applied catalog in 0.20 seconds

    エージェントが動作しているので、バックグラウンドプロセスも有効にすることができます。

    # systemctl enable puppet
    # systemctl start puppet
    

    これでシステムにPuppetが設定され、GridDBモジュールを設定することができます。

    Setting Up GridDB with Puppet

    まず、GridDBPuppetモジュールを https://griddb.net/en/resources/griddb-puppet-module.tgzからダウンロードします を展開し、解凍した内容を/etc/puppetlabs/code/environments/production/modules/に置きます。

    /etc/puppetlabs/code/environment/production/data/common.yamlを編集してGridDBの設定をすべて追加します。 ネットワークがマルチキャストネットワーキングをサポートしている場合は、griddb_modeを “multi”に設定するか、必要に応じて”fixed”を次のようにコンテナで使用できます。

    griddb_clusterName: "defaultCluster"
    griddb_user: "admin"
    griddb_pass: "admin"
    griddb_minNodeNum: "3"
    griddb_replicationNum: "2"
    griddb_concurrency: "2"
    griddb_storeMemoryLimit: "1024MB"
    griddb_mode: "fixed"
    griddb_nodes: 
            - "192.168.1.74"
            - "192.168.1.75"
            - "192.168.1.77"
    

    common.yamlにはGridDBのユーザ名とパスワードが含まれているので、権限をロックダウンすることをお勧めします。

    # chown puppet.puppet common.yaml
    # chmod 640 common.yaml

    実際のパスワードファイルはgs_passwdによって生成されたマシンなので、最初に作成してモジュールテンプレートにコピーし、他のノードに反映させることができます。

    # su - gsadm
    $ gs_passwd admin
    Password: 
    Retype password:
    $ exit
    # cp /var/lib/gridstore/conf/password /etc/puppet/code/environment/production/modules/griddb/templates/password.erb
    

    最後に、ファイアウォールを無効にするか、必要なポートへのアクセスを許可するように設定します。

    # systemctl stop firewalld

    もしくは

    # firewall-cmd --zone=public --port 10001/tcp
    # firewall-cmd --zone=public --port 10010/tcp
    # firewall-cmd --zone=public --port 10020/tcp
    # firewall-cmd --zone=public --port 10040/tcp

    ここで、すべてのノードで “puppet agent –test”を同時に呼び出すと、Puppetは設定ファイルをデプロイして、すべてのノードでGridstoreサービスを開始します。 ローカルまたはクラウド環境のどちらの環境においても、上記の手順でGridDB SEを使用することができますし、GridDB CEでの使用にも適用できます。 Community Editionを使用する場合は、GridDB Puppetマニフェストで”service”セクションを無効にすることと、手動でgs_startnodeとgs_joinclusterを実行する手順を追加してください。

    参考資料

    RPMGridDB Community Edition(v3.0.1)は、以下からダウンロードできます。 GitHub.