SaltStack自动化运维初涉--安装简用篇

简介:

  很久之前,用过一段时间的Puppet,也就是简单用了用,后来慢慢就丢了,然后就去搞mysql的一些东西了,或许,很多事情就是注定的,以为再来不会用它了的时候,任务来了,说要继续研究这玩意,后面遇到一个牛X的同事,说用SaltStack比较好,而且他已经用这个做了不少实际游泳的案例了,他说,Puppet注重于最终状态,SaltStack注重于实时命令的运行,SaltStack=Puppet+Func,且SaltStack还是使用Python开发的,入手以及后续的功能自定义开发都是非常方便的。于是乎,就看看咯.

官网链接是:http://www.saltstack.com/


角色       操作系统           主机名      IP地址

Master【服务端】    RHEL6U3 X86_64    DemoServer    192.168.153.38

Minion【客户端】     RHEL6U3 X86_64    oracle        192.168.153.137


1. 安装SaltStack Master

 [1] 配置本地YUM源

1
2
3
4
5
6
7
[root@DemoServer ~] # cat /etc/yum.repos.d/rhel-source.repo
[rhel]
name=rhel
baseurl=http: //192 .168.150.3 /rhel6 .3core/
enabled=1
gpgcheck=1
gpgkey= file : ///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta , file : ///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

额外下载包:python-jinja2-2.2.1-1.el6.x86_64.rpm  

[2] 安装EPEL源

1
[root@DemoServer ~] #  rpm -Uvh http://ftp.linux.ncsu.edu/pub/epel/6/i386/epel-release-6-8.noarch.rpm

[3] 开启YUM缓存,保存安装包

1
2
3
4
5
6
7
8
9
10
11
[root@DemoServer ~] # cat /etc/yum.conf
[main]
cachedir= /var/cache/yum/ $basearch/$releasever
keepcache=0  修改为  keepcache=1
debuglevel=2
logfile= /var/log/yum .log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=3

[4] 安装SaltStack Master 软件包

1
[root@DemoServer ~] # yum install python-jinja2-2.2.1-1.el6.x86_64.rpm   salt-master salt-minion -y  //本节点即作为Master,也作为Minion使用

[5] 保存所有依赖包,用于离线安装

1
2
3
4
5
6
7
8
9
10
11
12
[root@DemoServer packages] # ll /var/cache/yum/x86_64/6Server/epel/packages
total 3356
-rw-r--r--. 1 root root   52880 May 19  2010 libyaml-0.1.3-1.el6.x86_64.rpm
-rw-r--r--. 1 root root  169348 Dec 26  2012 openpgm-5.1.118-3.el6.x86_64.rpm
-rw-r--r--. 1 root root   29556 Jun  2  2013 python-msgpack-0.1.13-3.el6.x86_64.rpm
-rw-r--r--. 1 root root  433896 Dec 15  2012 python-zmq-2.2.0.1-1.el6.x86_64.rpm
-rw-r--r--. 1 root root  161120 Apr 28  2012 PyYAML-3.10-3.el6.x86_64.rpm
-rw-r--r--. 1 root root 2156412 Nov 20 22:46 salt-0.17.2-2.el6.noarch.rpm
-rw-r--r--. 1 root root   32124 Nov 20 22:46 salt-master-0.17.2-2.el6.noarch.rpm
-rw-r--r--. 1 root root   20956 Nov 20 22:46 salt-minion-0.17.2-2.el6.noarch.rpm
-rw-r--r--. 1 root root   19292 Aug 31  2011 sshpass-1.05-1.el6.x86_64.rpm
-rw-r--r--. 1 root root  341724 Sep 22 02:18 zeromq3-3.2.4-1.el6.x86_64.rpm
1
2
[root@DemoServer ~] # ll /var/cache/yum/x86_64/6Server/rhel/packages
-rw-r--r--. 1 root root 1494848 Aug 17  2010 python-babel-0.9.4-5.1.el6.noarch.rpm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@DemoServer ~] # ll saltstack0.17.4  //共计如下软件包
total 5288
-rw-r--r--. 1 root root   52880 Jan  2 16:35 libyaml-0.1.3-1.el6.x86_64.rpm
-rw-r--r--. 1 root root  169348 Jan  2 16:35 openpgm-5.1.118-3.el6.x86_64.rpm
-rw-r--r--. 1 root root 1494848 Jan  2 16:36 python-babel-0.9.4-5.1.el6.noarch.rpm
-rwxr--r--. 1 root root  476200 Jan  2 16:36 python-jinja2-2.2.1-1.el6.x86_64.rpm
-rw-r--r--. 1 root root   29556 Jan  2 16:35 python-msgpack-0.1.13-3.el6.x86_64.rpm
-rw-r--r--. 1 root root  433896 Jan  2 16:35 python-zmq-2.2.0.1-1.el6.x86_64.rpm
-rw-r--r--. 1 root root  161120 Jan  2 16:35 PyYAML-3.10-3.el6.x86_64.rpm
drwxr-xr-x. 2 root root    4096 Jan  2 16:36 repodata
-rw-r--r--. 1 root root 2156412 Jan  2 16:35 salt-0.17.2-2.el6.noarch.rpm
-rw-r--r--. 1 root root   32124 Jan  2 16:35 salt-master-0.17.2-2.el6.noarch.rpm
-rw-r--r--. 1 root root   20956 Jan  2 16:35 salt-minion-0.17.2-2.el6.noarch.rpm
-rw-r--r--. 1 root root   19292 Jan  2 16:35 sshpass-1.05-1.el6.x86_64.rpm
-rw-r--r--. 1 root root  341724 Jan  2 16:35 zeromq3-3.2.4-1.el6.x86_64.rpm

[6] 制作SaltStack安装YUM源

1
2
3
4
5
6
7
8
9
10
[root@DemoServer ~] # mv saltstack0.17.4  /var/www/html/saltstack/
[root@DemoServer ~] # yum install createrepo -y
[root@DemoServer ~] # createrepo -p -d -o /var/www/html/saltstack/ \
/var/www/html/saltstack/
12 /12  - salt-minion-0.17.2-2.el6.noarch.rpm                                  
Saving Primary metadata
Saving  file  lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

[7] 启动httpd服务

1
[root@DemoServer ~] # service httpd start


[8] 安装oracle节点的salt-minion

(1) 配置YUM源

1
2
3
4
5
6
7
8
9
10
11
12
[root@oracle ~] # cat /etc/yum.repos.d/rhel-source.repo
[rhel]
name=rhel
baseurl=http: //192 .168.150.3 /rhel6 .3core/
enabled=1
gpgcheck=1
gpgkey= file : ///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta , file : ///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[saltstack]
name=saltstack
baseurl=http: //192 .168.153.38 /saltstack
enabled=1
gpgcheck=0

(2) 安装salt-minion 软件包

1
[root@oracle ~] # yum  install salt-minion -y

2. 启动服务

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@DemoServer ~] # iptables  -F ; service iptables save ; service iptables restart //清空所有IPTABLES规则,或者开放4505与4506端口
[root@DemoServer ~] # setenforce  0 //手动设置SELINUX状态
[root@DemoServer ~] # sed -i 's/enforcing/disabled/g'  /etc/sysconfig/selinux //修改SELINUX状态为disabled,重启生效
[root@DemoServer ~] # grep 'SELINUX=' /etc/sysconfig/selinux
# SELINUX= can take one of these three values:
SELINUX=disabled
[root@DemoServer ~] # service salt-master start //启动salt-master
[root@DemoServer ~] # chkconfig  salt-master on //设置salt-master开机启动
[root@DemoServer ~] # service salt-minion start //启动salt-minion
[root@DemoServer ~] # chkconfig salt-minion on //设置salt-minion开机启动
[root@DemoServer ~] # netstat  -nltup |grep python //查看端口是否被监听
tcp   0   0 192.168.153.38:4505   0.0.0.0:*   LISTEN  882 /python       
tcp   0   0 192.168.153.38:4506   0.0.0.0:*   LISTEN  874 /python

oracle节点上面同样启动

1
2
[root@oracle ~] # service salt-minion start //启动salt-minion服务
[root@oracle ~] # chkconfig salt-minion on //设为开机启动

3. 修改配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Master:
[root@DemoServer ~] # cat  /etc/salt/master  |grep -v '#' |grep interface
interface: 192.168.153.38   // 修改监听IP
[root@DemoServer ~] # service salt-master restart //重启salt-master服务
两个 Minion:
[root@DemoServer ~] # cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.153.38DemoServer
[root@DemoServer ~] # cat   /etc/salt/minion |grep -v '#'|grep  master
master: DemoServer   // 指定master的可解析的主机名或者IP地址
[root@DemoServer ~] # service salt-minion restart //重启 salt-minion 服务
[root@oracle ~] # cat /etc/salt/minion |grep -v '#' |grep  master
master: 192.168.153.38
[root@oracle ~] #  service salt-minion restart //重启 salt-minion 服务


4. 密钥验证



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[root@DemoServer ~] # salt-key  -L   //列出所有请求key
Accepted Keys:
Unaccepted Keys:
DemoServer  == 本机
oracle            ==新主机,主机名为oracle IP为192.168.153.37
Rejected Keys:
【 上面识别到的 id  默认取客户端的主机名的FQDN值,如果在客户端的 /etc/salt/minion_id 中进行修改,则会显示自定义的 id 值 】
[root@DemoServer ~] # salt-key  -a  DemoServer  //批准DemoServer
The following keys are going to be accepted:
Unaccepted Keys:
DemoServer
Proceed? [n /Y ] y
Key  for  minion DemoServer accepted.
[root@DemoServer ~] # salt-key  -L
Accepted Keys:
DemoServer
Unaccepted Keys:
oracle
Rejected Keys:
[root@DemoServer ~] # salt-key  -A  //批准接受全部
The following keys are going to be accepted:
Unaccepted Keys:
oracle
Proceed? [n /Y ] y
Key  for  minion oracle accepted.
[root@DemoServer ~] # salt-key  -L  //再次查看,全部被接受
Accepted Keys:
DemoServer
oracle
Unaccepted Keys:
Rejected Keys:

5. 简单命令尝试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[root@DemoServer ~] # salt oracle test.ping
oracle:
     True
[root@DemoServer ~] # salt '*' test.ping
DemoServer:
     True
oracle:
     True
或者
[root@DemoServer ~] # salt -L 'oracle153_37,DemoServer' test.ping
oracle153_37:
     True
DemoServer:
     True
Grains 类似于Puppet中的facter
[root@DemoServer ~] # salt -G 'cpuarch:x86_64' grains.item num_cpus
DemoServer:
   num_cpus: 4
oracle153_37:
   num_cpus: 4
[root@DemoServer ~] # salt '*' grains.ls  //查看有哪些参数可以显示
[root@DemoServer ~] # salt '*' grains.items  //列出所有参数的条目,item复数
  // 列出具体的参数值,item单数
[root@DemoServer ~] # salt '*'  grains.item os
DemoServer:
   os: RedHat
oracle153_37:
   os: RedHat


昨天对SaltStack的探讨就这些,记录下来,再深究。










本文转自 暗黑魔君 51CTO博客,原文链接:http://blog.51cto.com/clovemfong/1347951,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
56 4
|
12天前
|
机器学习/深度学习 数据采集 人工智能
智能运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的兴起背景、核心组件及其在现代IT运维中的应用。通过对比传统运维模式,阐述了AIOps如何利用机器学习、大数据分析等技术,实现故障预测、根因分析、自动化修复等功能,从而提升系统稳定性和运维效率。文章还深入分析了实施AIOps面临的挑战与解决方案,并展望了其未来发展趋势。 ####
|
21天前
|
机器学习/深度学习 数据采集 运维
智能化运维:机器学习在故障预测和自动化响应中的应用
智能化运维:机器学习在故障预测和自动化响应中的应用
47 4
|
1月前
|
存储 运维 监控
高效运维:从基础架构到自动化管理的全面指南
【10月更文挑战第11天】 本文将深入探讨如何通过优化基础架构和引入自动化管理来提升企业IT运维效率。我们将从服务器的选择与配置、存储解决方案的评估,到网络的设计与监控,逐一解析每个环节的关键技术点。同时,重点讨论自动化工具在现代运维中的应用,包括配置管理、持续集成与部署(CI/CD)、自动化测试及故障排除等方面。通过实际案例分析,展示这些技术如何协同工作,实现高效的运维管理。无论是IT初学者还是经验丰富的专业人员,都能从中获得有价值的见解和实操经验。
76 1
|
1月前
|
运维 监控 测试技术
构建高效运维体系:从监控到自动化的实践之路
【10月更文挑战第9天】 在当今信息技术飞速发展的时代,运维作为保障系统稳定性与效率的关键角色,正面临前所未有的挑战。本文将探讨如何通过构建一个高效的运维体系来应对这些挑战,包括监控系统的搭建、自动化工具的应用以及故障应急处理机制的制定。我们将结合具体案例,分析这些措施如何帮助提升系统的可靠性和运维团队的工作效率。
53 1
|
1月前
|
运维 jenkins 持续交付
自动化部署的魅力:如何用Jenkins和Docker简化运维工作
【10月更文挑战第7天】在现代软件开发周期中,快速且高效的部署是至关重要的。本文将引导你理解如何使用Jenkins和Docker实现自动化部署,从而简化运维流程。我们将从基础概念开始,逐步深入到实战操作,让你轻松掌握这一强大的工具组合。通过这篇文章,你将学会如何利用这些工具来提升你的工作效率,并减少人为错误的可能性。
|
1月前
|
存储 运维 监控
高效运维管理:从基础架构优化到自动化实践
在当今数字化时代,高效运维管理已成为企业IT部门的重要任务。本文将探讨如何通过基础架构优化和自动化实践来提升运维效率,确保系统的稳定性和可靠性。我们将从服务器选型、存储优化、网络配置等方面入手,逐步引导读者了解运维管理的核心内容。同时,我们还将介绍自动化工具的使用,帮助运维人员提高工作效率,降低人为错误的发生。通过本文的学习,您将掌握高效运维管理的关键技巧,为企业的发展提供有力支持。
|
1月前
|
运维 监控 安全
构建高效运维体系:从监控到自动化的全面指南在当今数字化时代,运维作为保障系统稳定性和效率的重要环节,其重要性不言而喻。本文将深入探讨如何构建一个高效的运维体系,从监控系统的搭建到自动化运维的实施,旨在为读者提供一套完整的解决方案。
本文详细介绍了高效运维体系的构建过程,包括监控系统的选择与部署、日志分析的方法、性能优化的策略以及自动化运维工具的应用。通过对这些关键环节的深入剖析,帮助运维人员提升系统的可靠性和响应速度,降低人工干预成本,实现业务的快速发展和稳定运行。
|
1月前
|
运维 监控 网络安全
Python 在网络运维方面的自动化应用实例
Python 在网络运维方面的自动化应用实例
|
1月前
|
机器学习/深度学习 运维 监控
提升运维效率:自动化工具与实践的融合
【10月更文挑战第3天】 在当今信息技术迅猛发展的时代,运维作为保持系统稳定性和性能的关键角色变得越来越重要。本文将探讨如何通过结合自动化工具和最佳实践来优化运维流程,实现高效、可靠的运维管理。从基础监控到高级自动化,我们将一步步引导您了解如何搭建和维护一个高效的运维体系。
37 3
下一篇
无影云桌面