1 Saltstack概念 SaltStack是开源的管理基础设置的轻量级工具,容易搭建,为远程管理服务器提供一种更好、更快速、更有扩展性的解决方案。通过简单、可管理的接口,Salt实现了可以管理成千上百的服务器和处理大数据的能力。 2 saltstack安装2.1 安装epel源# rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release-6-8.noarch.rpm 2.2 安装salt服务在master上运行: # yum install salt-master -y 在minion上运行: # yum install salt-minion -y 3 saltstack配置3.1 Master端的配置# cat /etc/salt/master ================================================================================== default_include: /etc/salt/master.d/*.conf 指定其他自定义的配置 interface: 172.18.11.226 master的监听地址 pidfile: /var/run/salt-master.pid pid文件位置 pki_dir: /etc/salt/pki/master 存放minion认证文件位置 file_roots: state系统根目录 base: - /srv/salt …其余保持默认即可… ================================================================================== 3.1.1 启动salt-master# chkconfig salt-master on # service salt-master start 3.2 Minion端的配置# cat /etc/salt/minion ================================================================================== master: 172.18.11.226 指定master pidfile: /var/run/salt-minion.pid pid文件位置 pki_dir: /etc/salt/pki/minion 存放master认证文件位置 id: client minion端ID号,必须唯一 ================================================================================== 3.2.1 启动minion客户端# chkconfig salt-minion on # service salt-minion start 4 Saltstack认证注意:以下操作均在salt-master端进行 4.1 查看minion列表# salt-key –L ================================================================================== Accepted Keys: Unaccepted Keys: client 当前minion还未被添加认证 Rejected Keys: ================================================================================== 4.2 添加minion客户端# salt-key –a client ================================================================================== Accepted Keys: client minion已添加认证,可以与master通信了 Unaccepted Keys: Rejected Keys: ================================================================================== 5 Saltstack测试注意:以下操作均在salt-master端进行 # salt ‘client’ test.ping ================================================================================== client: True================================================================================== # salt ‘client’ test.versions_report ================================================================================== client: 查看minion端的版本信息Salt: 2014.1.10 Python: 2.6.8 (unknown, Nov 7 2012, 14:47:45) Jinja2: 2.5.5 M2Crypto: 0.21.1 msgpack-python: 0.1.12 msgpack-pure: Not Installed pycrypto: 2.3 PyYAML: 3.08 PyZMQ: 2.1.9 ZMQ: 2.1.9 ================================================================================== 6 Grains系统6.1 grains系统概念grains是minion第一次启动的时候采集的静态数据,可以用在salt的模块和其他组件中。其实grains在每次的minion启动(重启)的时候都会采集,即向master汇报一次。 grains的特性–每次启动汇报、静态决定了它没有pillar灵活,要知道pillar是随时可变的,只要在master端修改了那一般都会立刻生效的。所以grains更适合做一些静态的属性值的采集,例如设备的角色(role),磁盘个数(disk_num)等诸如此类非常固定的属性。 6.2 定义grains数据# salt ‘client’ grains.setval roles app 定义client为app角色,根据业务角色划分,方便以后批量配置管理 # salt ‘client’ grains.item roles ================================================================================== client: roles: app 可以看到已定义成功 ================================================================================== 6.3 查看minion端的grain数据# salt ‘client’ grains.items ================================================================================== …略… os: CentOS os_family: RedHat osarch: x86_64 oscodename: Final osfinger: CentOS-6 osfullname: CentOS osmajorrelease: 6 4 osrelease: 6.4 …略… ================================================================================== 深入理解grains系统,请参考:http://docs.saltstack.cn/zh_CN/latest/topics/targeting/grains.html 7 State系统7.1 state系统概念Salt State系统的核心是由sls结尾的state文件组成的,配置简单而且灵活,SLS文件本质上只是一些dictionaries,lists,strings和numbers。这种设计让SLS文件非常灵活,可以满足开发者的各种需求,而且可读性很高。写得越多,就越清楚到底写得是什么。 7.2 state系统配置首先需在master配置文件中打开state系统,定义state目录路径 # cat /etc/salt/master ================================================================================== ...略... file_roots: state系统 base: base代表基础环境 - /srv/salt state系统根目录路径 ...略... ================================================================================== Salt默认使用能找到的最简单的序列化数据格式——YAML,来表达SLS数据。典型的SLS文件如下: # cat /srv/salt/apache.sls ================================================================================== httpd: 数据的ID,被称作ID声明 pkg: pkg使用系统本地的软件包管理器管理将要安装的软件,如yum - installed ================================================================================== 7.3 执行state配置# salt ‘client’ state.sls apache 注解: state.sls 表示执行state配置 apache 执行apache.sls的state配置,注意这里不需要sls后缀,可看做是/srv/salt/apache.sls
也可通过下面的方式执行state配置: # salt ‘client’ pkg.install apache
深入理解state,请参考:http://docs.saltstack.cn/zh_CN/latest/topics/tutorials/states_pt1.html 8 Pillar系统8.1 pillar系统概念Pillar是Salt非常重要的一个组件,它用于给特定的minion定义任何你需要的数据,这些数据可以被Salt的其他组件使用。Pillar数据是与特定minion关联的,也就是说每一个minion都只能看到自己的数据,所以Pillar可以用来传递敏感数据(在Salt的设计中,Pillar使用独立的加密session,也是为了保证敏感数据的安全性)。 8.2 pillar系统配置默认情况下,master配置文件中的所有数据都添加到Pillar中,且对所有minion可用。如果要禁用这一默认值,可以在master配置文件中添加如下数据,重启服务后生效: # cat /etc/salt/master ================================================================================== ...略... pillar_opts: False pillar_roots: pillar系统 base: base代表基础环境 - /srv/pillar pillar系统根目录路径 ...略... ==================================================================================
# cat /srv/pillar/apache.sls ================================================================================== {% if grains['os'] == 'RedHat' %} apache: httpd git: git {% elif grains['os'] == 'Debian' %} apache: apache2 git: git-core {% endif %} ==================================================================================
8.3 查看minion端pillar数据在master上修改Pilla文件后,需要用以下命令刷新minion上的数据: # salt ‘client’ saltutil.refresh_pillar
# salt ‘client’ pillar.data 如果定义好的pillar不生效,建议刷新一下试试
深入理解pillar系统,请参考:http://www.saltstack.cn/projects/cssug-kb/wiki/Using_pillar_data_in_saltstack 9 Salt的常用命令获取帮助信息 salt '*' sys.doc 列出可用的gains salt '*' grains.items 根据操作系统来控制minion salt -G -v 'os:SUSE Enterprise Server' test.ping salt -G -v 'os:centos' test.ping 根据IP来控制minion salt -S '172.18.13.102' test.ping or salt -S '172.18.13.0/24' test.ping 删除文件 salt 'client' file.remove /tmp/foo 重命名文件 salt 'client' file.rename /path/to/src /path/to/dst 查看文件状态(全面信息) salt 'client' file.stats /etc/passwd 创建软链 salt 'client' file.symlink /path/to/file /path/to/link 创建文件、刷新文件atime/mtime salt 'client' file.touch /var/log/emptyfile 显示网络接口信息 salt 'client' ip.get_interface eth0 salt 'client' network.interfaces salt 'client' network.ip_addrs 显示MAC地址信息 salt 'client' network.hw_addr eth0 显示全局网络接口信息 salt 'client' ip.get_network_settings 显示路由信息 salt 'client' ip.get_routes eth0 仅对RHEL/Fedora系统有效 10 参考网页Salt中文手册 http://docs.saltstack.cn SaltStack官方论坛 https://groups.google.com/forum/#!forum/salt-users salt.states.file详解 http://docs.saltstack.com/en/latest/ref/states/all/salt.states.file.html saltstack howto https://github.com/saltstack
|