4rwer2 发表于 2014-9-17 10:57:05

saltstack配置应用以及基础用法

一、测试是否能管理client使用模块cmd.run 可以查看到client的ip地址
1
2
3
4
5
6
7
8
9
10
11
12
13
# 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
#





二、查看版本
1
2
3
4
5
6
7
8
9
10
11
12
# 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
#





关于salt的命令 可以用salt -h 来查看具体用法
三、简单使用saltsalt 在语句的后面加个 -t 时间,就可以做超时控制:
1
2
3
4
# salt \* cmd.run 'sleep 3; echo ok' -t 3
salt_client1:
    ok
#





salt \*代表所有的在线客户端,离线的是无法显示出来的
使用用shell来表示salt:
1
2
3
4
5
6
# salt 'salt_client1' cmd.run 'dir'
salt_client1:
    anaconda-ks.cfg   install.log.syslog
    epel-release-6-8.noarch.rpmrpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
    install.log
#




用正则来查看以salt开头的所有主机的目录
1
2
3
4
5
6
# salt 'salt_*'cmd.run 'dir'
salt_client1:
    anaconda-ks.cfg   install.log.syslog
    epel-release-6-8.noarch.rpmrpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
    install.log
#





使用正则E来查看主机
1
2
3
4
5
6
# salt -E 'salt_client*' test.ping
salt_client1:
    True
salt_client2:
    True
#





使用-L 来用列表方式来表示
1
2
3
4
5
6
# salt -L 'salt_client1,salt_client2' test.ping
salt_client1:
    True
salt_client2:
    True
#





-N 是查看组。首先我们来添加组
1
2
3
4
5
6
7
8
9
修改配置文件master vim /etc/salt/master
nodegroups:
   salt_group1: 'L@salt_client1,salt_client2'
   salt_group2: 'salt_client1'
   
# /etc/rc.d/init.d/salt-master restart
Stopping salt-master daemon:                              
Starting salt-master daemon:                              
#




然后在查看
-N 参数salt_client1 这里指组名test.ping这里指命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# salt -N salt_group1 test.ping
salt_client1:
    True
salt_client2:
    True
# salt -N salt_group2 test.ping
salt_client1:
    True
#
# salt -N salt_group1 cmd.run 'hostname'
salt_client1:
    salt_client1
salt_client2:
    salt_client2
#





关于组的混合匹配 高级用法:http://blog.cunss.com/wp-content/uploads/2014/02/20140210173734_68950.png

测试所有主机是否能连接
1
2
3
# salt '*' test.ping
salt_client1:
    True




测试salt_client1是否能连接
1
2
3
4
5
6
7
# salt 'salt_client1' test.ping
salt_client1:
    True
#
# 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差不多查看帮助如下:
1
2
3
4
-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。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# salt -G 'os:CentOS'test.ping
salt_client1:
    True
#
# salt '*' grains.item os
salt_client1:
os: CentOS
#
# salt -G 'cpuarch:x86_64' grains.item num_cpus
salt_client1:
num_cpus: 1
salt_client2:
num_cpus: 1
#
# salt '*' grains.items查看有多少项目参数
# salt '*' grains.ls查看有哪些参数





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
# 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
#





五、使用salt来同步一个第一个简单的文件
1
2
3
4
5
6
7
# mkdir /srv/salt/base -p
# cd /srv/salt/base
# echo "test salt first file" >> first.txt
# salt 'salt_client1' cp.get_file salt://first.txt /home/first.txt
salt_client1:
    /home/first.txt
#





在客户端查看
1
2
3
4
5
# pwd
/home
# cat first.txt
test salt first file
#





1
2
# salt-run jobs.list_jobs 最近操作文件的配置
# salt-run jobs.lookup_jid 20140317113642863799后面是返回值 配合第一个一起使用




六、使用salt来查看客户端系统相关信息查看当前是否有任务运行
1
2
3
# salt-run jobs.active
{}
#





查看所有的主机名
1
2
3
4
# salt '*' cmd.run hostname
salt_client1:
    salt_client1
#




查看系统
1
2
3
4
# salt '*' grains.item os
salt_client1:
os: CentOS
#




查看客户端IP地址
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
# 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
#




查看硬盘
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
# 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
#





1
2
3
4
5
6
7
8
9
10
11
12
# salt 'salt_client1' cmd.run 'df -h'
salt_client1:
    Filesystem            SizeUsed Avail Use% Mounted on
    /dev/sda2             9.9G1.3G8.1G14% /
    tmpfs               495M   0495M   0% /dev/shm
    /dev/sda1             194M   28M157M15% /boot
    /dev/sda3             9.9G151M9.2G   2% /home
    192.168.100.249:/opt/CentOS
                           19G   13G4.8G73% /mnt
    192.168.100.249:/opt/
                           19G   13G4.8G73% /media
#






七、使用salt来管理系统软件包安装包
1
2
3
4
5
6
7
8
9
10
# salt 'salt_client1' pkg.install telnet
salt_client1:
    ----------
    telnet:
      ----------
      new:
            0.17-47.el6
      old:
            
#





查看安装的包,这里安装的包指的不是用salt安装的包 而是全部的包# salt ‘salt_client1′ pkg.list_pkgs
删除刚安装的包
1
2
3
4
5
6
7
8
9
10
# salt 'salt_client1' pkg.remove telnet
salt_client1:
    ----------
    telnet:
      ----------
      new:
            sal
      old:
            0.17-47.el6
#




在客户端查看
1
2
3
4
5
6
# rpm -qa | grep telnet
telnet-0.17-47.el6.x86_64
# telnet
telnet> ^C
# rpm -qa | grep telnet
#





查看repos内容:
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
# 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
#




如果想查看所有minion的链接情况,我们可以用如下命令来查看
1
2
3
4
5
6
7
8
# salt '*' test.ping
salt_client1:
    True
# salt-run manage.status
down:
up:
    - salt_client1
#





删除客户端的一个用户:
1
2
3
4
5
6
7
8
9
10
11
12
13
# salt 'salt_client1' webutil.userdel /etc/passwd kcc
salt_client1:
    - Deleting password for user kcc
#
Space-delimited arguments to the function:
# salt \* cmd.exec_code python 'import sys; print sys.version'
salt_client2:
    2.6.6 (r266:84292, Jun 18 2012, 14:18:47)
   
salt_client1:
    2.6.6 (r266:84292, Jun 18 2012, 14:18:47)
   
#






页: [1]
查看完整版本: saltstack配置应用以及基础用法