版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Saltstack之Grains組件
參考:劉天斯《Python自動(dòng)化運(yùn)維技術(shù)與最佳實(shí)踐》grains是Saltstack最重要的組件之一,grains的作用是收集被控主機(jī)的基本信息,這些信息通常都是一些靜態(tài)類的數(shù)據(jù),包括CPU、內(nèi)核、操作系統(tǒng)、虛擬化等,在服務(wù)器端可以根據(jù)這些信息進(jìn)行靈活定制,管理員可以利用這些信息對(duì)不同業(yè)務(wù)進(jìn)行個(gè)性化定制。獲取所有主機(jī)的grains項(xiàng)信息,發(fā)現(xiàn)沒有max_openfile,等會(huì)我們手動(dòng)編寫一個(gè)。[root@salt-master
base]#
salt
'*'
grains.ls
salt-master:
-
SSDs
-
biosreleasedate
-
biosversion
-
cpu_flags
-
cpu_model
-
cpuarch
-
disks
-
dns
-
domain
-
fqdn
-
fqdn_ip4
-
fqdn_ip6
-
gid
-
gpus
-
groupname
-
host
-
hwaddr_interfaces
-
id
-
init
-
ip4_interfaces
-
ip6_interfaces
-
ip_interfaces
-
ipv4
-
ipv6
-
kernel
-
kernelrelease
-
locale_info
-
localhost
-
lsb_distrib_codename
-
lsb_distrib_id
-
machine_id
-
manufacturer
-
master
-
mdadm
-
mem_total
-
nodename
-
num_cpus
-
num_gpus
-
os
-
os_family
-
osarch
-
oscodename
-
osfinger
-
osfullname
-
osmajorrelease
-
osrelease
-
osrelease_info
-
path
-
pid
-
productname
-
ps
-
pythonexecutable
-
pythonpath
-
pythonversion
-
saltpath
-
saltversion
-
saltversioninfo
-
selinux
-
serialnumber
-
server_id
-
shell
-
systemd
-
uid
-
username
-
uuid
-
virtual
-
zmqversion
salt-minion01:
-
SSDs
-
cpu_flags
-
cpu_model
-
cpuarch
-
disks
-
dns
-
domain
-
fqdn
-
fqdn_ip4
-
fqdn_ip6
-
gid
-
gpus
-
groupname
-
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
-
master
-
max_open_file
-
mdadm
-
mem_total
-
nodename
-
num_cpus
-
num_gpus
-
os
-
os_family
-
osarch
-
oscodename
-
osfinger
-
osfullname
-
osmajorrelease
-
osrelease
-
osrelease_info
-
path
-
pid
-
ps
-
pythonexecutable
-
pythonpath
-
pythonversion
-
saltpath
-
saltversion
-
saltversioninfo
-
selinux
-
server_id
-
shell
-
uid
-
username
-
virtual
-
zmqversion
hddcluster2:
-
SSDs
-
biosreleasedate
-
biosversion
-
cpu_flags
-
cpu_model
-
cpuarch
-
disks
-
dns
-
domain
-
fqdn
-
fqdn_ip4
-
fqdn_ip6
-
gid
-
gpus
-
groupname
-
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
-
pid
-
productname
-
ps
-
pythonexecutable
-
pythonpath
-
pythonversion
-
saltpath
-
saltversion
-
saltversioninfo
-
selinux
-
serialnumber
-
server_id
-
shell
-
systemd
-
uid
-
username
-
uuid
-
virtual
-
zmqversion
hddcluster4:
-
SSDs
-
biosreleasedate
-
biosversion
-
cpu_flags
-
cpu_model
-
cpuarch
-
disks
-
dns
-
domain
-
fqdn
-
fqdn_ip4
-
fqdn_ip6
-
gid
-
gpus
-
groupname
-
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
-
pid
-
productname
-
ps
-
pythonexecutable
-
pythonpath
-
pythonversion
-
saltpath
-
saltversion
-
saltversioninfo
-
selinux
-
serialnumber
-
server_id
-
shell
-
systemd
-
uid
-
username
-
uuid
-
virtual
-
zmqversion
hddcluster3:
-
SSDs
-
biosreleasedate
-
biosversion
-
cpu_flags
-
cpu_model
-
cpuarch
-
disks
-
dns
-
domain
-
fqdn
-
fqdn_ip4
-
fqdn_ip6
-
gid
-
gpus
-
groupname
-
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
-
pid
-
productname
-
ps
-
pythonexecutable
-
pythonpath
-
pythonversion
-
saltpath
-
saltversion
-
saltversioninfo
-
selinux
-
serialnumber
-
server_id
-
shell
-
systemd
-
uid
-
username
-
uuid
-
virtual
-
zmqversion
hddcluster1:
-
SSDs
-
biosreleasedate
-
biosversion
-
cpu_flags
-
cpu_model
-
cpuarch
-
disks
-
dns
-
domain
-
fqdn
-
fqdn_ip4
-
fqdn_ip6
-
gid
-
gpus
-
groupname
-
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
-
pid
-
productname
-
ps
-
pythonexecutable
-
pythonpath
-
pythonversion
-
saltpath
-
saltversion
-
saltversioninfo
-
selinux
-
serialnumber
-
server_id
-
shell
-
systemd
-
uid
-
username
-
uuid
-
virtual
-
zmqversio定義grains數(shù)據(jù)的方法有兩種,一種為在被控主機(jī)定制配置文件:另一種是通過主控端擴(kuò)展模塊API實(shí)現(xiàn)。我這這里直說主控端,畢竟我們要搞自動(dòng)化運(yùn)維,需要批量操作。主控端擴(kuò)展模塊定制grains數(shù)據(jù)
vim
/etc/salt/master
file_roots:
base:
//基礎(chǔ)平臺(tái)
-
/srv/salt/base
prod:
//生產(chǎn)平臺(tái)
-
/srv/salt/prod
install
-d
/srv/salt/base/_grains vim
/srv/salt/base/_grains/grains_openfile.py
//編寫一個(gè)python腳本獲取max_openfile的值
#!/usr/bin/env
python
#
-*-
coding:utf-8
-*-
import
os,sys,commands
#定義一個(gè)獲取最大打開文件數(shù)的函數(shù),函數(shù)名稱沒有要求,符合python函數(shù)命名規(guī)則即可
def
Grains_openfile():
'''
return
os
max
open
file
of
grains
value
'''
grains
=
{}
#初始化一個(gè)字典,變量名一定要用grains,以便Saltstack識(shí)別
_open_file=65535
#初始化一個(gè)默認(rèn)值
try:
getulimit
=
commands.getstatusoutput('source
/etc/profile;ulimit
-n')
except
Exception,e:
pass
if
getulimit[0]==0:
_open_file=int(getulimit[1])
grains['max_open_file']
=
_open_file
#將獲取的ulimit
-n的結(jié)果進(jìn)行賦值,其中'max_open_file'就是grains項(xiàng),——open_file就是grains的值
return
grains 最后同步模塊到指定被控主機(jī)并刷新生效,因?yàn)間rains比較適合采集靜態(tài)類的數(shù)據(jù),比如硬件、內(nèi)核信息等,當(dāng)有動(dòng)態(tài)類的功能需求時(shí),需要進(jìn)行刷新。同步操作:服務(wù)端master
[root@salt-master
base]#
salt
'salt-minion01'
saltutil.sync_all
salt-minion01:
beacons:
engines:
grains:
-
grains.grains_openfile
log_handlers:
modules:
output:
proxymodules:
renderers:
returners:
sdb:
states:
utils:
客戶端minion
結(jié)果:文件同步到被控端的cache目錄中
[root@salt-minion01
~]#
find
/
-type
f
-name
grains_openfile.py
/var/cache/salt/minion/files/base/_grains/grains_openfile.py
/var/cache/salt/minion/extmods/grains/grains_openfile.py
#注:/var/cache/salt/minion/extmods/grains/為擴(kuò)展模塊文件最終存放位置,刷新模塊后將在同路徑下生產(chǎn)字節(jié)碼pyc;/var/cache/salt/minion/files/base/_grains/為臨時(shí)存放位置。刷新操作:
[root@salt-master
base]#
salt
'salt-minion01'
sys.reload_modules
salt-minion01:
True
[root@salt-minion01
~]#
find
/
-type
f
-name
grains_openfile.py*
/var/cache/salt/minion/files/base/_grains/grains_openfile.py
/var/cache/salt/minion/extmods/grains/grains_openfile.pyc
//多了一個(gè)pyc
/var/cache/salt/minion/extmods/grains/grains_openfile.py查看同步后是否能正常獲取數(shù)據(jù)
[root@salt-master
base]#
salt
'salt-minion01'
grains.item
max_open_file
salt-minion01:
max_open_file:
1024
其他未同步的,并不會(huì)有max_open_file數(shù)據(jù)
[root@salt-master
base]#
salt
'*'
grains.item
max_open_file
salt-master:
max_open_file:
salt-minion01:
max_open_file:
1024
hddcluster2:
max_open_file:
hddcluster4:
max_open_file:
hddcluster3:
max_open_file:
hddcluster1:
max_open_file:
[root@salt-master
base]#
其他未同步的,并不會(huì)有max數(shù)據(jù),也沒有這個(gè)模塊
[root@salt-master
base]#
salt
'*'
grains.item
max
salt-master:
max:
hddcluster2:
max:
salt-minion01:
max:
hddcluster3:
max:
hddcluster4:
max:
hddcluster1:
max:最后再試一下吧,同步所有機(jī)器,再刷新所有機(jī)器[root@salt-master
base]#
salt
'*'
saltutil.sync_all
salt-master:
beacons:
engines:
grains:
-
grains.grains_openfile
log_handlers:
modules:
output:
proxymodules:
renderers:
returners:
sdb:
states:
utils:
salt-minion01:
//這個(gè)同步過了,沒有更新
beacons:
engines:
grains:
log_handlers:
modules:
output:
proxymodules:
renderers:
returners:
sdb:
states:
utils:
hddcluster2:
beacons:
engines:
grains:
-
grains.grains_openfile
log_handlers:
modules:
output:
proxymodules:
renderers:
returners:
sdb:
states:
utils:
hddcluster3:
beacons:
engines:
grains:
-
grains.grains_openfile
log
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 房地產(chǎn)代理銷售合同模板
- 服務(wù)委托合同范本
- 車輛貸款居間服務(wù)合同A年
- 家具購(gòu)銷簡(jiǎn)單合同
- 民爆物品購(gòu)銷合同
- 裝飾合同示范文本
- 技術(shù)服務(wù)合同和技術(shù)開發(fā)合同
- 愛情合同參考范本
- 車位出租合同
- 標(biāo)準(zhǔn)實(shí)木家具購(gòu)銷合同范本
- 數(shù)據(jù)遷移解決方案
- 2024供電營(yíng)業(yè)規(guī)則學(xué)習(xí)課件
- 腦卒中后吞咽障礙患者進(jìn)食護(hù)理-2023中華護(hù)理學(xué)會(huì)團(tuán)體標(biāo)準(zhǔn)
- 2024春蘇教版《亮點(diǎn)給力大試卷》 數(shù)學(xué)四年級(jí)下冊(cè)(全冊(cè)有答案)
- 高考滿分作文常見結(jié)構(gòu)完全解讀
- 專題2-2十三種高考補(bǔ)充函數(shù)歸類(講練)
- 三年級(jí)英語(yǔ)上冊(cè)整冊(cè)書單詞默寫表學(xué)生版(外研版三起)
- 六年級(jí)數(shù)學(xué)上冊(cè)100道口算題(全冊(cè)完整版)
- 高三數(shù)學(xué)開學(xué)第一課
- 系統(tǒng)解剖學(xué)考試重點(diǎn)筆記
評(píng)論
0/150
提交評(píng)論