amazon-web-services - 使用 AWS Go 开发工具包的动态清单
问题描述
如此处所述,如果您使用的是云提供商,则不应在静态文件中管理您的库存。而是使用动态库存
Ansible 文档仅将 python boto sdk 提供为动态库存,如此处所示。
ansible -i ec2.py -u ubuntu us-east-1d -m ping
ansible 是否允许(-i
)执行使用 AWS Go sdk 编写的动态清单?而不是 python boto sdk。
解决方案
是的,ansible 将使用任何可以产生必要的 JSON 输出的命令,包括一个 shell 脚本,如精美手册所指定:
在以前的版本中,您必须创建一个脚本或程序,以便在使用正确的参数调用时以正确的格式输出 JSON。您仍然可以使用和编写清单脚本,因为我们通过脚本清单插件确保了向后兼容性,并且对使用的编程语言没有限制。
作为一个具体的 golang 示例:
package main
import (
"encoding/json"
"fmt"
)
func main() {
i := map[string]interface{}{
"_meta": map[string]interface{}{
"hostvars": map[string]interface{}{
"example.host": map[string]interface{}{
"ansible_host": "127.0.0.1",
"ansible_user": "ubuntu",
},
},
},
"all": map[string]interface{}{
"children": []string{"ungrouped"},
},
"ungrouped": map[string]interface{}{
"hosts": []string{"example.host"},
},
}
ba, err := json.Marshal(i)
if err != nil { panic(err) }
fmt.Println(string(ba))
}
通过通常的机制调用:
go build -o sample-inv ./main.go
ansible -i ./sample-inv -m ping all
推荐阅读
- c++ - 如何在 DirectShow 中水平镜像视频?
- vba - HTTP 请求(条带)VBA 发送数据 - 工作几天后出现错误
- lua - 如何从数字中获取前两位数字?
- c# - 在 DataGrid 中绑定组合框
- c - 如何在 C 中创建一个仅提示用户输入正整数的函数并在主函数中调用它?
- javascript - Javascript函数无响应
- javascript - Express js 在上下文中重复路线旅程
- r - 使用 dtplyr 时,pivot_longer 会出错
- java - 用xml中配置文件中的属性替换uri
- xamarin.forms - CollectionView 问题与 GridItemsLayout 混合分组