场景:公司有50台服务器,需要安装salt-minion客户端,并完成与salt-master的认证,接受salt-master的管理。本片文章只用了2台服务器做演示,大家可以在roster文件中定义所有50台机器的信息。

规划:
192.168.3.1 node1.xkops.com --角色:salt-master|minion1
192.168.3.2 node2.xkops.com --角色:salt-minion2

1.在node1上安装salt-master和salt-ssh,启动salt-master并设置开机启动。

[root@node1 ~]# yum -y install salt-master salt-ssh
[root@node1 ~]# service salt-master start
[root@node1 ~]# chkconfig salt-master on

2.在node1上编辑salt-ssh的roster文件。

[root@node1 ~]# cat /etc/salt/roster
node1.xkops.com:
host: 192.168.3.1
user: root
passwd: xiaoke
node2.xkops.com:
host: 192.168.3.2
user: root
passwd: xiaoke

3.在node1上测试salt-ssh连接roster文件中定义的客户端。
[root@node1 ~]# salt-ssh --key-deploy -i '*' test.ping
node2.xkops.com:
True
node1.xkops.com:
True

*注释:此时会将node1服务器的key写入所有客户端。故可以将roster文件中的passwd删除,避免密码泄漏。

4.在node1上编写sate.sls文件批量安装salt-minion,目录结构如下:

[root@node1 salt]# pwd
/srv/salt
[root@node1 salt]# tree
.
├── files
│   └── minion
├── salt-minion.sls
└── top.sls directory, files

5.state文件的详细内容如下:

[root@node1 salt]# cat top.sls
base:
'*':
- salt-minion
[root@node1 salt]# cat salt-minion.sls
salt-minion-install:
pkg.installed:
- name: salt-minion
file.managed:
- name: /etc/salt/minion
- source: salt://files/minion
- user: root
- group: root
- mode:
- template: jinja
- defaults:
HOST: {{ grains['id'] }}
- require:
- pkg: salt-minion-install
service.running:
- name: salt-minion
- enable: true
- reload: true
- watch:
- file: salt-minion-install
[root@node1 salt]# egrep ^id files/minion
id: {{ HOST }}

6.执行编写的状态模块
[root@node1 salt]# salt-ssh '*' state.sls salt-minion

7.执行成功后,检查客户端salt-minion状态。
node1:

[root@node1 salt]# chkconfig --list salt-master
salt-master :关闭 :关闭 :启用 :启用 :启用 :启用 :关闭
[root@node1 salt]# service salt-minion status
salt-minion (pid ) 正在运行...
[root@node1 salt]# egrep '^id|^master' /etc/salt/minion
master: node1.xkops.com
id: node1.xkops.com

node2检查同上。

8.在master端查看。
[root@node1 salt]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
node1.xkops.com
node2.xkops.com

9.接受所有的客户端认证
[root@node1 salt]# salt-key -y -A

*注释:当然也可以不使用状态文件,使用salt-ssh直接执行shell命令安装salt-minion也可以。

saltstack之(十)扩展组件salt-ssh的更多相关文章

  1. saltstack之(十一)扩展组件salt-returners

    场景:每次执行salt任务后,将返回结果存入到数据库,可以做任务跟踪以及历史查看. 1.在node1上安装mysql数据库并启动设置root密码.[root@node1 ~]# yum -y inst ...

  2. Bootstrap入门(二十)组件14:警告框

    Bootstrap入门(二十)组件14:警告框 警告框组件通过提供一些灵活的预定义消息,为常见的用户动作提供反馈消息,提示.通知或者警示,可以迅速吸引注意力. 1.情景警告框 2.可关闭的警告框 3. ...

  3. Bootstrap入门(十)组件4:按钮组与下拉菜单结合

    Bootstrap入门(十)组件4:按钮组与下拉菜单结合   先引入本地的CSS文件和JS文件(注:1.bootstrap是需要jQuery支持的.2.需要在<body>当中添加) < ...

  4. easyUI扩展组件

    $.parser.plugins.push("aa"); //注册扩展组件 $.fn.aa= function (options, param) {//定义扩展组件 //当opti ...

  5. MEF(Managed Extensibility Framework)有选择性地使用扩展组件

    在"MEF(Managed Extensibility Framework)使用全部扩展组件"中,客户端应用程序调用了所有的扩展组件,而且如果有新的扩展组件加入,必须先关闭程序,再 ...

  6. MEF(Managed Extensibility Framework)使用全部扩展组件

    MEF(Managed Extensibility Framework),所在命名空间是System.ComponentModel.Composition.dll.简单来说,MEF是将符合约定(一般是 ...

  7. 【Android】10.1 扩展组件库和其他视图--本章示例主界面

    分类:C#.Android.VS2015: 创建日期:2016-02-18 1.主界面运行截图 2.MainActivity.cs文件中对应的代码 chItems.Add(new Chapter() ...

  8. easyui基于 layui.laydate日期扩展组件

    本人后端开发码农一个,公司前端忙的一逼,项目使用的是easyui组件,其自带的datebox组件使用起来非常不爽,主要表现在 1.自定义显示格式很麻烦 2.选择年份和月份用户体验也不好 网上有关于和M ...

  9. 微信小程序(二十)-UI组件(Vant Weapp)-01按装配置

    1.官网 https://vant-contrib.gitee.io/vant-weapp/#/intro https://gitee.com/vant-contrib/vant-weapp 2.按装 ...

随机推荐

  1. QT快捷键

    F1使用方法:选中某一类或函数,按下F1,出现帮助文档 F2使用方法:选中某一类或函数,按下F2,迅速定位到该类或函数声明的地方或被调用的地方 Ctrl+鼠标滚轮的使用方法:按住Ctrl,使鼠标滚轮旋 ...

  2. 发生了COMException 异常来自 HRESULT:0x80040228

    异常信息: 发生了COMException 异常来自 HRESULT:0x80040228 原因解决方法:窗体中忘记放LicenseControl控件.,加上LicenseControl即可

  3. Ubuntu 14.04 使用的一些笔记

    1. 今天下载了安卓的2.3.5的源代码,解压tar的时候,发现一个错误中断了解压过程: could not create the hard link file, 看了一下基本上都是每个主目录下的 . ...

  4. PHP将在对象被销毁前调用这个函数.它称为析构函数

    -构造函数和析构函数 如果你在一个类中声明一个函数,命名为__construct,这个函数将被当成是一个构造函数并在建立一个对象实例时被执行.清楚地说,__是两个下划线.就像其它任何函数一样,构造函数 ...

  5. PHP文件漏桐可以通过对服务器进行设置和配置来达到防范目的

    对脚本执行漏洞的防范 黑客利用脚本执行漏洞进行攻击的手段是多种多样的,而且是灵活多变的,对此,必须要采用多种防范方法综合的手段,才能有效防止黑客对脚本执行漏洞进行攻击.这里常用的方法方法有以下四种.一 ...

  6. 3. PHP

    安装: apt-get install php5-fpm php5-mysql   配置: vi /etc/php5/fpm/php.ini cgi.fix_pathinfo=0   vi /etc/ ...

  7. mysql关于字符串字段数据类型

    字符串类型 字符串类型指CHAR.VARCHAR.BINARY.VARBINARY.BLOB.TEXT.ENUM和SET.该节描述了这些类型如何工作以及如何在查询中使用这些类型. 类型 大小 用途 C ...

  8. eclipse不正常编译导致错误:Access denied for user 'root'@'localhost' (using password: YES)

    使用eclipse连接mysql报错:Access denied for user 'root'@'localhost' (using password: YES) 连接代码没有任何问题,网上找了很多 ...

  9. 如何用Apache TCPMon来截获SOAP消息

    在WebService服务器和客户机之间会传递SOAP消息,有时我们需要得到这些消息以便调试,而Apache的TCPMon可以帮助我们做到这一点.  TCPMon的下载地址在http://ws.apa ...

  10. 为什么数值类型byte取值范围是(-128~127)?

    在解决这个问题之前,我们先了解几个概念? 一.原码, 反码, 补码的概念 正数的反码和补码都与原码一样: 负数的反码.补码与原码不同,负数的反码:原码中除去符号位,其他的数值位取反,0变1,1变0.负 ...