当前位置: 首页 > article >正文

运维管理平台 - 自动部署salt被控端minion

这个自动安装的前提要求是:需要安装minion的服务器需要具备yum安装的功能

 

一、首先在master端安装salt-ssh,我将通过salt-ssh来为minion服务器执行安装命令。

yum -y install salt-ssh


 

二、部署roster

修改/etc/salt/roster的配置文件

roster配置文件的配置选项有:

# target的信息host:        # 远端主机的ip地址或者dns域名user:        # 登录的用户passwd:      # 用户密码,如果不使用此选项,则默认使用秘钥方式
# 可选的部分port:        #ssh端口sudo:        #可以通过sudotty:         # 如果设置了sudo,设置这个参数为truepriv:        # ssh秘钥的文件路径timeout:     # 当建立链接时等待响应时间的秒数minion_opts: # minion的位置路径thin_dir:    # target系统的存储目录,默认是/tmp/salt-<hash>cmd_umask:   # 使用salt-call命令的umask值 

 

我使用os.system修改roster文件:

views.py

def serverAdd(request):result = ''if request.method == "POST":form = autoArrMinionForm(request.POST)if form.is_valid():ip = request.POST.get('add_ip') # 需要安装minion端的ipusername = request.POST.get('add_username') # 需要安装minion端的用户名password = request.POST.get('add_password') # 需要安装minion端的密码try:os.system("echo '"+ip+":'>> /etc/salt/roster && \echo '  host: " +ip+ "'>> /etc/salt/roster && \echo '  user: " +username+ "'>> /etc/salt/roster && \echo '  passwd: " +password+ "'>> /etc/salt/roster && \echo '  sudo: True'>> /etc/salt/roster && \echo '  tty: True'>> /etc/salt/roster && \echo '  timeout: 10'>> /etc/salt/roster")os.system("salt-ssh '" + ip + "' -ir 'easy_install certifi'") # 安装cretifi模块(status_gethostname, resultgethostname) = subprocess.getstatusoutput("salt-ssh -ir '" + ip + "' 'hostname'") # 获取hostnameos.system("salt-ssh '" + ip + "' -ir 'echo ''"+ip+"' '"+resultgethostname+"''>> /etc/hosts'") # 添加hosts(status, result) = subprocess.getstatusoutput("salt-ssh -i '"+ip+"' state.sls minions.install") # 执行安装命令,并返回结果except:result = "无法连接该主机,请检查ip和用户密码是否正确!"else:result = "请填写正确的ip和用户名密码"else:form = autoArrMinionForm()re = {"form": form,"result": result}return  render(request, "serveradd.html", re)

 

 三、配置state.sls文件结构

1、创建目录:
mkdir -p /srv/salt/minions
mkdir -p /srv/salt/minions/conf 
mkdir -p /srv/salt/minions/yum.repos.d

 

2、编写.sls文件:
vim install.sls​

minion_yum:file.recurse:- name: /etc/yum.repos.d- source: salt://minions/yum.repos.d ##提前准备的yum文件路径- user: root- group: root- file_mode: 644- dir_mode: 755- include_empty: True
minion_install:pkg.installed:- pkgs:- salt-minion- require:- file: minion_yum- unless: rpm -qa | grep salt-minion
minion_conf:file.managed:- name: /etc/salt/minion- source: salt://minions/conf/minion  ##minion端需要配置的minion主配置文件- user: root- group: root- mode: 640- template: jinja- defaults:minion_id: {{grains['fqdn_ip4'][0]}}        ##这里grains是收集minion端/etc/hosts文件IP和主机名的- require:- pkg: minion_install
minion_service:service.running:- name: salt-minion- enable: True- require:- file: minion_conf



3、编写minion主文件
master: 10.62.83.211
id: {{ minion_id }} #这里的id会被解析成install.sls中的minion_id


4、拷贝yum源文件到yum.repos.d

可从/etc/yum.repos.d拷贝

cp CentOS-Base.repo /srv/salt/minions/yum.repos.d/
cp epel.repo /srv/salt/minions/yum.repos.d/​


最终的目录结构为:
[root@mykurol /]# tree /srv
/srv
`-- salt`-- minions|-- conf|   `-- minion|-- install.sls`-- yum.repos.d|-- CentOS-Base.repo`-- epel.repo4 directories, 4 files



前台页面:


 

 执行结果:

http://www.lryc.cn/news/2420771.html

相关文章:

  • 最新坦白说破解方法!!!
  • 跨学科的AI量化其实很简单
  • 判断入射满射c语言编码,例4,判断下列函数是否是满射、单射、双射。.PDF
  • 打造我们心中永恒的m500
  • 武汉Uber优步司机奖励政策(8月31日~9月6日)
  • eccv 2020_为什么我停止使用gan eccv2020
  • 你管这破玩意叫操作系统源码 | 第一回 最开始的两行代码
  • Ubuntu命令全集
  • fabric 智能合约开发
  • 1024分辨率《圣徒/天神魔煞/猎魔教士》BD中字无水印
  • day 09--函数和模块
  • 列名 userid 不明确。 存储过程_写给高二美术生:如果你还不知道这些问题,那你就惨了!...
  • python实现抢票github_面向回家编程!GitHub标星两万的”Python抢票教程”,我们先帮你跑了一遍...
  • 英语阅读积累一
  • js中文转拼音插件源码
  • 2022-3-12 【webrtc应用】yangrtc/metaRTC开源库源码分析(一)
  • 知识见闻 - 苏州旅游
  • Html 中表格导出生成excel文件,解决中文导出失败问题。
  • 陈继儒 -- 《小窗幽记》
  • 摩托罗拉发布最新款Android 3.0平板电脑Xoom
  • Android仿抖音主页效果实现
  • Tinywebserver-一个简易的web服务器
  • 项目管理术语中英文对照
  • 男生vs女生,谁更加适合做软件测试?—我觉得男生更胜一筹!
  • 一键评教,查询成绩,批量免验证码选课,退课,-云大urp教务系统大作战(3)...
  • Openstack 单控制节点部署实例
  • CSS开发案例【新闻热榜】
  • 拼音汉字对照表
  • 数据补全与数据质量: 如何实现数据完整性
  • Openjdk 8合理使用容器的内存资源