我们使用 Ansible 作为设置和管理 k8s 集群的方法。 为了部署应用程序,我们有一个剧本,使用
localhost
调用 kubectl
来部署我们的应用程序。
我们正在做一些重构,我希望使
localhost
成为 Ansible 主机文件中的组的一部分。
目前我们有:
localhost ansible_connection=local ansible_user=root
[k8s_masters]
k8s-master01 ansible_host=x
[k8s_nodes]
k8s-node01 ansible_host=x
k8s-node02 ansible_host=x
[k8s_cluster:children]
k8s_masters
k8s_nodes
我想将主持人
localhost
添加到群组k8s_cluster
。
这样,当我运行我的剧本时,Ansible 将在
k8s_cluster
上执行时使用 localhost
group_var。我知道我可以使用 group_var/all
但我们的设置有点复杂。我们希望使用此设置来根据所使用的库存来匹配正确的变量。
是否可以创建一组包含
localhost
的多个主机?
我尝试创建一个群组
prod
:
[prod:children]
all
localhost
或
[prod:children]
k8s_cluster
localhost
但这是不允许的。
您可以在组之间创建父/子关系。父组也称为嵌套组或组的组。
这意味着您无法将主机放入子组中,而之前没有将其放入组中。否则您会收到类似
的错误消息[WARNING]: * Failed to parse k8s.ini with ini plugin:
k8s.ini:15: Section [prod:children] includes undefined group: localhost
库存示例
k8s.ini
[control_node]
localhost
[k8s_masters]
k8s-master01
[k8s_nodes]
k8s-node01
k8s-node02
[k8s_cluster:children]
k8s_masters
k8s_nodes
[prod:children]
control_node
k8s_cluster
通过
调用ansible-inventory -i k8s.ini --graph
将导致
所请求的输出@all:
|--@prod:
| |--@control_node:
| | |--localhost
| |--@k8s_cluster:
| | |--@k8s_masters:
| | | |--k8s-master01
| | |--@k8s_nodes:
| | | |--k8s-node01
| | | |--k8s-node02
|--@ungrouped:
您还可以查看
的输出ansible-inventory -i k8s.ini prod --graph
ansible-inventory -i k8s.ini control_node --graph
此外,我建议使用真实的主机名,例如在清单中使用
test.example.com
而不是 localhost
,并查看 默认组的含义。
进一步阅读
你能帮我将 Ansible tower 连接到 Openshift 集群吗?我创建了一个 Kubernetes 不记名令牌类型的凭证,但我无法连接