【移動(dòng)應(yīng)用開發(fā)技術(shù)】Saltstack之Grains組件_第1頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Saltstack之Grains組件_第2頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Saltstack之Grains組件_第3頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Saltstack之Grains組件_第4頁(yè)
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Saltstack之Grains組件_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論