saltstack(十一)runners

來源:互聯網
上載者:User

標籤:管道   execution   資源   master   

這一篇,總結一下runner的用法。

runner是個啥呢,runner的寫法和execution module的寫法差不多。

不同的是,execution module需要同步到minions上,然後在minions上面執行,

而runner則,在master上直接用salt-run這個命令就可以調用了,而不需要同步到minions上面。

既然,runner和execution module執行情境不同,那麼顯然他們操作的對象也不一樣。

一個exection module同步到一個minion上之後,幹好這一台機器的活就OK了。

而runner在master執行,它乾的活,更加具有全域性,它可以使用master上面的一切資源,可以通過

salt 命令去間接的擷取minions上的資源。。。。

樓主覺得,runner這東西就如同,"ls /home | grep lixc" ,"ls /home"可以理解為master 對minions的一系列操作,然後返回的結果通過管道交"grep " 。而runner乾的活恰恰就是管道後面的活,對返回的結果做二次處理。

當然也可以用runner去執行一系列的任務

mark倆地址,salt 內建runner及源碼

http://docs.saltstack.cn/ref/runners/all/index.html#all-salt-runners

https://github.com/saltstack/salt/tree/develop/salt/runners

下面看看該怎麼定義的模組吧。

先建立一個runners的存放檔案夾,runner的目錄可以有多個,以列表的形式存在。我們這裡把目錄放在/srv/salt/_runners,如下:

[email protected]:~# grep ‘^runner_dirs‘ /etc/salt/masterrunner_dirs: [‘/srv/salt/_runners‘][email protected]:~#

來看一下代碼:

[email protected]:~# cat /srv/salt/_runners/lsdir.pyimport salt.clientimport re def lsdir(directory):   match = re.findall(r‘^(/)‘,directory)   if not match:       directory = "/%s" % directory   client = salt.client.LocalClient(__opts__[‘conf_file‘])   ret  = client.cmd(‘*‘, ‘cmd.run‘,[‘/bin/ls /home‘],timeout=1)   for key,value in ret.items():       value_list = value.split(‘\n‘)       print "\033[31m%s\033[0m" % key       for value in value_list:       print "\033[32m%s\033[0m" % value,[email protected]:~#

執行以下:

[email protected]:~# salt-run  lsdir.lsdir  homesalt-minionlixc lost+found salt-develop salt-develop.zip[email protected]:~#

哈哈。其實功能就是salt ‘*‘ cmd.run ‘ls /home‘。樓主在做測試,沒啥實際需求,就瞎掰一個出來玩玩

[email protected]:~# salt ‘*‘ cmd.run ‘ls /home‘salt-minion:    lixc    lost+found    salt-develop    salt-develop.zip[email protected]:~#

OK。準系統跑通了,runner肯定不止這麼點點用處了,到時候要根據需求去用了。

本文出自 “西風” 部落格,請務必保留此出處http://lixcto.blog.51cto.com/4834175/1430853

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.