【问题标题】:Dynamic inventories using AWS Go SDK使用 AWS Go 开发工具包的动态清单
【发布时间】:2020-06-18 15:21:09
【问题描述】:

here 所述,如果您使用的是云提供商,则不应在静态文件中管理您的库存。改为使用动态库存


Ansible 文档仅提供 python boto sdk 作为动态清单,如 here 所示。

     ansible -i ec2.py -u ubuntu us-east-1d -m ping

ansible 是否允许 (-i) 执行使用 AWS Go sdk 编写的动态清单?而不是 python boto sdk。

【问题讨论】:

    标签: amazon-web-services go ansible aws-sdk aws-sdk-go


    【解决方案1】:

    是的,ansible 将使用任何可以产生必要的 JSON 输出的命令,包括一个由 the fine manual 指定的 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
    

    【讨论】:

    • 您能否参考任何使用 GoLang 进行动态库存的示例?
    • 我从您的评论中猜测您甚至没有自己尝试某事,但我想这是 StackOverflow 现在的默认位置,所以你去
    • 您也可以对此发表评论吗? stackoverflow.com/q/60569134/3317808
    • 看起来它已经有了答案,而且你评论了一个关于你自己问题的 repo,其中包含 golang 中一个工作模块的实现——发生了什么有你的问题吗?这是心理学实验吗?
    • 我想你误会了...请看我的第二个问题,关于远程执行类型的播放
    猜你喜欢
    • 2019-06-18
    • 2021-02-11
    • 1970-01-01
    • 2022-01-19
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多