A-A+

salt stack 软件配置管理(yum、脚本编译安装,配置文件管理)

2013年10月22日 自动化运维, 运维技术 暂无评论 阅读 14,499 views 次

 

因为图片太多,这个博客又不能直接从word时面把图片复制过来,所以我也懒得上传图片了

完整的文档,可点击这里下载:salt运维工具入门文档_V1.4

 

salt stack 配置管理

Salt使用State模块文件进行配置管理,使用YAML编写,以.sls结尾。如果进行配置管理首先需要再Master的配置文件中指定”file roots”的选项,Salt支持环境的配置,比如测试环境和生产环境但是base环境是必须的。而且Base环境必须包含入口文件top.sls。

 

Saltstack配置管理流程

 

配置软件安装

告诉Salt你的配置管理文件在哪里。根据你是如何安装Salt,有时你需要自己创建/srv/salt目录,服务端master配置文件中,默认是:

file_roots:

base:

- /srv/salt

 

创建一个top.sls文件,这个也是入口文件,也就是说,你执行相关命令的时候,会先检测这个文件,这文件提供了其它文件的映射,可以用于作为其它服务器的基础配置文件。

vim /srv/salt/top.sls

base:

'68':

- apache.apache

'230':

- fc7.pack

 

base语法告诉Salt这是基础配置文件,

'68',是指应用在68客户机

- apache.apache 是指相关配置在apache目录下面的apache.sls,下面再解释apache.sls

'230':是指应用在230客户机

- fc7.pack:是指相关配置在fc7目录下的pack.sls,下面解释pack.sls

 

这些目录和文件名,都是随你怎么命名,以下是我/srv/salt/下面的文件:

 

 

 

 

 

先看看指定68客户机的配置文件内容apache.sls(注意每行的缩进和空格,缩进为2个空格,冒号后面1个空格)

apache:

service:

- name: httpd

- running

- reload: True

- watch:

- file: /usr/local/apache/conf/httpd.conf

 

/usr/local/apache/conf/httpd.conf:

file:

- managed

- source: salt://apache/httpd.conf

- backup: minion

 

如图所示:

 

 

第一行:告诉管理工具,这是一个id标识,如我这是管理apache配置的,我就写apache,一看就知道是什么了

第二行:告诉管理工具,这是服务管理(负责管理服务脚本的启用,禁用,启动,停止,重启等等工作)

第三行:告诉管理工具,这是httpd服务

第四行:告诉管理工具,这个服务需保证是运行状态

第五行:告诉管理工具,这个服务需要自动会重启,这个跟下面watch有关,当watch中的文件被改动时,就重启服务。

第六行:观察下面file文件改动,有改动就触发上面的reload重启

第七行:指定文件的位置。

第九行:这是文件标识

第十,十一行:文件管理

第十二行:指定源数据在哪里,即服务端的源,当这个文件被改动时,就会触发包管理工具,更改上面file指定的文件,可以看成是同步更新吧。

第十三行:告诉包管理工具,当文件更新时,在更新前备份一次,如下图:

 

 

写好好这些文件后,把68客户机上的httpd.conf复制一份到服务端,放在/srv/salt/apache/目录下,如我刚才发的ls图

 

 

然后,在服务端执行:

salt '68' state.highstate

这样就可进行对68客户端推送文件了,以下是测试结果:

68:

----------

State: - file

Name:      /usr/local/apache/conf/httpd.conf

Function:  managed

Result:    True

Comment:   File /usr/local/apache/conf/httpd.conf is in the correct state

Changes:

----------

State: - service

Name:      httpd

Function:  running

Result:    True

Comment:   Started Service httpd

Changes:   httpd: True

 

这里我先发客户端的配置文件最后几行吧,一会我往最后一行添加点数据再测试看:

 

 

现在往服务端的/srv/salt/apache/httpd.conf最后添加一行:#http://www.linuxyw.com

 

现在进行推送测试:

salt '68' state.highstate

 

 

再打开68客户端上的配置文件看看:

 

 

结果出来了,这只是简单的一种用法,更多的用法,再研究。

上面这种方法,是我68客户机上原本就安装好了的环境,用编译安装的apache,所以,我就只采取了配置文件管理,而不对其进行包安装,下面就会讲到用rpm包进行包管理(当然,如果要编译安装怎么办?这个,也是可以的,下回再研究这个。)

 

回到top.sls文件

base:

'68':

- apache.apache

'230':

- fc7.pack

 

看看fc7目录下的pack.sls文件内容:

apache:

pkg:

- name: httpd

- installed

service:

- name: httpd

- running

- reload: True

- watch:

- file: /etc/httpd/conf/httpd.conf

 

/etc/httpd/conf/httpd.conf:

file.managed:

- source: salt://fc7/httpd.conf

- user: root

- group: root

- mode: 644

- backup: minion

 

如下图:

 

 

这个图和上面apache的有点相似吧,相似的不说了,说下新添加的吧

第二行:安装包管理(pkg 负责包的安装与卸载)

第三行:需要安装的软件名称

第四行:这个软件需要被安装,如果没安装就会执行yum安装,当然如果系统不一样,这里可能就要判断了,我这里是针对Centos做的实验

其它行,大概都是和上面差不多了,这里就不解释了。

 

如果需要把服务设置为开机启动可以在service中添加使用 - enable:True

 

现在进行测试吧:

在230客户机上检查是否安装httpd,结果是没有安装的。

 

 

现在我们在服务端进行推送管理:

salt '230' state.highstate

 

服务端信息:

 

客户端安装信息:

 

 

在230客户端上再检查httpd:

 

这回显式被安装了吧,我们在服务端中要求httpd是必须要运行的,那再看下是否运行了呢?

 

也是在等待中了,下面再测试配置文件的推送,把230客户端中的/etc/httpd/conf/httpd.conf复制一份到服务端中的/srv/salt/fc7/下面,如

 

 

我们往/srv/salt/fc7/httpd.conf最后添加一行:#http://www.linuxyw.com,再推送下试试:

 

 

推送:

 

 

查看230客户机的/etc/httpd/conf/httpd.conf文件是否也添加了最后一行

 

 

更多的请自己测试了,如重启是否能在文件改动后自动重启呢?我自己测试的时候是可以的,这里就不细说了。

 

salt管理客户机脚本安装环境

往服务端写一个安装nginx的脚本,并把脚本放在/srv/salt/61目录下,61指的是新的客户端,这个客户端我在minion配置文件中标了id: 61。

 

 

nginx安装脚本

 

 

现在写top.sls文件:

base:

'68':

- apache.apache

'230':

- fc7.pack

'61':

- 61.nginx

 

如下图:

 

 

在61目录中写nginx.sls文件,内容如下:

vim /srv/salt/61/nginx.sls

nginx_install:

cmd.script:

- source: salt://61/nginx-install.sh

- user: root

- shell: /bin/bash

 

 

 

推送并进行安装:

salt '61' state.sls 61.nginx

 

检查61客户端是否安装成功nginx:(下图是成功安装的)

 

关键词:

给我留言

Copyright © linux系统运维 保留所有权利.   Theme  Ality 粤ICP备13023035号-1

用户登录

分享到: