通过salt远程执行管理minion

远程命令执行结构

[root@localhost ~]# salt –help
Usage: salt [options] ‘ [arguments]
…省略

命令行选项
–out:控制salt执行后输出格式:
如下以json格式输出执行结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# salt --out=json "192.168.1.135" file.stats /etc/yum.conf 
{
"192.168.1.135": {
"size": 969,
"group": "root",
"ctime": 1452756899.5019996,
"type": "file",
"mode": "0644",
"gid": 0,
"target": "/etc/yum.conf",
"user": "root",
"mtime": 1437733679.0,
"atime": 1473108087.4774382,
"inode": 1835529,
"uid": 0
}
}

目标主机

全局匹配:

*:代表任意字符串,也可以是空字符串
?:代表一个字符串,但不能为空
[]:字符集合,例如[a~z]代表任何一个小写字母,[0-9]代表数字

正则匹配:

Targets也可以使用正则表达式,但是需要配合-E使用

salt -E ‘virtmach[0-9]’ test.ping

列表匹配:

salt -L ‘foo,bar,baz,quo’ test.ping

混合匹配:

salt -C ‘G@os:Ubuntu and webser or E@database.‘ test.ping

Grain和Pillar匹配:

Targets可以使用Grains系统来通过minion的系统信息进行过滤:
salt -G ‘os:Ubuntu’ test.ping

参考地址:http://docs.saltstack.cn/topics/tutorials/modules.html
远程执行模块和函数
看模块中的函数sys.list_functions

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# salt "192.168.1.135" sys.list_functions user
192.168.1.135:
- user.add
- user.chfullname
- user.chgid
- user.chgroups
- user.chhome
- user.chhomephone
- user.chloginclass
- user.chroomnumber
- user.chshell
- user.chuid
- user.chworkphone
- user.delete
- user.get_loginclass
- user.getent
- user.info
- user.list_groups
- user.list_users
- user.rename

远程执行命令模块—cmd模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@localhost ~]# salt "192.168.1.135" sys.list_functions cmd
192.168.1.135:
- cmd.exec_code
- cmd.exec_code_all
- cmd.has_exec
- cmd.retcode
- cmd.run
- cmd.run_all
- cmd.run_chroot
- cmd.run_stderr
- cmd.run_stdout
- cmd.script
- cmd.script_retcode
- cmd.shell
- cmd.shells
- cmd.tty
- cmd.which
- cmd.which_bin

如多台主机执行free –m命令:

Cmd_run_all显示更加详细信息:

安装包管理pkg模块:
查看模块函数:

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
[root@localhost ~]# salt "192.168.1.135" sys.list_functions pkg
192.168.1.135:
- pkg.available_version
- pkg.check_db
- pkg.clean_metadata
- pkg.del_repo
- pkg.diff
- pkg.download
- pkg.expand_repo_def
- pkg.file_dict
- pkg.file_list
- pkg.get_locked_packages
- pkg.get_repo
- pkg.group_diff
- pkg.group_info
- pkg.group_install
- pkg.group_list
- pkg.hold
- pkg.install
- pkg.latest_version
- pkg.list_holds
- pkg.list_pkgs
- pkg.list_repo_pkgs
- pkg.list_repos
- pkg.list_upgrades
- pkg.mod_repo
- pkg.modified
- pkg.normalize_name
- pkg.owner
- pkg.purge
- pkg.refresh_db
- pkg.remove
- pkg.unhold
- pkg.upgrade
- pkg.upgrade_available
- pkg.verify
- pkg.version
- pkg.version_cmp

pkg.install安装软件:

pkg.version查看已安装软件的版本信息:

pkg.remove卸载软件:

Service管理服务模块
查看service模块函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@localhost ~]# salt "192.168.1.135" sys.list_functions service
192.168.1.135:
- service.available
- service.disable
- service.disabled
- service.enable
- service.enabled
- service.get_all
- service.get_disabled
- service.get_enabled
- service.missing
- service.reload
- service.restart
- service.start
- service.status
- service.stop

service.status查看软件运行状态:

False代表关闭
True代表运行
Service.start启动软件:

Service.stop关闭软件:

File文件管理模块
查看file模块函数

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
[root@localhost ~]# salt  "192.168.1.135" sys.list_functions file
192.168.1.135:
- file.access
- file.append
- file.basename
- file.blockreplace
- file.check_file_meta
- file.check_hash
- file.check_managed
- file.check_managed_changes
- file.check_perms
- file.chgrp
- file.chown
- file.comment
- file.comment_line
- file.contains
- file.contains_glob
- file.contains_regex
- file.contains_regex_multiline
- file.copy
- file.delete_backup
- file.directory_exists
- file.dirname
- file.diskusage
- file.extract_hash
- file.file_exists
- file.find
- file.get_devmm
- file.get_diff
- file.get_gid
- file.get_group
- file.get_hash
- file.get_managed
- file.get_mode
- file.get_selinux_context
- file.get_sum
- file.get_uid
- file.get_user
- file.gid_to_group
- file.grep
- file.group_to_gid
- file.is_blkdev
- file.is_chrdev
- file.is_fifo
- file.is_link
- file.join
- file.lchown
- file.link
- file.list_backup
- file.list_backups
- file.list_backups_dir
- file.lstat
- file.makedirs
- file.makedirs_perms
- file.manage_file
- file.mkdir
- file.mknod
- file.mknod_blkdev
- file.mknod_chrdev
- file.mknod_fifo
- file.move
- file.normpath
- file.open_files
- file.pardir
- file.patch
- file.path_exists_glob
- file.prepend
- file.psed
- file.readdir
- file.readlink
- file.remove
- file.remove_backup
- file.rename
- file.replace
- file.restore_backup
- file.restorecon
- file.rmdir
- file.search
- file.sed
- file.sed_contains
- file.seek_read
- file.seek_write
- file.set_mode
- file.set_selinux_context
- file.source_list
- file.stats
- file.statvfs
- file.symlink
- file.touch
- file.truncate
- file.uid_to_user
- file.uncomment
- file.user_to_uid
- file.write

file.stats查看文件信息:

file.chown 改变文件所属用户和用户组:
语法:file.chown Path User Group

file.directory_exists判断客户端文件夹是否存在

file.is_link检测文件是否为链接

File.get_diff 返回两个文件的差异,可以是本地文件,也可以是sallt://文件

file.get_hash获取文件的hash值

file.touch创建文件

File.addend追加文件

File.makedirs创建父文件夹

File.mkidr创建文件夹

用户管理模块
查看模块的所有函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@localhost ~]# salt '*' sys.list_functions user
192.168.17.130:
- user.add
- user.chfullname
- user.chgid
- user.chgroups
- user.chhome
- user.chhomephone
- user.chloginclass
- user.chroomnumber
- user.chshell
- user.chuid
- user.chworkphone
- user.delete
- user.get_loginclass
- user.getent
- user.info
- user.list_groups
- user.list_users
- user.rename

user.info查看用户信息:

user.list_users列出所有用户:

salt.modules.useradd.add(name, uid=None, gid=None, groups=None, home=None, shell=None, unique=True, system=False, fullname=’’, roomnumber=’’, workphone=’’, homephone=’’, createhome=True, loginclass=None)

1
例:salt '*' user.add name <uid> <gid> <groups> <home> <shell>

user.delete删除用户

User.chhome更改用户家目录

1
2
3
4
5
6
[root@localhost ~]# salt '*' sys.doc user.chhome
'user.chhome:'
Change the home directory of the user, pass True for persist to move files
to the new home directory if the old home directory exist.
CLI Example:
salt '*' user.chhome foo /home/users/foo True

Comments

2017-03-02