DevOpsシリーズツールのPuppetインストールと基礎構成


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   vim,         ,              
  package { ‘vim’:
    ensure => present,
  }

事物層.
事物層は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:
    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,
      }
    }