Puppet統合Foreman(5):統合Mcollective
一、機能説明 Marionette Collective(MCollective)は、Puppetと密接な関係にあるサービス実行フレームワークです. MC依存Ruby 1.9.3または1.8.7は、Stompプロトコルを介して通信するため、rubygem 1.2.2+ に依存する. puppetクライアントにMcollectiveサービス端末 をインストールする. puppetサービス側にMcollectiveクライアント をインストールする. puppetサービス側またはMQミドルウェア を個別に取り付ける.
公式文書を参照:https://docs.puppetlabs.com/mcollective/deploy/standard.html
二、ActiveMQを取り付ける
1.説明
RabbitMQは、高度なメッセージキュープロトコル(AMQP)を実現するメッセージキューサービスである.RabbitMQはOTP(Open Telecom Platform,電気通信プラットフォームの開発)に基づいて構築され,Erlang言語とランタイム環境を用いて実現される.
ActiveMQはApache出品で、最も流行しており、能力の強いオープンソースメッセージバスです.ActiveMQはJMS 1を完全にサポートするものである.1とJ 2 EE 1.4規範のJMS Provider実現
個別にインストールする場合はホスト名、HOSTS、puppet認証を設定する必要があります.ここではpuppetサービス側にインストールします.
2.インストール
ダウンロードが遅くて、何回失敗して、多く試みます
3.構成
構成を変更する前にバックアップし、サービスを開始してプロセスが実行されているかどうかを確認します.
Reloading httpd: not reloading due to configuration syntax error
自動的に生成されるhttpd構成はhttpd起動エラーを引き起こし、proxy構成が間違っているため、この構成を使わずにアクセスできます.
4.起動
5.アクセス
http://IP:8161/admin/
三、MCクライアントのインストール
1.インストール
puppetmasterサーバにインストールし、rootアカウントを使用してMC関連コマンドを実行し、puppetmasterの証明書を採用する
MCクライアントはプロセスを開始する必要はありません
2.構成
構成を変更する前に、構成ファイルをバックアップします.
ここではkeystoryを生成するため、ssl接続activemqは使用されません.jks証明書が失敗しました.解決します.
mcollective-servers.pem証明書は次のステップで生成されます.
ファイル内のpuppetサーバホスト名を自分のものに変更します.
四、MCサービスをインストールする
説明:puppetがある以上、MCサービス側を1台ずつインストールする必要はありません.ここにmcollectiveモジュールを書いてpuppet agentにプッシュします.
I、Linuxシステム
1、ディレクトリの作成
puppet masterサーバでmcollectiveモジュールを作成するために必要なディレクトリ
2、クラスの作成
3、プロファイルテンプレートの作成
4、証明書の生成
共有証明書が生成され、ノードに同期されます.
MCクライアント証明書をノードに同期する
5、ノード更新
(1)、foremanがインストールされていない
ノード上のPuppet agentプロセスを閉じる必要があります.agentがマスターをアクティブに同期しない場合、masterでcrontabを設定して定期的にmco puppet runonceを実行する必要があります.
(2)、foremanがインストールされている
foremanが事前に配備されている場合は、foremanページ->構成->Puppetクラス-Puppetクラス-Puppet-Proxyからインポート->結合環境の選択->ホストでpuppetagentを編集->クラスラベルにmcollectiveモジュールを追加->ノードでpuppet agent-tを実行する
II、Windowsシステム
1、ソフトウェアの説明
(1)、 ruby
Windowsにはrubyをインストールしてmcollectiveを実行する必要があります
http://rubyinstaller.org/
rubyinstaller-1.9.3-p 551をダウンロードします.exe
(2)、 mcollective
mcollective自体には対応するwindowsサービス側インストールパッケージはありません
http://repo.mornati.net/mcollective/
ダウンロード2.3.2下のmcollective_2_3_2_Setup.exe
batスクリプトインストールgemパッケージとインストールサービスを実行するにはrubyをインストールします.
(3)、puppetプラグイン
https://github.com/puppetlabs/mcollective-puppet-agent/releases
1.7.1リリースでpuppet agentを正常にロードできない場合、プラグイン1.6.1は問題ありません.
https://codeload.github.com/puppetlabs/mcollective-puppet-agent/zip/1.6.1/mcollective-puppet-agent-1.6.1.zip
解凍後、中のファイルをc:mcollectivepluginsmcollectiveにコピーして貼り付け、置換時に置換に同意するよう求めます
(4)、sslキー
鍵ファイルはクライアントの次のパスにアップロードされます.
c:\mcollective\etc\ssl\clients\puppetmaster.ewin.com.pem
c:\mcollective\etc\ssl\server_private.pem
c:\mcollective\etc\ssl\server_public.pem
2、win-mcollectiveモジュール
(1)、モジュールディレクトリ構造
puppetのmoduleの下でwin-mcollectiveモジュールディレクトリを作成します.
filesディレクトリの下に2つのプログラムが上図に表示されていません.
mcollective_2_3_2_Setup.exe
rubyinstaller-1.9.3-p551.exe
(2)、 files
ruby、mcollectiveプログラム、および解凍後のmcollective-puppet-agentプラグインをダウンロードします.
puppetサービス側証明書ファイルをfilesの下の対応する場所に保存します.
(3)、 manifests
init.pp
install.pp
config.pp
service.pp
(3)、 templates
server.cfg.erb
小結:以上が完了するとMCOコマンドを使用できます.詳しくは次の文章を参照してください.
五、Foremanの統合
1、説明
要件:Mcollective+ActiveMQの導入が完了し、mco puppet-v runonceコマンドが正常に実行されました.
実装:foreman上でmcollectiveによってpuppet agentコマンドをトリガーする
2、設定
foremanページでpuppetrunをtrueに設定
3、配置
サービスの再起動
4、計画
前述したagentのpuppetサービスを閉じるには、計画を使用してmcoコマンドを実行し、同期を実行する必要があります.
テストの下で毎分コマンドを実行します.通常は30分ごとに*/30に変更
計画ログの表示
foremanレポートの表示
5、テスト
foremanページ-ホスト-実行の選択-puppetの実行:(ホストを選択しない場合、「実行の選択」ドロップダウン・メニューは表示されません)
ログの表示
Debugモードをオンにし、より詳細な情報を表示し、エラーが発生した場合に使用します.
六、出会った間違い
1、activemqが起動できない
activemq not runnin
Javaツールtanukiwrapperがインストールされていません
2、ノード接続activemq失敗
puppetモジュールmcollectiveのクラス定義のactivemq_server値が書き間違えました
3、mcoコマンドの実行に失敗した
/etc/activemq/activemq.xmlおよび/etc/mcollective/client.cfgのユーザーパスワードは一致する必要があります
4、PUPPETの実行に失敗したエラー
(1)、ログの表示
これは、puppetmasterにpuppetモジュールを適用する、puppet.conf構成が消去されました
http://www.pythian.com/blog/some-observations-of-puppetrun-with-foreman/
(2)、puppetmasterの点検
mcollective mcollective-commonがインストールされているかどうか
foreman-proxyが正常に起動しているかどうか
Activemqが正常に接続されているかどうか
mco pingがクライアントを検出したかどうか
mco puppet runonce -I agent.ewin.comが正常に実行されたかどうか
mco inventory puppetagent.ewin.comがpuppetプラグインを正常にインストールしたかどうか
(3)、puppetagentのチェック
mcollective-puppet mcollective-clientインストールするかどうか
/var/log/mcollective.logログにエラーメッセージがあるかどうかを確認する
システム時間が正常かどうか
公式文書を参照:https://docs.puppetlabs.com/mcollective/deploy/standard.html
二、ActiveMQを取り付ける
1.説明
RabbitMQは、高度なメッセージキュープロトコル(AMQP)を実現するメッセージキューサービスである.RabbitMQはOTP(Open Telecom Platform,電気通信プラットフォームの開発)に基づいて構築され,Erlang言語とランタイム環境を用いて実現される.
ActiveMQはApache出品で、最も流行しており、能力の強いオープンソースメッセージバスです.ActiveMQはJMS 1を完全にサポートするものである.1とJ 2 EE 1.4規範のJMS Provider実現
個別にインストールする場合はホスト名、HOSTS、puppet認証を設定する必要があります.ここではpuppetサービス側にインストールします.
2.インストール
[root@puppet ~]# yum install -y tanukiwrapper activemq-info-provider
[root@puppet ~]# yum install -y activemq
ダウンロードが遅くて、何回失敗して、多く試みます
3.構成
構成を変更する前にバックアップし、サービスを開始してプロセスが実行されているかどうかを確認します.
[root@puppet ~]# cp /etc/activemq/activemq.xml /etc/activemq/activemq.xml.bak
[root@puppet ~]# vi /etc/activemq/activemq.xml
#<> , <persistenceAdapter>
<plugins>
<simpleAuthenticationPlugin>
<users>
<authenticationUser username="admin" password="admin@123" groups="mcollective,admins,everyone"/>
# "mcollective" mc
<authenticationUser username="mcollective" password="mcopwd123" groups="mcollective,everyone"/>
</users>
</simpleAuthenticationPlugin>
<authorizationPlugin>
<map>
<authorizationMap>
<authorizationEntries>
<authorizationEntry queue=">" write="admins" read="admins" admin="admins" />
<authorizationEntry topic=">" write="admins" read="admins" admin="admins" />
<authorizationEntry topic="mcollective.>" write="mcollective" read="mcollective" admin="mcollective" />
<authorizationEntry queue="mcollective.>" write="mcollective" read="mcollective" admin="mcollective" />
<authorizationEntry topic="ActiveMQ.Advisory.>" read="everyone" write="everyone" admin="everyone"/>
</authorizationEntries>
</authorizationMap>
</map>
</authorizationPlugin>
</plugins>
# , ( )
<transportConnectors>
<transportConnector name="stomp" uri="stomp://0.0.0.0:61613"/>
</transportConnectors>
Reloading httpd: not reloading due to configuration syntax error
自動的に生成されるhttpd構成はhttpd起動エラーを引き起こし、proxy構成が間違っているため、この構成を使わずにアクセスできます.
[root@puppet ~]# mv /etc/httpd/conf.d/activemq-httpd.conf /etc/httpd/conf.d/activemq-httpd.conf.bak
4.起動
[root@puppet ~]# service activemq restart
[root@puppet ~]# chkconfig activemq on
[root@puppet ~]# netstat -tnlp |grep java
tcp 0 0 :::61613 :::* LISTEN 5644/java
tcp 0 0 :::47248 :::* LISTEN 5644/java
tcp 0 0 :::8161 :::* LISTEN 5644/java
[root@puppet ~]# tailf /var/log/activemq/activemq.log
[root@puppet ~]# iptables -I INPUT -p tcp --dport 8161 -j ACCEPT
[root@puppet ~]# iptables -I INPUT -p tcp --dport 61613 -j ACCEPT
[root@puppet ~]# service iptables save
5.アクセス
http://IP:8161/admin/
三、MCクライアントのインストール
1.インストール
puppetmasterサーバにインストールし、rootアカウントを使用してMC関連コマンドを実行し、puppetmasterの証明書を採用する
MCクライアントはプロセスを開始する必要はありません
[root@puppet ~]# yum -y install mcollective-*
2.構成
構成を変更する前に、構成ファイルをバックアップします.
[root@puppet ~]# mv /etc/mcollective/client.cfg /etc/mcollective/client.cfg.bak
ここではkeystoryを生成するため、ssl接続activemqは使用されません.jks証明書が失敗しました.解決します.
[root@puppet ~]# vi /etc/mcollective/client.cfg
main_collective = mcollective
collectives = mcollective
libdir = /usr/libexec/mcollective
logfile = /var/log/mcollective.log
loglevel = info
daemonize = 1
#Active MQ connector settings:
connector = activemq
direct_addressing = 1
plugin.activemq.pool.size = 1
#activemq 、 、
plugin.activemq.pool.1.host = puppetmaster.ewin.com
plugin.activemq.pool.1.port = 61613
plugin.activemq.pool.1.user = mcollective
plugin.activemq.pool.1.password = mcopwd123
# ssl activemq, MC puppet
#plugin.activemq.pool.1.ssl = 1
#plugin.activemq.pool.1.ssl.ca = /var/lib/puppet/ssl/certs/ca.pem
#plugin.activemq.pool.1.ssl.cert = /var/lib/puppet/ssl/certs/puppetmaster.ewin.com.pem
#plugin.activemq.pool.1.ssl.key = /var/lib/puppet/ssl/private_keys/puppetmaster.ewin.com.pem
#plugin.activemq.pool.1.ssl.fallback = 0
#SSL seurity plugin settings PSK:
securityprovider = ssl
plugin.ssl_server_public = /var/lib/puppet/ssl/certs/mcollective-servers.pem
plugin.ssl_client_public = /var/lib/puppet/ssl/certs/puppetmaster.ewin.com.pem
plugin.ssl_client_private = /var/lib/puppet/ssl/private_keys/puppetmaster.ewin.com.pem
# Facts
factsource = yaml
plugin.yaml = /etc/mcollective/facts.yaml
mcollective-servers.pem証明書は次のステップで生成されます.
ファイル内のpuppetサーバホスト名を自分のものに変更します.
:%s/puppetmaster.ewin.com/puppet.yourdomain.cn/g
四、MCサービスをインストールする
説明:puppetがある以上、MCサービス側を1台ずつインストールする必要はありません.ここにmcollectiveモジュールを書いてpuppet agentにプッシュします.
I、Linuxシステム
1、ディレクトリの作成
puppet masterサーバでmcollectiveモジュールを作成するために必要なディレクトリ
[root@puppet ~]# mkdir -p /etc/puppet/modules/mcollective/{manifests,templates,files}
[root@puppet ~]# mkdir -p /etc/puppet/modules/mcollective/files/pem/clients
2、クラスの作成
[root@puppet ~]# vi /etc/puppet/modules/mcollective/manifests/init.pp
class mcollective{
#/etc/activemq/activemq.xml mcollective , erb
$activemq_server = "puppetmaster.ewin.com"
$mcollective_password = "mcopwd123"
package { ['mcollective','mcollective-puppet-agent','mcollective-service-agent']:
ensure => installed,
}
service { 'mcollective':
ensure => running,
enable => true,
require => Package['mcollective'],
}
# SVN , .svn
file { '/etc/mcollective':
ensure => directory,
source => 'puppet:///modules/mcollective/pem',
ignore => '.svn',
owner => root,
group => root,
mode => '0640',
recurse => remote,
notify => Service['mcollective'],
}
file { '/etc/mcollective/server.cfg':
ensure => file,
owner => root,
group => root,
mode => 400,
content => template("mcollective/server.cfg.erb"),
notify => Service['mcollective'],
}
}
3、プロファイルテンプレートの作成
[root@puppet ~]# vi /etc/puppet/modules/mcollective/templates/server.cfg.erb
main_collective = mcollective
collectives = mcollective
libdir = /usr/libexec/mcollective
logfile = /var/log/mcollective.log
loglevel = info
daemonize = 1
connector = activemq
direct_addressing = 1
plugin.activemq.pool.size = 1
plugin.activemq.pool.1.host = <%= @activemq_server %>
plugin.activemq.pool.1.port = 61613
plugin.activemq.pool.1.user = mcollective
plugin.activemq.pool.1.password = <%= @mcollective_password %>
securityprovider = ssl
plugin.ssl_client_cert_dir = /etc/mcollective/clients
plugin.ssl_server_private = /etc/mcollective/server_private.pem
plugin.ssl_server_public = /etc/mcollective/server_public.pem
#plugin.puppet.resource_allow_managed_resources = true
#plugin.puppet.resource_type_whitelist = exec,file
factsource = yaml
plugin.yaml = /etc/mcollective/facts.yaml
registerinterval = 600
4、証明書の生成
共有証明書が生成され、ノードに同期されます.
[root@puppet ~]# puppet cert generate mcollective-servers
Notice: mcollective-servers has a waiting certificate request
Notice: Signed certificate request for mcollective-servers
Notice: Removing file Puppet::SSL::CertificateRequest mcollective-servers at '/var/lib/puppet/ssl/ca/requests/mcollective-servers.pem'
Notice: Removing file Puppet::SSL::CertificateRequest mcollective-servers at '/var/lib/puppet/ssl/certificate_requests/mcollective-servers.pem'
[root@puppet ~]# cp /var/lib/puppet/ssl/private_keys/mcollective-servers.pem /etc/puppet/modules/mcollective/files/pem/server_private.pem
[root@puppet ~]# cp /var/lib/puppet/ssl/public_keys/mcollective-servers.pem /etc/puppet/modules/mcollective/files/pem/server_public.pem
[root@puppet ~]# chmod 644 /etc/puppet/modules/mcollective/files/pem/server_*
MCクライアント証明書をノードに同期する
[root@puppet ~]# cp /var/lib/puppet/ssl/certs/puppetmaster.ewin.com.pem /etc/puppet/modules/mcollective/files/pem/clients/
[root@puppet ~]# chmod 644 /etc/puppet/modules/mcollective/files/pem/clients/*
5、ノード更新
(1)、foremanがインストールされていない
[root@puppet ~]# vi /etc/puppet/manifests/puppetagent.pp
node "puppetagent.ewin.com" {
include mcollective
}
[root@puppet ~]# vi /etc/puppet/manifests/site.pp
import "puppetagent.pp"
[root@puppet ~]# vi /etc/puppet/puppet.conf
[agent]
report = true
server = puppetmaster.ewin.com
ノード上のPuppet agentプロセスを閉じる必要があります.agentがマスターをアクティブに同期しない場合、masterでcrontabを設定して定期的にmco puppet runonceを実行する必要があります.
[root@puppet ~]# service puppet stop
[root@puppet ~]# chkconfig puppet off
[root@puppet ~]# puppet agent -t
(2)、foremanがインストールされている
foremanが事前に配備されている場合は、foremanページ->構成->Puppetクラス-Puppetクラス-Puppet-Proxyからインポート->結合環境の選択->ホストでpuppetagentを編集->クラスラベルにmcollectiveモジュールを追加->ノードでpuppet agent-tを実行する
[root@puppet ~]# service puppet stop
[root@puppet ~]# chkconfig puppet off
[root@puppet ~]# puppet agent -t
II、Windowsシステム
1、ソフトウェアの説明
(1)、 ruby
Windowsにはrubyをインストールしてmcollectiveを実行する必要があります
http://rubyinstaller.org/
rubyinstaller-1.9.3-p 551をダウンロードします.exe
(2)、 mcollective
mcollective自体には対応するwindowsサービス側インストールパッケージはありません
http://repo.mornati.net/mcollective/
ダウンロード2.3.2下のmcollective_2_3_2_Setup.exe
batスクリプトインストールgemパッケージとインストールサービスを実行するにはrubyをインストールします.
(3)、puppetプラグイン
https://github.com/puppetlabs/mcollective-puppet-agent/releases
1.7.1リリースでpuppet agentを正常にロードできない場合、プラグイン1.6.1は問題ありません.
https://codeload.github.com/puppetlabs/mcollective-puppet-agent/zip/1.6.1/mcollective-puppet-agent-1.6.1.zip
解凍後、中のファイルをc:mcollectivepluginsmcollectiveにコピーして貼り付け、置換時に置換に同意するよう求めます
(4)、sslキー
鍵ファイルはクライアントの次のパスにアップロードされます.
c:\mcollective\etc\ssl\clients\puppetmaster.ewin.com.pem
c:\mcollective\etc\ssl\server_private.pem
c:\mcollective\etc\ssl\server_public.pem
2、win-mcollectiveモジュール
(1)、モジュールディレクトリ構造
puppetのmoduleの下でwin-mcollectiveモジュールディレクトリを作成します.
filesディレクトリの下に2つのプログラムが上図に表示されていません.
mcollective_2_3_2_Setup.exe
rubyinstaller-1.9.3-p551.exe
(2)、 files
ruby、mcollectiveプログラム、および解凍後のmcollective-puppet-agentプラグインをダウンロードします.
puppetサービス側証明書ファイルをfilesの下の対応する場所に保存します.
(3)、 manifests
init.pp
class win-mcollective{
$activemq_server = "puppetmaster.ewin.com"
$mcollective_password = "mcopwd123"
$mcollective_path = "C:\Program Files\mcollective"
include win-mcollective::install,win-mcollective::config,win-mcollective::service
}
install.pp
class win-mcollective::install {
if $operatingsystem == "windows" {
$filepath = "C:/Users/Administrator/Downloads"
$installdir = "C:/Program Files"
Exec{ path => ["${installdir}/Ruby193/bin","C:/Windows/system32","${installdir}/Puppet Labs/Puppet/bin" ] }
# ruby
file { 'ruby':
path => "${filepath}/rubyinstaller-1.9.3-p551.exe",
ensure => file,
owner => 'Administrator',
mode => '0755',
group => 'Administrators',
source => 'puppet:///modules/win-mcollective/rubyinstaller-1.9.3-p551.exe',
}
exec { 'ruby':
command => 'cmd.exe /c Start "puppet-install" /w "C:/Users/Administrator/Downloads/rubyinstaller-1.9.3-p551.exe" /SILENT /DIR="C:/Program Files/Ruby193"',
provider => 'windows',
creates => "${installdir}/Ruby193/bin/ruby.exe",
require=> File['ruby'],
}
# mcollective
file { 'mcollective':
path => "${filepath}/mcollective_2_3_2_Setup.exe",
ensure => file,
owner => 'Administrator',
mode => '0755',
group => 'Administrators',
source => 'puppet:///modules/win-mcollective/mcollective_2_3_2_Setup.exe',
}
exec { 'mcollective':
command => 'cmd.exe /c Start "puppet-install" /w "C:/Users/Administrator/Downloads/mcollective_2_3_2_Setup.exe" /SILENT /DIR="C:/Program Files/mcollective"',
provider => 'windows',
creates => "${installdir}/mcollective/bin/mco.bat",
require => File['mcollective'],
}
# gem
exec { 'install_gems':
command => 'cmd.exe /c gem install -l -f "C:/Program Files/mcollective/gems/*.gem"',
provider => 'windows',
unless => 'cmd.exe /c gem list --local | findstr win32-dir',
require => [Exec['ruby'],Exec['mcollective']],
}
#
exec { 'install_service':
command => 'cmd.exe /c C:/Progra~1/mcollective/bin/register_service.bat',
provider => 'windows',
unless => 'cmd.exe /c net start | find "The Marionette Collective"',
require => Exec['install_gems'],
}
#puppet aq
file { "${installdir}/mcollective/plugins/mcollective":
ensure => directory,
ignore => '.svn',
source_permissions => ignore,
source => 'puppet:///modules/win-mcollective/mcollective-puppet-agent-1.6.1',
recurse => true,
require => Exec['mcollective'],
}
file { "${installdir}/mcollective/etc/ssl":
ensure => directory,
ignore => '.svn',
source_permissions => ignore,
source => 'puppet:///modules/win-mcollective/pem',
recurse => true,
require => Exec['mcollective'],
}
}
}
config.pp
class win-mcollective::config {
file { 'C:\\Progra~1\\mcollective\\etc\\server.cfg':
ensure => present,
content => template("win-mcollective/server.cfg.erb"),
notify => Class['win-mcollective::service'],
require => Class['win-mcollective::install'],
}
}
service.pp
class win-mcollective::service {
service { 'mcollectived':
ensure => running,
enable => true,
require => Class['win-mcollective::config'],
}
}
(3)、 templates
server.cfg.erb
main_collective = mcollective
collectives = mcollective
libdir = <%= @mcollective_path %>\plugins;C:\Program Files\Puppet Labs\Puppet\puppet\lib;C:\Program Files\Puppet Labs\Puppet\facter\lib
logfile = <%= @mcollective_path %>\mcollective.log
loglevel = info
daemonize = 1
securityprovider = ssl
plugin.ssl_client_cert_dir = <%= @mcollective_path %>\etc\ssl\clients
plugin.ssl_server_private = <%= @mcollective_path %>\etc\ssl\server_private.pem
plugin.ssl_server_public = <%= @mcollective_path %>\etc\ssl\server_public.pem
connector = activemq
plugin.activemq.pool.size = 1
plugin.activemq.pool.1.host = <%= @activemq_server %>
plugin.activemq.pool.1.port = 61613
plugin.activemq.pool.1.user = mcollective
plugin.activemq.pool.1.password = <%= @mcollective_password %>
plugin.puppet.command = "C:\Program Files\Puppet Labs\Puppet\bin\puppet.bat" agent
plugin.puppet.config = C:\ProgramData\PuppetLabs\puppet\etc\puppet.conf
factsource = yaml
plugin.yaml = <%= @mcollective_path %>\etc\facts.yaml
小結:以上が完了するとMCOコマンドを使用できます.詳しくは次の文章を参照してください.
五、Foremanの統合
1、説明
要件:Mcollective+ActiveMQの導入が完了し、mco puppet-v runonceコマンドが正常に実行されました.
実装:foreman上でmcollectiveによってpuppet agentコマンドをトリガーする
2、設定
foremanページでpuppetrunをtrueに設定
3、配置
[root@puppet ~]# vi /etc/foreman-proxy/settings.d/puppet.yml
:enabled: true
:puppet_conf: /etc/puppet/puppet.conf
:puppet_provider: mcollective
[root@puppet ~]# chmod u+w /etc/sudoers.d/foreman-proxy
[root@puppet ~]# vi /etc/sudoers.d/foreman-proxy
foreman-proxy ALL = NOPASSWD : /usr/bin/puppet cert *, /usr/bin/mco puppet runonce *
Defaults:foreman-proxy !requiretty
サービスの再起動
[root@puppet ~]# /etc/init.d/foreman-proxy restart
4、計画
前述したagentのpuppetサービスを閉じるには、計画を使用してmcoコマンドを実行し、同期を実行する必要があります.
[root@puppet ~]# crontab -e
SHELL=/bin/bash */1 * * * * /usr/bin/mco puppet runonce *
テストの下で毎分コマンドを実行します.通常は30分ごとに*/30に変更
[root@puppet ~]# service crond reload
計画ログの表示
[root@puppet ~]# tailf -n 3 /var/log/cron
Apr 25 16:22:01 puppetmaster CROND[11613]: (root) CMD (/usr/bin/mco puppet runonce *)
Apr 25 16:23:01 puppetmaster CROND[11713]: (root) CMD (/usr/bin/mco puppet runonce *)
Apr 25 16:24:01 puppetmaster CROND[11823]: (root) CMD (/usr/bin/mco puppet runonce *)
foremanレポートの表示
5、テスト
foremanページ-ホスト-実行の選択-puppetの実行:(ホストを選択しない場合、「実行の選択」ドロップダウン・メニューは表示されません)
ログの表示
[root@puppet ~]# tailf /var/log/foreman-proxy/proxy.log
10.188.1.53 - - [23/Apr/2015 16:19:19] "POST /run HTTP/1.1" 200 - 0.5008
Debugモードをオンにし、より詳細な情報を表示し、エラーが発生した場合に使用します.
[root@puppet ~]# vi /etc/foreman-proxy/settings.yml
:log_level: DEBUG
六、出会った間違い
1、activemqが起動できない
activemq not runnin
[root@puppet ~]#
Javaツールtanukiwrapperがインストールされていません
2、ノード接続activemq失敗
[root@puppetagent ~]# tailf /var/log/mcollective.log
I, [2015-04-23T14:21:44.337723 #11451] INFO -- : activemq.rb:129:in `on_connectfail' TCP Connection to stomp://[email protected]:61613 failed on attempt 9
puppetモジュールmcollectiveのクラス定義のactivemq_server値が書き間違えました
3、mcoコマンドの実行に失敗した
/etc/activemq/activemq.xmlおよび/etc/mcollective/client.cfgのユーザーパスワードは一致する必要があります
4、PUPPETの実行に失敗したエラー
(1)、ログの表示
[root@puppet ~]# t
これは、puppetmasterにpuppetモジュールを適用する、puppet.conf構成が消去されました
WARN -- : Non-null exit code when executing '/usr/bin/sudo/usr/bin/mcopuppetrunonce-It-search01-55.ewin.com'
http://www.pythian.com/blog/some-observations-of-puppetrun-with-foreman/
(2)、puppetmasterの点検
mcollective mcollective-commonがインストールされているかどうか
foreman-proxyが正常に起動しているかどうか
Activemqが正常に接続されているかどうか
mco pingがクライアントを検出したかどうか
mco puppet runonce -I agent.ewin.comが正常に実行されたかどうか
mco inventory puppetagent.ewin.comがpuppetプラグインを正常にインストールしたかどうか
(3)、puppetagentのチェック
mcollective-puppet mcollective-clientインストールするかどうか
/var/log/mcollective.logログにエラーメッセージがあるかどうかを確認する
システム時間が正常かどうか