《SaltStack技术入门与实践》—— Job管理
Job管理
本章節參考《SaltStack技術入門與實踐》,感謝該書作者: 劉繼偉、沈燦、趙舜東
在SaltStack里面執行任何一個操作都會在Master上產生一個jid號。Minion端會在cache目錄下的proc目錄創建一個jid為名稱的文件,這個文件里面的內容就是此次操作的記錄,當操作處理完成后該文件會自動刪除。而Master端會記錄每次操作的詳細信息,這個記錄都是存到在Master端cache目錄下jobs下。下面通過實例來了解日常job管理。
目前SaltStack提供兩種方式來管理job:
- salt-run
- module
1、通過salt-run來管理job
首先我們來查看下salt-run對job管理的一些用法:
[root@SaltMaster1(10.182.88.136)]$~:>salt-run -d |grep jobs jobs.active: #查看當前運行的jobsReturn a report on all actively running jobs from a job id centricsalt-run jobs.active jobs.exit_success:salt-run jobs.exit_success 20160520145827701627 jobs.last_run:List all detectable jobs and associated functionssalt-run jobs.last_runsalt-run jobs.last_run target=nodenamesalt-run jobs.last_run function='cmd.run'salt-run jobs.last_run metadata="{'foo': 'bar'}" jobs.list_job: #指定jid查看jobs詳細信息salt-run jobs.list_job 20130916125524463507salt-run jobs.list_job 20130916125524463507 --out=pprint jobs.list_jobs: #查看所有jobs信息List all detectable jobs and associated functionsIf more than one of the below options are used, only jobs which matchsalt-run jobs.list_jobs search_metadata='{"foo": "bar", "baz": "qux"}'Can be passed as a string or a list. Returns jobs which match thesalt-run jobs.list_jobs search_function='test.*'salt-run jobs.list_jobs search_function='["test.*", "pkg.install"]'salt-run jobs.list_jobs search_function='test.*,pkg.install'Can be passed as a string or a list. Returns jobs which match thesalt-run jobs.list_jobs search_target='*.mydomain.tld'salt-run jobs.list_jobs search_target='["db*", "myminion"]'salt-run jobs.list_jobs search_target='db*,myminion'module is not installed, this argument will be ignored). Returns jobsmodule is not installed, this argument will be ignored). Returns jobssalt-run jobs.list_jobssalt-run jobs.list_jobs search_function='test.*' search_target='localhost' search_metadata='{"bar": "foo"}'salt-run jobs.list_jobs start_time='2015, Mar 16 19:00' end_time='2015, Mar 18 22:00' jobs.list_jobs_filter:List all detectable jobs and associated functionssalt-run jobs.list_jobs_filter 50salt-run jobs.list_jobs_filter 100 filter_find_job=False jobs.lookup_jid: #指定jid查詢jobs結果salt-run jobs.lookup_jid 20130916125524463507salt-run jobs.lookup_jid 20130916125524463507 --out=highstate jobs.print_job: #指定jid查詢jobs詳細信息salt-run jobs.print_job 20130916125524463507It can also be used to schedule jobs directly on the master, for example:這里會顯示salt-run關于job操作的所有命令。關于每個參數的解釋大家可以通過salt-run -d jobs來查看:
[root@SaltMaster1(10.182.88.136)]$~:>salt '10.182.76.78' cmd.run 'sleep 100;whoami' ^C Exiting gracefully on Ctrl-c This job's jid is: 20180624194553900549 The minions may not have all finished running and any remaining minions will return upon completion. To look up the return data for this job later, run the following command:salt-run jobs.lookup_jid 20180624194553900549因為等待時間過長我這里直接用Ctrl + C了,這個時候會提示此次任務的jid號。我們可以隨時通過salt-run job管理來查看這個job信息。查詢這個job的運行結果:
[root@SaltMaster1(10.182.88.136)]$~:>salt-run jobs.list_job 20180624194553900549 Arguments:- sleep 100;whoami Function:cmd.run Minions:- 10.182.76.78 Result:---------- StartTime:2018, Jun 24 19:45:53.900549 Target:10.182.76.78 Target-type:glob User:root jid:201806241945539005492、通過SaltStack Module來管理job
在上面已經介紹了通過salt-run可以對日常job進行管理,為什么還要介紹利用Module來管理job呢。因為salt-run對job管理功能比較局限,上面我們也看到了目前salt-run還不支持kill某個job。現在我們就開始介紹使用SaltStack自帶的Module來管理job。首先查看相關Module的用法:
[root@SaltMaster1(10.182.88.136)]$~:>salt '10.182.76.78' sys.doc saltutil |grep job saltutil.clear_job_cache: Forcibly removes job cache folders and files on a minion.salt '*' saltutil.clear_job_cache hours=12 saltutil.find_cached_job: #查詢job cache信息Return the data for a specific cached job id. Note this only works ifcache_jobs has previously been set to True on the minion.salt '*' saltutil.find_cached_job <job id> saltutil.find_job: #查看job信息Return the data for a specific job id that is currently running.The job id to search for and return data.salt '*' saltutil.find_job <job id>Note that the find_job function only returns job information when the job is still running. Ifthe job is currently running, the output looks something like this:# salt my-minion saltutil.find_job 20160503150049487736If the job has already completed, the job cannot be found and therefore the function returns# salt my-minion saltutil.find_job 20160503150049487736 saltutil.kill_all_jobs: Sends a kill signal (SIGKILL 9) to all currently running jobssalt '*' saltutil.kill_all_jobs saltutil.kill_job: #殺掉job(發送SIGTERM 9信號方式)Sends a kill signal (SIGKILL 9) to the named salt job's processsalt '*' saltutil.kill_job <job id>salt master_minion saltutil.runner jobs.list_jobs saltutil.signal_job: #發送指定信號Sends a signal to the named salt job's processsalt '*' saltutil.signal_job <job id> 15 saltutil.term_all_jobs:Sends a termination signal (SIGTERM 15) to all currently running jobssalt '*' saltutil.term_all_jobs saltutil.term_job: #刪掉job(發送SIGTERM 15信號方式)Sends a termination signal (SIGTERM 15) to the named salt job's processsalt '*' saltutil.term_job <job id>我們接著按照上面的例子來測試:
[root@SaltMaster1(10.182.88.136)]$~:>salt '10.182.76.78' cmd.run 'sleep 100;whoami' ^C Exiting gracefully on Ctrl-c This job's jid is: 20180624195818566512 The minions may not have all finished running and any remaining minions will return upon completion. To look up the return data for this job later, run the following command:salt-run jobs.lookup_jid 20180624195818566512使用Module來管理job:
[root@SaltMaster1(10.182.88.136)]$~:>salt '10.182.76.78' saltutil.find_job 20180624195818566512 10.182.76.78:----------arg:- sleep 100;whoamifun:cmd.runjid:20180624195818566512pid:81684ret:tgt:10.182.76.78tgt_type:globuser:root我們還可以直接kill這個job:
[root@SaltMaster1(10.182.88.136)]$~:>salt '10.182.76.78' saltutil.kill_job 20180624195818566512 10.182.76.78: [root@SaltMaster1(10.182.88.136)]$~:>salt '10.182.76.78' saltutil.find_job 20180624195818566512 10.182.76.78:----------轉載于:https://www.cnblogs.com/zuoyang/p/9221534.html
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的《SaltStack技术入门与实践》—— Job管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: codeforce R 491 (div
- 下一篇: 理解LSTM