设为首页 收藏本站
查看: 1623|回复: 0

[经验分享] Saltstack服务部署文档

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-4-1 08:58:18 | 显示全部楼层 |阅读模式
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




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-52681-1-1.html 上篇帖子: saltstack从简单到入门详解(二) 下篇帖子: CentOS6.5 安装 SaltStack
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表