saltstack实战2--远程执行之目标(target)
target 就是目标的意思,你要在那台机器上执行此命令或此状态。或者说将此动作或者状态文件推送给谁来执行,让那个minion执行可以进行一些匹配
对于拥有大量机器的环境,如果单独一台台的执行指定minion去执行,反而违saltstack设计的初衷。
它有如下参数可以使用
1、
globbing 默认
1 2 3 4 | [root@master scripts] # salt 'minion01' test.ping minion01: True [root@master scripts] # |
2、
-L,--list,以主机id名列表的形式进行过滤,不同主机id名称使用逗号分离。
1 2 3 4 5 6 | [root@master scripts] # salt -L 'minion01,minion02' test.ping minion02: True minion01: True [root@master scripts] # |
3、
-E,--pcre,通过正则表达式进行匹配:
1 2 3 4 5 6 7 8 9 10 11 12 | [root@master scripts] # salt -E '.*01' test.ping minion01: True [root@master scripts] # salt -E 'minion*' test.ping minion02: True minion01: True [root@master scripts] # salt -E 'm.*02' test.ping minion02: True [root@master scripts] # |
4、
-G,--grain,根据被控主机的grains信息进行匹配过滤,格式为:<grain value>:<grain expression>
grains是存放在minion上的主机信息,包括系统信息和硬件信息等,我们能看到有很多项,使用grains.items能看到
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 | [root@master scripts] # salt 'minion01' grains.items minion01: ---------- SSDs: biosreleasedate: 07 /02/2015 biosversion: 6.00 cpu_flags: - fpu - vme - de - pse - tsc - msr - pae - mce - cx8 - apic - sep - mtrr - pge - mca - cmov - pat - pse36 - clflush - dts - mmx - fxsr - sse - sse2 - ss - syscall - nx - pdpe1gb - rdtscp - lm - constant_tsc - arch_perfmon - pebs - bts - xtopology - tsc_reliable - nonstop_tsc - aperfmperf - 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 - ida - arat - xsaveopt - pln - pts - dts - fsgsbase - bmi1 - hle - avx2 - smep - bmi2 - invpcid - rtm - rdseed - adx cpu_model: Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz cpuarch: x86_64 domain: fqdn: minion01 fqdn_ip4: fqdn_ip6: gpus: |_ ---------- model: SVGA II Adapter vendor: unknown host: minion01 hwaddr_interfaces: ---------- eth0: 00:0c:29:22:4b:e9 lo: 00:00:00:00:00:00 id : minion01 init: upstart ip4_interfaces: ---------- eth0: - 10.0.1.172 lo: - 127.0.0.1 ip6_interfaces: ---------- eth0: - fe80::20c:29ff:fe22:4be9 lo: - ::1 ip_interfaces: ---------- eth0: - 10.0.1.172 - fe80::20c:29ff:fe22:4be9 lo: - 127.0.0.1 - ::1 ipv4: - 10.0.1.172 - 127.0.0.1 ipv6: - ::1 - fe80::20c:29ff:fe22:4be9 kernel: Linux kernelrelease: 2.6.32-504.el6.x86_64 locale_info: ---------- defaultencoding: UTF8 defaultlanguage: en_US detectedencoding: UTF-8 localhost: minion01 lsb_distrib_codename: Final lsb_distrib_id: CentOS lsb_distrib_release: 6.6 machine_id: 749e39b6649273bf0c83d26300000026 manufacturer: VMware, Inc. master: master mdadm: mem_total: 3946 nodename: minion01 num_cpus: 4 num_gpus: 1 os: CentOS os_family: RedHat osarch: x86_64 oscodename: Final osfinger: CentOS-6 osfullname: CentOS osmajorrelease: 6 osrelease: 6.6 osrelease_info: - 6 - 6 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/gst-0 .10 - /usr/lib64/python2 .6 /site-packages/gtk-2 .0 - /usr/lib64/python2 .6 /site-packages/webkit-1 .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 d2 3c be 05 36 b5-e6 19 4e ef 0b 22 4b e9 server_id: 1310197239 shell: /bin/sh virtual: VMware zmqversion: 3.2.5 [root@master scripts] # |
使用方式如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [root@master scripts] # salt 'minion01' grains.get os minion01: CentOS [root@master scripts] # salt 'minion01' grains.get id minion01: minion01 [root@master scripts] # salt -G 'os:CentOS' test.ping minion01: True minion02: True [root@master scripts] # salt -G 'id:minion01' test.ping minion01: True [root@master scripts] # |
5、
-S根据IP或者子网匹配
1 2 3 4 5 6 7 8 9 10 11 12 | [root@master scripts] # salt -S '10.0.1.172' test.ping minion01: True [root@master scripts] # salt -S '10.0.1.173' test.ping minion02: True [root@master scripts] #[root@master master.d]# salt -S '10.0.1.0/24' test.ping minion02: True minion01: True [root@master master.d] # |
6、
-C,组合匹配
根据条件运算符not、and、or去匹配不同规则的主机信息
1 2 3 4 5 6 7 8 9 | [root@master scripts] # salt -C 'E@m.*01 or G@id:minion02' test.ping minion01: True minion02: True [root@master scripts] # salt -C 'E@m.*02 or G@id:minion02' test.ping minion02: True [root@master scripts] # |
7、
-N
关于nodegroups
vim /etc/salt/master
在9到12行提示说在当前目录下新建master.d目录,然后里面的*.conf的配置文件会被默认加载到配置里
1 2 3 4 | 9 # Per default, the master will automatically include all config files 10 # from master.d/*.conf (master.d is a directory in the same directory 11 # as the main master config file). 12 #default_include: master.d/*.conf |
看到定义组,如下格式
711行到713行
1 2 3 4 5 6 7 | 707 ##### Node Groups ##### 708 ########################################## 709 # Node groups allow for logical groupings of minion nodes. A group consists of a group 710 # name and a compound target. 711 #nodegroups: 712 # group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com and bl*.domain.com' 713 # group2: 'G@os:Debian and foo.domain.com' |
接下来我们自定义组。这里我们创建master.d目录,在里面写组的配置。这样和这个master配置文件解耦,防止自己误操作导致master配置文件出问题
自定义两个组,lamp组,成员有minion01和minion02
lnmp组有minion02成员
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [root@master salt] # cd /etc/salt/ [root@master salt] # ls master pki [root@master salt] # mkdir master.d [root@master salt] # ls -F master master.d/ pki/ [root@master salt] # cd master.d/ [root@master master.d] # ls [root@master master.d] # vim groups.conf [root@master master.d] # cat groups.conf nodegroups: lamp: L@minion01,minion02 lnmp: minion02 [root@master master.d] # |
1 2 3 4 5 6 7 8 9 | [root@master master.d] # salt -N 'lamp' test.ping minion01: True minion02: True [root@master master.d] # salt -N 'lnmp' test.ping minion02: True [root@master master.d] # |
8、
-I,--pillar,根据被控主机的pillar信息进行匹配
这里只介绍怎么使用 -I 进行pillar数据的匹配。具体pillar怎么配置的请查看pillar的博文
1 2 3 4 5 6 7 8 | [root@master pillar] # salt '*' pillar.get apache minion01: minion02: httpd [root@master pillar] # salt -I 'apache:httpd' test.ping minion02: True [root@master pillar] # |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥