SaltStack自动化运维工具
一、SaltStack的了解
SaltStack管理工具允许管理员对多个操作系统创建一个一致的管理系统,包括VMware vSphere环境。
SaltStack作用于仆从和主拓扑。SaltStack与特定的命令结合使用可以在一个或多个下属执行。
主要用的语言为python
二、SaltStack的配置
使用自动化软件,实现在server1中显示server2中执行的内容(server1、2均为rhel6.5)
1、在server1中配置yum源
---> vim /etc/yum.repos.d/rhel-source.repo # 添加如下仓库
[salt]
name=salt
baseurl=http://172.25.2.250/rhel6
gpgcheck=0---> yum clean all
---> yum repolist # 成功结果如下
---> scp /etc/yum.repos.d/rhel-source.repo server2:/etc/yum.repos.d/ # 完成后复制到server2中
2、在server1中安装salt-master,并修改master的配置文件
---> yum install -y salt-master
---> vim /etc/salt/master # 取消534-536行的注释
---> /etc/init.d/salt-master start # 启动服务
---> netstat -antlp # 查看端口
注释:4505端口用来链接slave,发布订阅;4506端口用来请求响应(模式为zmq,消息队列)
---> lsof -i :4505 # lsof查看端口的链接情况
3、在server2中安装salt-minion软件,并修改minion的配置文件
---> yum install -y salt-minion
---> vim /etc/salt/minion # 添加master对应的ip
---> /etc/init.d/salt-minion start # 启动minion服务。(启动服务后,会生成一个minion.id文件。若修改ip之后,要删除该文件,然后重新启动)
4、在server1中添加server2。(也是master和minion交换公钥的过程)
---> salt-key -A # 添加显示的主机
---> salt-key -L # 显示salt的情况
5、我们可以在master和minion两个主机上分别查看公钥,是相同的。
6、在server1端进行测试
---> salt server2 test.ping # 查看server2是否可以ping通
---> salt server2 cmd.run df # 查看server2的df
server2:
三、自动化部署
(一)http服务的安装
1)在server1中配置http的安装脚本
---> mkdir /srv/salt # 由于之前取消master配置文件的注释,所以要有目录/srv/salt
---> cd /srv/salt
---> mkdir apache # 创建apache目录。用来存放脚本
---> cd apache
---> vim web.sls # 注意,该语言格式要求严格,每行开头有空格的时候,必须是两个空格
apache-install:
- pkgs:
- httpd
- php
---> salt server2 state.sls apache.web # 执行脚本
2)、在server2中查看httpd和php的是否安装
(二)启动httpd服务并修改端口为8080
1)首先在server1中创建目录,存放httpd.conf配置文件
---> cd /srv/salt/apache/
---> mkdir files
2)将server2安装好的httpd的配置文件复制到server1的固定目录下
---> scp /etc/httpd/conf/httpd.conf server1:/srv/salt/apache/files
3)在server1中编辑执行脚本
---> vim web.sls
apache-install:
pkg.installed:
- pkgs:
- httpd
- php
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://apache/files/httpd.conf
- mode: 644
- user: root
service.running:
- name: httpd
- enable: True
- reload: True
- watch:
- file: apache-install# 在执行脚本之前,我们先修改server1中的httpd.conf文件的端口为8080
4)测试:在server2中查看httpd的端口
---> netstat -antlp
(三)自动化部署:源码安装nginx
1)在server1中编辑配置脚本
---> mkdir /src/salt/nginx/
---> cd /src/salt/nginx
---> mkdir files # files目录中存放nginx源码包
---> vim nginx.sls # 进行nginx源码安装的时候,首先安装依赖包;再发送源码包,最后进行源码包的解压
nginx-install:
pkg.installed:
- pkgs:
- gcc
- pcre-devel
- openssl-devel # 安装源码编译的依赖项
file.managed:
- name: /opt/nginx-1.15.3.tar.gz
- source: salt://nginx/files/nginx-1.15.3.tar.gz # 源码包存放的位置
cmd.run:
- name: cd /opt && tar zxf nginx-1.15.3.tar.gz && cd nginx-1.15.3 && sed -i.bak 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && sed -i.bak 's/#define NGINX_VER "nginx\/" NGINX_VERSION/#define NGINX_VER "nginx"/g' src/core/nginx.h && ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio &> /dev/null && make > /dev/null && make install > /dev/null
- creates: /usr/local/nginx # 检验条件,当存在这个目录时,就不再编译安装
---> salt server2 state.sls nginx.install # 执行脚本,结果如下
2)在server2中查看nginx是否安装成功
(四)salt自动重新加载nginx的配置文件
1)创建user目录,存放的sls脚本文件,用来生成nginx用户
---> cd /srv/salt
---> mkdir user
---> vim nginx.sls # 创建nginx组和用户
nginx-group:
group.present:
- name: nginx
- gid: 800
nginx-user:
user.present:
- name: nginx
- uid: 800
- gid: 800
- shell: /sbin/nologin
- createhome: False
- home: /usr/local/nginx
2)修改server.sls文件
---> vim /srv/salt/nginx/service.sls
include:
- user.nginx # 调用usermul下的nginx.sls来创建用户
- nginx.install # 执行软件包的安装
/usr/local/nginx/conf/nginx.conf:
file.managed:
- source: salt://nginx/files/nginx.conf
nginx-service:
file.managed:
- name: /etc/init.d/nginx
- source: salt://nginx/files/nginx
- mode: 755
service.running:
- name: nginx
- reload: True
- watch:
- file: /usr/local/nginx/conf/nginx.conf
3)执行service.sls文件
---> cd /usr/salt/nginx
---> salt server2 state.sls nginx.service
4)在server2中查看nginx用户和nginx服务的启动状态
SaltStack自动化运维工具的更多相关文章
- SaltStack(自动化运维工具)
SaltStack管理工具允许管理员对多个操作系统创建一个一致的管理系统,包括VMware vSphere环境.SaltStack作用于仆从和主拓扑.SaltStack与特定的命令结合使用可以在一个或 ...
- saltstack自动化运维工具搭建个人笔记
至于为什么选择saltstack,因为Puppet.Chef基于Ruby开发,而ansible.saltstack基于python开发,便于后期二次,良好的可移植性. 又,ansible基于SSH协议 ...
- 自动化运维工具 SaltStack 搭建
原文地址:https://www.ibm.com/developerworks/cn/opensource/os-devops-saltstack-in-cloud/index.html#N10072 ...
- 自动化运维工具SaltStack详细部署
==========================================================================================一.基础介绍==== ...
- 自动化运维工具SaltStack详细部署【转】
==========================================================================================一.基础介绍==== ...
- CheungSSH国产自动化运维工具开源Web界面
CheungSSH web2.0 发布文档 CheungSSH 简介 CheungSSH是一款国人自主研发的Linux运维自动化管理服务器软件,秉着为企业降低运营成本,解放管理员双手和自动化生产的理念 ...
- 自动化运维工具Ansible详细部署 (转载)
自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog. ...
- 企业级自动化运维工具应用实战-ansible
背景 公司计划在年底做一次大型市场促销活动,全面冲刺下交易额,为明年的上市做准备.公司要求各业务组对年底大促做准备,运维部要求所有业务容量进行三倍的扩容,并搭建出多套环境可以共开发和测试人员做测试,运 ...
- Ansible自动化运维工具-上
[Ansible特点] 1)Ansible与saltstack均是基于Python语言开发的 2)安装使用简单,基于不同插件和模块实现各种软件,平台,版本的管理以及支持虚拟容器多层级的部署 3)不需要 ...
随机推荐
- Java Collections Framework概览
本文github地址 概览 容器,就是可以容纳其他Java对象的对象.Java Collections Framework(JCF)为Java开发者提供了通用的容器,其始于JDK 1.2,优点是: 降 ...
- [Shiro] - 基于URL配置动态权限
基于shiro进阶 更改了数据库表 之前的PageController是通过@RequiresPermissions和@RequiresRoles进行是否有权限/是否有角色的判定调用@RequestM ...
- Unity3D学习笔记(十七):IK动画、粒子系统和塔防
新动画系统: 反向动力学动画(IK功能): 魔兽世界(头部动画),神秘海域(手部动画),人类一败涂地(手部动画) 如何启用(调整) 1.必须是新动画系统Animator 设置头.手.肘的目标点 2.动 ...
- Unity3D学习笔记(十三):委托、考试复习
委托:比较什么时候用委托好 下课案例:不用下课铃 1.ClassManager需要拿到所有教室的引用,课堂管理者应该只负责计时并告知每间教室 2.每间教室应该是由当班老师负责是否需要下课,而课堂管 ...
- HDU 3549 Flow Problem(最大流模板)
http://acm.hdu.edu.cn/showproblem.php?pid=3549 刚接触网络流,感觉有点难啊,只好先拿几道基础的模板题来练练手. 最大流的模板题. #include< ...
- 机器学习 MLIA学习笔记(一)
监督学习(supervised learning):叫监督学习的原因是因为我们告诉了算法,我们想要预测什么.所谓监督,其实就是我们的意愿是否能直接作用于预测结果.典型代表:分类(classificat ...
- Python 获取文件的创建时间,修改时间和访问时间
# 用到的知识# os.path.getatime(file) 输出文件访问时间# os.path.getctime(file) 输出文件的创建时间# os.path.getmtime(file) 输 ...
- python 集合的运算
x = frozenset([, , , , ]) y = frozenset([, , , , ]) #如果x与y没有公共元素,返回true print(x.isdisjoint(y)) #返回x与 ...
- Django模板语言详解
本节将介绍Django模版系统的语法.Django模版语言致力于在性能和简单性上取得平衡. 如果你有过其它编程背景,或者使用过一些在HTML中直接混入程序代码的语言,那么你需要记住,Django的模版 ...
- CentOS下的Autoconf和AutoMake(完善篇) 3
在<实践篇>之后,由于需求不断修正,所以这篇是针对<实践篇>的一些完善.(以后内容会不定期增加完善) 1.不想链接到math的动态库,想连接到静态库①使用命令ldd ./mys ...