SaltStack:通过盐云创建服务器并在 Azure 中自动设置端点?

SaltStack: Create a server via salt-cloud and set endpoints autmatically in Azure?

我的服务器部署方法有点卡住了... 到目前为止,我可以通过命令行创建和配置我的服务器:

首先我 运行 salt-cloud 然后我通过 salt-ssh 提供它...

但是因为我使用了一些特殊的端口(https,...)我还必须在 Microsoft Azure 上 set/open input/endpoints (=ports)。

这就是我卡住的地方:有什么方法可以让 salt-cloud 自动执行脚本,自动打开端点?

我的首选结果是:

  1. 运行 salt-cloud => 设置新机器并打开所有必要的端口
  2. 运行 salt-ssh 来配置它们

我已经看过 salt orchestration,但它看起来更适合服务器队列,而不是单个(外部)服务器配置。

有什么提示吗?

您可以编写自定义 bootstrap 脚本来打开您想要的端口。

正如Utah_Dave所说,我写了一个ruby脚本来添加端口...

# ruby
# execute with ruby startscript.rb
require 'json'
PROVIDER = "yourprovider"
SERVER = "yourserver"

ENDPOINTS = {
  "SSH2" => 17532,
  "HTTPS" => 443,
  "HTTP" => 80,
  "SlangerHTTP" => 8080,
  "Slanger" => 4567,
  "CouchDB" => 5984
}


def get_missing
  service_existing = false
  while !service_existing
    begin
      res = `salt-cloud --out=json -f list_input_endpoints #{PROVIDER} deployment=#{SERVER} service=#{SERVER}`
      result = JSON.parse(res)
      service_existing = true
    rescue => e
      puts e
    end
  end


  existing_services = result[PROVIDER]["azure"].keys
  missung_services = ENDPOINTS.keys - existing_services
end

missung_services = get_missing
while missung_services.any?
  print "#{Time.now} [#{SERVER}] Services missing: #{missung_services.join(", ")}"
  missung_services.each do |m|
    print "."
    `salt-cloud --out=json -f add_input_endpoint #{PROVIDER} name=#{m} port=#{ENDPOINTS[m]}  protocol=tcp deployment=#{SERVER} service=#{SERVER} role=#{SERVER}`
  end
  print "\n"
  missung_services = get_missing
end