因为图片太多,这个博客又不能直接从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:(下图是成功安装的)
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏