salt-api 安装 ;配置源 (系统环境示例是centos6)

环境:

系统:
# cat /etc/issue
CentOS release 6.7 (Final)
内核:
# uname -r
2.6.-.el6.x86_64
运行账户:
root
运行环境:
# java -version
java version "1.8.0_92"

yum 源配置

epel 源
rpm -Uvh https://mirrors.tuna.tsinghua.edu.cn/epel/6/i386/epel-release-6-8.noarch.rpm

salt-
stack 源
# vi salt-stack.repo [saltstack-repo]
name=SaltStack repo for Red Hat Enterprise Linux $releasever
baseurl=http://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest
# baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest
enabled=
gpgcheck=
# 或者 设置 gpgcheck=
# gpgkey=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub
gpgkey=http://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub

  1、yum 安装 salt 

salt-master:
yum install salt-master salt-minion salt-ssh salt-syndic salt-cloud -y salt-api:
yum install salt-api -y salt-minion:
yum install salt-minion -y

  2、配置证书 自生成证书 证书目录

切换证书目录 生成自签名证书
cd /etc/pki/tls/certs
make testcert
# 需要输入 key 和 EDNs # 剩余的可以enter直接默认回车。 切换私钥目录:
cd /etc/pki/tls/private
# 解密key文件,生成无密码的key文件, 过程中需要输入key密码,该密码为之前生成证书时设置的密码
openssl rsa -in localhost.key -out localhost_nopass.key

  3、创建 salt-api 账户

# useradd -M -s /sbin/nologin salt-api
# echo "salt-api" | passwd salt-api --stdin

  4、配置 master 配置文件

# cat /etc/salt/master |grep -v ^$ |grep -v ^#

default_include: master.d/*.conf
# 设置开启配置目录
interface: 172.16.5.17
# 设置 master IP

  5、配置 api 相关配置文件

创建  api 配置文件 api.conf

# cat api.conf
rest_cherrypy:
host: 172.16.5.17 # 主机
port: # 端口
ssl_crt: /etc/pki/tls/certs/localhost.crt
ssl_key: /etc/pki/tls/private/localhost_nopass.key

创建 eauth 认证文件: eauth.conf

# cat eauth.conf
external_auth:
pam: # 认证模式,pam 是linux用户默认认证模式
salt-api: # salt-api 认证用户 (前面设置的)
- .* # 设置用户权限 *全部
- '@wheel' # 模块
- '@runner' # 模块

salt-api 配置文件目录结构

  7、配置 minion

[root@oracle yum.repos.d]# cat /etc/salt/minion |grep -v ^$ |grep -v ^#
master: 172.16.5.17
id: 172.16.5.18
# 本机ip

  8、启动:

/etc/init.d/salt-master restart
/etc/init.d/salt-api restart
/etc/init.d/salt-minion restart

9、测试 salt-api 获得 token (token值 api服务重启后失效)

# curl -ssk https://172.16.5.17:8888/login -H 'Accept: application/x-yaml' -d username='salt-api' -d password='salt-api' -d eauth='pam' 

return:
- eauth: pam
expire: 1571255434.530587
perms:
- .*
- '@wheel'
- '@runner'
start: 1571212234.530586
token: 7d43359bdc35297482926be2fcf378d136b29f5a
user: salt-api
curl 参数:
-k 忽略证书获取https内容
-s 指定使用静默(silent)方式
-i 指定SaltAPI收到服务器返回的结果同时显示HTTP Header。
-H 指定一个特定的Header给远端服务器,当SaltAPI 需要发送appliton-tion/json Header时。会以我们希望的JSON格式返回结果
-d 想远端服务器发送POST请求,以key=value的格式发送 ,注意key=v时,必须紧挨=号两边

测试功能模块

# 获得token
curl -k https://172.16.5.17:8888/login -H 'Accept: application/x-yaml' -d username='saltapi' -d password='saltapi' -d eauth='pam'

# 测试test.ping ; salt 'ip'
test.ping (local)
curl -k https://172.16.5.17:8888 -H "Accept: application/x-yaml" -H "X-Auth-Token: 6d133baa48ad607233cb80599c35c10d49d5f26a" -d client='local' -d tgt='*' -d fun='test.ping'

# 测试 salt -l 'ip' cun.run 'df -h'

curl -k https://172.16.5.17:8888 -H "Accept: application/x-yaml" -H "X-Auth-Token: 6d133baa48ad607233cb80599c35c10d49d5f26a" -d client='local' -d tgt='*' -d fun='cmd.run' -d arg='df -h'

执行参数:

client : 模块,python处理salt-api的主要模块,‘client interfaces <netapi-clients>’
local : 使用‘LocalClient <salt.client.LocalClient>’ 发送命令给受控主机,等价于saltstack命令行中的'salt'命令
local_async : 和local不同之处在于,这个模块是用于异步操作的,即在master端执行命令后返回的是一个jobid,任务放在后台运行,通过产看jobid的结果来获取命令的执行结果。
runner : 使用'RunnerClient<salt.runner.RunnerClient>' 调用salt-master上的runner模块,等价于saltstack命令行中的'salt-run'命令
runner_async : 异步执行runner模块
wheel : 使用'WheelClient<salt.wheel.WheelClient>', 调用salt-master上的wheel模块,wheel模块没有在命令行端等价的模块,但它通常管理主机资源,比如文件状态,pillar文件,salt配置文件,以及关键模块<salt.wheel.key>功能类似于命令行中的salt-key。
wheel_async : 异步执行wheel模块
备注:一般情况下local模块,需要tgt和arg(数组),kwarg(字典),因为这些值将被发送到minions并用于执行所请求的函数。而runner和wheel都是直接应用于master,不需要这些参数。
tgt : minions
fun : 函数
arg : 参数
expr_form : tgt的匹配规则
'glob' - Bash glob completion - Default
'pcre' - Perl style regular expression
'list' - Python list of hosts
'grain' - Match based on a grain comparison
'grain_pcre' - Grain comparison with a regex
'pillar' - Pillar data comparison
'nodegroup' - Match on nodegroup
'range' - Use a Range server for matching
'compound' - Pass a compound match string

  

 

salt-api 配置使用的更多相关文章

  1. Salt 与Salt API配置

    1.安装 [root@localhost yum.repos.d]# cat /etc/yum.repos.d/salt.repo [saltstack-repo] name=SaltStack re ...

  2. CentOS 安装及配置Salt api

    安装 # yum -y install salt-api 更改配置 vim /etc/salt/master 把默认的注释掉  我们这边默认配置文件目录是/srv/salt default_inclu ...

  3. 死磕salt系列-salt API 使用

    启用salt-api 服务 这里简单的说明下,SaltStack官方支持三种REST API,分别是rest_cherry; rest_tonado和rest_wsgi, 本文选择使用rest_che ...

  4. [转载]fullPage.js中文api 配置参数~

    fullPage.js中文api 配置参数 选项 类型 默认值 说明 verticalCentered 字符串 true 内容是否垂直居中 resize 布尔值 false 字体是否随着窗口缩放而缩放 ...

  5. EF里的默认映射以及如何使用Data Annotations和Fluent API配置数据库的映射

    I.EF里的默认映射 上篇文章演示的通过定义实体类就可以自动生成数据库,并且EF自动设置了数据库的主键.外键以及表名和字段的类型等,这就是EF里的默认映射.具体分为: 数据库映射:Code First ...

  6. 使用配置 API配置注入(Container stand-alone API)

    当使用API配置注时,它可以通过成员注入重写默认的注入规则: 使用注入成员(InjectionMember)时,如对属性注入可以用InjectionProperty等,可以通过指定名称来指定使用哪个具 ...

  7. Fluent API 配置

    EF里实体关系配置的方法,有两种: Data Annotation方式配置 也可以 Fluent API 方式配置 Fluent API 配置的方法 EF里的实体关系 Fluent API 配置分为H ...

  8. 使用 Fluent API 配置/映射属性和类型(摘自微软Data Access and Storage)

    使用 Fluent API 配置/映射属性和类型 使用实体框架 Code First 时,默认行为是使用一组 EF 中内嵌的约定将 POCO 类映射到表.但是,有时您无法或不想遵守这些约定,需要将实体 ...

  9. Entity Framework 实体框架的形成之旅--Code First模式中使用 Fluent API 配置(6)

    在前面的随笔<Entity Framework 实体框架的形成之旅--Code First的框架设计(5)>里介绍了基于Code First模式的实体框架的经验,这种方式自动处理出来的模式 ...

  10. Entity Framework Code First (五)Fluent API - 配置关系

    上一篇文章我们讲解了如何用 Fluent API 来配置/映射属性和类型,本文将把重点放在其是如何配置关系的. 文中所使用代码如下 public class Student { public int ...

随机推荐

  1. ASP.NET Core结合Nacos来完成配置管理和服务发现

    目录 前言 Nacos的简介 启动Nacos 配置管理 服务发现 写在最后 前言 今年4月份的时候,和平台组的同事一起调研了一下Nacos,也就在那个时候写了.net core版本的非官方版的SDK. ...

  2. java 自动生成四则运算式

    本篇文章将要介绍一个“自动生成四则运算式”的java程序,在没有阅读<构建之法>之前,我已经通过一个类的形式实现了要求的功能,但是当阅读完成<构建之法>之后,我意识到自己所写程 ...

  3. Java中的java.lang.Class API 详解

    且将新火试新茶,诗酒趁年华. 概述 Class是一个位于java.lang包下面的一个类,在Java中每个类实例都有对应的Class对象.类对象是由Java虚拟机(JVM)自动构造的. Class类的 ...

  4. .Net基础篇_学习笔记_第七天_随机数的产生

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  5. ThreadLocal的认知与见解

    ThreadLocal:提高一个线程的局部变量,访问某个线程拥有自己局部变量(很难理解.看看下面这句话,顺便再讲个例子). 当使用ThreadLocal维护变量时,ThreadLocal为每一个使用该 ...

  6. C++ 基础中的基础 ---- 引用

    C++ 基础中的基础 ---- 引用 引用的概念:引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字.一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量.比如: int n ...

  7. python接口自动化测试二十七:密码MD5加密 ''' MD5加密 ''' # 由于MD5模块在python3中被移除 # 在python3中使用hashlib模块进行md5操作 import hashlib # 待加密信息 str = 'asdas89799,.//plrmf' # 创建md5对象 hl = hashlib.md5() # Tips # 此处必须声明encode # 若写法为

    python接口自动化测试二十七:密码MD5加密   ''' MD5加密 '''# 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作import has ...

  8. Hbase入门(一)——初识Hbase

    本文将介绍大数据的知识和Hbase的基本概念,作为大数据体系中重要的一员,Hbase弥补了Hadoop只能离线批处理的不足,支持存储小文件,随机检索.而这种特性使得Hbase对于实时计算体系的事件存储 ...

  9. [Python] 09 - Multi-processing

    前言 资源 Ref: Python3 多线程 Ref: Python3之多进程       # python中的多线程无法利用多核优势 更多的提高效率的策略,请参见:[Pandas] 01 - A g ...

  10. [Spark] 03 - Programming

    写在前面 ETL Pipeline 学习资源 Ref: 使用 AWS Glue 和 Amazon Athena 实现无服务器的自主型机器学习 Ref: AWS Glue 常见问题 Extract is ...