salt简介
- 一个配置管理系统,能够维护预定义状态的远程节点(比如,确保指定的报被安装,指定的服务在运行)
- 一个分布式远程执行系统,用来在远程节点(可以是单个节点,也可以是任意规则挑选出来的节点)上执行命令和查询数据
开发其的目的是为远程执行提供最好的解决方案,并使远程执行变得更好,更快,更
简单
既要考虑大规模部署,又要考虑小规模系统,提供适应多种场合的应用让人沮丧,但Salt非常容易设置和维护,而不用考虑项目的大小。从数量可观的本地网络系统,到跨数据中心的互联网部署,Salt设计为在任意数量的server下都可工作。salt的拓扑使用简单的server/client模式,需求的功能内建在一组daemon中。salt在几乎不改动配置的情况下就可以工作,也可以调整从而满足特定的需求。
并行执行
Salt的核心功能
- 使命令发送到远程系统是并行的而不是串行的
- 使用安全加密的协议
- 使用最小最快的网络载荷
- 提供简单的编程接口
Salt同样引入了更加细致化的领域控制系统来远程执行,使得系统成为目标不止可以通过主机名,还可以通过系统属性。
saltstack部署http
hostname | ip |
---|---|
server1 | 172.25.8.1 |
server2 | 172.25.8.2 |
- 在server1上安装salt-master,在server2上安装salt-minion
[root@server2 ~]#yum install -y salt-minion
[root@server2 ~]# cd /etc/salt/
[root@server2 salt]# vim minion
[root@server2 salt]# systemctl start salt-minion
[root@server3 ~]# yum install -y salt-minion
[root@server3 saltstack]# cd /etc/salt/
[root@server3 salt]# vim minion
[root@server3 salt]# systemctl start salt-minion
- /etc/salt/minion中修改master为server1
- salt-key -L 查看为接受到的主机
- salt-key -A 接受主机
- test模块测试
- 安装lsof查看master与minion连接情况
[root@server1 ~]# yum install -y lsof
- 配置server1的master文件
[root@server1 ~]# cd /etc/salt/
[root@server1 salt]# vim master
[root@server1 salt]# systemctl restart salt-master
- 建立/srv/salt目录,这里存放角色以及安装文件
[root@server1 ~]# mkdir /srv/salt
[root@server1 ~]# cd /srv/salt/
[root@server1 salt]# mkdir apache
[root@server1 salt]# cd apache/
[root@server1 apache]# ls
[root@server1 apache]# vim install.sls
[root@server1 apache]# cat install.sls
httpd:
pkg.installed
- 编辑好文件执行安装
[root@server1 apache]# pwd
/srv/salt/apache
[root@server1 apache]# ls
install.sls
[root@server1 apache]# salt server2 state.sls apache.install
- 执行成功,在server2上可以看到httpd已经安装成功
-
- 另一种方法安装httpd
[root@server1 salt]# cd apache/
[root@server1 apache]# ls
install.sls
[root@server1 apache]# vim install.sls
[root@server1 apache]# cat install.sls
install-apache:
pkg.installed:
- pkgs:
- httpd
- 安装httpd并运行
[root@server1 apache]# vim install.sls
[root@server1 apache]# cat install.sls
install-apache:
pkg.installed:
- pkgs:
- httpd
service-apache:
service.running:
- name: httpd
- server2上查看运行状态
- 修改配置文件
[root@server1 apache]# mkdir files ##将服务的配置文件放在次目录中
[root@server1 apache]# cd files/
[root@server1 files]# pwd
/srv/salt/apache/files
[root@server1 files]# scp server2:/etc/httpd/conf/httpd.conf .
httpd.conf 100% 11KB 11.5KB/s 00:00
[root@server1 files]# ls
httpd.conf
[root@server1 files]# cd ..
[root@server1 apache]# ls
files install.sls
[root@server1 apache]# vim install.sls
[root@server1 apache]# cat install.sls
install-apache:
pkg.installed:
- pkgs:
- httpd
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://apache/files/httpd.conf
service.running:
- name: httpd
- reload: True
- watch:
- file: install-apache
- 修改端口为8080后再次执行
[root@server1 files]# vim httpd.conf
- 端口更改成功
- top方式安装httpd
[root@server1 salt]# pwd
/srv/salt
[root@server1 salt]# vim top.sls
[root@server1 salt]# cat top.sls
base:
'*':
- apache.install