標籤:管道 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