首页 > 代码库 > SaltStack(四) 配置管理
SaltStack(四) 配置管理
一、配置管理
Salt使用State模块文件进行配置管理,使用YAML编写,以.sls结尾,如果进行配置管理首先需要再Master的配置文件中指定“file roots”的选项,Salt支持的环境的配置,比如开发环节、测试环境、生产环境,但是base环境时必须的,而且base环境必须包含入口文件top.sls
第一步:设置file_roots
修改Master配置文件,指定Flie_roots [root@salt-server ~]# vim /etc/salt/master file_roots: base: - /srv/salt/ 创建相应的目录 [root@salt-server ~]# mkdir /srv/salt/ -p 重启Salt_Master [root@salt-server ~]# /etc/init.d/salt-master restart Stopping salt-master daemon: [确定] Starting salt-master daemon: [确定]
第二步:设置top.sls
在top.sls入口文件设置环境(如生产、开发、测试对应不同的minion和模块)
[root@salt-server ~]# cat /srv/salt/top.sls
base:
‘*‘:
- apache
解释:所有的Minion均执行base目录下的init模块下的pkg-int.sls,我们可以把很多的sls放在一个目录中,方便管理,在top.sls只需要指定目录结构即可。
第三步:编写状态文件
[root@salt-server ~]# cat /srv/salt/apache.sls
apache-install:
pkg.installed:
- names:
- httpd
- httpd-devel
apache-service:
service.running:
- enable: True
- reload: True
第四步:执行状态
[root@salt-server ~]# salt ‘*‘ state.highstate
salt-client:
----------
ID: apache-install
Function: pkg.installed
Name: httpd
Result: True
Comment: The following packages were installed/updated: httpd
Started: 05:04:09.754956
Duration: 32117.267 ms
Changes:
----------
apr-util-ldap:
----------
new:
1.3.9-3.el6_0.1
old:
httpd:
----------
new:
2.2.15-55.el6.centos.2
old:
httpd-tools:
----------
new:
2.2.15-55.el6.centos.2
old:
----------
ID: apache-install
Function: pkg.installed
Name: httpd-devel
Result: True
Comment: The following packages were installed/updated: httpd-devel
Started: 05:04:41.879147
Duration: 31723.148 ms
Changes:
----------
apr-devel:
----------
new:
1.3.9-5.el6_2
old:
apr-util-devel:
----------
new:
1.3.9-3.el6_0.1
old:
cyrus-sasl-devel:
----------
new:
2.1.23-15.el6_6.2
old:
db4-cxx:
----------
new:
4.7.25-20.el6_7
old:
db4-devel:
----------
new:
4.7.25-20.el6_7
old:
expat:
----------
new:
2.0.1-13.el6_8
old:
2.0.1-11.el6_2
expat-devel:
----------
new:
2.0.1-13.el6_8
old:
httpd-devel:
----------
new:
2.2.15-55.el6.centos.2
old:
openldap-devel:
----------
new:
2.4.40-12.el6
old:
----------
ID: apache-service
Function: service.running
Result: False
Comment: The named service apache-service is not available
Started: 05:05:13.606430
Duration: 16.255 ms
Changes:
Summary
------------
Succeeded: 2 (changed=2)
Failed: 1
------------
Total states run: 3
根据上面的设置,执行完状态后。Salt会检查Minion上是否有上面编写的三个软件包。如果没有就会自动使用Yum安装上。
启动httpd服务
[root@salt-server ~]# salt ‘*‘ cmd.run ‘/etc/init.d/httpd start‘
salt-client:
Starting httpd: httpd: apr_sockaddr_info_get() failed for salt-client
httpd: Could not reliably determine the server‘s fully qualified domain name, using 127.0.0.1 for ServerName
?[60G[?[0;32m OK ?[0;39m]
第五步:操作练习
下面是我生产安装Haproxy的案例,使用的源码,你参考下。
haproxy-install:
file.managed:
- name: /usr/local/src/haproxy-1.5.3.tar.gz
- source: salt://haproxy/files/haproxy-1.5.3.tar.gz
- mode: 755
- user: root
- group: root
cmd.run:
- name: cd /usr/local/src && tar zxf haproxy-1.5.3.tar.gz && cd haproxy-1.5.3 && make TARGET=linux26 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy
- unless: test -d /usr/local/haproxy
- require:
- file: haproxy-install
/etc/init.d/haproxy:
file.managed:
- source: salt://haproxy/files/haproxy.init
- mode: 755
- user: root
- group: root
- require:
- cmd: haproxy-install
net.ipv4.ip_nonlocal_bind:
sysctl.present:
- value: 1
haproxy-config-dir:
file.directory:
- name: /etc/haproxy
- mode: 755
- user: root
- group: root
haproxy-init:
cmd.run:
- name: chkconfig --add haproxy
- unless: chkconfig --list | grep haproxy
- require:
- file: /etc/init.d/haproxy
SaltStack(四) 配置管理