我正在尝试使用Ansible来自动化我的工作站。我一直在关注this tutorial作为介绍。但是我一直使用ansible-pull命令收到警告。
在做完sudo ansible-pull -U https://github.com/plsergent/setup-user-friendly.git之后,我得到了[WARNING]: Could not match supplied host pattern, ignoring: <local machine hostname>
这是我的/etc/ansible/hosts文件:
[localhost]
127.0.0.1
[localhost:vars]
ansible_connection=local和我的local.yml文件:
- hosts: localhost
become: true
pre_tasks:
- name: update repositories
apt: update_cache=yes
changed_when: False
tasks:
- include: tasks/packages.yml
- include: tasks/users.yml
- include: tasks/cron.yml有没有办法摆脱这个警告?
谢谢
注意:当我使用ansible-playbook:sudo ansible-playbook local.yml运行我的剧本时,我没有得到任何警告
发布于 2019-04-24 09:24:48
有什么方法可以摆脱这个警告吗?
您收到警告是因为ansible-pull构建了一个命令行,该命令行包含由like this构建的--limit选项
node = platform.node()
host = socket.getfqdn()
limit_opts = 'localhost,%s,127.0.0.1' % ','.join(set([host, node, host.split('.')[0], node.split('.')[0]]))其中,platform.node()返回系统节点名(即uname -n的输出),socket.getfqdn()尝试返回系统的完全限定域名。这意味着ansible命令行将如下所示:
ansible-playbook -l localhost,yourhostname.example.com,yourhostname,127.0.0.1 ...当您在--limit参数中提供与清单中的主机不匹配的主机名时,您会收到Could not match supplied host pattern错误。你可以像这样重现它:
$ ansible all -m ping -l host-that-does-not-exist
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit
localhost does not match 'all'
[WARNING]: Could not match supplied host pattern, ignoring: host-that-does-not-exist如果该警告真的让您感到困扰,您可以通过在ansible-pull命令行中添加一个-i选项来显式地将您的本地主机名包含在ansible清单中来避免该警告。您可以包括内联主机:
ansible-pull -i localhost,myhostname -U ...或者,您可以显式地将其指向现有的清单文件:
ansible-pull -i /etc/ansible/hosts -U ...发布于 2019-05-10 23:04:23
为了补充@larsks的答案,似乎使用具有ansible-pull的动态清单将产生警告,即使指定的主机名包含在动态清单脚本的结果中。解决方法是如前所述将主机名添加到-i。
发布于 2019-09-21 01:22:24
注意:当" myhost“和"myhost.example.com”都在清单中时,ansible-pull似乎对有多少主机感到困惑,并且可能运行两次plays或角色(一次在myhost上,再次在myhost.example.com上),或者可能并行地在一个名称上运行一些plays,在另一个名称上运行其他plays,从而产生意外的执行顺序。
https://stackoverflow.com/questions/55820887
复制相似问题