Ansible无法匹配主机模式

时间:2019-04-22 14:50:45

标签: ansible

我目前正在学习Ansbible,我已经按照一个教程在云上的VM上安装Wordpress。我的项目构建如下:

[.]
|_ playbook.yml
|_ ansible.cfg
|_ inventori.ini
|_ [roles]
      |_ [server]
            |_ ...
      |_ [php]
            |_ ...
      |_ [mysql]
            |_ ...
      |_ [wordpress]
            |_ ... 
|_ [group_vars]
      |_ [web]
            |_ web.yml
|_ [host_vars]
      |_ vm1Devops.yml

当我运行命令时:

  

ansible-playbook playbook.yml-要求通过

我遇到以下错误:

 [WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not
match 'all'

[DEPRECATION WARNING]: Instead of sudo/sudo_user, use become/become_user and make sure become_method is 'sudo'
(default). This feature will be removed in version 2.9. Deprecation warnings can be disabled by setting
deprecation_warnings=False in ansible.cfg.
 [WARNING]: Could not match supplied host pattern, ignoring: {VMIP_HERE}


PLAY [{VMIP_HERE}] ***********************************************************************************************
skipping: no hosts matched

PLAY RECAP *********************************************************************************************************

我不知道会发生什么,为什么ansible可以捕获我的IP但告诉我主机列表为空?我错过了什么吗?

在这里您可以在我的playbook.yml上抢劫:

- hosts:
    - {VMIP_HERE}

  roles:
    - server
    - php
    - mysql
    - wordpress

感谢您的支持。

1 个答案:

答案 0 :(得分:0)

Ansible使用单独的inventory filesdynamic inventory scriptsdynamic inventory plugins来知道在哪里运行剧本中的任务。

播放中的主机行与清单文件中配置的现有主机组或单个主机匹配。

尝试创建一个单独的清单文件,并在调用您的剧本时引用它。

$ cat '{VMIP_HERE}' >> inventory
$ ansible-playbook -i inventory playbook.yml --ask-pass

此外,我认为不支持用于指定播放中的主机列表的格式。

更改

- hosts:
    - {VMIP_HERE}

- hosts: {VMIP_HERE}

如果要对主机或主机组列表进行播放,则可以使用冒号':'分隔它们

- name: Run some tasks
  hosts: group_one:group_two:group_three
  gathers_facts: false
  become: false
  tasks:
  - name: Print hello world
    debug:
      msg: "Hello world"