日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Saltstack grains组件

發布時間:2025/5/22 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Saltstack grains组件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  grains是Saltstack最重要的組件之一,grains的作用是收集被控主機的基本信息,這些信息通常都是一些靜態的數據,包括CPU、內核、操作系統、虛擬化等,在服務器端可以根據這些信息進行靈活定制,管理員可以利用這新信息對不同業務進行個性化配置。

官網提供的用來區分不同操作系統的示例如下(采用jinja模板):

{% if grains['os'] == 'Ubuntu' %} host: {{ grains['host'] }} {% elif grains['os'] == 'CentOS' %} host: {{ grains['fqdn'] }} {% endif %}

  示例中CentOS發行版主機將被 "host: {{ grains['fqdn'] }}"匹配,以主機SN100-128(centOS6.4)為例,最終得到"host:SN100-128"。同時,命令行的匹配操作系統發行版本為CentOS的被控端可以通過-G參數來過濾,如salt -G 'os:CentOS' test.ping。

[root@localhost~]# salt -G 'os:CentOS' test.ping SN100-128:True SN100-129:True SN100-130:True

(1) grains常用操作命令:

#獲取主機的grains項信息:

[root@localhost~]# salt 'SN100-128' grains.ls SN100-128:- SSDs- biosreleasedate- biosversion- cpu_flags- cpu_model- cpuarch- domain- fqdn- fqdn_ip4- fqdn_ip6- gpus- host- hwaddr_interfaces- id- init- ip4_interfaces- ip6_interfaces- ip_interfaces- ipv4- ipv6- kernel- kernelrelease- locale_info- localhost- lsb_distrib_codename- lsb_distrib_id- lsb_distrib_release- machine_id- manufacturer- master- mdadm- mem_total- nodename- num_cpus- num_gpus- os- os_family- osarch- oscodename- osfinger- osfullname- osmajorrelease- osrelease- osrelease_info- path- productname- ps- pythonexecutable- pythonpath- pythonversion- saltpath- saltversion- saltversioninfo- selinux- serialnumber- server_id- shell- virtual- zmqversion

獲取主機單項grains數據:

#獲取操作系統發行版本. [root@localhost~]# salt 'SN100-128' grains.item os SN100-128:----------os:CentOS #獲取操作系統的內核信息. [root@localhost~]# salt 'SN100-128' grains.item kernel SN100-128:----------kernel:Linux#獲取操作系統的selinux信息 [root@localhost~]# salt 'SN100-128' grains.item selinux SN100-128:----------selinux:----------enabled:Falseenforced:Disabled

#salt '*' grains.item os //返回鍵值對

#salt '*' grains.get os ?//返回值

獲取主機id為'SN100-128'的所有grains鍵及值信息。

[root@localhost~]# salt 'SN100-128' grains.items SN100-128:----------SSDs:biosreleasedate:04/14/2014biosversion:6.00cpu_flags:- fpu - vme - de - pse - tsc - msr - pae - mce - cx8 - apic - sep - mtrr - pge - mca - cmov - pat - pse36 cpu_model:Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHzcpuarch:x86_64domain:fqdn:TestOnlyMPAPPfqdn_ip4:- 10.10.100.128- 127.0.0.1fqdn_ip6:gpus:|_----------model:SVGA II Adaptervendor:unknownhost:TestOnlyMPAPPhwaddr_interfaces:----------eth1:00:50:56:87:b1:54lo:00:00:00:00:00:00id:SN100-128init:upstartip4_interfaces:----------eth1:- 10.10.100.128lo:- 127.0.0.1ip6_interfaces:----------eth1:- fe80::250:56ff:fe87:b154lo:- ::1ip_interfaces:----------eth1:- 10.10.100.128- fe80::250:56ff:fe87:b154lo:- 127.0.0.1- ::1ipv4:- 10.10.100.128- 127.0.0.1ipv6:- ::1- fe80::250:56ff:fe87:b154kernel:Linuxkernelrelease:2.6.32-431.el6.x86_64locale_info:----------defaultencoding:UTF8defaultlanguage:zh_CNdetectedencoding:UTF-8localhost:TestOnlyMPAPPlsb_distrib_codename:Finallsb_distrib_id:CentOSlsb_distrib_release:6.5machine_id:bcc4f9ad2d40506966ce2b1400000014manufacturer:VMware, Inc.master:10.10.100.127mdadm:mem_total:8001nodename:TestOnlyMPAPPnum_cpus:2num_gpus:1os:CentOSos_family:RedHatosarch:x86_64oscodename:Finalosfinger:CentOS-6osfullname:CentOSosmajorrelease:6osrelease:6.5osrelease_info:- 6- 5path:/sbin:/usr/sbin:/bin:/usr/binproductname:VMware Virtual Platformps:ps -efHpythonexecutable:/usr/bin/python2.6pythonpath:- /usr/bin- /usr/lib64/python26.zip- /usr/lib64/python2.6- /usr/lib64/python2.6/plat-linux2- /usr/lib64/python2.6/lib-tk- /usr/lib64/python2.6/lib-old- /usr/lib64/python2.6/lib-dynload- /usr/lib64/python2.6/site-packages- /usr/lib64/python2.6/site-packages/gst-0.10- /usr/lib64/python2.6/site-packages/gtk-2.0- /usr/lib64/python2.6/site-packages/webkit-1.0- /usr/lib/python2.6/site-packages- /usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg-infopythonversion:- 2- 6- 6- final- 0saltpath:/usr/lib/python2.6/site-packages/saltsaltversion:2015.5.8saltversioninfo:- 2015- 5- 8- 0selinux:----------enabled:Falseenforced:Disabledserialnumber:VMware-42 07 95 36 bc 00 ee bd-bc 79 77 5c 81 14 35 b5server_id:295812205shell:/bin/shvirtual:VMwarezmqversion:3.2.5

(2) 定義grains數據:

定義grains數據的方法有兩種,其中一種為在被控端主機定制配置文件,另一種是通過主控端擴展模塊API實現,區別是模塊更靈活,可以通過python編程動態定義,而配置文件只適合相對固定的鍵與值。下面分別舉例說明。

1.被控端主機定制grains數據

SSH登錄一臺被控主機,如SN100-128,配置文件定制的路徑為/etc/salt/minion,參數為default_include: minion.d/*.conf,具體操作如下:

【/etc/salt/minion.d/hostinfo.conf】

grains:roles:- webserver- memcachedeployment: datacenter4cabinet: 13

  重啟被控主機salt-minion服務,使之生效:service salt-minion restart。驗證結果在主控端主機運行:salt 'SN100-128' grains.item roles deployment cabinet,觀察配置的鍵與值,如下所示。

[root@localhost~]# salt 'SN100-128' grains.item roles deployment cabinet SN100-128:----------cabinet:13deployment:datacenter4roles:- webserver- memcache

或者也可以這樣定義

vim /etc/salt/grainscloud: openstack test: salt/etc/init.d/salt-minion restart 或者執行同步 salt '*' saltutil.sync_grainssalt -G 'cloud:openstack' test.ping

2.主控端擴展模塊定制grains數據

  首先在主控端編寫python代碼,然后將該python文件同步到被控主機,最后刷新生效(即編譯python源碼文件生成字節碼pyc)。在主控端bash目錄(見/etc/salt/master配置文件的file_roots項,默認的bash配置在/srv/salt)下生成_grains目錄,執行install -d /srv/salt/_grains開始編寫代碼,實現獲取被控主機系統允許最大打開文件數(ulimit -n)的grains數據。

【/srv/salt/_grains/sysprocess.py】

#!/usr/bin/env python #coding:utf-8import os,sys,commands def Granins_openfile():"""os max open file of grains value"""grains = {}#init default value_open_file=65535try:getulimit=commands.getstatusoutput('source /etc/profile;ulimit -n')except Exception,e:passif getulimit[0] == 0:_open_file=int(getulimit[1])grains['max_open_file'] = _open_filereturn grains Granins_openfile()

上面代碼的說明如下。

 grains_openfile()定義一個獲取最大打開文件數的函數,函數名稱沒有要求,符合python的函數命名規則即可;

 grains = {} 初始化一個grains字典,變量名一定要用grains,以便Saltstack識別;

 grains['max_open_file'] = _open_file 將獲取的linux ulimit -n 的結果值賦予grains['max_open_file'],其中"max_open_file"就是grains的項,_open_file就是grains的值。

 最后同步模塊到指定被控端主機并刷新生效,因為grains比較合適采集靜態類的數據,比如硬件,內核信息等。當有動態類的功能需求時,需要提行刷新,具體操作如下:

  同步模塊?salt 'SN100-128' saltutil.sync_all ,看看 "SN100-128"主機發生了什么?文件已經同步到minion cache目錄中,如下:

/var/cache/salt/minion/extmods/grains/sysprocess.py /var/cache/salt/minion/files/base/_grains/sysprocess.py

?/var/cache/salt/minion/extmods/grains/為擴展模塊文件最終存放位置,刷新模塊后將在同路徑下生成字節碼pyc;

?/var/cache/salt/minion/files/base/_grains/為臨時存放位置。

?刷新模塊salt 'SN100-128' sys.reload_modules,再看看主機發生了什么變化?在/var/cache/salt/minion/extmods/grains/位置多了一個編譯后的字節碼文件sysprocess.pyc文件,為python可執行的格式。

/var/cache/salt/minion/extmods/grains/sysprocess.py /var/cache/salt/minion/extmods/grains/sysprocess.pyc /var/cache/salt/minion/files/base/_grains/sysprocess.py

?效驗結果為可以在主控端查看grains信息,執行?salt 'SN100-128' grains.item max_open_file,結果顯示"max_open_file:1024",這就是前面定制的主機grains信息。

[root@localhost~]# salt 'SN100-128' grains.item max_open_file SN100-128:----------max_open_file:1024

grains在top.sls中的使用:

'roles: nginx':- match:grain //聲明使用grain- init.pkg //執行init.pkg模塊 

?

?

  

  

?

?

  

轉載于:https://www.cnblogs.com/saneri/p/5567491.html

總結

以上是生活随笔為你收集整理的Saltstack grains组件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。