1 回答
TA贡献1946条经验 获得超4个赞
是的,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
- 1 回答
- 0 关注
- 112 浏览
添加回答
举报