首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用salt-api远程调用salt-key

使用salt-api远程调用salt-key
EN

Stack Overflow用户
提问于 2013-09-28 21:10:31
回答 3查看 4.6K关注 0票数 3

我想使用Salt Stack来管理将由另一个应用程序自动创建的云服务器。我不能使用salt-cloud来创建新的服务器并引导它们,因为我无法控制的另一个应用程序将自动创建和删除它们。

我可以做的是构建应用程序在创建和删除新的云服务器实例时将使用的映像。

我正在寻找的是一种新创建的minion的方法,它可以将自己引导到salt主机,而无需salt主机在创建它之前对其一无所知。

我的问题是,我需要一种方法来预先播种密钥,以便新的附属物可以被自动接受。

我尝试使用salt-api来实现这一点,方法是让一个脚本在启动时运行,该脚本将连接到salt-master并为其自身生成一个新的密钥。新的附属物可以使用预先播种的密钥,这样它就可以自动连接到主对象。

但是我在尝试弄清楚如何从salt调用salt以便在每次创建minion时生成一个新的key时遇到了问题。

EN

回答 3

Stack Overflow用户

发布于 2014-03-20 00:45:04

如果你能够防火墙你的主文件(即所有的附属者共享一些安全的子网),你可以使用更简单的方式,使用盐文件设置(或下面的autosign_ auto_accept /autoreject_file设置)。

从属程序向主程序进行身份验证并接受自己的密钥是一个相当大的安全问题。我不知道在salt api中限制访问的方法,这意味着minion不仅可以接受密钥,还可以操作其他minion。

票数 0
EN

Stack Overflow用户

发布于 2014-05-17 00:56:20

使用python-request,您可以创建如下函数:

代码语言:javascript
复制
import requests
import os


def accept_salt_clientkey(keyname):
    url = 'https://saltmaster:8000'
    headers = {'Accept':'application/json'}
    login_payload = {'username':'saltuser','password':'saltpasswd','eauth':'pam'}
    accept_key_payload = {'fun': 'key.accept','client':'wheel','tgt':'*','match':keyname}

    login_request = requests.post(os.path.join(url,'login'),headers=headers,data=login_payload)
    request = requests.post(url,headers=headers,data=accept_key_payload,cookies=login_request.cookies)
    keytype = request.json()['return'][0]['data']['return']
    if keytype:
        for key,value in keytype.iteritems():
            if value[0] == keyname:
                return True
                break
            else:
                raise Exception('{} does not match!'.format(keyname))
    else:
        raise Exception('{} key does not exist in master until now...'.format(keyname)) 

您可以使用主机名(应该是键名)作为参数来调用它:

代码语言:javascript
复制
accept_salt_clientkey(mynewhost.com)

当然,您可以将用户名/密码存储在config.py文件中,或者以其他方式存储,这取决于您调用它的方式,但这可能会给您一个大概的概念。

票数 0
EN

Stack Overflow用户

发布于 2014-12-01 01:46:11

您可以使用salt-api来完成此操作,但您需要设置适当的反应器代码来接受密钥。我一直在为我的一些项目开发Salt-API + Reactor formula,并且在我的配置中包含了一个小的accept关键端点。

您可以查看minion key accept reactor配置here

我假设您已经安装了salt-api并接受了原始问题中的webhooks。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19067341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档