对基础服务的管理包括配置管理系统、用户账号管理、yum配置管理、hosts文件管理、时间同步管理、DNS配置管理。
配置管理系统
配置管理系统使用模块化设计,每个服务一个模块,将多个模块组织到一起形成角色(/srv/salt/roles/)。所有模块放置到:/srv/salt下,入口配置文件为:/srv/salt/top.sls。模块使用的变量放置到:/srv/pillar,入口配置文件:/srv/pillar/top.sls。针对变量的作用域不同,将变量分为三级级,一级应用于模块(/srv/pillar/模块名),一级应用于角色(/srv/pillar/roles/),一级应用于主机节点(/srv/pillar/nodes)。具体配置在此不一一列出,具体参见salt配置文件。
入口配置/srv/salt/top.sls,直接引用各种角色:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| base: '*': - roles.common 'admin.grid.mall.com': - roles.admin 'ha.grid.mall.com': - roles.ha 'web*.grid.mall.com': - roles.web 'cache*.grid.mall.com': - roles.cache 'mc*.grid.mall.com': - roles.mc 'db*.grid.mall.com': - roles.db 'search*.grid.mall.com': - roles.search 'storage*'.grid.mall.com': - roles.storage
|
变量入口配置文件/srv/pillar/top.sls:
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
| base: '*': - roles.common 'admin.grid.mall.com': - roles.admin 'ha.grid.mall.com': - roles.ha 'web*.grid.mall.com': - roles.web 'cache*.grid.mall.com': - roles.cache 'mc*.grid.mall.com': - roles.mc 'db*.grid.mall.com': - roles.db 'search*.grid.mall.com': - roles.search 'storage*'.grid.mall.com': - roles.storage 'ha1.grid.mall.com': - nodes.ha1 'ha2.grid.mall.com': - nodes.ha2 'mc1.grid.mall.com': - nodes.mc1 'mc2.grid.mall.com': - nodes.mc2 'db1.grid.mall.com': - nodes.db1 'db2.grid.mall.com': - nodes.db2
|
用户账号管理
用户管理模块:/srv/salt/users
此模块用到pillar,pillar和grains都可以用来获取变量,但是grains偏向于获取客户端相关信息,比如客户端硬件架构、cpu核数、操作系统版本等信息,相当于puppet的facter;pillar用于定义用户变量,通过pillar变量的传递,使salt state模块易于重用,相当于puppet的hiera。使用pillar变量之前需要执行salt ‘*’ saltutil.refresh_pillar命令使变量生效。使用命令salt ‘admin.grid.mall.com’ pillar.item users获取users变量:
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
| admin.grid.mall.com: ---------- users: ---------- dongliang: ---------- fullname: Shi Dongliang gid: 1000 group: dongliang password: $6$BZpX5dWZ$....... shell: /bin/bash ssh_auth: ---------- comment: [email protected] key: AAAAB3......== sudo: True uid: 1000
|
获取admin.grid.mall.com上面定义的所有pillar变量:
添加用户:
/srv/salt/users/user.sls用于管理用户
sudo.sls为用户添加sudo权限:
1 2 3
| sudoers: file.managed: - name: /etc/sudoers
|
/srv/salt/users/user.sls读取/srv/pillar/users/init.sls中的users变量。
1 2 3 4 5 6 7 8 9 10 11 12
| users: dongliang: group: dongliang uid: 1000 gid: 1000 fullname: Shi Dongliang password: $6$BZpX5dWZ$...... shell: /bin/bash sudo: true ssh_auth: key: AAAAB3......== comment: [email protected]
|
在salt-master上执行下面命令使配置生效
yum配置管理
yum配置管理:/srv/salt/base/repo.sls
配置文件:/srv/salt/base/files/mall.repo # 此配置文件可以通过salt协议下发到客户端
/srv/salt/base/repo.sls定义,管理mall.repo文件,当文件改变后执行yum clean all清理缓存,是配置生效。
1 2 3 4 5 6 7 8 9 10 11
| /etc/yum.repos.d/mall.repo: file.managed: - source: salt://base/files/mall.repo - user: root - group: root - mode: 644 - order: 1 cmd.wait: - name: yum clean all - watch: - file: /etc/yum.repos.d/mall.repo
|
hosts文件管理
hosts文件管理:/srv/salt/base/hosts.sls
/srv/salt/base/hosts.sls 定义了每个主机名和IP的对应关系。如下:
1 2 3 4 5 6
| admin.grid.mall.com: host.present: - ip: 172.16.100.81 - order: 1 - names: - admin.grid.mall.com
|
时间同步管理
时间同步作为一个cron,定义文件为:/srv/salt/base/crons.sls
1 2 3 4 5 6 7 8 9
| include: - ntp
'/usr/sbin/ntpdate 1.cn.pool.ntp.org 1.asia.pool.ntp.org': cron.present: - user: root - minute: 0 - hour: 2
|
ntp模块:ntp/init.sls
1 2 3 4
| ntpdate: pkg.installed: - name: ntpdate
|
DNS配置管理
配置DNS服务器定义在resolv.sls,控制/etc/resolv.conf配置文件:
1 2 3 4 5 6 7
| /etc/resolv.conf: file.managed: - source: salt://base/files/resolv.conf - user: root - group: root - mode: 644 - template: jinja
|