foremianアーキテクチャの導入6-pppetmaterを統合する


ゼロ基礎学習Pppet自動化配置管理シリーズ文書
注:下記の内容はforemann 1.6.3+pppett 2.6.2の環境下で操作します.詳細は公式サイトを参照してください.http://theforeman.org/manuals/1.6/index.html
foremianとpppetmasterをインストールしてから、これからすることは統合して、現在foremannはpppetの環境、種類、クラス内の変数、報告、facterなどの情報を管理できます.これから一つ一つ紹介します.
1、まずスマートエージェントがpppetとpppet CAを代理したことを保証します.
Foremanインストール
プロキシpppet及びpppetCAは、foremann-proxyで開く必要があります.
#    puppet
[root@puppetmaster162 ~]# cat /etc/foreman-proxy/settings.d/puppet.yml 
---
# Puppet management
:enabled: true   #  
:puppet_conf: /etc/puppet/puppet.conf
# valid providers:
#   puppetrun   (for puppetrun/kick, deprecated in Puppet 3)
#   mcollective (uses mco puppet)
#   puppetssh   (run puppet over ssh)
#   salt        (uses salt puppet.run)
#   customrun   (calls a custom command with args)
:puppet_provider: mcollective
# customrun command details
# Set :customrun_cmd to the full path of the script you want to run, instead of /bin/false
:customrun_cmd: /bin/false
# Set :customrun_args to any args you want to pass to your custom script. The hostname of the
# system to run against will be appended after the custom commands.
:customrun_args: -ay -f -s
# whether to use sudo before the ssh command
:puppetssh_sudo: false
# the command which will be sent to the host
:puppetssh_command: /usr/bin/puppet agent --onetime --no-usecacheonfailure
# With which user should the proxy connect
#:puppetssh_user: root
#:puppetssh_keyfile: /etc/foreman-proxy/id_rsa
# Which user to invoke sudo as to run puppet commands
:puppet_user: root
# URL of the puppet master itself for API requests
:puppet_url: https://puppetmaster162.kisspuppet.com:8140
# SSL certificates used to access the puppet master API
:puppet_ssl_ca: /var/lib/puppet/ssl/certs/ca.pem
:puppet_ssl_cert: /var/lib/puppet/ssl/certs/puppetmaster162.kisspuppet.com.pem
:puppet_ssl_key: /var/lib/puppet/ssl/private_keys/puppetmaster162.kisspuppet.com.pem
# Override use of Puppet's API to list environments, by default it will use only if
# environmentpath is given in puppet.conf, else will look for environments in puppet.conf
#:puppet_use_environment_api: true

#    puppet ca
[root@puppetmaster162 ~]# cat /etc/foreman-proxy/settings.d/puppetca.yml 
---
# PuppetCA management
:enabled: true
:ssldir: /var/lib/puppet/ssl
:puppetdir: /etc/puppet
2、pppet環境を管理する
2.1、pppetmater環境を配置する
pppetは2.6バージョンから「カタログ環境」の機能を追加しました.詳細は公式サイトを訪問してください.https://docs.puppetlabs.com/puppet/latest/reference/environments.html
[root@puppetmaster162 ~]# cat /etc/puppet/puppet.conf 
[master]
    ...
    environmentpath  = /etc/puppet/environments
    basemodulepath   = /etc/puppet/modules:/usr/share/puppet/modules
    environment_timeout = 2  #        

[root@puppetmaster162 ~]# ll /etc/puppet/environments/
total 24
drwxr-xr-x 4 root root 4096 Dec  5 16:46 development
drwxr-xr-x 4 root root 4096 Dec  5 16:46 example42
drwxr-xr-x 4 root root 4096 Dec  5 16:39 example_env
drwxr-xr-x 5 root root 4096 Dec  5 17:03 production
drwxr-xr-x 4 root root 4096 Dec  5 16:46 puppetlabs
drwxr-xr-x 7 root root 4096 Dec  5 17:03 temp
注意:以上の構成から、二つの環境が設定されていることが分かります.
2.2、foremannにpppet環境を導入する
Foremanインストール
3、管理pppet類
3.1、pppet類の配置
以下の点に注意してください.
  • pppetc.com nfにおけるbasemodulepathの値が設定されている経路は、環境ディレクトリ下の全ての環境の公共環境であり、中のすべてのモジュールは他の環境によって検索される(environment.comが配置されていない前提で)
  • .
  • 環境ディレクトリの各環境ディレクトリには、デフォルトでは、maifeestsディレクトリとmodulesディレクトリが含まれています.ディレクトリ構造は以下の通りです.
      [root@puppetmaster162 environments]# tree production/
      production/
      ├── environment.conf
      ├── manifests
      │   └── site.pp
      ├── modules
      │   ├── jenkins
      │   │   ├── files
      │   │   │   └── jenkins.repo
      │   │   ├── manifests
      │   │   │   ├── init.pp
      │   │   │   ├── install.pp
      │   │   │   ├── service.pp
      │   │   │   └── yum.pp
      │   │   ├── README
      │   │   └── templates
      │   └── motd
      │       ├── files
      │       │   └── motd
      │       ├── manifests
      │       │   └── init.pp
      │       └── templates
      └── system
          └── ssh
              ├── files
              ├── manifests
              │   ├── backup.pp
              │   ├── config.pp
              │   ├── init.pp
              │   ├── install.pp
              │   └── service.pp
              ├── Modulefile
              ├── README
              ├── spec
              │   └── spec_helper.rb
              ├── templates
              │   └── sshd_config.erb
              └── tests
                  └── init.pp
      17 directories, 20 files
  • もしあなたが一つの環境に複数のディレクトリを含めたいなら、各ディレクトリにモジュールが含まれています.environment.co nfファイル
      [root@puppetmaster162 environments]# ll temp/
      total 24
      -rw-r--r--  1 root root   95 Dec  5 17:03 environment.conf  #          
      drwxr-xr-x 11 root root 4096 Dec  5 17:02 juhailu
      drwxr-xr-x  2 root root 4096 Dec  5 16:48 kisspuppet
      drwxr-xr-x  4 root root 4096 Dec  5 16:56 lin
      drwxr-xr-x  2 root root 4096 Dec  5 16:48 manifests
      drwxr-xr-x  5 root root 4096 Dec  5 16:47 puppetlabs
      [root@puppetmaster162 environments]# ll temp/puppetlabs/
      total 12
      drwxr-xr-x 5 root root 4096 Dec  5 16:46 propuppet-demoapp
      drwxr-xr-x 5 root root 4096 Dec  5 16:46 puppetlabs-demoapp
      drwxr-xr-x 4 root root 4096 Dec  5 16:46 puppet-module-skeleton
      [root@puppetmaster162 environments]# cat temp/environment.conf #      
      modulepath = $basemodulepath:puppetlabs:modules:lin:modules:juhailu:modules:kisspuppet:modules
  • を追加するべきです.
    注意:検索パスを追加するには、$basemodulepathを追加する必要があります.そうでないと、デフォルトの公共環境経路は検索されません.
    3.2、Foremanにpppet類を導入する
    Foremanインストール
    4、ENCの設定
    4.1、ノードによる直接管理モジュール
    Foremanインストール
    備考:メインクラスを追加すればいいです.
    このようにノードとモジュールは関連しています.site.ppに下記のコードを追加するのに相当します.
    node pppetmaster 162.kispupet.com{  include ssh)
    4.2、グループ経由モジュール
    Foremanインストール
    Foremanインストール
    備考:グループ管理モジュールを使用すると、あるノードのためにモジュールを単独でチェックすることを勧めません.そうでないと、先にノードにモジュールAを追加してから、ノードに対応するグループにモジュールAを追加したら、ノードのpppet類はどこに含まれるクラスが二つの同名のモジュールが表示されますか?
    5、グループとモジュール間の管理
    5.1、プロファイルグループの追加
    注:foremanは1.5バージョンから「設定グループ」機能を追加しました.複数のモジュールを「設定グループ」に追加して、設定グループに名前を付けることができます.このように、ホストグループはモジュールをチェックする時、設定グループにチェックを付けるだけで、中のすべてのモジュールを統合できます.
    ForemanインストールForemanインストール
    6、設定が成功したかどうかを確認する
    Foremanインストール
    Foremanインストール
    #          ,        node.rb,   "puppet agent"    "node.rb  "     。
    [root@puppetmaster162 ~]# cat /var/lib/puppet/yaml/foreman/puppetmaster162.kisspuppet.com.yaml 
    ---
    classes:
      ssh: 
    parameters:
      puppetmaster: puppetmaster162.kisspuppet.com
      hostgroup: prd
      root_pw: 
      foreman_env: production
      owner_name: Admin User
      owner_email: [email protected]
    以上の情報を設定すれば、ENCの機能が完了し、基本的にノードとクラス間のチェックが保障されます.ノードでpppet agentコマンドでテストができます.どのようにforemanでプッシュするかについては、次の文章に注目してください.