Activemq

如何使用 MCollective 在多個節點上同時執行 Puppet?

  • December 25, 2014

目標

目前辦公室裡有 100 多個系統,預計這個數字會增加。所有系統都由 Puppet 管理。如果 Puppet Master 上的 Puppet 程式碼發生變化,需要在多個系統上實現,則 Puppet 通過sudo puppet agent -t在每個系統上執行來手動執行。有時需要在 10 多個系統上實施更改。為了安全起見,我們的想法是使用 MCollective,即在所有系統上執行一次 puppet,而不是在每個系統上執行 puppet。


試圖

Puppetmaster上已經安裝了ActiveMQMCollective ServerMCollective Client。一旦執行,可以找到Puppetmaster 。安裝MCollective Puppet Agent並執行Puppet後,將在Puppetmaster上執行。mco ping``mco rpc puppet runonce

為了連接遠端 mcollective-client的想法是必須安裝並執行activemqmcollective-client才能通過發出mco ping.

/var/log/mcollective.log

INFO -- : activemq.rb:114:in `on_connecting' TCP Connection attempt 23 to stomp://mcollective@stomp1:6163

/etc/activemq/activemq.xml

   <transportConnectors>
       <transportConnector name="openwire" uri="tcp://0.0.0.0:61616"/>
           <transportConnector name="stomp" uri="stomp://0.0.0.0:61613"/>
       </transportConnectors>
</broker>

/etc/mcollective/server.cfg

connector = activemq
plugin.activemq.pool.size = 1
plugin.activemq.pool.1.host = localhost
plugin.activemq.pool.1.port = 61613
plugin.activemq.pool.1.user = mcollective
plugin.activemq.pool.1.password = helloworld

其中一個假設是應該在 server.cfg 中配置多個主機。在嘗試使其工作時,不清楚架構應該是什麼樣子。是否需要一個ActiveMQ、一個MCollective 伺服器和多個MCollective 客戶端(每個節點上一個)?


預期結果

預期的結果是mco ping找到Puppetmaster遠端客戶端。一旦這工作,就可以使用 MCollective 在兩個系統上執行 Puppet。當可以使用 MCollective 在這兩個系統上執行 Puppet 時,將添加多個節點,一旦mco rpc puppet runonce執行,Puppet 將在這些系統上執行。


目前的結果

由於無法通過執行找到遠端客戶端,mco ping因此無法使用 MCollective 在兩個系統上執行 Puppet。

需要一台 ActiveMQ 伺服器,需要在每個節點上安裝 MCollective,並且plugin.activemq.pool.1.host程式碼片段需要包含 ActiveMQ 伺服器的 IP。

在此處輸入圖像描述

[vagrant@localhost ~]$ mco ping
test                                  time=225.70 ms
test2                                 time=488.51 ms


---- ping statistics ----
2 replies max: 488.51 min: 225.70 avg: 357.10

/etc/mcollective/server.cfg

connector = activemq
plugin.activemq.pool.size = 1
plugin.activemq.pool.1.host = IP_ACTIVEMQ_SERVER
plugin.activemq.pool.1.port = 61613
plugin.activemq.pool.1.user = mcollective
plugin.activemq.pool.1.password = helloworld

找到 Puppet 節點後,執行mco rpc puppet runonce將在所有系統上執行 Puppet。

引用自:https://serverfault.com/questions/651866