Saltstack 新特性测试之proxy minion
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管理接口:
尝试运行!
至此,准备工作算是完成。在当前环境下,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>

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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 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

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

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

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

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.

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 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
