Ansible Inventory:如何在主机组中使用 localhost?

问题描述 投票:0回答:2

我们使用 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

但这是不允许的。

ansible ansible-inventory
2个回答
1
投票

您可以查看如何构建库存分组:父/子组关系

您可以在组之间创建父/子关系。父组也称为嵌套组或组的组。

这意味着您无法将主机放入子组中,而之前没有将其放入组中。否则您会收到类似

的错误消息
[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
,并查看 默认组的含义。

进一步阅读


0
投票

你能帮我将 Ansible tower 连接到 Openshift 集群吗?我创建了一个 Kubernetes 不记名令牌类型的凭证,但我无法连接

© www.soinside.com 2019 - 2024. All rights reserved.