考虑我是否想快速检查某些内容。一些并不真正需要连接到主机的东西(检查
ansible
本身如何工作,例如,包括处理程序或其他东西)。或者 localhost
也可以。我可能会放弃这个,但手册页说:
-i PATH, --inventory=PATH
清单的路径,默认为/etc/ansible/hosts。 或者,您可以使用逗号分隔 主机列表或带有尾随逗号的单个主机 host,.
当我在没有库存的情况下运行
ansible-playbook
时,它会说:
[警告]:如果主机列表为空,则只有 localhost 可用
有没有一种简单的方法可以在没有主机的情况下运行剧本,或者可能是
localhost
?
先决条件。您需要在主机上运行
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找到。
您可以仅使用 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
您已经知道您的目标。
您还可以使用
-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
在这种情况下特别有用,可以确保我使用正确的模式并影响预期的主机,而不是其他任何东西。
请在官方 Ansible 文档中找到有关 -l(“限制”)标志和支持的模式(和示例)的更多信息:
https://docs.ansible.com/ansible/latest/inventory_guide/intro_patterns.html