saltstack集群环境搭建

环境搭建

实验环境

主master:4核8G    IP:10.0.0.10

syndic节点(可选):2核4G    IP10.0.0.20

minion节点:    10.0.0.30

salt可以运行在任何满足一下条件的unix系操作系统中.

Python 2.7 >= 2.7 <3.0

msgpack-python - High-performance message interchange format

YAML - Python YAML bindings

Jinja2 - parsing Salt States (configurable in the master settings)

MarkupSafe - Implements a XML/HTML/XHTML Markup safe string for Python

apache-libcloud - Python lib for interacting with many of the popular cloud - - service providers using a unified API

Requests - HTTP library

Tornado - Web framework and asynchronous networking library

futures - Backport of the concurrent.futures package from Python 3.2

基于所选择的传输方式, ZeroMQ(默认) or RAET, dependencies vary:

ZeroMQ:

ZeroMQ >= 3.2.0

pyzmq >= 2.2.0 - ZeroMQ Python bindings

PyCrypto - The Python cryptography toolkit

RAET:

libnacl - Python bindings to libsodium

ioflo - The flo programming interface raet and salt-raet is built on

RAET - The worlds most awesome UDP protocol

1)配置软件仓库

官方文档地址:https://docs.saltstack.com/en/latest/

最新发行版:Stable release: 2019.2.0

安装版本:【最后支持centos/redhat 5的版本】

从公网获取安装包:

# yum install https://repo.saltstack.com/yum/redhat/salt-repo-2016.11-2.el7.noarch.rpm

# yum clean all && yum makecache

2)安装salt-master

# yum install salt-master

启动salt-master并设定开机启动:

# systemctl start salt-master

# systemctl enable salt-master

3)安装salt-syndic

安装salt-syndic(同时需要安装master):

# yum install salt-syndic salt-master

修改syndic节点的配置文件:/etc/salt/master

order_masters: True

syndic_master: 10.0.0.10

启动salt-syndic并设定开机启动:

# systemctl start salt-master salt-syndic

# systemctl enable salt-master salt-syndic

4)安装salt-minion

安装salt-minion

# yum install salt-minion

配置minion节点 /etc/salt/minion:

master: [master或者syndic节点的ip地址]

id: [minion的id名,此处将成为minion的key认证到master或syndic节点]

启动salt-minion并设定开机启动

# systemctl start minion

# systemctl enable salt-minion

window安装salt-minion

5)安装salt-api

基于需要开放的管理节点安装

安装salt-api,和其他一些依赖组件

# yum install salt-api python-cherrypy pyOpenSSL salt-minion

本地生成自签名证书,生产也可购买证书

# salt-call --local tls.create_self_signed_cert

1.配置API配置文件

# vi /etc/salt/master.d/rest_api.conf

rest_cherrypy:

  port: 8000

  ssl_crt: /etc/pki/tls/certs/localhost.crt

  ssl_key: /etc/pki/tls/certs/localhost.key

2.配置API账号 测试账号paic

# useradd -M -s /sbin/nologin/ paic

# echo "xxxxx" | passwd paic --stdin

3.配置API账号认证权限

# vi /etc/salt/master.d/eauth.conf

external_auth:

  pam:

    paic:

      - .*

      - '@wheel'

      - '@runner'

      - '@jobs'

重启salt-master使api配置生效,启动salt-api并设定开机启动

# systemctl restart salt-master

# systemctl start salt-api

# systemctl enable salt-api

获取token验证:

curl -X GET -k https://10.0.0.10:8000/ -d username='paic' -d password='xxxxx' -d eauth='pam' |python -mjson.tool

获取token之后,默认的有效期是12小时:

  % Total    % Received % Xferd  Average Speed  Time    Time    Time  Current

                                Dload  Upload  Total  Spent    Left  Speed

100  183  100  146  100    37  1805    457 --:--:-- --:--:-- --:--:--  1825

{

    "clients": [

        "local",

        "local_async",

        "local_batch",

        "local_subset",

        "runner",

        "runner_async",

        "ssh",

        "wheel",

        "wheel_async"

    ],

    "return": "Welcome"

}

1.第一条salt命令 test.ping

检查当前所有接管节点的通信情况:

# salt '*' test.ping

vm-000054.cs1cloud.internal:

    True

vm-000055.cs1cloud.internal:

    True

vm-000055.cs1cloud.internal:

    True

WIN-OVVCLTITFUC.cs1cloud.internal:

    True

vm-000096.cs1cloud.internal:

    Minion did not return. [Not connected]

vm-000034.cs1cloud.internal:

    Minion did not return. [Not connected]

vm-000100.cs1cloud.internal:

    Minion did not return. [Not connected]

OOPS~你有三个节点挂了,找找minion节点的原因吧。

2.salt-key

master 和 minion 的key的认证过程

minion:

安装好minion之后,启动时将在/etc/salt/目录下产生一个minion_id,如果在minion的配置文件中设置好master的

IP地址之后再启动,将会在/etc/salt/pki/minion/下产生minion的公钥和私钥 (minion.pem minion.pub)

如果经过master端认证之后除了公钥,私钥外,在这个目录下,还会产生一个master端的公钥(minion_master.pub)

master:

安装好master后,启动时将会在/etc/salt/pki/master/这个目录下产生master.pem master.pub这两个文件,当minion端

启动连上来之后会在/etc/salt/pki/master/minions_pre/下产生minion端的主机名(即minion的id),当认证之后minions_pre

下的主机名消失,则会在/etc/salt/pki/master/minions/目录下产生minion的主机名(即minion的id),则代表认证成功

如果客户端要该主机名该怎么办?(看似简单,有时候在生产环境经常碰到,而且容易出错!关键理解原理之后,so easy!!!)

1, 首先在master端删除要修改的对应的主机名

  `# salt-key -d minion的主机名  -y`

2,在minion端

  `# cd /etc/salt  && rm -rf  minion_id  pki/ `

(虽然后面删除pki这个目录,重启minion还能生成,但是其实不用这么麻烦,直接删除master的公钥即可,# rm -f pki/minion_master.pub )

注意修改主机名时,一定要把对应的ip地址改过来!

查看当前机器认证的key

# salt-key -L

2.cmd.run

salt可以在master端通过cmd模块对minion节点执行特定的命令,格式为

# salt 'key-name' cmd.run 'command'

可以通过正则表达式匹配key-name,或者使用-L 列表的参数

salt -L 'key-name1,key-name2,key-name3' cmd.run 'command'

也可以通过Grain的模块根据机器信息匹配,例如我们匹配一下操作系统为CentOS的服务器,查看他们的时间同步情况。

# salt -G 'os:centos' cmd.run 'ntpq -p'

终极杀招,通过复合条件匹配:

# salt -C 'webserv* and G@os:Debian or E@db*' cmd.run 'command'

3.state.sls

state模块根据各自应用场景不同,可以预先写好的playbook,通过state模块执行批量操作。

整理了saltstack官方推荐的几个states模块开发的项目。

https://github.com/blast-hardcheese/blast-salt-states

https://github.com/kevingranade/kevingranade-salt-state

https://github.com/uggedal/states

https://github.com/mattmcclean/salt-openstack/tree/master/salt

https://github.com/rentalita/ubuntu-setup/

https://github.com/brutasse/states

https://github.com/bclermont/states

https://github.com/pcrews/salt-data

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355

推荐阅读更多精彩内容