(二)SaltStack資料系統之Grains&Pillar
目錄
1 SaltStack資料系統之間的區別
名稱 | 儲存位置 | 資料型別 | 資料採集更新方式 | 應用 |
---|---|---|---|---|
Grains | Minion端 | 靜態資料 | Minion啟動時收集,也可以使用saltutil_sync_grains進行重新整理。 | 儲存Minion基本資料。比如用於匹配Minion,資深資料可以用來做資產管理等。 |
Pillar | Master端 | 動態資料 | 在Master端定義,指定給對應的Minion。可以使用saltutil_refresh_pillar重新整理 | 儲存Master指定的資料,只有指定的Minion可以看到。用於敏感資料儲存。 |
2 環境準備
主機名 | IP地址 | 備註 |
---|---|---|
linux-node1.example.com | 10.0.0.77/16 | Master&Minion |
linux-node2.example.com | 10.0.0.88/16 | Minion |
/etc/hosts檔案解析
# 兩個節點都做解析
cat >>/etc/hosts<<EOF
10.0.0.77 linux-node1.example.com linux-node1
10.0.0.88 linux-node2.example.com linux-node2
EOF
操作的時候一定要注意空格的數量,格式正確
3 Grains測試
檢視minion全部靜態變數
[[email protected] salt]# salt 'linux-node1*' grains.items
linux-node1.example.com:
----------
SSDs:
biosreleasedate:
05/19/2017
biosversion:
6.00
cpu_flags:
- fpu
- vme
- de
- pse
- tsc
- msr
- pae
- mce
- cx8
- apic
- sep
- mtrr
- pge
- mca
- cmov
- pat
- pse36
- clflush
- mmx
- fxsr
- sse
- sse2
- ss
- syscall
- nx
- pdpe1gb
- rdtscp
- lm
- constant_tsc
- up
- arch_perfmon
- xtopology
- tsc_reliable
- nonstop_tsc
- unfair_spinlock
- pni
- pclmulqdq
- ssse3
- fma
- cx16
- pcid
- sse4_1
- sse4_2
- x2apic
- movbe
- popcnt
- tsc_deadline_timer
- aes
- xsave
- avx
- f16c
- rdrand
- hypervisor
- lahf_lm
- abm
- 3dnowprefetch
- arat
- xsaveopt
- fsgsbase
- bmi1
- avx2
- smep
- bmi2
- invpcid
- rdseed
- adx
cpu_model:
Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz
cpuarch:
x86_64
domain:
example.com
fqdn:
linux-node1.example.com
fqdn_ip4:
- 10.0.0.77
fqdn_ip6:
gpus:
|_
----------
model:
SVGA II Adapter
vendor:
unknown
host:
linux-node1
hwaddr_interfaces:
----------
eth0:
00:0c:29:af:bb:6d
eth1:
00:0c:29:af:bb:77
lo:
00:00:00:00:00:00
id:
linux-node1.example.com
init:
upstart
ip4_interfaces:
----------
eth0:
- 10.0.0.77
eth1:
- 172.16.1.77
lo:
- 127.0.0.1
ip6_interfaces:
----------
eth0:
- fe80::20c:29ff:feaf:bb6d
eth1:
- fe80::20c:29ff:feaf:bb77
lo:
- ::1
ip_interfaces:
----------
eth0:
- 10.0.0.77
- fe80::20c:29ff:feaf:bb6d
eth1:
- 172.16.1.77
- fe80::20c:29ff:feaf:bb77
lo:
- 127.0.0.1
- ::1
ipv4:
- 10.0.0.77
- 127.0.0.1
- 172.16.1.77
ipv6:
- ::1
- fe80::20c:29ff:feaf:bb6d
- fe80::20c:29ff:feaf:bb77
kernel:
Linux
kernelrelease:
2.6.32-696.el6.x86_64
locale_info:
----------
defaultencoding:
UTF8
defaultlanguage:
en_US
detectedencoding:
UTF-8
localhost:
linux-node1.example.com
lsb_distrib_codename:
Final
lsb_distrib_id:
CentOS
lsb_distrib_release:
6.9
machine_id:
d6c61262b2c5d7669cd188a60000000a
manufacturer:
VMware, Inc.
master:
10.0.0.77
mdadm:
mem_total:
474
nodename:
linux-node1.example.com
num_cpus:
1
num_gpus:
1
os:
CentOS
os_family:
RedHat
osarch:
x86_64
oscodename:
Final
osfinger:
CentOS-6
osfullname:
CentOS
osmajorrelease:
6
osrelease:
6.9
osrelease_info:
- 6
- 9
path:
/sbin:/usr/sbin:/bin:/usr/bin
productname:
VMware Virtual Platform
ps:
ps -efH
pythonexecutable:
/usr/bin/python2.6
pythonpath:
- /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/gtk-2.0
- /usr/lib/python2.6/site-packages
- /usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg-info
pythonversion:
- 2
- 6
- 6
- final
- 0
saltpath:
/usr/lib/python2.6/site-packages/salt
saltversion:
2015.5.10
saltversioninfo:
- 2015
- 5
- 10
- 0
selinux:
----------
enabled:
False
enforced:
Disabled
serialnumber:
VMware-56 4d 70 17 b9 dc 1e ce-8e c3 df f2 5f af bb 6d
server_id:
1981947194
shell:
/bin/bash
virtual:
VMware
zmqversion:
3.2.5
顯示grains全部變數名稱
[[email protected] ~]# salt 'linux-node1*' grains.ls
linux-node1.example.com:
- 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
- roles
- saltpath
- saltversion
- saltversioninfo
- selinux
- serialnumber
- server_id
- shell
- virtual
- web
- zmqversion
3.1 Grains之-G引數使用
單個顯示grains資訊
[[email protected] salt]# salt 'linux-node1*' grains.item fqdn_ip4
linux-node1.example.com:
----------
fqdn_ip4:
- 10.0.0.77
[[email protected] salt]# salt 'linux-node1*' grains.item fqdn
linux-node1.example.com:
----------
fqdn:
linux-node1.example.com
# 或者是grains.get來獲取單個資訊(和grains.item顯示效果不同)
[[email protected] salt]# salt 'linux-node1*' grains.get fqdn
linux-node1.example.com:
linux-node1.example.com
[[email protected] salt]# salt 'linux-node1*' grains.get fqdn_ip4
linux-node1.example.com:
- 10.0.0.77
[[email protected] salt]# salt '*' grains.get fqdn_ip4
linux-node1.example.com:
- 10.0.0.77
linux-node2.example.com:
- 10.0.0.88
獲取os資訊
[[email protected] salt]# salt '*' grains.get os
linux-node1.example.com:
CentOS
linux-node2.example.com:
CentOS
# -G指定Grains匹配如果os為Centos的執行w命令
[[email protected] salt]# salt -G os:Centos cmd.run 'w'
linux-node1.example.com:
09:52:06 up 1 day, 2:50, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM [email protected] IDLE JCPU PCPU WHAT
root tty1 - 19May18 9:09m 0.04s 0.04s -bash
root pts/1 10.0.0.1 09:32 0.00s 0.38s 0.34s /usr/bin/python
linux-node2.example.com:
09:52:06 up 1 day, 50 min, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM [email protected] IDLE JCPU PCPU WHAT
root pts/1 10.0.0.1 09:32 17:45 0.02s 0.02s -bash
# 這樣在實際環境中可以實現不同的伺服器執行不同的命令
3.2 自定義grains
在/etc/salt/minion檔案中搜索grains,並把以下注釋給去掉
[root@linux-node1 ~]# vim /etc/salt/minion
grains:
roles:
- webserver
- memcache
# 重啟minion(或者重新整理grains)
[root@linux-node1 ~]# /etc/init.d/salt-minion restart
salt '*' saltutil_sync_grains
# 測試(由於前邊我開了node1的兩個角色,故只有node1被匹配)
[root@linux-node1 salt]# salt -G 'roles:memcache' cmd.run "echo This is a test."
linux-node1.example.com:
This is a test.
3.3 基於檔案的grains
注意空格,”:”冒號 後邊有一空格,且自定義的角色不能和配置檔案預設的角色名衝突,如配置檔案中有roles角色名,這裡就不能再定義roles角色名
# 這裡建立的必須是grains檔案
[[email protected] ~]# vim /etc/salt/grains
web: nginx
# 重啟minion
[[email protected] ~]# /etc/init.d/salt-minion restart
# 測試
[[email protected] ~]# salt '*' grains.item web
linux-node2.example.com:
----------
web:
linux-node1.example.com:
----------
web:
nginx
[[email protected] ~]# salt '*' grains.item roles
linux-node2.example.com:
----------
roles:
linux-node1.example.com:
----------
roles:
- webserver
- memcache
[[email protected] ~]# salt -G 'web:nginx' cmd.run "echo TEST."
linux-node1.example.com:
TEST.
3.4 top檔案中匹配grains角色
[root@linux-node1 ~]# cat /srv/salt/top.sls
base:
'web:nginx':
- match: grain
- apache
[root@linux-node1 ~]# salt '*' state.highstate
# 最會有一個報錯,正常,因為在top檔案中沒有匹配到node2
4 Pillar測試
取消master的pillar配置檔案註釋並修改其為True
[root@linux-node1 ~]# vim /etc/salt/master
pillar_opts: True
重啟master
[root@linux-node1 ~]# /etc/init.d/salt-master restart
由於輸出資訊過長這裡就不再列出來,其輸出資訊符合key-value特徵,即python字典,可用python開發
[root@linux-node1 ~]# salt '*' pillar.items
修改配置檔案,搜尋pillar_roots
取消註釋,且pliiar_opts
修改為False
[root@linux-node1 ~]# vim /etc/salt/master
pillar_roots:
base:
- /srv/pillar
pillar_opts: False
建立pillar目錄
[root@linux-node1 ~]# mkdir /srv/pillar/ -p
重啟master
[root@linux-node1 ~]# /etc/init.d/salt-master restart
寫jinjia模版apache.sls
[root@linux-node1 ~]# cat /srv/pillar/apache.sls
{% if grains['os'] == 'CentOS' %}
apache: httpd
{% elif grains['os'] == 'Debian' %}
apache: apache2
{% endif %}
寫pillar的top.sls
[[email protected] ~]# cat /srv/pillar/top.sls
base:
'*':
- apache
測試
[[email protected] ~]# salt '*' pillar.items
linux-node2.example.com:
----------
apache:
httpd
linux-node1.example.com:
----------
apache:
httpd
重新整理pillar後再測試
[[email protected] ~]# salt '*' saltutil.refresh_pillar
linux-node2.example.com:
True
linux-node1.example.com:
True
[[email protected] ~]# salt -I 'apache:httpd' test.ping
linux-node2.example.com:
True
linux-node1.example.com:
True
相關推薦
(二)SaltStack資料系統之Grains&Pillar
目錄 1 SaltStack資料系統之間的區別 名稱 儲存位置 資料型別 資料採集更新方式 應用 Grains Minion端 靜態資料 Minion啟動時收集,也可以使用saltutil_sync_
SaltStack資料系統之Grains
什麼是Grains? Grains是SaltStack的一個元件,存放著minion啟動時收集的底層系統的靜態資訊。Grains中包含諸如執行的作業系統、核心版本、CPU個數、記憶體、主機名、IP地址、物理裝置型號、甚至機器的SN號等非常多的資訊。 Grains是儲存在minion端的,當minio
saltstack數據系統之Grains,pillar
pillar grains Grainsgrains 負責采集客戶端(minion端)一些基本信息 ,這個也完全可以自定義,可以在客戶端自定義,然後自動匯報上來,也可以從服務器端定義然後推下去,采集完後再匯報上來(重啟才收集),也可以使用saltutil.sync_grains進行刷新1.grains
Linux之企業實訓篇——Saltstack自動化管理系統之Grains元件
一、簡介 GRAINS 元件是saltstack中非常重要的一個元件,其主要用於記錄Minion的一些靜態資訊,如比:CPU、記憶體、磁碟、網路等。grains資訊是每次客戶端啟動後自動上報給master的,一旦這些靜態資訊發生改變需要重啟mi
[十二]基礎資料型別之String
在正式介紹String之前,我們先介紹下CharSequence char + sequence 就是字元的序列的意思 Java中萬事萬物都是物件型別 而對於字元的序列,也就是多個char, 這麼一種東西, 使用CharSequence這個介面來描述 既然是介面,自然規定了作為字元序列的基本協議
Saltstack資料系統
1.資料系統Grains Grains靜態資料 1.Grains資料儲存在minion端,minion端的資料資訊 2.當minion啟動時會收集Minion自身的狀態資訊後才載入grins資訊,所以grains資料是靜態的。比如: 作業系統版本,核心版本,CPU,記憶體,硬碟。裝置
電商大資料專案(二)-推薦系統實戰之實時分析以及離線分析
電商大資料專案-推薦系統實戰(一)環境搭建以及日誌,人口,商品分析http://blog.51cto.com/6989066/2325073電商大資料專案-推薦系統實戰之推薦演算法http://blog.51cto.com/6989066/2326209電商大資料專案-推薦系統實戰之實時分析以及離線分析htt
大資料筆記之分散式檔案系統HDFS筆記二
1. 通訊協議 HDFS是一個部署在叢集上的分散式檔案系統,因此,很多資料需要通過網路進行傳輸 , 所有的HDFS通訊協議都是構建在TCP/IP協議基礎之上的, 客戶端通過一個可配置的埠向名稱節點主動
如何選擇版本控制系統之二---Git的研發應用場
nal fix idt max-width 設計理念 ted 過程 style ria 之前寫了一篇《如何選擇版本控制系統 ---為什麽選擇Git版本控制系統》,地址是:http://www.cnblogs.com/goldenfish/p/6876864.html,有興趣
如何選擇版本控制系統之二---Git的研發應用場景
版本控制系統 git 華為軟件開發雲 之前寫了一篇《如何選擇版本控制系統 ---為什麽選擇Git版本控制系統》,地址是:http://laoyudage.blog.51cto.com/12854334/1927409,有興趣的可以去看看,本篇文章算是這個系列的第二篇文章。Git誕生於2002年,由
Xshell連接VMware下Linux系統之二
pan 每次 分享 sso 下載 img 臨時 配置文件 查看 VMware下Ubuntu虛擬機橋接模式連接Xshell 在橋接模式下,VMWare虛擬出來的操作系統就像是局域網中的一臺獨立的主機(主機和虛擬機處於對等地位),它可以訪問網內任何一臺機器。 1、選擇
微擎二次開發教程之系統目錄結構
上傳 定制 配置文件 附加組 htm 需要 數據 二次 ins 今天春哥技術博客和大家分享下關於微擎二次開發教程之系統目錄結構,希望可以幫到大家。 入口腳本入口腳本是應用啟動流程中的第一環,入口文件根據“系統配置文件”初始化了系統的常量、全局變量及全局對象,並將終端用戶的請
saltstack grains pillar
red 有關 其他 任務 安全 font 非默認 alt ack 本節討論系統數據的兩個方面:獲取有關系統的數據以及將數據提供給系統。 Salt 提供兩個不同的子系統來分別執行這些任務: Grains、 Pillar Grains Grains用於獲取有關系統的數據
聊聊高併發系統之限流特技(二)(轉)
上一篇《聊聊高併發系統限流特技-1》講了限流演算法、應用級限流、分散式限流;本篇將介紹接入層限流實現。 接入層限流 接入層通常指請求流量的入口,該層的主要目的有:負載均衡、非法請求過濾、請求聚合、快取、降級、限流、 A/B 測試、服務質量監控
PgSQL基礎之 安裝postgresql資料系統
參考這位仁兄的文章,真的非常好:https://blog.csdn.net/jerry_sc/article/details/76408116#建立資料目錄 後來我又自己寫了一個shell指令碼,來自動化安裝pgsql10.5版本。 #!/bin/bash #進入軟體的制定安裝目錄 echo "進入
資料結構之伸展樹(二)
之前寫了一篇Splay的部落格【資料結構之伸展樹(一)】,只是說了一下了它的原理及核心的伸展操作,後來發現具體在哪裡應用splay我還是分不大清。 事實上,Splay常常用於實現可分裂與合併的序列,舉個板栗,比如給你一個數組,將陣列從某一個地方分成倆陣列,或者給你倆陣列,將他們直接連線成一個
分散式系統之資料分片前言2
轉載:https://www.cnblogs.com/xybaby/p/7076731.html 目錄 三種資料分片方式 hash方式: 一致性hash range based 小結: 分片特徵值的選擇
分散式系統之資料分片前言1
轉載:https://www.cnblogs.com/xybaby/p/7076731.html 目錄 寫在前面 帶著問題出發 資料分片 資料冗餘 其他 總結: 正文 很長一段時間,對分散式系統都比較感興趣,也
資料結構之-平衡二叉樹(AVL)
背景 不同結構的二叉查詢樹,查詢效率有很大的不同。如何解決這個問題呢?關鍵在於如何最大限度的減小樹的深度。正是基於這個想法,平衡二叉樹出現了。 前言 平衡二叉搜尋樹(英語:Balanced Binary Tree)是一種結構平衡的二叉搜尋樹。 它能在O(log n)時間內完成插入、查詢和
菜鷄日記——《彙編與介面技術》第3-3章 80X86指令系統 之 資料傳送指令
第3-3章 80X86指令系統