目錄
任何设备均可被salt托管
开发中的新特性
测试环境的准备
尝试运行!
可能的bug
聊聊Proxy Minion
首頁 資料庫 mysql教程 Saltstack 新特性测试之proxy minion

Saltstack 新特性测试之proxy minion

Jun 07, 2016 pm 04:37 PM
mini proxy saltstack 新特性 特性

salt 目前主要的应用场景是Linux OS下,另外还有Windows Client(Win下没用过,但是看官方issue,应该……),最近关注到官方的一个小模块提到了Proxy minion,群里也多有提及,便想着看看到底是啥存在。 任何设备均可被salt托管 salt proxy minion的出现,

salt 目前主要的应用场景是Linux OS下,另外还有Windows Client(Win下没用过,但是看官方issue,应该……),最近关注到官方的一个小模块提到了Proxy minion,群里也多有提及,便想着看看到底是啥存在。

任何设备均可被salt托管

salt proxy minion的出现,使得网管设备或者哑设备(比如sms gateway)均可被salt统一管理,而实际的管理模块或通讯接口均由用户自行编写好,具体操作内容请参见salt 官网对应的 Proxy Minion 介绍

开发中的新特性

首先需要注意一点,Proxy minion是2014.1.x版本引进的新特性,并且到目前为止仍处于开发阶段,仅可用作测试用途。

测试环境的准备

本人的PC环境:

  • vbox下ubuntu 14.04 LTS Server
  • Salt master & minion 2014.1.7(配置test.ping通,不多说了)

准备好基础环境之后,需要从github下载salt官方开发人员用于测试Proxy Minion的一个小程序(Rest Server,模拟网管设备的管理接口),名字是 salt-proxy-rest。

这个程序可能依赖两个python库,bottle和requests(其实就是web server需要的组件……),安装一下即可。

使用 python rest.py 运行该程序,可以将此作为一个网管设备的Web管理接口:

alt

尝试运行!

至此,准备工作算是完成。在当前环境下,salt-master和salt-minion稳定运行,并且有一个提供REST接口的网管设备在独立工作,我们需要做的便是将其拉进Salt的阵营。

配置pillar

鄙人的minion id是docker,对应的pillar的top.sls内容配置为:

root@docker:/srv/pillar# cat top.sls
base:
  docker:
    - proxyminion
登入後複製

而proxyminion.sls内容则是对应网管设备的描述:

root@docker:/srv/pillar# cat proxyminion.sls 
proxy:
  rest_sample:
    proxytype: rest_sample
    url: http://127.0.0.1:8080/
    id: proxy_docker
登入後複製

这里需要注意的是,proxytype必须是在salt/proxy下已经预先定义好的,而其他的一些参数则是自己网管设备通信需要的一些数据,不一定相同。

定义好pillar数据之后,需要为之添加对应的proxy conn class和grains数据,这里鄙人使用官方sample,就偷个懒:

root@docker:/srv/pillar# cat /usr/lib/python2.7/dist-packages/salt/proxy/rest_sample.py
# -*- coding: utf-8 -*-
'''
This is a simple proxy-minion designed to connect to and communicate with
the bottle-based web service contained in salt/tests/rest.py.
Note this example needs the 'requests' library.
Requests is not a hard dependency for Salt
'''
……
登入後複製

放心,2014.1.7版本已经默认有这个sample代码。 接下来,直接test.ping试试吧!

root@docker:/srv/pillar# salt '*' test.ping -v
Executing job with jid 20140720110315049478
-------------------------------------------
docker:
    True
rest_sample-localhost:
    True
登入後複製

诶,等一下,为什么多出来个key?为什么还能test.ping通?没错!这个就是ProxyMinion,而salt默认已经配置了test.ping方法兼容proxy minion了,只要写好对应的ping模块,就可以使用常规的test.ping来探测!(本例的ping代码如下)

def ping(self):
    '''
    Is the REST server up?
    '''
    r = requests.get(self.url+'ping')
    try:
        if r.status_code == 200:
            return True
        else:
            return False
    except Exception:
        return False
登入後複製

rest_sample还提供很多function,比如鄙人测试的一个service_status,修改对应的模块代码即可使之兼容proxy minion(代码路径为/usr/lib/python2.7/dist-packages/salt/modules/service.py):

def status(name, sig=None):
    '''
    Return the status for a service, 
    returns the PID or an empty string if the
    service is running or not, pass a signature
    to use to find the service via ps
    CLI Example:
    .. code-block:: bash
    salt '*' service.status  [service signature]
    '''
    #wjx add, denote it to work!!
    #if 'proxyobject' in __opts__:
    #    return __opts['proxyobject'].service_status(sig if sig else name)
    return __salt__['status.pid'](sig if sig else name)
登入後複製

那么这时候再看看当前proxy minion管理的服务状态咋样了:

root@docker:/srv/pillar# salt '*' service.status apache
rest_sample-localhost:
    ----------
    comment:
        stopped
    ret:
        True
docker:
    False
登入後複製

完全和普通minion兼容!!rest_sample本身还配置了grain数据,代码位于/usr/lib/python2.7/dist-packages/salt/grains/rest_sample.py,直接敲命令看看:

root@docker:/srv/pillar# salt 'rest_sample-localhost' grains.items
rest_sample-localhost:
    housecat: Are you kidding?
    kernel: 0.0000001
    location: In this darn virtual machine.  Let me out!
    os: RestExampleOS
    os_family: proxy
登入後複製

Awesome!!这样一来,一个基本的salt proxy minion就算是配置完成,Proxy Minion 的类定义代码位于/usr/lib/python2.7/dist-packages/salt/minion.py,有兴趣可以看看。

可能的bug

鄙人在本机测试时,Minion Docker在尝试fork出一个ProxyMinion过程中间报错,说_running参数没有配置,在添加代码后通过(即位于minion.py代码里)

class ProxyMinion(Minion):
'''
This class instantiates a 'proxy' minion--a minion that does not manipulate
the host it runs on, but instead manipulates a device that cannot run a minion.
'''
def __init__(self, opts, timeout=60, safe=True):  # pylint: disable=W0231
    '''
    Pass in the options dict
    '''
    #wjx add, maybe a bug
    self._running = None
    # Warn if ZMQ 
<h4 id="聊聊Proxy-Minion">聊聊Proxy Minion</h4>
<p>Proxy minion使得salt针对网管设备的配置管理成为可能,不过想要实现一个ProxyType的ProxyMinion的完全管理,可能需要编写很多额外的module去支持它的运行。</p>
<p>在大公司复杂的网络环境下,完全可以针对此编写对应SNMP管理模块或者针对OVS编写对应的管理模块,尔后通过salt统一托管,毕竟Salt有一套完善的配置管理体系啊!</p>
    <p class="copyright">
        原文地址:Saltstack 新特性测试之proxy minion, 感谢原作者分享。
    </p>
    
    


登入後複製
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1318
25
PHP教程
1269
29
C# 教程
1248
24
Nginx Proxy Manager下的容器與微服務的部署策略 Nginx Proxy Manager下的容器與微服務的部署策略 Sep 27, 2023 pm 01:06 PM

NginxProxyManager下的容器與微服務的部署策略,需要具體程式碼範例摘要:隨著微服務架構的流行,容器化技術成為了現代軟體開發的重要組成部分。而在微服務架構中,NginxProxyManager扮演著很重要的角色,用來管理和代理微服務的流量。本文將介紹如何使用NginxProxyManager來部署和管理容器化的微服務,並提供相關的程式碼示

如何使用Nginx Proxy Manager實現多台伺服器的負載平衡 如何使用Nginx Proxy Manager實現多台伺服器的負載平衡 Sep 27, 2023 pm 09:42 PM

如何使用NginxProxyManager實作多台伺服器的負載平衡NginxProxyManager是一個基於Nginx開發的代理伺服器管理工具,它提供了一個簡單易用的Web介面,可以方便地設定和管理Nginx代理伺服器。在實際應用中,我們經常需要將請求分發到多台伺服器上,以實現負載平衡和提高系統的效能和可用性。本文將介紹如何使用NginxProx

Nginx Proxy Manager教學:快速入門指南 Nginx Proxy Manager教學:快速入門指南 Sep 27, 2023 pm 05:39 PM

NginxProxyManager教學:快速入門指南,需要具體程式碼範例引言:隨著網路技術的發展,代理伺服器成為我們日常使用網路的一部分。 NginxProxyManager是一個基於Nginx的代理伺服器管理平台,可以幫助我們快速建立和管理代理伺服器。本篇文章將為大家介紹NginxProxyManager的快速入門指南,以及一些具體的程式碼範例。一

8.4 小平板上市 1099 起 8.4 小平板上市 1099 起 Sep 01, 2024 pm 04:04 PM

聲音|小白此前魅族曾和極星合作打造了極星手機“PolestarPhone”,前不久領克也宣布將聯合魅族定制打造“領克手機”,魅族似乎開拓了給車企合作代工手機的業務,現根據最新爆料,魅族似乎還將為紅旗代工手機。如上圖所見,魅族近日有一款型號為M481R的5G新機入網,@完美編排數位爆料稱該機型為紅旗手機,"看來還是套娃魅族21Pro"。作為補充,今年4月中國一汽第五屆科技大會上,中國一汽與億咖通科技簽署智慧座艙戰略合作協議,雙方將在智慧座艙領域開啟全面戰略合作,共同打造極具競爭力

DIY 從入門到放棄:無線網卡拯救老主機板 DIY 從入門到放棄:無線網卡拯救老主機板 Mar 14, 2024 pm 04:40 PM

很多主機板都自備了WiFi模組,但是對於很多玩家來說,貴出的200元可並不划算,另外還有一些老主機板沒有WiFi,如果想要享受便捷的無線上網功能,那就需要搭配一塊無線網卡了。無線網卡使用起來非常方便,但是也要注意並不是所有的產品都適合你,下面我們就來介紹3種不同的無線網卡。一、"便攜式小飛俠"——USB無線網卡首當其衝的是我們身邊的"小英雄",USB無線網卡。這款輕巧迷你的設備就像一把神奇鑰匙,只需輕輕一插,將其接入電腦USB端口,瞬間啟動無線網路之旅。 USB無線網卡以其親民的價格和極致的便利性深受用

掌握Spring MVC的關鍵概念:了解這些重要特性 掌握Spring MVC的關鍵概念:了解這些重要特性 Dec 29, 2023 am 09:14 AM

了解SpringMVC的關鍵特性:掌握這些重要的概念,需要具體程式碼範例SpringMVC是一種基於Java的Web應用開發框架,它透過模型-視圖-控制器(MVC)的架構模式來幫助開發人員建立靈活可擴展的Web應用程式。了解和掌握SpringMVC的關鍵特性將使我們能夠更有效地開發和管理我們的網路應用程式。本文將介紹一些SpringMVC的重要概念

Pocket386超便攜筆記型電腦悄悄發布,相容於Win95,搭載罕見處理器 Pocket386超便攜筆記型電腦悄悄發布,相容於Win95,搭載罕見處理器 Jun 24, 2024 am 06:46 AM

這款新筆記型電腦的主要規格可能會讓人想起他們的學生時代。它擁有 8 MB 內存和 7 英寸 IPS 顯示屏,支援 640 x 480 (4:3) 和 800 x 480 模式;許多復古端口和運行的 386 SX 兼容 Ali M6117 處理器

Nginx Proxy Manager安全性分析與防護 Nginx Proxy Manager安全性分析與防護 Sep 28, 2023 pm 01:30 PM

NginxProxyManager安全性分析與防護引言:在網路應用中,安全性一直是至關重要的問題。作為一款強大的反向代理和負載平衡伺服器軟體,Nginx在保障網路應用安全上扮演著重要的角色。然而,隨著網路技術的不斷發展,網路攻擊日益增多,如何保障NginxProxyManager的安全性成為了亟待解決的問題。本文將從NginxProxyMana

See all articles