Saltstack_使用指南06_遠程執行-指定目標

来源:https://www.cnblogs.com/zhanglianghhh/archive/2019/04/08/10673508.html
-Advertisement-
Play Games

1. 主機規劃 Targeting Minions文檔 另請參見:自動化運維神器之saltstack (三)節點組及複合匹配器 註意事項 修改了master或者minion的配置文件,那麼必須重啟對應的服務。 2. 目標指定方式 Letter Match Type Example Alt Delim ...


 

1. 主機規劃

 

Targeting Minions文檔

https://docs.saltstack.com/en/latest/contents.html

 

另請參見:自動化運維神器之saltstack (三)節點組及複合匹配器

 

註意事項

修改了master或者minion的配置文件,那麼必須重啟對應的服務。

 

2. 目標指定方式

Letter

Match Type

Example

Alt Delimiter?

G

Grains glob

G@os:Ubuntu

Yes

E

PCRE Minion ID

E@web\d+\.(dev|qa|prod)\.loc

No

P

Grains PCRE

P@os:(RedHat|Fedora|CentOS)

Yes

L

List of minions

[email protected],minion3.domain.com or bl*.domain.com

No

I

Pillar glob

I@pdata:foobar

Yes

J

Pillar PCRE

J@pdata:^(foo|bar)$

Yes

S

Subnet/IP address

[email protected]/24 or [email protected]

No

R

Range cluster

R@%foo.bar

No

Matchers can be joined using boolean andor, and not operators.  【複合匹配的時候】

 

2.1. 當前有哪些minion

1 [root@salt100 ~]# salt '*' test.ping
2 salt02:
3     True
4 salt100:
5     True
6 salt03:
7     True
8 salt01:
9     True

 

3. 通過minion id匹配

3.1. 通配符匹配

在 top file 中也仍然適用。【推薦使用】

 1 # Match all minions:
 2 salt '*' test.ping
 3 
 4 # Match all minions in the example.net domain or any of the example domains:
 5 salt '*.example.net' test.ping
 6 salt '*.example.*' test.ping
 7 
 8 # Match all the 「webN」 minions in the example.net domain (web1.example.net, web2.example.net … webN.example.net):
 9 salt 'web?.example.net' test.ping
10 
11 # Match the 「web1」 through 「web5」 minions:
12 salt 'web[1-5]' test.ping
13 
14 # Match the 「web1」 and 「web3」 minions:
15 salt 'web[1,3]' test.ping
16 
17 # Match the 「web-x」, 「web-y」, and 「web-z」 minions:
18 salt 'web-[x-z]' test.ping

 

3.2. 正則表達式(-E)

使用較少,因為正則寫錯的幾率會大些。

 

正則規則參見:

https://blog.csdn.net/woshizhangliang999/article/details/46859161

 

1 # Match both 「web1-prod」 and 「web1-devel」 minions:
2 salt -E 'web1-(prod|devel)' test.ping

 

3.2.1. 在 top file 中的使用

1 base:
2   'web1-(prod|devel)':
3   - match: pcre  # 使用正則匹配
4   - webserver

 

3.3. 列表匹配(-L)

salt -L 'web1,web2,web3' test.ping  

 

4. 使用grains指定(-G)

1 # For example, the following matches all CentOS minions:
2 salt -G 'os:CentOS' test.ping
3 
4 # Match all minions with 64-bit CPUs, and return number of CPU cores for each matching minion:
5 salt -G 'cpuarch:x86_64' grains.item num_cpus

 

4.1. 嵌套匹配【細粒度匹配】

 1 [root@salt100 ~]# salt -G 'ip_interfaces:eth0' test.ping
 2 salt01:
 3     True
 4 salt02:
 5     True
 6 salt03:
 7     True
 8 salt100:
 9     True
10 [root@salt100 ~]# salt -G 'ip_interfaces:eth0:*11*' test.ping
11 salt01:
12     True

 

5. 使用pillar指定(-I)

像grains匹配一樣,也支持嵌套匹配。

1 # 具體匹配
2 salt -I 'somekey:specialvalue' test.ping

 

5.1. 嵌套匹配【細粒度匹配】

1 [root@salt100 ~]# salt -I 'level1:level2:my_user:*zhang*' test.ping 
2 salt03:
3     True
4 salt02:
5     True

 

6. 子網/IP 地址匹配(-S)

1 # Minions can easily be matched based on IP address, or by subnet
2 salt -S 172.16.1.11 test.ping     # 具體地址
3 salt -S 172.16.1.0/24 test.ping   # 網段
4 salt -S fe80::20c:29ff:fe95:1b7a test.ping  # IPv 6 具體配置
5 salt -S 2001:db8::/64 test.ping             # IPv 6 網段配置

 

6.1. 用於複合匹配

1 # Ipcidr matching can also be used in compound matches
2 salt -C '[email protected]/24 and G@os:Debian' test.ping

 

6.2. 用於pillar和狀態的top file匹配

1 '172.16.0.0/12':
2    - match: ipcidr  # 匹配方式
3    - internal

 

7. 複合匹配(-C)

Matchers can be joined using boolean andor, and not operators.  【複合匹配的時候】

 

 1 # the following string matches all 「Debian minions」 with a hostname that begins with 「webserv」, as well as any minions that have a hostname which matches the regular expression 「web-dc1-srv.* 」:
 2 salt -C 'webserv* and G@os:Debian or E@web-dc1-srv.*' test.ping
 3 
 4 # Excluding a minion based on its ID is also possible:
 5 salt -C 'not web-dc1-srv' test.ping
 6 
 7 # Versions prior to 2015.8.0 a leading 「not」 was not supported in compound matches. Instead, something like the following was required:
 8 salt -C '* and not G@kernel:Darwin' test.ping
 9 
10 # Excluding a minion based on its ID was also possible:
11 salt -C '* and not web-dc1-srv' test.ping

 

7.1. 在 top file 中的使用

1 base:
2   'webserv* and G@os:Debian or E@web-dc1-srv.*':
3     - match: compound  # 複合匹配
4     - webserver

 

7.2. 優先匹配

1 # 可以使用括弧實現優先匹配
2 # 一定要註意括弧和目標之間需要「空格」。不遵守此規則可能導致錯誤的目標!
3 salt -C '( ms-1 or G@id:ms-3 ) and G@id:ms-3' test.ping

 

7.3. 替換分隔符

1 # 預設為 「:」 改為其他字元分割
2 salt -C 'J|@foo|bar|^foo:bar$ or J!@gitrepo!https://github.com:example/project.git' test.ping

 

案例1

 1 [root@salt100 ~]# salt -C 'G@os:redhat03' test.ping
 2 salt01:
 3     True
 4 [root@salt100 ~]# 
 5 [root@salt100 ~]# salt -C 'G|@os|redhat03' test.ping  # 將分隔符從「:」 改為「| 6 salt01:
 7     True
 8 [root@salt100 ~]# salt -C 'G!@os!redhat03' test.ping  #將分隔符從「:」 改為「! 9 salt01:
10     True
11 [root@salt100 ~]# salt -C 'G!@os!redhat03 or salt02' test.ping 
12 salt02:
13     True
14 salt01:
15     True

 

案例2

 1 [root@salt-master-7 ~]# salt '*' pillar.item getos
 2 10.0.0.112:
 3     ----------
 4     getos:
 5         ----------
 6         apache:
 7             httpd
 8         git:
 9             git
10 172.16.1.111:
11     ----------
12     getos:
13         ----------
14         apache:
15             apache2:kkk
16         git:
17             git-core
18 salt-master-7:
19     ----------
20     getos:
21         ----------
22         apache:
23             httpd
24         git:
25             git
26 [root@salt-master-7 ~]# salt -I 'getos:apache:apache2:kkk' test.ping
27 172.16.1.111:
28     True
29 [root@salt-master-7 ~]# salt -C 'I@getos:apache:apache2:kkk' test.ping    # 因為有 apache2:kkk ,所以在某些情況下會出現錯誤 
30 172.16.1.111:
31     True
32 [root@salt-master-7 ~]# 
33 [root@salt-master-7 ~]# salt -C 'I#@getos#apache#apache2:kkk' test.ping   # 表示使用 # 作為分隔符,而不是 : 
34 172.16.1.111:
35     True

 

8. 節點組(-N)

備註:

1 1、當向主配置文件添加或修改節點組時,必須重新啟動master,以便完全識別這些更改。
2 2、在不重啟的情況下,可以使用命令行中 -N 作為目標的有限功能。

 

8.1. /etc/salt/master 配置

 1 # The nodegroups master config file parameter is used to define nodegroups. Here's an example nodegroup configuration within 「/etc/salt/master」:
 2 nodegroups:
 3   group1: '[email protected],bar.domain.com,baz.domain.com or bl*.domain.com'
 4   group2: 'G@os:Debian and foo.domain.com'
 5   group3: 'G@os:Debian and N@group1'
 6   group4:
 7     - 'G@foo:bar'
 8     - 'or'
 9     - 'G@foo:baz'
10 
11 # As of the 2017.7.0 release of Salt, group names can also be prepended with a dash【破折號】. This brings the usage in line with many other areas of Salt. For example:
12 # 組節點也可以使用 如下方式。  組名前面到破折號「-13 nodegroups:
14   - group1: '[email protected],bar.domain.com,baz.domain.com or bl*.domain.com'
15 
16 註意:
17 Nodegroups可以參考group3中看到的其他Nodegroups,確保沒有迴圈引用。迴圈引用將被檢測到,並導致部分擴展產生日誌錯誤消息。
18 註意:
19     「N@」 不能在命令行和top file中使用,只能在master config 中使用

 

8.2. 命令行匹配

salt -N group1 test.ping

 

8.3. 在 top file 中的使用

1 base:
2   group1:
3     - match: nodegroup  # 使用節點組匹配
4     - webserver

 

8.4. 根據列表的minion IDs定義為節點組

 1 # 常規的定義方式
 2 nodegroups:
 3   group1: L@host1,host2,host3
 4 
 5 # YAML 定義方式
 6 nodegroups:
 7   group1:
 8     - host1
 9     - host2
10     - host3

 

9. 批量大小(-b)

1 # The 「-b」 (or 「--batch-size」) option allows commands to be executed on only a specified number of minions at a time.
2 # 同一時間執行多少 minion,支持百分比和數字。  
3 salt '*' -b 10 test.ping  # 同一時間執行 10 台,完畢後執行另外 10 台,依次執行下去
4 salt '*' -b 80% test.ping  # 同一時間執行 80% 的minion 端,完畢後執行另外 80%【實際是最後的 20%】。
5 salt -G 'os:RedHat' --batch-size 25% apache.signal restart  # 
6 
7 # --batch-wait minion返回後,等待多少秒在發送命令給新的minion
8 salt '*' -b 25% --batch-wait 5 test.ping   # 第一批minion反饋後,等待 5 秒後,在發送命令給下一批的minion。

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近想給自己的代辦清單任務微信小程式想加個語音識別識別功能,廢話不多說,直接說重點,語音識別使用的是百度語音識別api,因為微信小程式的錄音輸入文件目前只能是mp3或aac 但是百度語音識別不支持這兩種(百度api介面文檔上有說明),所以需要把音頻格式轉換一下,我這邊使用的是Alvas.Audio. ...
  • Docker的volume捲 為了能持久話保存和共用容器的數據。 使用docker volume捲的兩種方式 1:數據捲 2:數據捲容器 1:數據捲 數據捲:數據捲會繞過docker 的ufs 直接寫在物理設備上,對數據捲的操作可以及時生效,並且數據捲是可以進行共用重用的,為一個或者多個容器提供訪問 ...
  • 轉自:https://mp.weixin.qq.com/s/iwtdISME4VotLgnuAhtflQ 很多公司技術支持崗位的工作,如配置功能變數名稱,部署環境,修改複位配置,服務重啟,擴容縮容,梳理和完善監控,根據開發的需要查找日誌等工作,需要和開發進行大量的溝通,如什麼是外網功能變數名稱,什麼是內網功能變數名稱、A ...
  • 原文鏈接:Create media for automated unattended install of Windows 10 我從來沒看到過像上面的文章一樣這麼詳細的描述過Windows10的無人值守安裝過程,看完長知識了,值得一看。之後我會將自己的製作過程發出來,讓大家學習一下。 只為了學習, ...
  • 1.使用tree命令查看根目錄的樹結構 如果沒有tree命令,可以使用yum進行安裝 執行命令後,即可看到根下一共有19個目錄 . 當前目錄 / 根目錄 /bin 存放必要的命令; 軟連接 /usr/bin /boot 存放內核以及啟動所需的文件; /dev 存放硬體設備文件 /etc 存放系統配置 ...
  • 1. 主機規劃 遠程執行教程文檔 所有模塊文檔 模塊在機器上存在的位置 註意事項 2. 使用格式 2.1. 指定目標 上一篇文章詳細說過,這裡簡單說下 2.2. 指定執行模塊 2.3. 執行參數 3. 使用示例 3.1. network 3.2. service 3.3. cp【可使用Salt-cp ...
  • Windows 使用 L2TP 協議連接VPN服務 首先, 點擊"添加 VPN 連接" 其次, 選擇 L2TP 協議 此時若嘗試連接發現會失敗, 打開網路共用中心, 會發現多了一個 VPN 的連接, 右鍵屬性 勾選相應選項, 再嘗試連接即可成功. ...
  • 先說BUG,最近要做項目需要樹莓派和陀螺儀,資金充足的話肯定是買一個硬體卡爾曼濾波的感測器類似JY901模塊,資金不足的就買MPU6050。 網上關於MPU6050在樹莓派上的代碼還能用,關於JY901的代碼真的是千奇百怪,而且複製現象特別嚴重,有很多系統本身有問題,導致很多像我一樣的新手在上面浪費 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...