首先先了解下saltstack是什么,为什么使用它

它与Ansible、Puppet都属于集中管理工具,由于现在企业规模的不断庞大及业务的增长,所需要管理的服务器数量增多,而且大部分机器都属于同类业务集群,操作是统一的,甚至于所有机器都有一些相同的初始项,连上所有机器进行完全相同的操作固然是可以的,但是浪费了大量的时间及精力,感觉太蠢。集中管理工具的出现就是将同类机器的统一操作统一执行,一次解决,得到返回结果然后确定任务是否成功,如果出现个别情况可以再去对应目标上排错,节约了大量时间,提升工作效率。因此集中管理的前提是规范化!

以前是使用Puppet的比较多,但是Puppet的安装配置以及使用真的是特么太坑了,so,随着时间的推移,Saltstack、Ansible的大规模使用时代就到来了。Ansible也是一款优秀的集中管理工具,主要基于ssh协议进行相关操作,他的特点是不需要客户端即可立刻使用(其实我萌的Saltstack也是可以哒),大家选择自己喜欢的就可以了

安装与简单使用

 1 [root@linux-node1 ~]# cat /etc/yum.repos.d/saltstack.repo
2 [saltstack-repo]
3 name=SaltStack repo for RHEL/CentOS $releasever
4 baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest
5 enabled=1
6 gpgcheck=0
7 [root@linux-node1 ~]# yum install -y salt-master salt-minion
8 [root@linux-node1 ~]# systemctl start salt-master
9 [root@linux-node1 ~]# vim /etc/salt/minion
10 master:
11 - 192.168.56.11 # 前面2个空格,“-”后一个空格!
12 [root@linux-node1 ~]# systemctl start salt-minion
13 [root@linux-node1 ~]# salt-key –L # 列出key状态
14 Accepted Keys:
15 Denied Keys:
16 Unaccepted Keys:
17 linux-node1.example.com # 会出现主机hostname
18 Rejected Keys:
19 [root@linux-node1 ~]# salt-key –A # 代表接受所有Unaccepted Keys
20 [root@linux-node1 ~]# salt-key -L
21 Accepted Keys:
22 linux-node1.example.com
23 Denied Keys:
24 Unaccepted Keys:
25 Rejected Keys:
26 [root@linux-node1 ~]# salt '*' test.ping
27 linux-node1.example.com:
28 True

同样的minion相关操作我们也在node2上执行一边

 1 [root@linux-node1 ~]# cat /etc/yum.repos.d/saltstack.repo
2 [saltstack-repo]
3 name=SaltStack repo for RHEL/CentOS $releasever
4 baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest
5 enabled=1
6 gpgcheck=0
7 [root@linux-node1 ~]# yum install -y salt-minion
8 [root@linux-node1 ~]# systemctl start salt- minion
9 [root@linux-node1 ~]# vim /etc/salt/minion
10 master:
11 - 192.168.56.11 # 前面2个空格,“-”后一个空格!
12 [root@linux-node1 ~]# systemctl start salt-minion

然后回到node1上

 1 [root@linux-node1 ~]# salt-key -L
2 Accepted Keys:
3 linux-node1.example.com
4 Denied Keys:
5 Unaccepted Keys:
6 linux-node2.example.com
7 Rejected Keys:
8 [root@linux-node1 ~]# salt-key –a linux-node2.example.com # 代表单独接受某个key
9 [root@linux-node1 ~]# salt-key –L
10 [root@linux-node1 ~]# salt-key -L
11 Accepted Keys:
12 linux-node1.example.com
13 linux-node2.example.com
14 Denied Keys:
15 Unaccepted Keys:
16 Rejected Keys:
17 [root@linux-node1 ~]# salt '*' test.ping
18 linux-node2.example.com:
19 True
20 linux-node1.example.com:
21 True

在初使用salt的时候,我们要是记住的最重要的命令就是cmd.run,cmd.run很重要,它就是专门来执行bash命令的,也就是让你所希望的机器都执行同一条命令,这对于同类机器的操作节约了大量时间,单单会使用cmd.run就可以使日常重复性工作减少很多了

1 [root@linux-node1 ~]# salt '*' cmd.run 'ls -l /root'
2 linux-node2.example.com:
3 total 0
4 linux-node1.example.com:
5 total 0
6 drwxr-xr-x 5 root root 79 Nov 13 16:35 tidb-latest-linux-amd64

这里有一些常见的问题

1.master与minion是如何通信的?minion上木有开神马端口呀

Saltstack默认使用zeromq传递消息,zeromq会随着Salt的安装而安装,他是一个消息队列服务,master通过4505端口将指令放入zeromq的队列中,而所有的minion都会监听master的4505端口,然后从队列中拿消息进行对比决定是否进行操作,如果操作将自己操作的结果丢回zeromq另外一个队列,master从4506端口监听该队列,得到返回结果,然后展示出来

 1 [root@linux-node1 ~]# netstat -tpln
2 Active Internet connections (only servers)
3 Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
4 tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
5 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 998/sshd
6 tcp 0 0 0.0.0.0:4505 0.0.0.0:* LISTEN 1055/python # 发送指令
7 tcp 0 0 0.0.0.0:4506 0.0.0.0:* LISTEN 1073/python # 接受结果
8 tcp6 0 0 :::111 :::* LISTEN 1/systemd
9 tcp6 0 0 :::22 :::* LISTEN 998/sshd
10 [root@linux-node2 tmp]# netstat -an|grep 4505
11 tcp 0 0 192.168.56.12:48492 192.168.56.11:4505 ESTABLISHED # 与master的4505一直处于ESTABLISHED状态

2.我的key认证不想用主机名,我想自定义名称

我们只需要在配置minion时再配置id就可以了,但是建议还是使用主机名,因为不是所有软件都可以自定义别名,我们要做的是全流程自动化,而不单单是salt这方面,而主机名是大家都可以通用的

1 [root@linux-node1 ~]# vim /etc/salt/minion
2 #id: # 修改成id: XXXXX

3.我更改了主机名没什么反映啊,怎么破?

这就要说salt之间的认证流程了

启动master,生成自己的密钥与公钥,叫master.pem ,master.pub

1 [root@linux-node1 master]# pwd
2 /etc/salt/pki/master
3 [root@linux-node1 master]# ls
4 master.pem master.pub minions minions_autosign minions_denied minions_pre minions_rejected

minion配置文件内指定Master,开启服务,生成自己的密钥与公钥,叫minion.pem ,minion.pub

1 [root@linux-node2 minion]# pwd
2 /etc/salt/pki/minion
3 [root@linux-node2 minion]# ls
4 minion.pem minion.pub

minion会想配置的目标发将自己的公钥存放在master的/etc/salt/pki/master/minions_pre下,请问你是我的master嘛

master一看,我靠,女装大佬,可爱,想,就表示,对对对我就是你的master,然后接受密钥,并把自己的公钥发给minion从而正式签订契约,此时minions_pre下的minion公钥转放到/etc/salt/pki/master/minions下,而master的公钥也会在minion的/etc/salt/pki/minion下保留一份

1 [root@linux-node2 minion]# ls
2 minion_master.pub minion.pem minion.pub

所以我们根据上述流程,当minion的id变更后,我们需要进行如下操作

1 minion端停止salt-minion
2 master端salt-key –d 原本minion的id
3 minion端删除/etc/salt/pki/minion下所有文件
4 minion端修改配置文件中的id变成需要的新id
5 重启minion端的salt-minion
6 master端认证接受新的id

4.补充两个对同一台机器同时执行state文件的方式

concurrent=True,表示完全同时进行,一般用于状态文件之间的执行绝对不会发生冲突的情况,比如执行内核初始化状态文件跟安装java环境状态文件

queue=True,表示按队列内先进先出顺序进行,一般用于不清楚是否有冲突,比如执行修改同一文件的不同行的状态文件,第一个执行完会自己执行第二个,不会报错

[root@linux-node1 ~]# salt '*1*' state.sls dnsmasq.dnsmasq-comment saltenv=prod pillar='{"project_url": "static.duia.com"}' concurrent=True
[root@linux-node1 ~]# salt '*1*' state.sls dnsmasq.dnsmasq-comment saltenv=prod pillar='{"project_url": "static.duia.com"}' queue=True

saltstack master minion安装配置简单使用的更多相关文章

  1. 1、Saltstack简介及安装配置

    1.Saltstack简介 Saltstack是基于Python开发的一套C/S架构,具备Puppet.Ansible功能于一身的配置管理工具,功能十分强大,各模块融合度及复用性极高:使用号称世界上最 ...

  2. puppet yum安装配置,简单证书维护

    Puppet学习之puppet的安装和配置 一.Puppet简介 Puppet基于ruby语言开发的自动化系统配置工具,可以C/S模式或独立运行,支持对所有UNIX及类UNIX系统的配置管理,最新版本 ...

  3. saltstack master minion 配置文件

    Master端的配置是修改/etc/salt下master配置文件.以下是Master端常用的配置. interface: 指定bind 的地址(默认为0.0.0.0) publish_port: 指 ...

  4. Jenkins安装配置简单使用

    安装启动是十分简单的,直接去https://jenkins.io/download/下载对应的rpm包就好了,需要注意的是我们的机器上要提前有java环境,相对应要选择你java环境可以支持的jenk ...

  5. ELK安装配置简单使用

    ELK是三款软件的总称,包括了elasticsearch.logstash.kibana,其实在生产使用中,我们还需要使用到其他的更多辅助软件来更好更合理的收集展示数据. Elasticsearch: ...

  6. Cobbler安装配置简单使用

    安装Cobbler [root@linux-node3 ~]# yum -y install epel-release [root@linux-node3 ~]# yum -y install cob ...

  7. Katalon Studio 安装 配置 简单使用

    本教程只针对Katalon Studio进行演示操作. 一.下载 Katalon 官网下载地址:https://www.katalon.com/download/ (需要注册账号) 二.解压.配置 直 ...

  8. glusterfs安装配置简单使用

    GlusterFS是一种分布式分布式文件系统,默认采用无中心完全对等架构,搭建维护使用十分简单,是很受欢迎的分布式文件系统. 官网https://www.gluster.org/,官网上表示Glust ...

  9. S1_搭建分布式OpenStack集群_03 Mysql、MQ、Memcached、ETCD安装配置

    一.安装mysql(contorller)controller ~]# yum -y install mariadb mariadb-server python2-PyMySQL 配置my.cnf文件 ...

随机推荐

  1. 深度探究apk安装过程

    一.先验知识 0.PcakageaManagerService版本号变化 1.概述 2.PackageManagerService服务启动流程 3. PackageManagerService入口 二 ...

  2. C和C++代码精粹笔记1

    CH1 更好的C 运算符重载规定,必须有一个为用户自定义类型 一些输出没注意到的函数: float x = 123.456, y = 12345; //cout.precision(2); //显示两 ...

  3. Python+Selenium ----unittest单元测试框架

    unittest是一个单元测试框架,是Python编程的单元测试框架.有时候,也做叫做“PyUnit”,是Junit的Python语言版本.这里了解下,Junit是Java语言的单元测试框架,Java ...

  4. C99_变长结构体实现

    /************************************************************************* > File Name: C99_lengt ...

  5. Active Directory虚拟机搭建域控服务器环境

    前言 还是和上一章一样,痛苦过后还是记录下给后来人提供便利为妙. 虚拟机选择:建议Hyper-V或者VMware 系统选择:建议WIindows Server 2003及以上 我这里是使用VMware ...

  6. Linux dnsmasq 服务

    在日常开发中,有这么一个需求: 大家在公司内网同一个网段下,一般情况上网会由网关(一般是路由器)的DHCP服务分配IP.公司内网里放了几台服务器,分别配置成静态IP,这些IP是DHCP配置时预留的.服 ...

  7. xpath 轴,节点之间的关系

    http://www.w3school.com.cn/xpath/xpath_axes.asp http://www.freeformatter.com/xpath-tester.html 测试 轴可 ...

  8. iOS8 PUSH解决方法

    本文转载至 http://blog.csdn.net/pjk1129/article/details/39548523     - (void)registerForRemoteNotificatio ...

  9. c# vs2010 连接access数据库

    第一次在博客园写博文,由于文采不怎么好,即使是自己很熟悉的东西,写起来也会感觉到不知从何讲起,我想写的多了就好了. 这篇文章主要是介绍怎么用c# 语言 vs2010连接access数据库的,连接字符串 ...

  10. 在VC++空工程中使用MFC类,采用Unicode字符集后,运行工程程序报错的解决方案

    创建一个VC++空工程,将Project Properties->General->Use of MFC改为Use MFC in a Shared DLL 新建一个源文件,内容如下 #in ...