我目前正在学习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
感谢您的支持。
答案 0 :(得分:0)
Ansible使用单独的inventory files或dynamic inventory scripts或dynamic 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"