1.远程执行

第一条命令:
[root@linux-node1 master]# salt '*' test.ping
linux-node2.example.com:
True
linux-node1.example.com:
True 说明:
salt:命令
*:匹配目标,使用通配符
test.ping:模块.方法
#此处的ping并非ICMP的ping命令,而是master向minion发送了一个包,minion收到了,返回一个True [root@linux-node1 ~]# salt '*' cmd.run 'uptime'
linux-node1.example.com:
:: up days, :, users, load average: 0.04, 0.03, 0.05
linux-node2.example.com:
:: up days, :, users, load average: 0.00, 0.03, 0.05
[root@linux-node1 ~]# salt '*' cmd.run 'w'
linux-node1.example.com:
:: up days, :, users, load average: 0.03, 0.02, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/ 192.168.56.1 06Jan18 : .27s .27s -bash
root pts/ 192.168.56.1 06Jan18 .00s : .46s /usr/bin/python /usr/bin/salt * cmd.run w
linux-node2.example.com:
:: up days, :, users, load average: 0.00, 0.03, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/ 192.168.56.1 Mon10 :59m .28s .28s -bash
root pts/ 192.168.56.1 06Jan18 : .82s .02s -bash
[root@linux-node1 ~]# salt '*' cmd.run 'df -h'
linux-node2.example.com:
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 18G 17G .1G % /
devtmpfs 905M 905M % /dev
tmpfs 916M 12K 916M % /dev/shm
tmpfs 916M 41M 876M % /run
tmpfs 916M 916M % /sys/fs/cgroup
/dev/sda1 497M 171M 326M % /boot
tmpfs 184M 184M % /run/user/
/dev/loop0 .1G .1G % /mnt
linux-node1.example.com:
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 18G 11G .2G % /
devtmpfs 905M 905M % /dev
tmpfs 916M 28K 916M % /dev/shm
tmpfs 916M 57M 860M % /run
tmpfs 916M 916M % /sys/fs/cgroup
/dev/sda1 497M 171M 326M % /boot
tmpfs 184M 184M % /run/user/ [root@linux-node1 ~]# netstat -tulnp|grep minion
minion不需要监听端口,说明minion需要主动去链接master,master监听端口为4505、
[root@linux-node1 ~]# netstat -tulnp|grep python
tcp 0.0.0.0: 0.0.0.0:* LISTEN /python
tcp 0.0.0.0: 0.0.0.0:* LISTEN /python #master和minion默认使用一个叫zeroMQ进行并行通信,zeroMQ属于底层(传输层)的消息队列,
#相当于一个发布与订阅系统,比如你订了一个教室听课,那么所有订了此间课室的人都能听到老师的课程。 [root@linux-node1 ~]# lsof -ni:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
salt-mast root 16u IPv4 0t0 TCP *: (LISTEN)
salt-mast root 18u IPv4 0t0 TCP 192.168.56.11:->192.168.56.12: (ESTABLISHED)
salt-mast root 19u IPv4 0t0 TCP 192.168.56.11:->192.168.56.11: (ESTABLISHED)
salt-mini root 27u IPv4 0t0 TCP 192.168.56.11:->192.168.56.11: (ESTABLISHED)

查看4505端口,我们可以发现salt-minion使用一个随机端口通过4505端口与salt-master通信,master使用4505端口发送指定到salt-minion上进行执行。而4606端口是用于接收数据的返回,用于zeroMQ的请求与响应的系统。

可以通过date命令查看salt的并行通信,可以看到是同时返回
[root@linux-node1 ~]# salt '*' cmd.run 'date'
linux-node2.example.com:
Tue Jan :: CST
linux-node1.example.com:
Tue Jan :: CST

2.配置管理

(1)saltstack是使用YAML的格式作为管理文件的格式,下面的YAML的样例:

YAML样例:
house:
family:
name: Doe
parents:
- John
- Jane
children:
- Paul
- Mark
- Simone
address:
number:
street: Main Street
city: Nowheretown
zipcode:

(2)YAML的规则:

①缩进表示层级关系,默认缩进是2个空格、4个空格、6个空格 
②冒号后面有个空格,以冒号结尾可以有空格,可以无空格 
③短横线代表一个列表,短横线后面有个空格

(3)定义yaml文件放的位置:salt内置一个fileserver,在master文件配置:file_roots

[root@linux-node1 ~]# vim /etc/salt/master     #定义yaml文件放的位置,base环境是必备的
file_roots:
base:
- /srv/salt/base
dev:
- /srv/salt/dev
test:
- /srv/salt/test
prod:
- /srv/salt/prod
[root@linux-node1 ~]# mkdir -p /srv/salt/{base,dev,test,prod}
[root@linux-node1 ~]# systemctl restart salt-master
[root@linux-node1 ~]# cd /srv/salt/base/
[root@linux-node1 base]# mkdir web
[root@linux-node1 web]# vim apache.sls #编写安装apache的YAML文件
apache-install:
pkg.installed:---------->模块pkg,方法installed,会匹配操作系统进行选择安装的方法
- name: httpd--------->装的包的名称 apache-service:----------->id要唯一
service.running:-------->状态模块service,running为模块的方法
- name: httpd--------->管理服务的名称
- enable: True-------->设置开机自动启动 [root@linux-node1 ~]# salt 'linux-node2.example.com' state.sls web.apache
#如果apache.sls的位置是在prod目录下,需要在后面增加saltenv=prod
#salt 'linux-node2.example.com' state.sls web.apache saltenv=prod 实现自动化安装,需要写一个top.sls
top.sls是state系统的入口文件,它在大规模配置管理工作中负责制定哪些设备调用哪些states.sls文件。top.sls入口文件不是必须的,如果只需要简单地对某台机器进行配置管理工作,我们可以直接使用state.sls命令来指定states.sls文件即可。
[root@linux-node1 base]# pwd
/srv/salt/base
[root@linux-node1 base]# vim top.sls #必须在base环境下写
base:
'linux-node1.example.com':
- web.apache
'linux-node2.example.com':
- web.apache
****************************
如果只有一个任务在全部机子上执行,也可以:
base:
'*'
- web.apache
****************************
[root@linux-node1 ~]# salt '*' state.highstate #去top.sls读取,*代表通知哪些主机
[root@linux-node1 ~]# salt '*' state.highstate test=True
#在不想影响当前主机的运行情况,可以使用test=True 进行预测试

SaltStack入门篇(二)之远程执行和配置管理的更多相关文章

  1. SaltStack入门篇(一)之SaltStack部署

    一.SaltStack概述 Salt,,一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯. salt底层采用动态的连接总线, ...

  2. 【SSRS】入门篇(二) -- 建立数据源

    原文:[SSRS]入门篇(二) -- 建立数据源 通过 [SSRS]入门篇(一) -- 创建SSRS项目 这篇,我们建立了一个SSRS项目: 接下来,我们以 AdventureWorks2012 示例 ...

  3. SaltStack入门篇(四)之深入理解SaltStack远程执行

    1.目标 2.执行模块 3.返回 salt ‘*’ cmd.run ‘uptime’ 命令 目标 执行模块 执行模块参数 1.SlatStack远程执行–目标 执行目标:https://docs.sa ...

  4. SaltStack入门篇(五)之salt-ssh的使用以及LAMP状态设计部署

    1.salt-ssh的使用 官方文档:https://docs.saltstack.com/en/2016.11/topics/ssh/index.html ()安装salt-ssh [root@li ...

  5. 003-SaltStack入门篇之远程执行和配置管理

    第一条命令: [root@linux-node1 master]# salt '*' test.ping linux-node2.example.com: True linux-node1.examp ...

  6. sparkSQL1.1入门之二:sparkSQL执行架构

          在介绍sparkSQL之前.我们首先来看看,传统的关系型数据库是怎么执行的.当我们提交了一个非常easy的查询: SELECT a1,a2,a3 FROM tableA Where con ...

  7. SaltStack入门篇(六)之部署Redis主从实现和Job管理

    一.部署Redis主从 需求: 192.168.56.11是主,192.168.56.12是从 redis监听自己的ip地址,而不是0.0.0.0 分析: linux-node1 安装 配置 启动 l ...

  8. 学习笔记-CCS-MSP430F5529[快速入门篇二]

    由于2021的全国电赛延期了,从今天开始打算好好整理一下使用CCS编程的经验,本篇笔记会好好整理一下我备赛期间用CCS写的程序,包括外部中断,定时器部分的定时中断,定时器输入捕获,PWM波输出,UAR ...

  9. 无责任Windows Azure SDK .NET开发入门篇二[使用Azure AD 进行身份验证-2.2身份验证开发]

    2.2身份验证开发 在我们的案例中,我们是用户通过Web应用程序进行身份识别. 上面的图示说明了如下的一些概念 l Azure AD 是标识提供程序,负责对组织的目录中存在的用户和应用程序的标识进行验 ...

随机推荐

  1. BZOJ1880:[SDOI2009]Elaxia的路线(最短路,拓扑排序)

    Description 最近,Elaxia和w**的关系特别好,他们很想整天在一起,但是大学的学习太紧张了,他们 必须合理地安排两个人在一起的时间.Elaxia和w**每天都要奔波于宿舍和实验室之间, ...

  2. Python常用库之三:Matplotlib

    导入模块 import matplotlib.pyplot as plt import seaborn as sb 绘制条形图 countplot(data:数据集, x:x坐标轴, color:条形 ...

  3. Emacs 快速指南 - 原生中文手册

    Emacs 快速指南 -折叠目录 1. 小结(SUMMARY) 2. 基本的光标控制(BASIC CURSOR CONTROL) 3. 如果 EMACS 失去响应(IF EMACS STOPS RES ...

  4. Owin+ASP.NET Identity浅析系列(一)用户登录注册

    在今天,读书有时是件“麻烦”事.它需要你付出时间,付出精力,还要付出一份心境.--仅以<Owin+ASP.NET Identity浅析系列>来祭奠那逝去的…… 使用VS2015创建MVC项 ...

  5. jquery mobile changepage的三种传参方法介绍

    本来觉得changePage 那么多option,传几个参数应该没问题结果翻遍国内外网站,基本方法只有三种 1,显性传参,就是利用url这个地址把参数带上,然后到changepage后的新页面,用函数 ...

  6. Java8 Stream()关于在所有用户的所有上传记录中,找出每个用户最新上传记录

    原创文章:转载请标明出处 https://www.cnblogs.com/yunqing/p/9504196.html 首先分析相当于如下,在所有的猫中,每个名字的猫都保留年龄最小的一个 import ...

  7. Linux环境安装Nexus

    Linux环境安装Nexus Nexus可以做Maven私服,私服不是Maven的核心概念,它仅仅是一种衍生出来的特殊的Maven仓库.有三种专门的Maven仓库管理软件可以用来帮助大家建立私服: N ...

  8. C#泛型约束 (转载)

    六种类型的约束: T:结构 类型参数必须是值类型.可以指定除 Nullable 以外的任何值类型.有关更多信息,请参见使用可空类型(C# 编程指南). T:类 类型参数必须是引用类型,包括任何类.接口 ...

  9. 详解Map集合体系及方法entrySet、keySet、values

    简单回顾Map集合: Map表示映射关系,以键值对的方式来保存数据.key和value一一对应.key是唯一的,不可重复,而value是可重复的,可以被多个key关联.虽然Map是放入两个数据,但是却 ...

  10. async函数结合promise的小案例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...