在没有清单的情况下运行 Ansible playbook

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

考虑我是否想快速检查某些内容。一些并不真正需要连接到主机的东西(检查

ansible
本身如何工作,例如,包括处理程序或其他东西)。或者
localhost
也可以。我可能会放弃这个,但手册页说:

-i PATH, --inventory=PATH

清单的路径,默认为/etc/ansible/hosts。 或者,您可以使用逗号分隔 主机列表或带有尾随逗号的单个主机 host,.

当我在没有库存的情况下运行

ansible-playbook
时,它会说:

[警告]:如果主机列表为空,则只有 localhost 可用

有没有一种简单的方法可以在没有主机的情况下运行剧本,或者可能是

localhost

ansible ansible-inventory
3个回答
47
投票

先决条件。您需要在主机上运行

ssh
服务器(
ssh localhost
应该让您进入)。

然后,如果您想使用密码身份验证(请注意结尾的逗号):

$ ansible-playbook playbook.yml -i localhost, -k

在这种情况下,您还需要

sshpass

如果是公钥认证:

$ ansible-playbook playbook.yml -i localhost,

以及帮助您入门的测试手册:

- hosts: all
  tasks:
    - debug: msg=test

您需要在

localhost,
选项参数中使用逗号,否则它将被视为库存路径。负责解析该值的库存插件可以在here找到。


1
投票

您可以仅使用 localhost 定义默认清单

请参阅此处的解释: https://docs.ansible.com/ansible/latest/reference_appendices/config.html#the-configuration-file

并在你的剧本中添加使用这个

- hosts: all
  connection: local
  tasks:
    - debug: msg=test

它将使用本地连接,因此不需要 SSH(因此不会暴露您的计算机)。除非您需要解决 ssh 问题,否则可能会更快。

为了更快的反馈循环,您可以使用:

gather_facts: no
您已经知道您的目标。


0
投票

您还可以使用

-l
标志(限制)

查询/运行没有任何清单文件的 Playbook(单个主机(或一组具有“模式”的主机))

要为特定主机运行:

$ ansible-playbook your-playbook.yml -l linux1.test.me --check --list-hosts

要在与指定

*linux*
模式匹配的一组主机上运行:

$ ansible-playbook your-playbook.yml -l *linux* --check --list-hosts

我已经模拟了运行,并首先使用这些标志检查了受影响的主机列表:

  • --检查(空运行)
  • --list-hosts(显示将受影响的主机列表)

我发现

--list-hosts
在这种情况下特别有用,可以确保我使用正确的模式并影响预期的主机,而不是其他任何东西。

请在官方 Ansible 文档中找到有关 -l(“限制”)标志和支持的模式(和示例)的更多信息:

https://docs.ansible.com/ansible/latest/inventory_guide/intro_patterns.html

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