一、测试是否能管理client
使用模块cmd.run 可以查看到client的ip地址
[root@salt_server ~]# salt '*' cmd.run 'ip a' salt_client1: 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:f4:4f:0b brd ff:ff:ff:ff:ff:ff inet 192.168.100.245/24 brd 192.168.100.255 scope global eth0 inet6 fe80::20c:29ff:fef4:4f0b/64 scope link valid_lft forever preferred_lft forever [root@salt_server ~]#
二、查看版本
[root@salt_server ~]# salt --versions-report Salt: 2014.1.0 Python: 2.6.6 (r266:84292, Jun 18 2012, 14:18:47) Jinja2: unknown M2Crypto: 0.20.2 msgpack-python: 0.1.13 msgpack-pure: Not Installed pycrypto: 2.0.1 PyYAML: 3.09 PyZMQ: 2.2.0.1 ZMQ: 3.2.4 [root@salt_server ~]#
关于salt的命令 可以用salt -h 来查看具体用法
三、简单使用salt
salt 在语句的后面加个 -t 时间,就可以做超时控制:
[root@salt_server ~]# salt \* cmd.run 'sleep 3; echo ok' -t 3 salt_client1: ok [root@salt_server ~]#
salt \* 代表所有的在线客户端,离线的是无法显示出来的
使用用shell来表示salt:
[root@salt_server ~]# salt 'salt_client1' cmd.run 'dir' salt_client1: anaconda-ks.cfg install.log.syslog epel-release-6-8.noarch.rpm rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm install.log [root@salt_server ~]#
用正则来查看以salt开头的所有主机的目录
[root@salt_server ~]# salt 'salt_*' cmd.run 'dir' salt_client1: anaconda-ks.cfg install.log.syslog epel-release-6-8.noarch.rpm rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm install.log [root@salt_server ~]#
使用正则E来查看主机
[root@salt_server ~]# salt -E 'salt_client*' test.ping salt_client1: True salt_client2: True [root@salt_server ~]#
使用-L 来用列表方式来表示
[root@salt_server ~]# salt -L 'salt_client1,salt_client2' test.ping salt_client1: True salt_client2: True [root@salt_server ~]#
-N 是查看组。首先我们来添加组
修改配置文件master vim /etc/salt/master nodegroups: salt_group1: 'L@salt_client1,salt_client2' salt_group2: 'salt_client1' [root@salt_server ~]# /etc/rc.d/init.d/salt-master restart Stopping salt-master daemon: [ OK ] Starting salt-master daemon: [ OK ] [root@salt_server ~]#
然后在查看
-N 参数
salt_client1 这里指组名
test.ping这里指命令
[root@salt_server ~]# salt -N salt_group1 test.ping salt_client1: True salt_client2: True [root@salt_server ~]# salt -N salt_group2 test.ping salt_client1: True [root@salt_server ~]# [root@salt_server ~]# salt -N salt_group1 cmd.run 'hostname' salt_client1: salt_client1 salt_client2: salt_client2 [root@salt_server ~]#
关于组的混合匹配 高级用法:
http://blog.cunss.com/wp-content/uploads/2014/02/20140210173734_68950.png
测试所有主机是否能连接
[root@salt_server ~]# salt '*' test.ping salt_client1: True
测试salt_client1是否能连接
[root@salt_server ~]# salt 'salt_client1' test.ping salt_client1: True [root@salt_server ~]# [root@salt_server ~]# salt-syndic -l debug salt '*' -b 10 test.ping salt -G 'os:RedHat' --batch-size 25% apache.signal restart
四、使用grains 插件
grains 是salt客户端自己收集机器的相关信息,以及特称,在服务端我们可以使用-G参数来查看
使用-G来应用salt
这个参数很强大会根据用grair来指定最新的grains z这个参数和puppet里面的facter差不多
查看帮助如下:
-G, --grain Instead of using shell globs to evaluate the target use a grain value to identify targets, the syntax for the target is the grain key followed by a globexpression: "os:Arch*"
我的系统是CentOS我就输入CentOS。
[root@salt_server ~]# salt -G 'os:CentOS' test.ping salt_client1: True [root@salt_server ~]# [root@salt_server ~]# salt '*' grains.item os salt_client1: os: CentOS [root@salt_server ~]# [root@salt_server ~]# salt -G 'cpuarch:x86_64' grains.item num_cpus salt_client1: num_cpus: 1 salt_client2: num_cpus: 1 [root@salt_server ~]# [root@salt_server ~]# salt '*' grains.items查看有多少项目参数 [root@salt_server ~]# salt '*' grains.ls查看有哪些参数
[root@salt_server salt]# salt 'salt_client1' grains.items 查看某个机器的基本信息 salt_client1: biosreleasedate: 07/31/2013 biosversion: 6.00 cpu_flags: fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc up arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 x2apic popcnt xsave avx hypervisor lahf_lm ida arat epb xsaveopt pln pts dts cpu_model: Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz cpuarch: x86_64 defaultencoding: UTF8 defaultlanguage: en_US domain: external_ip: fqdn: salt_client1 fqdn_ip4: 192.168.100.245 fqdn_ip6: gpus: {'model': 'SVGA II Adapter', 'vendor': 'unknown'} host: salt_client1 hwaddr_interfaces: {'lo': '00:00:00:00:00:00', 'eth0': '00:0c:29:f4:4f:0b'} id: salt_client1 ip_interfaces: {'lo': ['127.0.0.1'], 'eth0': ['192.168.100.245']} ipv4: 127.0.0.1 192.168.100.245 ipv6: kernel: Linux kernelrelease: 2.6.32-279.el6.x86_64 localhost: salt_client1 lsb_distrib_codename: Final lsb_distrib_id: CentOS lsb_distrib_release: 6.3 manufacturer: VMware, Inc. master: 192.168.100.228 mem_total: 988 nodename: salt_client1 num_cpus: 1 num_gpus: 1 os: CentOS os_family: RedHat osarch: x86_64 oscodename: Final osfinger: CentOS-6 osfullname: CentOS osmajorrelease: 6 3 osrelease: 6.3 path: /sbin:/usr/sbin:/bin:/usr/bin productname: VMware Virtual Platform ps: ps -efH 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/lib/python2.6/site-packages pythonversion: 2.6.6.final.0 saltpath: /usr/lib/python2.6/site-packages/salt saltversion: 2014.1.0 saltversioninfo: 2014 1 0 serialnumber: VMware-56 4d 4b 45 d5 06 b3 89-63 e6 be 9b 64 f4 4f 0b server_id: 21436595 shell: /bin/bash virtual: VMware [root@salt_server salt]#
五、使用salt来同步一个第一个简单的文件
[root@salt_server ~]# mkdir /srv/salt/base -p [root@salt_server ~]# cd /srv/salt/base [root@salt_server salt]# echo "test salt first file" >> first.txt [root@salt_server salt]# salt 'salt_client1' cp.get_file salt://first.txt /home/first.txt salt_client1: /home/first.txt [root@salt_server salt]#
在客户端查看
[root@salt_client1 home]# pwd /home [root@salt_client1 home]# cat first.txt test salt first file [root@salt_client1 home]#
[root@salt_server salt]# salt-run jobs.list_jobs 最近操作文件的配置 [root@salt_server salt]# salt-run jobs.lookup_jid 20140317113642863799 后面是返回值 配合第一个一起使用
六、使用salt来查看客户端系统相关信息
查看当前是否有任务运行
[root@salt_server salt]# salt-run jobs.active {} [root@salt_server salt]#
查看所有的主机名
[root@salt_server salt]# salt '*' cmd.run hostname salt_client1: salt_client1 [root@salt_server salt]#
查看系统
[root@salt_server salt]# salt '*' grains.item os salt_client1: os: CentOS [root@salt_server salt]#
查看客户端IP地址
[root@salt_server salt]# salt 'salt_client1' network.interfaces salt_client1: ---------- eth0: ---------- hwaddr: 00:0c:29:f4:4f:0b inet: ---------- - address: 192.168.100.245 - broadcast: 192.168.100.255 - label: eth0 - netmask: 255.255.255.0 up: True lo: ---------- hwaddr: 00:00:00:00:00:00 inet: ---------- - address: 127.0.0.1 - broadcast: None - label: lo - netmask: 255.0.0.0 up: True [root@salt_server salt]#
查看硬盘
[root@salt_server salt]# salt 'salt_client1' disk.usage salt_client1: ---------- /: ---------- 1K-blocks: 10321208 available: 8462124 capacity: 14% filesystem: /dev/sda2 used: 1334796 /boot: ---------- 1K-blocks: 198337 available: 159996 capacity: 15% filesystem: /dev/sda1 used: 28101 /dev/shm: ---------- 1K-blocks: 506352 available: 506352 capacity: 0% filesystem: tmpfs used: 0 /home: ---------- 1K-blocks: 10321208 available: 9642808 capacity: 2% filesystem: /dev/sda3 used: 154112 /media: ---------- 1K-blocks: 19134336 available: 4939136 capacity: 73% filesystem: 192.168.100.249:/opt/ used: 13223232 /mnt: ---------- 1K-blocks: 19134336 available: 4939136 capacity: 73% filesystem: 192.168.100.249:/opt/CentOS used: 13223232 [root@salt_server salt]#
[root@salt_server ~]# salt 'salt_client1' cmd.run 'df -h' salt_client1: Filesystem Size Used Avail Use% Mounted on /dev/sda2 9.9G 1.3G 8.1G 14% / tmpfs 495M 0 495M 0% /dev/shm /dev/sda1 194M 28M 157M 15% /boot /dev/sda3 9.9G 151M 9.2G 2% /home 192.168.100.249:/opt/CentOS 19G 13G 4.8G 73% /mnt 192.168.100.249:/opt/ 19G 13G 4.8G 73% /media [root@salt_server ~]#
七、使用salt来管理系统软件包
安装包
[root@salt_server salt]# salt 'salt_client1' pkg.install telnet salt_client1: ---------- telnet: ---------- new: 0.17-47.el6 old: [root@salt_server salt]#
查看安装的包,这里安装的包指的不是用salt安装的包 而是全部的包
[root@salt_server salt]# salt 'salt_client1' pkg.list_pkgs
删除刚安装的包
[root@salt_server salt]# salt 'salt_client1' pkg.remove telnet salt_client1: ---------- telnet: ---------- new: sal old: 0.17-47.el6 [root@salt_server salt]#
在客户端查看
[root@salt_client1 salt]# rpm -qa | grep telnet telnet-0.17-47.el6.x86_64 [root@salt_client1 salt]# telnet telnet> ^C [root@salt_client1 salt]# rpm -qa | grep telnet [root@salt_client1 salt]#
查看repos内容:
[root@salt_server salt]# salt 'salt_client1' pkg.list_repos salt_client1: ---------- source: ---------- baseurl: file:///mnt/CentOS6.3 enabled: 1 file: /etc/yum.repos.d/source.repo gpgcheck: 0 name: source source1: ---------- baseurl: file:///mnt/saltstack enabled: 1 file: /etc/yum.repos.d/source.repo gpgcheck: 0 name: source1 [root@salt_server salt]#
如果想查看所有minion的链接情况,我们可以用如下命令来查看
[root@salt_server ~]# salt '*' test.ping salt_client1: True [root@salt_server ~]# salt-run manage.status down: up: - salt_client1 [root@salt_server ~]#
删除客户端的一个用户:
[root@salt_server ~]# salt 'salt_client1' webutil.userdel /etc/passwd kcc salt_client1: - Deleting password for user kcc [root@salt_server ~]# Space-delimited arguments to the function: [root@salt_server ~]# salt \* cmd.exec_code python 'import sys; print sys.version' salt_client2: 2.6.6 (r266:84292, Jun 18 2012, 14:18:47) [GCC 4.4.6 20110731 (Red Hat 4.4.6-3)] salt_client1: 2.6.6 (r266:84292, Jun 18 2012, 14:18:47) [GCC 4.4.6 20110731 (Red Hat 4.4.6-3)] [root@salt_server ~]#