环境准备

[root@server elasticsearch]# cat /etc/redhat-release 
CentOS release 6.6 (Final)
[root@server elasticsearch]# uname -r
2.6.32-504.el6.x86_64

配置表:

环境配置:

master:

[root@master ~]# tail - /etc/hosts
192.168.30.151 master.nulige.com
192.168.30.152 node0l.nulige.com

node01:

[root@node01 ~]# tail - /etc/hosts
192.168.30.151 master.nulige.com
192.168.30.152 node0l.nulige.com

安装软件:

1、添加repo源

阿里源:

 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

官网源:

#CentOS6.x
yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-1.el6.noarch.rpm #CentOS7.x
yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-1.el7.noarch.rpm

2、安装master

[root@linux-node1 ~]# yum install salt-master -y

设置开启自启动
[root@linux-node1 ~]# chkconfig salt-master on
启动salt master
[root@linux-node1 ~]# /etc/init.d/salt-master start
startStarting salt-master daemon: [ OK ] [root@master ~]# vi /etc/salt/master 
interface: 192.168.14.67

3、安装minion

[root@linux-node2 ~]# yum install -y salt-minion
修改配置文件,告诉他master ip地址 [root@linux-node2 ~]# vim /etc/salt/minion
master: 192.168.14.67
配置开机自启动,然后启动minion服务 [root@linux-node2 ~]# chkconfig salt-minion on
[root@linux-node2 ~]# /etc/init.d/salt-minion start
至此,服务安装完毕!

高级玩法:

更改master和node01主机下面的vi /etc/hosts文件,指向master主机的ip地址,其它配置文件都不用修改。就可以直接node01连到master。

192.168.30.151 salt

a、更改日志级别:

[root@master salt]# vi /etc/salt/master 
#log_level: warning
log_level: debug #把上面的warning 改成debug ,这样就可以输出更详细日志

更改配置文件,需要重启服务。

#在master上面重启服务
/etc/init.d/salt-master restart

b、查看日志

[root@master salt]# cat /var/log/salt/master 

2017-04-14 00:06:03,008 [salt.client      ][ERROR   ][1345] Unable to connect to the salt master publisher at /var/run/salt/master
2017-04-14 00:33:07,670 [salt.log.setup ][ERROR ][2361] An un-handled exception was caught by salt's global exception handler:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 163: ordinal not in range(128)
Traceback (most recent call last):
File "/usr/bin/salt", line 10, in <module>
salt_main()
File "/usr/lib/python2.6/site-packages/salt/scripts.py", line 349, in salt_main
client.run()

  

4、在master机器上面操作#接受所有客户端授权[root@master ~]# salt-key -A

The following keys are going to be accepted:
Unaccepted Keys:
node0l.nulige.com
Proceed? [n/Y] y
Key for minion node0l.nulige.com accepted.

#授权某台机授权
[root@master salt]# salt-key -A node0l.nulige.com -y
#查看主机
[root@master ~]# salt-key -L
Accepted Keys:
node0l.nulige.com
Denied Keys:
Unaccepted Keys:
Rejected Keys: #在master上面执行命令
[root@master ~]# salt 'node0l.nulige.com' cmd.run 'ifconfig'
node0l.nulige.com:
eth0 Link encap:Ethernet HWaddr 00:0C:29:9C:BC:75
inet addr:192.168.14.66 Bcast:192.168.14.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe9c:bc75/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:26978 errors:0 dropped:0 overruns:0 frame:0
TX packets:6178 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:32649669 (31.1 MiB) TX bytes:659601 (644.1 KiB) lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

常用命令

#检查端口
[root@master ~]# netstat -lnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 192.168.30.151:4505 0.0.0.0:* LISTEN
tcp 0 0 192.168.30.151:4506 0.0.0.0:* LISTEN
tcp 0 0 :::22

#测试ping

[root@master ~]# salt '*' test.ping
node0l.nulige.com:
True

#salt-key --help

[root@localhost ~]# salt-key --help
Usage: salt-key [options] Salt key 用于管理认证key Options:
--version 显示版本号后退出
--versions-report 显示程序的所有依赖包版本号,并退出
-h, --help 帮助信息
-c CONFIG_DIR, --config-dir=CONFIG_DIR
指定配置目录,默认 :/etc/salt/ -q, --quiet 安静模式,不输出信息到控制台
-y, --yes 对所有询问是否继续,回答yes,默认:false Logging Options:
设置loggin选项会覆盖掉配置文件中对日志的配置. --log-file=LOG_FILE
指定日志文件路径,默认: /var/log/salt/key.
--log-file-level=LOG_LEVEL_LOGFILE
日志文件等级,可设置下面中的一个值 'all', 'garbage',
'trace', 'debug', 'info', 'warning', 'error', 'quiet'.
默认: 'warning'.
--key-logfile=KEY_LOGFILE
将所有的输出发送到指定的文件,默认: '/var/log/salt/key' Output Options:
配置输出格式 --out=OUTPUT, --output=OUTPUT
把salt-key命令的输出信息发送给指定的outputer.
可设置为下面参数值 'no_return', 'virt_query'.
'grains', 'yaml', 'overstatestage', 'json', 'pprint',
'nested', 'raw', 'highstate', 'quiet', 'key', 'txt', --out-indent=OUTPUT_INDENT, --output-indent=OUTPUT_INDENT
设置输出行缩进的空格数.
负数取消输出缩进编排.仅对使用的outputer有效.
--out-file=OUTPUT_FILE, --output-file=OUTPUT_FILE
把显示输出到指定的文件
--no-color, --no-colour
关闭字体颜色
--force-color, --force-colour
强制开启输出颜色渲染 Actions:
-l ARG, --list=ARG
打印公钥key. 可设置下面三个值
"pre", "un", and "unaccepted" 会显示 不许可/未签名 keys.
"acc" or "accepted"会显示 许可/已签名 keys.
"rej" or "rejected"会显示拒绝的 keys.
"all" 会显示所有 keys.
-L, --list-all 会显示所有公钥,相当月: "--list all"
-a ACCEPT, --accept=ACCEPT
许可指定的公钥(使用--include-all选项
可以指定除了挂起的key外的所有reject状态的公钥) -A, --accept-all 许可所有pending的公钥
-r REJECT, --reject=REJECT
拒绝指定的公钥 (使用--include-all选项
可以指定除了挂起的key外的所有accept状态的公钥) -R, --reject-all 拒接所有pending的公钥 --include-all 配合 accepting/rejecting 选项使用,指定所有非pending状态的公钥 -p PRINT, --print=PRINT
打印指定的公钥
-P, --print-all Print all public keys
-d DELETE, --delete=DELETE
根据公钥的名称删除公钥
-D, --delete-all 删除所有 keys
-f FINGER, --finger=FINGER
打印指定key的指纹信息
-F, --finger-all 打印所有key的指纹信息 Key 常用选项:
--gen-keys=GEN_KEYS
对生成的key配置设置一个salt使用的名称。
--gen-keys-dir=GEN_KEYS_DIR
设置生成key对的放置目录,默认当前目录。default=. --keysize=KEYSIZE
为生成key设置位数, 仅跟--gen-keys选项配合时有效,
数值大小必须大于2048,否则会被提升至2048位,默认2048
default=2048

4、生产业务场景

一、已经加入master的主机,需要修改node客户端的主机名称,再加入master,就加入不了。

  在node02.nulige.com客户端上面操作:

1、hostname node02.nulige.com

2、vi /etc/sysconfig/network

HOSTNAME=node02.nulige.com

3、重启服务

[root@node01 ~]# /etc/init.d/salt-minion restart

4、还是加不进去,因为他还有生成了一个缓存文件

[root@node01 ~]# cd /etc/salt/
[root@node01 salt]# ll
总用量 40
-rw-r----- 1 root root 26374 4月 14 00:06 minion
drwxr-xr-x 2 root root 4096 4月 13 14:03 minion.d
-rw-r--r-- 1 root root 17 4月 13 13:59 minion_id
drwxr-xr-x 3 root root 4096 4月 13 13:59 pki [root@node01 salt]# cat minion_id
node0l.nulige.com 原因: 这里有两种情况,一种是生成一个缓存文件,别一种是生成了一个pki的key文件 a、清空缓存文件 [root@node01 salt]# >minion_id b、查看pki文件下面key文件 [root@node01 salt]# tree pki/
pki/
└── minion
├── minion_master.pub
├── minion.pem
└── minion.pub 1 directory, 3 files #删除minion_id和pki文件下面的key
[root@node01 salt]# rm -rf minion_id pki/ c、再重启服务 [root@node01 salt]# /etc/init.d/salt-minion restart [root@node01 salt]# ps -ef|grep salt [root@node01 salt]# /etc/init.d/salt-minion start

  在master服务端操作:

#删除之前加入的客户端名称
[root@master salt]# salt-key -d node0l.nulige.com -y

 测试:

[root@master salt]# salt 'node0l.nulige.com' test.ping   #有时候会出现没有返回结果的情况,因为网络沿时的问题导致的
node0l.nulige.com:
True

查看master端key保存目录

[root@master master]# ll  /etc/salt/pki/master
总用量 28
-r-------- 1 root root 1679 4月 13 13:59 master.pem
-rw-r--r-- 1 root root 451 4月 13 13:59 master.pub
drwxr-xr-x 2 root root 4096 4月 13 14:03 minions
drwxr-xr-x 2 root root 4096 4月 13 13:59 minions_autosign
drwxr-xr-x 2 root root 4096 4月 13 13:59 minions_denied
drwxr-xr-x 2 root root 4096 4月 13 14:03 minions_pre
drwxr-xr-x 2 root root 4096 4月 13 13:59 minions_rejected [root@master ~]# cd /etc/salt/pki/master/minions
[root@master minions]# ll
总用量 4
-rw-r--r-- 1 root root 451 4月 13 13:59 node0l.nulige.com
[root@master minions]# cat node0l.nulige.com
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxcjP/RWw/SDW6JVd2iUC
oMLfKQNnK0Aw7b8DXN/C80n8cjz+49qFlQfVmnxYCQn5elys26rMPxZ2e0eobo2x
IOstAOw+XRhCoWesqV1mpZfOGgY0VcrdCAbffb9HM6na+0uHB21NtM1mC69BodMj
3959I63KltPcgZ2M1WSqJ+4/RscKHTa5DolRySnMlzH6Gr4yrb1RYrK0qTq9qcoC
6pMYUTh/PPm1aQ66pXSwYYk5FwqFOicvdzesvIGKenKNwtp3bBaVL/iSzhkXCuF4
iuQ9TtBe3g5HwSbihuuv5CGCAR3kgxiFc2twMKTx3o708wB+11j/Gkn9h/yMguDH
SQIDAQAB
-----END PUBLIC KEY-----

saltstack部署的更多相关文章

  1. salt-stack部署

    saltstack部署   环境准备 [root@server elasticsearch]# cat /etc/redhat-release CentOS release 6.6 (Final)[r ...

  2. SaltStack部署服务及配置管理apache+php-第二篇

    实验目标 1.使用SaltStack部署apache和php, 2.使用salt管理httpd.conf配置文件配置访问info.php使用账户密码 3.在salt里面增加对conf.d目录进行配置管 ...

  3. saltstack部署配置

    共计使用三台虚拟机进行部署实验,系统环境:centos7.3 在master上进行部署配置: 配置主机名 [root@localhost ~]# hostname salt-master [root@ ...

  4. SaltStack入门篇(一)之SaltStack部署

    一.SaltStack概述 Salt,,一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯. salt底层采用动态的连接总线, ...

  5. CentOS7 下SaltStack部署

    一,概念SaltStack是一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能,一般可以理解为简化版的puppet和加强版的func.SaltStack基于Python语言实现,结合 ...

  6. 001-SaltStack入门篇(一)之SaltStack部署

    早期运维工作中用过稍微复杂的Puppet,下面介绍下更为简单实用的Saltstack自动化运维的使用. Saltstack知多少Saltstack是一种全新的基础设施管理方式,是一个服务器基础架构集中 ...

  7. 01 . SaltStack部署配置及简单应用

    SaltStack简介 SaltStack saltstack是一个新的基础平台管理工具,只需要花费数分钟即可运行起来,可以支撑管理上万台服务器的规模,数秒钟即可完成数据传递. saltstack是使 ...

  8. SaltStack 部署案例 02

    远程执行 salt '*' state.sls apache '*':代表所有主机 state.sls :是一个模块 apache : 状态 ,表示需要部署的内容,后缀.sls YAML:三板斧 1. ...

  9. SaltStack部署redis主从

    需求: 一,部署redis主从,一台主一台从 二,redis监听自己的IP地址,而不是0.0.0.0 主:安装,配置,启动 从:安装,配置,启动,主从

随机推荐

  1. java多线程一览

    线程概述: 多线程的目的,不是提高程序的执行速度,而是提高程序的使用率(能抢到CPU的可能比较大). 因为线程是CPU调度的基本单位,所以,当一个程序的线程较多的时候就更容易抢到cpu的资源 进程: ...

  2. JAVA学习之动态代理

    JDK1.6中的动态代理 在Java中Java.lang.reflect包下提供了一个Proxy类和一个InvocationHandler接口,通过使用这个类和接口可以生成一个动态代理对象.JDK提供 ...

  3. 类比Spring框架来实现OC中的依赖注入

    如果你之前使用过JavaEE开发中的Spring框架的话,那么你一定对依赖注入并不陌生.依赖注入(DI: Dependency Injection)是控制反转(IoC: Inversion of Co ...

  4. SQL Server-字字珠玑,一纸详文,完全理解SERIALIZABLE最高隔离级别(基础系列收尾篇)

    前言 对于上述锁其实是一个老生常谈的话题了,但是我们是否能够很明确的知道在什么情况下会存在上述各种锁类型呢,本节作为SQL Server系列末篇我们 来详细讲解下. Range-Lock 上述关于Ra ...

  5. KoaHub平台基于Node.js开发的Koa的简单包装到请求库的类似接口

    co-request co-request promisify wrapper for request co-request Simple wrapper to the request library ...

  6. 算法模板——Tarjan强连通分量

    功能:输入一个N个点,M条单向边的有向图,求出此图全部的强连通分量 原理:tarjan算法(百度百科传送门),大致思想是时间戳与最近可追溯点 这个玩意不仅仅是求强连通分量那么简单,而且对于一个有环的有 ...

  7. 九度OJ题目1076:N的阶乘 (java)运用BigInteger的例子。

    题目描述: 输入一个正整数N,输出N的阶乘. 输入: 正整数N(0<=N<=1000) 输出: 输入可能包括多组数据,对于每一组输入数据,输出N的阶乘 样例输入: 4 5 15 样例输出: ...

  8. js应用之实现图片切换效果

    数组的操作与应用 数组的定义 var 数组名=new Array(); //创建空数组 var 数组名=new Array(size);//创建指定数组长度的数组 var 数组名=new Array( ...

  9. Vue学习之路---No.7(分享心得,欢迎批评指正)

    老规矩,先回顾一下上回的重点: 1.对于input框,若为单选框,如果没有对其设置value,那么其checked的值将在true Or false之间切换:如果设置了value,那么将会切换valu ...

  10. CSS.01 -- 选择器及相关的属性文本、文字、字体、颜色、

    与html相比,Css支持更丰富的文档外观,Css可以为任何元素的文本和背景设置颜色:允许在任何元素外围设置边框:允许改变文本的大小,装饰(如下划线),间隔,甚至可以确定是否显示文本. 什么是CSS? ...