如何使用 MCollective 在多個節點上同時執行 Puppet?
目標
目前辦公室裡有 100 多個系統,預計這個數字會增加。所有系統都由 Puppet 管理。如果 Puppet Master 上的 Puppet 程式碼發生變化,需要在多個系統上實現,則 Puppet 通過
sudo puppet agent -t
在每個系統上執行來手動執行。有時需要在 10 多個系統上實施更改。為了安全起見,我們的想法是使用 MCollective,即在所有系統上執行一次 puppet,而不是在每個系統上執行 puppet。試圖
Puppetmaster上已經安裝了ActiveMQ、MCollective Server和MCollective Client。一旦執行,可以找到Puppetmaster 。安裝MCollective Puppet Agent並執行Puppet後,將在Puppetmaster上執行。
mco ping``mco rpc puppet runonce
為了連接遠端 mcollective-client的想法是必須安裝並執行activemq和mcollective-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。