01_配置管理和SaltStack概述
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概述相关推荐
- MemCached配置与缓存知识概述
先看看百度百科里面对缓存的介绍: 缓存(Cache memory)是硬盘控制器上的一块内存芯片,具有极快的存取速度,它是硬盘内部存储和外界接口之间的缓冲器.由于硬盘的内部数据传输速度和外界介面传输速度 ...
- Ansible :一个配置管理和IT自动化工具
========================================================================================== 一.基础介绍 == ...
- redis配置密码_Redis数据库概述
Redis简介 Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可 ...
- 配置管理和Java开发_Java开发环境之------MyEclipse中服务器Server的配置,管理和启动...
1,MyEclipse中服务器的管理(以tomcat为例) (1),菜单--->Window--->Preferences--->MyEclipse--->Servers--- ...
- AUTOSAR CAN Dirver模块说明及ETAS ISOLAR A/B配置(1)--概述和功能描述
CAN Driver概述 提供向下的硬件访问接口和向上的(CanIf)与硬件解耦的接口. can模块为启动发送提供服务,并为通知事件调用CanIf的回调函数. 它还为控制CAN controller的 ...
- 最新老男孩Linux架构师实战课程14期视频全套1-13天
===============课程目录=============== (1)\\Day01-老男孩教育linux架构师14期-云计算-OpenStack实战:目录中文件数:18个 ├─(1) 01-课 ...
- 企业 Saltstack安装配置及远程推送
文章目录 Saltstack 概述 通信机制 安装与配置 安装 设置官方YUM仓库安装进行 配置 Saltstack远程执行操作 远程指令操作 编写远程执行模块文件来控制minion 模块使用 远程执 ...
- MyBatis-02 MyBatis XML方式概述及配置步骤
概述 一个简单的权限控制需求 创建数据库表 创建实体类 XML方式概述及步骤 1. 首先在src/main/resources下com.artisan.mybatis.xml.mapper目录下创建5 ...
- 零配置 之 Spring 概述
转载自 [第十二章]零配置 之 12.1 概述 --跟我学spring3 12.1 概述 12.1.1 什么是零配置 在SSH集成一章中大家注意到项目结构和包结构是不是很有规律,类库放到WEB- ...
最新文章
- 编写矩形类 计算矩形面积
- 偏差是什么?一文读懂偏差
- 某微信公众号2019 SAP模块精华帖汇总
- oracle时间格式转换问题 ORA-01810: format code appears twice--转
- python enumerate_python中enumerate的用法实例解析
- 重磅:JDK11正式发布!史上最全所有特性完整解读!
- leetcode54:螺旋矩阵
- HazelCast的Spring-Boot和Cache抽象
- 网站搜索功能怎么实现_电商网站上的搜索功能是如何实现的?
- nodebb使用mysql_centos7.6安装nodebb v1.14.3(2020年)
- activiti动态增加节点_支持动态系统用户,JumpServer 堡垒机 V1.5.7 发布
- Win11无法识别Wmic怎么办?Win11识别不了Wmic的解决方法
- 详解:Oracle 数据库空间表、自定义用户、权限管理、序列、同义词、索引
- 杭电数字电路课程设计——出租车计费器
- CSS解决连续英文字母或连续数字不能自动换行
- Ubuntu16.04 n次装机血泪史(pixel2mesh)
- 纪念一下| 上传资源的创作者等级升级到Lv3
- 销 售 具 备 10 条
- 如何搞垮一个测试团队?
- 再过92年,哆啦A梦就要诞生了!