salt-api 使用

这点时间研究运维自动化,研究到salt-api部分遇到了很多坑,这里记录一下,前面的陆续补上。

1、进程正题,步骤开始:

cd /etc/yum.repos.d/ && wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

rpm -ivh epel-release-6-8.noarch.rpm

yum -y install kernel-firmware kernel-headers perf e2fsprogs

rpm -ivh libyaml-0.1.3-1.4.el6.x86_64.rpm 

rpm -ivh PyYAML-3.10-3.1.el6.x86_64.rpm 

yum -y install salt-master salt-api 

2、

#安装pip:

wget https://pypi.python.org/packages/source/p/pip/pip-1.5.6.tar.gz#md5=01026f87978932060cc86c1dc527903e --no-check-certificate

tar xvfz pip-1.5.6.tar.gz

cd pip-1.5.6

python setup.py build && python setup.py install && pip freeze

#使用pip安装cherrypy:

pip install cherrypy==3.2.3

3、安装openssl证书,因为salt-api是基于证书的,目录不要给错:

[[email protected] tmp]# cd /etc/pki/tls/certs

[[email protected] certs]# make testcert

umask 77 ; \

/usr/bin/openssl genrsa -aes128 2048 > /etc/pki/tls/private/localhost.key

Generating RSA private key, 2048 bit long modulus

..............................................................................................................................................+++

........................................................+++

e is 65537 (0x10001)

Enter pass phrase:               #输入6位以上的秘钥

Verifying - Enter pass phrase:    #再次输入

umask 77 ; \

/usr/bin/openssl req -utf8 -new -key /etc/pki/tls/private/localhost.key -x509 -days 365 -out /etc/pki/tls/certs/localhost.crt -set_serial 0

Enter pass phrase for /etc/pki/tls/private/localhost.key:    #再次输入

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter ‘.‘, the field will be left blank.

-----

Country Name (2 letter code) [XX]:CN

State or Province Name (full name) []:nanning

Locality Name (eg, city) [Default City]:ninning

Organization Name (eg, company) [Default Company Ltd]:

Organizational Unit Name (eg, section) []:

Common Name (eg, your name or your server‘s hostname) []:

Email Address []:[email protected]

[[email protected] certs]# cd ../private/

[[email protected] private]# openssl rsa -in localhost.key -out localhost_nopass.key

Enter pass phrase for localhost.key:

writing RSA key

建立登录的账号和密码:

[[email protected] private]# useradd -M -s /sbin/nologin xiaoluo

[[email protected] private]# passwd xiaoluo

#salt master配置文件:/etc/salt/master 

#取消注释

default_include: master.d/*.conf

mkdir -p /etc/salt/master.d

#saltstack服务端配置:

[[email protected] ~]# cat /etc/salt/master.d/api.conf 

rest_cherrypy:

  port: 8888

  ssl_crt: /etc/pki/tls/certs/localhost.crt

  ssl_key: /etc/pki/tls/private/localhost_nopass.key

[[email protected] ~]# cat /etc/salt/master.d/eauth.conf 

external_auth:

  pam:

    xiaoluo:

      - .*

      ‘@wheel‘

      ‘@runner‘

 

#重启salt-master和salt-api服务: 

[[email protected] ~]# /etc/init.d/salt-master restart

Stopping salt-master daemon:                               [FAILED]

Starting salt-master daemon:                               [  OK  ]

登录获取token:

[[email protected] salt]# curl -k https://192.168.10.205:8888/login -H "Accept: application/x-yaml"  -d username=‘xiaoluo‘ -d password=‘123456‘ -d eauth=‘pam‘

return:

- eauth: pam

expire: 1423599495.7932329

perms:

- .*

- ‘@wheel‘

- ‘@runner‘

start: 1423556295.793232

token: 38fc58406d4248abded1abbfa11ce83b68754975

user: xiaoluo

获取token之后,可以使用token通信:

[[email protected] salt]# curl -k https://192.168.10.205:8888/ -H "Accept: application/x-yaml" -H "X-Auth-Token: 38fc58406d4248abded1abbfa11ce83b68754975" -d client=‘local‘ -d tgt=‘*‘ -d fun=‘test.ping‘

return:

- monitor: true

跟salt ‘*‘ test.ping的效果是一样的。这样就实现了salt-api接口的通信。

当然在开发获取数据的时候这样的办法显然是不够灵活的。下面贴出一个salt-api的类:

#!/usr/bin/env python

#coding=utf-8

import urllib2, urllib, json, re

class saltAPI:

def __init__(self):

self.__url = ‘https://192.168.10.205:8888‘       #salt-api监控的地址和端口如:‘https://192.168.186.134:8888‘

self.__user =  ‘xiaoluo‘             #salt-api用户名

self.__password = ‘123456‘          #salt-api用户密码

self.__token_id = self.salt_login()

def salt_login(self):

params = {‘eauth‘: ‘pam‘, ‘username‘: self.__user, ‘password‘: self.__password}

encode = urllib.urlencode(params)

obj = urllib.unquote(encode)

headers = {‘X-Auth-Token‘:‘‘}

url = self.__url + ‘/login‘

req = urllib2.Request(url, obj, headers)

opener = urllib2.urlopen(req)

content = json.loads(opener.read())

try:

token = content[‘return‘][0][‘token‘]

return token

except KeyError:

raise KeyError

def postRequest(self, obj, prefix=‘/‘):

url = self.__url + prefix

headers = {‘X-Auth-Token‘   : self.__token_id}

req = urllib2.Request(url, obj, headers)

opener = urllib2.urlopen(req)

content = json.loads(opener.read())

return content[‘return‘]

def saltCmd(self, params):

obj = urllib.urlencode(params)

obj, number = re.subn("arg\d", ‘arg‘, obj)

res = self.postRequest(obj)

print  res[0][‘monitor‘][‘biosversion‘]

print  res[0][‘monitor‘][‘cpu_model‘]

def main():

#以下是用来测试saltAPI类的部分

sapi = saltAPI()

params = {‘client‘:‘local‘, ‘fun‘:‘grains.items‘, ‘tgt‘:‘*‘}

test = sapi.saltCmd(params)

##运行之后就会打印出grain的值。需要什么值可以直接打印。

测试效果:

[[email protected] python]# python salt-api.py

2.2.2

Intel(R) Xeon(R) CPU E5-2603 v2 @ 1.80GHz

时间: 2024-10-13 14:28:27

salt-api 使用的相关文章

Salt API

使用Salt-API可以更加方便的对salt进行管理.配置salt-api主要有这样几个步骤: 1.证书 2.配置文件 3.验证.使用PAM验证 4.启动salt-api 验证配置 添加用户: # useradd  -M -s /sbin/nologin  saltapi 设置密码: # passwd saltapi 设置密钥: [[email protected] /etc/pki/tls/certs]# make testcert 在另一个目录中设置不需要密码验证的key: [[email 

CentOS 安装及配置Salt api

安装 # yum -y install salt-api 更改配置 vim /etc/salt/master 把默认的注释掉  我们这边默认配置文件目录是/srv/salt default_include: master.d/*.conf 创建目录 #cd /etc/salt# mkdir master.d/# cd master.d/ 创建两个文件和添加配置 # cat api.conf rest_cherrypy: host: 0.0.0.0 port: 8080 debug: true d

Salt api安装及配置

一.系统环境 cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) 二.安装及配置 1.salt-api所有操作均在master端 yum -y install salt-api pyOpenSSL 2.配置salt-api 修改/etc/salt/master文件 sed -i '/#default_include/s/#default/default/g' /etc/salt/master 如果没有目录需要创建 mkdir

salt api调用iptables模块

iptables模块基本函数方法:salt.modules.iptables.append(table=u'filter', chain=None, rule=None, family=u'ipv4')salt.modules.iptables.insert(table=u'filter', chain=None, position=None, rule=None, family=u'ipv4')salt.modules.iptables.delete(table, chain=None, po

运维自动化之salt笔记

1:saltstack的基本介绍 2:salt的安装 1:服务端1:安装2:配置文件3:运行4:注意事项2:客户端1:安装2:配置文件3:运行4:注意事项 3:salt的使用: 1:基础知识1:targeting2:nodegroup3:grains4:pillar2:状态管理1:state1:state语法2:state的逻辑关系2:highstate3:salt schedule3:实时管理1:cmd.run2:module4:其他1:无master2:peer3:runner4:react

Saltstack API 配置管理

Saltstack是个运维自动化管理工具 在运维当中还是相当不错的 批量管理 分发软件 安装软件部署 也可以收集一些 服务器的信息 可以做CMDB资产管理 还有salt提供了很方便的API 提供给第三方使用 salt api安装 在已经安装好的主salt master上面 安装api yum -y install salt-api 安装完成之后 获取token curl -k http://10.20.0.100:8080/login -H "Accept: application/x-yaml

死磕salt系列-salt文章目录汇总

死磕salt系列-salt入门 死磕salt系列-salt配置文件 死磕salt系列-salt grains pillar 配置 死磕salt系列-salt 常用modules 死磕salt系列-salt 配置文件管理 死磕salt系列-salt API 使用 死磕salt系列-salt 故障汇总 原文地址:https://www.cnblogs.com/biglittleant/p/8743984.html

配置Salt Master

saltstack利用AES加密 yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm yum install salt-master salt-minion -y 创建salt api 认证用户名密码,使用pam认证方式 sudo useradd admin # 必须是admin,如果是其他用户,需要对应修改$HOME/saltshaker_api/saltapi.conf里面的a

系统自动化配置和管理工具:SaltStack

http://os.51cto.com/art/201308/409041.htm SaltStack                2 Salt,,一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯. salt底层采用动态的连接总线, 使其可以用于编配, 远程执行, 配置管理等等. 参见 其他文档 下载Salt文档的副本: · PDF · ePub 查看之前的Salt版本文档请访问 http://salt.readthed

jenkins安装简要说明

1.配置JAVA环境变量 # mkdir /usr/local/java/ –p # cd /usr/local/java/ # tar zxvf /data/elk5.0/jdk-8u111-linux-x64.tar.gz # cat >>/etc/profile<<EOF export JAVA_HOME=/usr/local/java/jdk1.8.0_111 export PATH=$PATH:$JAVA_HOME/bin exportCLASSPATH=.:$JAVA_