天天看点

Salt API

使用Salt-API可以更加方便的对salt进行管理。配置salt-api主要有这样几个步骤:

1、证书

2、配置文件

3、验证。使用PAM验证

4、启动salt-api

验证配置

添加用户:

# useradd  -M -s /sbin/nologin  saltapi

设置密码:

# passwd saltapi

设置密钥:

1

<code>[root@node1 </code><code>/etc/pki/tls/certs</code><code>]</code><code># make testcert</code>

在另一个目录中设置不需要密码验证的key:

2

3

<code>[root@node1 </code><code>/etc/pki/tls/private</code><code>]</code><code># openssl rsa -in localhost.key -out salt_nopass.key</code>

<code>Enter pass phrase </code><code>for</code> <code>localhost.key:</code>

<code>writing RSA key</code>

此时会生成salt_nopass.key的key.

安装CherryPy配置master

安装salt-api:

<code># yum install salt-api -y</code>

使用pip安装配置CherryPy:

<code># pip install CherryPy==3.2.6</code>

修改master的配置文件,打开注释,将默认配置放在master.d中:

<code># vim /etc/salt/master    </code>

<code>default_include: master.d/*.conf</code>

在对应的路径下创建api.conf:

4

5

6

<code>[root@node1 </code><code>/etc/salt/master</code><code>.d]</code><code># cat api.conf </code>

<code>rest_cherrypy:</code>

<code>  </code><code>host: 172.16.10.60</code>

<code>  </code><code>port: 8000</code>

<code>  </code><code>ssl_crt: </code><code>/etc/pki/tls/certs/localhost</code><code>.crt </code>

<code>  </code><code>ssl_key: </code><code>/etc/pki/tls/private/salt_nopass</code><code>.key</code>

创建授权文件:

7

<code>[root@node1 </code><code>/etc/salt/master</code><code>.d]</code><code># cat eauth.conf </code>

<code>external_auth:</code>

<code>  </code><code>pam:</code>

<code>    </code><code>saltapi:</code>

<code>      </code><code>- .*             </code><code># 权限,代表所有模块</code>

<code>      </code><code>- </code><code>'@wheel'</code>       <code># 指定key saltkey</code>

<code>      </code><code>- </code><code>'@runner'</code>      <code># 机器是否在线</code>

重启salt-master:

<code># systemctl restart salt-master</code>

启动salt-api:

<code># systemctl start salt-api</code>

查看8000端口是否开启:

<code># netstat -lntp|grep 8000</code>

<code>tcp        0      0 172.16.10.60:8000       0.0.0.0:*               LISTEN      41783</code><code>/python</code>

请求token进行验证:

8

9

10

11

12

13

14

15

<code># curl -k  https://172.16.10.60:8000/login \</code>

<code> </code><code>-H </code><code>'Accept: application/x-yaml'</code> <code>\</code>

<code> </code><code>-d username=saltapi \</code>

<code> </code><code>-d password=saltapi \</code>

<code> </code><code>-d eauth=pam</code>

<code>return</code><code>:</code>

<code>- eauth: pam</code>

<code>  </code><code>expire: 1480035796.270958</code>

<code>  </code><code>perms:</code>

<code>  </code><code>- .*</code>

<code>  </code><code>- </code><code>'@wheel'</code>

<code>  </code><code>- </code><code>'@runner'</code>

<code>  </code><code>start: 1479992596.270957</code>

<code>  </code><code>token: 1723b0f260664994bce5b171e7844f1a12979a44</code>

<code>  </code><code>user: saltapi</code>

使用API执行salt

使用token获取指定主机的grance信息:

# curl -k  https://172.16.10.60:8000/minions/node1 -H 'Accept: application/x-yaml'  \    

-H 'X-Auth-Token:1723b0f260664994bce5b171e7844f1a12979a44'

使用api检测机器的状态:

<code># curl -k  https://172.16.10.60:8000/ \</code>

<code>  </code><code>-H </code><code>'Accept: application/x-yaml'</code>    <code>\</code>

<code>  </code><code>-H </code><code>'X-Auth-Token:1723b0f260664994bce5b171e7844f1a12979a44'</code> <code>\</code>

<code>  </code><code>-d client=</code><code>'runner'</code> <code>\  </code><code>#runner 在master上执行</code>

<code>  </code><code>-d fun=</code><code>'manage.status'</code>  <code>#查看主机在线状态</code>

<code>#返回结果:</code>

<code>- down: []</code>

<code>  </code><code>up:</code>

<code>  </code><code>- node1</code>

<code>  </code><code>- node2</code>

使用api 执行命令:

<code># curl -k  https://172.16.10.60:8000/   \</code>

<code>   </code><code>-H </code><code>'Accept: application/x-yaml'</code>      <code>\</code>

<code>   </code><code>-H </code><code>'X-Auth-Token:1723b0f260664994bce5b171e7844f1a12979a44'</code> 

<code>   </code><code>-d client=</code><code>'local'</code> <code>-d tgt=</code><code>'*'</code>  <code>\  </code><code>#在minion端本地执行</code>

<code>   </code><code>-d fun=</code><code>'test.ping'</code>     <code># 执行test.ping命令</code>

<code>#执行结果:</code>

<code>- node1: </code><code>true</code>

<code>  </code><code>node2: </code><code>true</code>

使用api执行salt高级状态:

<code># curl -k  https://172.16.10.60:8000/  \</code>

<code>   </code><code>-H </code><code>'X-Auth-Token:1723b0f260664994bce5b171e7844f1a12979a44'</code>   <code>\</code>

<code>   </code><code>-d client=</code><code>'local'</code>   <code>\</code>

<code>   </code><code>-d tgt=</code><code>'*'</code>   <code>\</code>

<code>   </code><code>-d fun=</code><code>'state.highstate'</code>

使用API获取Jobs信息:

<code># curl -k  https://172.16.10.60:8000/jobs \ # 返回jobs信息</code>

<code>  </code><code>-H </code><code>'Accept: application/x-yaml'</code>   <code>\</code>

<code>  </code><code>-H </code><code>'X-Auth-Token:1723b0f260664994bce5b171e7844f1a12979a44'</code>

查看具体某一个jobs的信息:

<code># curl -k  https://172.16.10.60:8000/jobs/20161124212822336420 \ # 指定job ID查询</code>

<code>  </code><code>-H </code><code>'Accept: application/x-yaml'</code> <code>\</code>

参考资料:

 本文转自 酥心糖 51CTO博客,原文链接:http://blog.51cto.com/tryingstuff/1876383