1. 程式人生 > >(二)SaltStack資料系統之Grains&Pillar

(二)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指令系統