- A+
模块使用方法:https://www.unixhot.com/docs/saltstack/ref/states/all/index.html#all-salt-states
本文通过写salt模块来了解服务的安装配置启动三个最常用的模块,在最后只启动http来测试。
使用以下三个最常用的模块安装LAMP:
Ø pkg:软件包安装(它是虚拟的,调用对应的包安装工具去安装我们需要的软件包)
Ø file:文件管理
Ø service:服务管理
sls中id有两种写法:
1. 自己声明一个id。
2. 自己可以不声明id,它会把路径作为id,建议统一起名管理。
开始写一个状态模块(模块里面默认是重上往下执行)
注意:一个id下面一个id只允许一个状态出现一次
- [root@linux-node1 web]# cat lamp.sls
- lamp-install: #注意:一个id只允许状态出现一次(自定义)
- pkg.installed: #检测我们服务的状态,不存在就会去下载安装
- - pkgs: #pkgs是installed方法的一个参数,将所有要装的包流出来(names=pkgs)
- - httpd
- - php
- - php-pdo
- - php-mysql
- - mariadb
- - mariadb-server
- apache-config:
- file.managed: #推送文件
- - name: /etc/httpd/conf/httpd.conf #master要推送覆盖的minion端的文件路径
- - source: salt://web/files/httpd.conf #要推送的master端文件路径
- - user: root #文件所属用户
- - group: root #文件所属用户组
- - mode: 644 #文件读写权限
- apache-conf:
- file.recurse: #推送目录
- - name: /etc/httpd/conf.d #master端推送到minion端的路径
- - source: salt://web/files/apache-conf.d #从master端那个路径下进行推送
- /etc/php.ini: #如果使用路径作为这里的id,managed方法就不需要使用name这个参数啦
- file.managed: #推送文件
- - source: salt://web//files/php.ini
- - user: root
- - group: root
- - mode: 644
- lamp-service:
- service.running: #这里我们光启动httpd服务查看结果即可
- - name: httpd
- - enable: True
#插小广告:文件内容的追加方法
- [root@linux-node1 base]# vim append.sls
- /etc/profile: #id路径
- file.append: #模块和方法
- - text:
- - "#abcde-test" #追加的内容
提示:默认salt是有缓存的,文件必须改动缓存才会重新生成,缓存路径:/var/cache/salt/
执行过程过程说明:当master对minion执行时,会将你再master端写的文件发送到minion的/etc/salt/minion/files/目录下,然后minion端再去执行。
lamp.sls边写完之后这里我不执行,再编写个高级状态,然后执行高级状态(当然也乐意直接使用state.sls去执行),top.sls文件内容如下:
- [root@linux-node1 base]# cat top.sls
- base:
- 'linux-node1.example.com':
- - web.lamp
- 'linux-node2.example.com':
- - web.lamp
执行前先进行测试执行是否成功:
- [root@linux-node1 base]# salt '*' state.highstate test=True
- [root@linux-node1 base]# salt '*' state.highstate #执行成功后查看结果