slatstack部署nginx一键推送

一、SaltStack基本介绍:

(一)SaltStack作用于仆从和主拓扑。SaltStack与特定的命令结合使用可以在一个或多个下属执行。实现这一点,此时Salt Master可以发出命令,如salt '*' cmd.run 'ls -l /'。

除了运行远程命令,SaltStack允许管理员使用“grain”。 grain可以在SaltStack仆从运行远程查询,因此收集仆从的状态信息并允许管理员在一个中央位置存储信息。SaltStack也可以帮助管理员 定义目标系统上的期望状态。这些状态在应用时会用到.sls文件,其中包含了如何在系统上获得所需的状态非常具体的要求。

由于它提供了在管理远程系统的灵活性,SaltStack-based产品迅速获得利益。该功能可以对比由状态管理系统提供的功能,如Puppet和Ansible。SaltStack很大程度上得益于快速的采用率,它包括一个在管理系统上运行远程命令的有效方式。

(二).Salt的核心功能
1.使命令发送到远程系统是并行的而不是串行的
2.使用安全加密的协议
3.使用最小最快的网络载荷
4.提供简单的编程接口
Salt同样引入了更加细致化的领域控制系统来远程执行,使得系统成为目标不止可以通过主机名,还可以通过系统属性。
(三).salt使用Python客户端接口
为了允许简单的扩展,Salt执行程序可以写为纯Python模块。数据从Salt执行过程中收集到可以发送回master服务端,或者发送到任何任意程序。Salt可以从一个简单的Python API调用,或者从命令行被调用,所以Salt可以用来执行一次性命令,也可以作为一个更大的应用程序的一个组成部分。

配置环境(rhel6.5虚拟机)
172.25.45.1 server1    master
172.25.45.2 server2
    minion

172.25.45.3 server3    minion

二.安装salt

1.配置yum源

将要用包所在的文件目录(此处是rhel6)放到物理机apache默认发布目录下(/var/www/html)

在server1和server2中:

vim /etc/yum.repos.d/rhel-source.repo

yum clean all

yum repolist

2.安装服务

在两台机器/etc/hosts加入本地解析

在server1上:

yum install salt-master -y

etc/init.d/salt-master start

在server2上:

yum install salt-minion -y

编辑server2的minion配置文件,指定master

vim /etc/salt/minion

/etc/init.d/salt-minion start

在server1中:

salt-key -L                   ###查看到已经签名的客户端

salt-key -A                   ##添加所有

salt server2 test.ping                      ##检测网路是否通

salt server2 cmd.run hostname   ##显示server2主机名称

salt server2 cmd.run 'df -h'           ##查看磁盘空间使用情况

                         

在minion(server2)端的 /etc/salt/pki/minion 目录下面会多出一个minion_master.pub 文件

与master(server1)端的 master.pub一致

yum install -y lsof                             ##列出当前系统打开文件的工具

lsof -i: 4505             

在server3上做和server2一样的配置,然后在在server1中:salt-key -L 查看到已经签名的客户端 salt-key -A   ##添加所有

lsof -i: 4505              ##查看server3是否连接上

在server1上:

netstat -antlp

4505端口:用来链接slave,发布订阅
4506端口:请求响应,模式为:zmq(消息队列)

####也可以安装tree(yum install -y tree)来查看master和minion连接情况

三、配置自动化部署

修改master端的配置文件

vim /etc/salt/master

   file_roots: 

      base: 

          - /srv/salt          # 这个目录没有,自己建立

(一)一键部署httpd:自动重启httpd服务,更改httpd的默认端口
1.mkdir /srv/salt

/etc/init.d/salt-master restart

2.配置自动化安装httpd的脚本

在server1上:

cd /srv/salt/

mkdir apache

cd apache

vim install.sls

    

mkdir files

cd files  

 salt server2 state.sls apache.install

##出现后两个任务执行失败的结果 但此时server2上已经安装好apache

在server2上:

scp /etc/httpd/conf/httpd.conf  server1:/srv/salt/apache/files

运行,在minion端自动安装了httpd服务,将httpd的配置文件放到master的base/httpd/files下

 salt server2 state.sls apache.install


 

测试:自动重启httpd服务,更改httpd的默认端口
在server1中:vim/srv/salt/apache/files/httpd.conf # 编辑配置文件,修改httpd服务的端口为8080

 salt server2 state.sls apache.install    重新执行此脚本发现端口改变


在server2中:netstat antlp    ##发现最新的端口号已经从master端推送到minion端
 

做完本次实验将端口号还原到80 并执行脚本推送到server2

(二)salt源码编译安装nginx

yum install python-setproctitle.x86_64 -y    ##由于salt软件使用python写的 所以源码编译需要
1.在master端:

mkdir /srv/salt/nginx/files -p

cd /srv/salt/nginx/files                                       # 将nginx的源码包放进去

vim install.sls

nginx-install:

     pkg.installed:

          - pkgs:
               - gcc
               - pcre-devel
               - openssl-devel                                            # 安装源码编译的依赖项
     file.managed:

       - name: /opt/nginx-1.10.1.tar.gz
       - source: salt://nginx/files/nginx-1.10.1.tar.gz    # 源码包存放的位置
     cmd.run: ......
        - creates: /usr/local/nginx            # 检验条件,当存在这个目录时,就不再编译安装


2.执行脚本
salt server3 state.sls nginx.install

3.编辑执行脚本

执行:salt server3 state.sls nginx.service

4.在server3中查看是否已经安装nginx

netstat -antlp    ##看出nginx80端口已开启

(三) nginx的工作进程

在server3上:

 cd /usr/local/nginx/conf/

scp nginx.conf server1:/srv/salt/nginx/files

nginx是自己编辑的脚本

在server1上:

vim /srv/salt/nginx/service.sls

salt server3 state.sls nginx.service


在server3上:ps ax

在server1改变进程数再次推送

vim  /srv/salt/nginx/files/nginx/conf

在server3上:ps ax

(四)实现创建ngxin用户并且自动启动加载

1.在master端,base目录下建立users/编辑创建用户和用户组

vim files/nginx.conf

mkdir /srv/salt/users

vim users/nginx.sls

vim /srv/salt/nginx/service.sls

在server3中查看:

###############一键推送##########

在上面配置好前提下,可以设置多台机器一键推送,在base目录下建立编辑top.sls,即可实现

salt '*' state.highstate

猜你喜欢

转载自blog.csdn.net/qq_42711214/article/details/83690524
今日推荐