Inhaltsverzeichnis
任何设备均可被salt托管
开发中的新特性
测试环境的准备
尝试运行!
可能的bug
聊聊Proxy Minion
Heim Datenbank MySQL-Tutorial 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
Nach dem Login kopieren

而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
Nach dem Login kopieren

这里需要注意的是,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
'''
……
Nach dem Login kopieren

放心,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
Nach dem Login kopieren

诶,等一下,为什么多出来个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
Nach dem Login kopieren

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)
Nach dem Login kopieren

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

root@docker:/srv/pillar# salt '*' service.status apache
rest_sample-localhost:
    ----------
    comment:
        stopped
    ret:
        True
docker:
    False
Nach dem Login kopieren

完全和普通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
Nach dem Login kopieren

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>
    
    


Nach dem Login kopieren
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Bereitstellungsstrategie von Containern und Microservices unter Nginx Proxy Manager Bereitstellungsstrategie von Containern und Microservices unter Nginx Proxy Manager Sep 27, 2023 pm 01:06 PM

Die Bereitstellungsstrategie von Containern und Microservices unter NginxProxyManager erfordert spezifische Codebeispiele. Zusammenfassung: Mit der Popularität der Microservice-Architektur ist die Containerisierungstechnologie zu einem wichtigen Bestandteil der modernen Softwareentwicklung geworden. In der Microservice-Architektur spielt NginxProxyManager eine sehr wichtige Rolle und wird zum Verwalten und Proxyen des Microservice-Verkehrs verwendet. In diesem Artikel wird die Verwendung von NginxProxyManager zum Bereitstellen und Verwalten von Container-Mikrodiensten vorgestellt und relevante Codebeispiele bereitgestellt.

So verwenden Sie Nginx Proxy Manager, um einen Lastausgleich für mehrere Server zu erreichen So verwenden Sie Nginx Proxy Manager, um einen Lastausgleich für mehrere Server zu erreichen Sep 27, 2023 pm 09:42 PM

So verwenden Sie NginxProxyManager, um einen Lastausgleich für mehrere Server zu erreichen. NginxProxyManager ist ein auf Nginx basierendes Proxyserver-Verwaltungstool. Es bietet eine einfache und benutzerfreundliche Weboberfläche, mit der Nginx-Proxyserver einfach konfiguriert und verwaltet werden können. In praktischen Anwendungen müssen wir Anforderungen häufig auf mehrere Server verteilen, um einen Lastausgleich zu erreichen und die Systemleistung und -verfügbarkeit zu verbessern. In diesem Artikel wird die Verwendung von NginxProx vorgestellt

Nginx Proxy Manager-Tutorial: Kurzanleitung Nginx Proxy Manager-Tutorial: Kurzanleitung Sep 27, 2023 pm 05:39 PM

NginxProxyManager-Tutorial: Kurzanleitung, spezifische Codebeispiele erforderlich Einführung: Mit der Entwicklung der Netzwerktechnologie sind Proxyserver zu einem Teil unserer täglichen Nutzung des Internets geworden. NginxProxyManager ist eine auf Nginx basierende Proxyserver-Verwaltungsplattform, mit der wir Proxyserver schnell einrichten und verwalten können. In diesem Artikel werden Ihnen die Kurzanleitung von NginxProxyManager sowie einige spezifische Codebeispiele vorgestellt. eins

Der ultraportable Pocket386-Laptop wurde leise mit Win95-Kompatibilität und ungewöhnlichem Prozessor veröffentlicht Der ultraportable Pocket386-Laptop wurde leise mit Win95-Kompatibilität und ungewöhnlichem Prozessor veröffentlicht Jun 24, 2024 am 06:46 AM

Die wichtigsten Spezifikationen des neuen Laptops werden wahrscheinlich einige an ihre Schulzeit erinnern. Es verfügt über 8 MB Speicher und ein 7-Zoll-IPS-Display, das die Modi 640 x 480 (4:3) und 800 x 480 unterstützt; Viele Retro-Anschlüsse und ein 386 SX-kompatibler Ali M6117-Prozessor laufen

Beherrschen Sie die Schlüsselkonzepte von Spring MVC: Verstehen Sie diese wichtigen Funktionen Beherrschen Sie die Schlüsselkonzepte von Spring MVC: Verstehen Sie diese wichtigen Funktionen Dec 29, 2023 am 09:14 AM

Verstehen Sie die Hauptfunktionen von SpringMVC: Um diese wichtigen Konzepte zu beherrschen, sind spezifische Codebeispiele erforderlich. SpringMVC ist ein Java-basiertes Framework für die Entwicklung von Webanwendungen, das Entwicklern beim Aufbau flexibler und skalierbarer Strukturen durch das Architekturmuster Model-View-Controller (MVC) hilft. Internetanwendung. Wenn wir die wichtigsten Funktionen von SpringMVC verstehen und beherrschen, können wir unsere Webanwendungen effizienter entwickeln und verwalten. In diesem Artikel werden einige wichtige Konzepte von SpringMVC vorgestellt

Heimwerken vom Einstieg bis zum Aufgeben: WLAN-Karte rettet alte Mainboards Heimwerken vom Einstieg bis zum Aufgeben: WLAN-Karte rettet alte Mainboards Mar 14, 2024 pm 04:40 PM

Viele Motherboards verfügen über integrierte WLAN-Module, aber für viele Spieler sind die zusätzlichen 200 Yuan nicht kosteneffektiv. Darüber hinaus verfügen einige alte Motherboards nicht über WLAN eine. Drahtlose Netzwerkkarte. Drahtlose Netzwerkkarten sind sehr praktisch, aber bitte beachten Sie, dass nicht alle Produkte für Sie geeignet sind. Im Folgenden stellen wir Ihnen drei verschiedene drahtlose Netzwerkkarten vor. 1. „Portable Peter Pan“ – USB-WLAN-Netzwerkkarte Das erste, was die Hauptlast zu tragen hat, ist der „kleine Held“ um uns herum, die USB-WLAN-Netzwerkkarte. Dieses leichte und kleine Gerät ist wie ein magischer Schlüssel. Schließen Sie es einfach an den USB-Anschluss Ihres Computers an, um Ihre drahtlose Netzwerkreise sofort zu aktivieren. USB-WLAN-Netzwerkkarten werden aufgrund ihres erschwinglichen Preises und ihres ultimativen Komforts häufig verwendet.

8.4 Kleine Tablets ab 1099 erhältlich 8.4 Kleine Tablets ab 1099 erhältlich Sep 01, 2024 pm 04:04 PM

Ton |. Xiaobai Meizu hat bereits mit Polestar zusammengearbeitet, um das Polestar-Handy „Polestar Phone“ zu entwickeln hat ein Geschäft entwickelt, das mit Automobilherstellern zusammenarbeitet, um Mobiltelefone herzustellen. Den neuesten Nachrichten zufolge scheint es, dass Meizu auch OEM-Mobiltelefone für Hongqi anbieten wird. Wie Sie auf dem Bild oben sehen können, hat Meizu kürzlich ein neues 5G-Telefonmodell M481R im Internet veröffentlicht. @Perfectly Digital hat die Nachricht verbreitet und das Modell als Hongqi-Telefon bezeichnet. „Es scheint ein Matroschka-Meizu 21Pro zu sein.“ Als Ergänzung unterzeichneten China FAW und Yikatong Technology auf der fünften China FAW Technology Conference im April dieses Jahres eine strategische Kooperationsvereinbarung zum Thema Smart Cockpits wettbewerbsfähig

So verwenden Sie Nginx Proxy Manager, um HTML-Seiten schnell zwischenzuspeichern So verwenden Sie Nginx Proxy Manager, um HTML-Seiten schnell zwischenzuspeichern Sep 28, 2023 am 10:58 AM

So verwenden Sie NginxProxyManager, um eine schnelle Zwischenspeicherung von HTML-Seiten zu erreichen. Einführung: In modernen Netzwerkanwendungen ist das schnelle Laden von Webseiten eine wichtige Anforderung. Um die Benutzererfahrung zu verbessern, können wir NginxProxyManager verwenden, um HTML-Seiten schnell zwischenzuspeichern. In diesem Artikel erfahren Sie, wie Sie mit NginxProxyManager dieses Ziel erreichen, und stellen spezifische Codebeispiele bereit. Teil 1: NginxProxy installieren und konfigurieren

See all articles