1.配置管理

1.1 puppet

  • /'pʌpɪt/  木偶;傀儡;受他人操纵的人

使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。

问题:

学习曲线非常陡峭

centos上装个puppet,Ruby环境让人头大

puppet没有远程执行功能(执行100台服务器命令),只能借助Func第三方工具

Func烂,真烂,难用。

1.2 Ansible

1. 优点:

出名原因,被红帽收购,redhat所有东西会附属ansible的自动化部署

轻量级,容易使用,不需要装agent, (salt 需要装minion,也可以不用装,直接使用ssh)

python开发

2.缺点:

没有agent,大规模环境下,通过ssh(串行,10个10个跑)会很慢,(salt是并行的)

3.国内趋势

  Ansible + SaltStack(主)

Ansible  200台机器  并发50  CPU负载80 不停报错

2000台就是噩梦

1.3 SaltStack

强化版的FUNC (远程执行),弱化版的Puppet

1. 传统方法:

  1万台服务器

  ssh循环登陆节点列表并执行一堆命令

  容易出错,效率低下,网络安全,ssh密钥和命令执行权限

2. 来源

  作者住在,salt盐湖城

各种stack很火,openstack

3. 四大功能

       (1)远程执行 Remote Execution  1w台机器同时执行命令(2)配置(状态)管理 Configuration Managemet修改配置文件,重新load,怎么干,装什么服务(3)事件驱动 Event-Driven Infrastructureepoll 被动的,监听描述符,我centos挂了,事件发到队列,salt执行某些操作(4)云管理 Salt Cloud   管理所有的公有云和私有云,不用学习各种云的API,salt已经封装好了

4.所有东西可以定制

描述语言,模板语言,web,所有centos执行命令,自己写状态写脚本,官方东西太多了,api

5. 组件 SaltStack Components

 Salt MasterSalt Minions为什么叫奴才?认证的机制:  地主同意,奴才才能来地主家干活奴才认你为地主,你才是地主Execution Modules  执行模块
Formulas (States)   状态
.....

2.saltstack安装

安装官网:https://repo.saltstack.com

master端 192.168.194.131

minion端  192.168.194.132

2.1 安装centos,初始化

1.关闭SELinux,iptables。

关闭Linux中的iptables,firewalld,SELINUX  https://blog.csdn.net/zha6476003/article/details/89425811

    注:需要iptables开启master端4505、4506端口
#关闭firewalld,禁止开机启动
[root@VM_0_13_centos var]# systemctl stop firewalld
[root@VM_0_13_centos var]# systemctl disable firewalld.service#关闭iptables
[root@VM_0_13_centos var]# systemctl stop iptables 

2.修改网卡配置,去掉UUID MAC等(克隆机器问题)

解决CentOS克隆虚拟机无法上网问题(UUID、MAC、IP)https://blog.csdn.net/qq_35428201/article/details/81435679

[root@linux-node1 network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-ens33[root@linux-node2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
删除或注释HWADDR和UUID两行内容,修改IP

3.配置hostname,配置hosts

[root@localhost ~]# hostname linux-node1.example.com
[root@localhost ~]# hostname linux-node2.example.com[root@localhost ~]# cat /etc/sysconfig/network   # 重启后生效
# Created by anaconda
NETWORKING=yes
HOSTNAME=linux-node1.example.com[root@localhost ~]# cat /etc/sysconfig/network   # 重启后生效
# Created by anaconda
NETWORKING=yes
HOSTNAME=linux-node2.example.com

[root@localhost ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.194.131 linux-node1.example.com linux-node1
192.168.194.132 linux-node2.example.com linux-node2

2.2 安装Repo,salt

why?

redhat Python 3 support requires that EPEL be previously installed

1、安装repo (SaltStack repository and key)

方法1:

[root@localhost ~]# yum install https://repo.saltstack.com/py3/redhat/salt-ppy3-repo-latest.el7.noarch.rpm

方法2:aliyun镜像  https://mirrors.aliyun.com

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# wget https://mirrors.aliyun.com/repo/epel-7.repo

作业:

cobbler同步它们的yum仓库到自己的电脑?

saltstack有自己的yum源 https://repo.saltstack.com

zabbix有自己的yum源  https://repo.zabbix.com

2.更新缓存

[root@localhost ~]# yum clean expire-cache

3.安装salt

master端

[root@localhost ~]# yum install salt-master -y
[root@localhost ~]# yum install salt-minion -y

minion端

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

4.启动salt-master

只在,master端

[root@localhost ~]# systemctl restart salt-master

  

3. 运行Salt

1.启动minion

(1)minion配置文件

[root@localhost ~]# vim /etc/salt/minion

配置master的ip

配置id

id:默认通过python的方法socket.getfqdn()去获取fqdn名。所以要求设置好主机名并能解析。也可以使用IP地址,看业务需求。

冒号有空格

多一个空格都报错

(2)启动minion

[root@localhost ~]# systemctl restart salt-minion

2. 公钥管理

1. 如何认证的?

  

认证机制

已经告诉minion了,master是谁

现在需要master同意接受minion

安全问题

通信之前进行认证,公钥私钥(类同与ssh认证)

(1)查看状态

[root@linux-node1 ~]# salt-key --help
-a   ACCEPT  # 支持通配符
-A  --accept-all 

(2)接受minion

(3)公钥交互的过程

master端,把能控制的主机放在minion

minion端,得到master的公钥

  

AES加密的

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。

(4)最佳实践:如何修改id

1.停止minion

2.master端 salt-key -d 删除id

3.master删除pki

4. 删除minion_id

5. 修改minion的id,再启动,再salt-master

3.远程执行

salt 命令

*是通配符,转义了就行

[root@linux-node1 ~]# salt '*' test.ping
[root@linux-node1 ~]# salt \* test.ping
[root@linux-node1 ~]# salt "*" test.ping

* 匹配了所有了目标
test 模块
ping 模块的方法ssh中Ping是ICMP这里的ping,是master给minion发了一个包,能收到返回True
‘uptime’ 方法的参数

[root@linux-node1 ~]# salt '*' cmd.run 'uptime'
linux-node1.example.com:11:07:37 up  1:01,  1 user,  load average: 0.01, 0.04, 0.05
linux-node2.example.com:11:07:37 up  1:01,  1 user,  load average: 0.00, 0.01, 0.05

[root@linux-node1 ~]# salt '*' cmd.run 'free -m'
linux-node2.example.com:total        used        free      shared  buff/cache   availableMem:            972         129         453           7         389         651Swap:          2047           0        2047
linux-node1.example.com:total        used        free      shared  buff/cache   availableMem:            972         288         289           7         394         488

4.通信机制

(1)端口开放

minion不需要监听端口,minion只需要连到master上。

master端:4505,4506。

(2)ZeroMQ  http://zeromq.org

官方文档:https://docs.saltstack.com/en/latest/topics/development/topology.html

底层通信利用了ZeroMQ

(1)发送与订阅 (订报纸,并行)

所有minion会连接到4505,发送命令。所有主机同时执行,同时返回

(2)4506接受返回,请求与相应。

5. 配置管理

https://docs.saltstack.com/en/latest/topics/yaml/index.html

1.YAML语法

  

语法规则:3个基本规则缩进2个空格冒号后面必有空格:除了路径与结尾短横线后1个空格

     

2. 状态配置文件放哪?

[root@host-192-168-23-39 master]# vim /etc/salt/master

# base  # test测试环境  # 开发环境

3. 配置master

[root@host-192-168-23-39 master]# vim /etc/salt/master

[root@linux-node1 ~]# mkdir -p /srv/salt/{base,dev,test,prod}
[root@linux-node1 ~]# tree /srv/salt/
/srv/salt/
├── base
├── dev
├── prod
└── test

# 每次修改master配置文件必须重启master

[root@linux-node1 ~]# systemctl restart salt-master

4. 配置Apache的sls

[root@linux-node1 base]# tree
.
└── web└── apache.sls1 directory, 1 file
[root@linux-node1 base]# cd web/
[root@linux-node1 web]# cat apache.sls
apache-install:pkg.installed:- name: httpdapache-service:service.running:- name: httpd- enable: True

远程执行模块,配置管理模块

apache-install:pkg.installed:  # 不同系统,包安装命令- name: httpdapache-service:         # id,不能重复service.running:      # 状态模块:方法- name: httpd        #参数  # name包的名称:- enable: True                 # enable 开机启动:

5. 执行命令

[root@linux-node1 web]# salt 'linux-node2.example.com' state.sls web.apache saltenv=prod[root@linux-node1 web]# salt 'linux-node2.example.com' state.sls web.apache
# 默认在base环境下
# 对应 apache.sls中的各个参数

test下,http服务已经安装,启动了

  

minion关闭httpd,在来一遍

[root@linux-node2 ~]# systemctl stop httpd

[root@linux-node1 web]# salt 'linux-node2.example.com' state.sls web.apache

linux-node2.example.com:
----------ID: apache-installFunction: pkg.installedName: httpdResult: TrueComment: Package httpd is already installed.Started: 23:00:32.264555Duration: 627.531 msChanges:
----------ID: apache-serviceFunction: service.runningName: httpdResult: TrueComment: Service httpd is already enabled, and is runningStarted: 23:00:32.892558Duration: 413.061 msChanges:   ----------httpd:TrueSummary
------------
Succeeded: 2 (changed=1)
Failed:    0
------------
Total states run:     2

View Code

6. 高级配置 top.sls

上述都是不自动化的,自动化是:我说干活,你们就干活

(1)top.file    # 默认在base环境下

[root@linux-node1 ~]# vim /etc/salt/master

(2)编写top.sls

[root@linux-node1 base]# pwd
/srv/salt/base
[root@linux-node1 base]# cat top.sls
base:'*':- web.apache

base:     # 环境'*':      # 所有节点执行这个状态- web.apache   # 执行web目录下的apache.sls

(3)执行命令,高级状态 highstate

[root@linux-node1 base]# salt '*' state.highstate

* 通知谁,所有主机干活,在所有节点上执行这个highstate

topfile里面*是指定哪些主机节点干活。

 

(4)test

100台机器,先在1个上面跑一下,再在其他上面跑

[root@linux-node1 base]# salt '*' state.highstate test=True   # 不是真的执行,如何执行的话,会发生什么

先关闭node2的 httpd

4. 总结

1.出现问题

Question1:

只有一个秘钥

只出现一个主机

  

解决方法: 其他机器的minion配置文件有错误,注意空格,冒号

Question2:

[root@linux-node1 ~]# systemctl status salt-minion
Jul 28 05:52:10 linux-node1.example.com salt-minion[9702]: [ERROR   ] The Salt Master has cached the public key for this node, this salt minion will wait for 10 seconds before attempting to re-authenticatesalt master已缓存此节点的公钥,此salt minion将等待10秒,然后再尝试重新验证。

网上参考:

    https://www.cnblogs.com/phennry/p/5419451.html

    https://www.cnblogs.com/phennry/p/5419451.html

    https://blog.csdn.net/xiegh2014/article/details/53114257

    https://blog.51cto.com/molewan/2060851

解决办法:

请务必关闭selinux和iptables

2. 小提醒

知识获取廉价,文档获取廉价,你抄我我抄你

我的时间很贵

培训的价值,用更短的时间学会这个东西

转载于:https://www.cnblogs.com/venicid/p/11258428.html

01_配置管理和SaltStack概述相关推荐

  1. MemCached配置与缓存知识概述

    先看看百度百科里面对缓存的介绍: 缓存(Cache memory)是硬盘控制器上的一块内存芯片,具有极快的存取速度,它是硬盘内部存储和外界接口之间的缓冲器.由于硬盘的内部数据传输速度和外界介面传输速度 ...

  2. Ansible :一个配置管理和IT自动化工具

    ========================================================================================== 一.基础介绍 == ...

  3. redis配置密码_Redis数据库概述

    Redis简介 Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可 ...

  4. 配置管理和Java开发_Java开发环境之------MyEclipse中服务器Server的配置,管理和启动...

    1,MyEclipse中服务器的管理(以tomcat为例) (1),菜单--->Window--->Preferences--->MyEclipse--->Servers--- ...

  5. AUTOSAR CAN Dirver模块说明及ETAS ISOLAR A/B配置(1)--概述和功能描述

    CAN Driver概述 提供向下的硬件访问接口和向上的(CanIf)与硬件解耦的接口. can模块为启动发送提供服务,并为通知事件调用CanIf的回调函数. 它还为控制CAN controller的 ...

  6. 最新老男孩Linux架构师实战课程14期视频全套1-13天

    ===============课程目录=============== (1)\\Day01-老男孩教育linux架构师14期-云计算-OpenStack实战:目录中文件数:18个 ├─(1) 01-课 ...

  7. 企业 Saltstack安装配置及远程推送

    文章目录 Saltstack 概述 通信机制 安装与配置 安装 设置官方YUM仓库安装进行 配置 Saltstack远程执行操作 远程指令操作 编写远程执行模块文件来控制minion 模块使用 远程执 ...

  8. MyBatis-02 MyBatis XML方式概述及配置步骤

    概述 一个简单的权限控制需求 创建数据库表 创建实体类 XML方式概述及步骤 1. 首先在src/main/resources下com.artisan.mybatis.xml.mapper目录下创建5 ...

  9. 零配置 之 Spring 概述

    转载自  [第十二章]零配置 之 12.1 概述 --跟我学spring3 12.1  概述 12.1.1  什么是零配置 在SSH集成一章中大家注意到项目结构和包结构是不是很有规律,类库放到WEB- ...

最新文章

  1. 编写矩形类 计算矩形面积
  2. 偏差是什么?一文读懂偏差
  3. 某微信公众号2019 SAP模块精华帖汇总
  4. oracle时间格式转换问题 ORA-01810: format code appears twice--转
  5. python enumerate_python中enumerate的用法实例解析
  6. 重磅:JDK11正式发布!史上最全所有特性完整解读!
  7. leetcode54:螺旋矩阵
  8. HazelCast的Spring-Boot和Cache抽象
  9. 网站搜索功能怎么实现_电商网站上的搜索功能是如何实现的?
  10. nodebb使用mysql_centos7.6安装nodebb v1.14.3(2020年)
  11. activiti动态增加节点_支持动态系统用户,JumpServer 堡垒机 V1.5.7 发布
  12. Win11无法识别Wmic怎么办?Win11识别不了Wmic的解决方法
  13. 详解:Oracle 数据库空间表、自定义用户、权限管理、序列、同义词、索引
  14. 杭电数字电路课程设计——出租车计费器
  15. CSS解决连续英文字母或连续数字不能自动换行
  16. Ubuntu16.04 n次装机血泪史(pixel2mesh)
  17. 纪念一下| 上传资源的创作者等级升级到Lv3
  18. 销 售 具 备 10 条
  19. 如何搞垮一个测试团队?
  20. 再过92年,哆啦A梦就要诞生了!

热门文章

  1. 用haslib给字符加密
  2. Spark的存储管理
  3. 单链表的基础操作练习
  4. MySQL主从复制的原理及配置方法(比较详细)
  5. 【Vue】—动态组件
  6. 【百度地图】——利用三级联动加载百度地图
  7. CCF CSP202009-2 风险人群筛查
  8. 我公司有个统计学的985应届(硕士)从事数据分析岗位
  9. FlexSPI driver用法
  10. 人要抱着希望才能活得好