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 自动执行脚本,自动打开端点?
我的首选结果是:
- 运行 salt-cloud => 设置新机器并打开所有必要的端口
- 运行 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
我的服务器部署方法有点卡住了... 到目前为止,我可以通过命令行创建和配置我的服务器:
首先我 运行 salt-cloud 然后我通过 salt-ssh 提供它...
但是因为我使用了一些特殊的端口(https,...)我还必须在 Microsoft Azure 上 set/open input/endpoints (=ports)。
这就是我卡住的地方:有什么方法可以让 salt-cloud 自动执行脚本,自动打开端点?
我的首选结果是:
- 运行 salt-cloud => 设置新机器并打开所有必要的端口
- 运行 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