Saltstack配置管理
配置管理也叫状态管理
严格意思上讲状态是不可回滚的
参考官方文档
https://www.unixhot.com/docs/saltstack/contents.html
状态模块
https://www.unixhot.com/docs/saltstack/ref/states/all/
Salt State SLS描述文件 YAML
apache-service: #ID声明
service.running: #State声明 状态声明
- name: httpd #选项声明
- enable: True
怎么部署一个LAMP架构
1,安装软件包 pkg
2,修改配置文件 file
3,启动服务 service
pkg.installed 安装
pkg.latest 最新版本
pkg.remove 移除
pkg.purge 同时删除配置文件
pkgs 同时安装多个包
例如
php.packages:
pkg.installed:
- fromrepo: wheezy-php55
- pkgs:
- php5-fpm
- php5-cli
- php5-curl
PS:一个ID声明下面,状态模块不能重复使用。(Python字典里面的key不能重复)
mkdir /srv/salt/lamp
mkdir /srv/salt/lamp/files
拷贝配置文件到这个目录下
cp /etc/my.cnf ./
cp /etc/httpd/conf/httpd.conf ./
/files]# cp /etc/php.ini ./
vim /srv/salt/lamp/lamp.sls
lamp-pkg: pkg.installed: - pkgs: - httpd - php - mariadb - mariadb-server - php-mysql - php-cli - php-mbstring apache-config: file.managed: - name: /etc/httpd/conf/httpd.conf - source: salt://lamp/files/httpd.conf - user: root - group: root - mode: 644 php-config: file.managed: - name: /etc/php.ini - source: salt://lamp/files/php.ini - user: root - group: root - mode: 644 mysql-config: file.managed: - name: /etc/my.cnf - source: salt://lamp/files/my.cnf - user: root - group: root - mode: 644 apache-service: service.running: - name: httpd - enable: True - reload: True mysql-service: service.running: - name: mariadb - enable: True - reload: True
执行安装
salt '10-8-86-172' state.sls lamp.lamp
PS:salt://表示当前环境的根目录,即/srv/salt目录
可以在minion端查看debug查看执行过程及错误
tail -f /var/log/salt/minion
状态间关系
1,我依赖谁
依赖这个安装包和这个配置文件
2,我被谁依赖
和依赖是一样的意思记住一个就行
3,我监控谁
如果apache-config状态发生变化则reload,如果reload不是True则是restart
4,我被谁监控
同理watch_in写在apache-config ,也是两个记住一个即可
5,我引用谁
include:
- lamp.pkg
类似于配置文件的包含,把不同的模块分开来好管理
6,我扩展谁
Jinja2
参考网站
http://docs.jinkan.org/docs/jinja2/
两种分隔符:{% ... %}和 {{ ... }}
三步走
1,告诉File模块 ,你需要使用jinja
- template: jinja
2,要列出变量参数列表
- defaults:
PORT: 88
3,模板引用
修改配置文件 Listen {{ PORT }}
修改lamp.sls
修改httpd.conf
再次执行
模板里面支持 salt grains pillar进行赋值
使用pillar
先获取到
修改httpd配置文件
jinjia模板
修改lamp.sls
修改httpd配置文件
PS:也可以写在sls里面的变量列表中
例如