首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每个主机不包含vars

每个主机不包含vars
EN

Stack Overflow用户
提问于 2016-11-08 15:24:47
回答 1查看 3.4K关注 0票数 1

我对Ubuntu的Ansible 2.2有个问题。

我的剧本包含以下内容:

代码语言:javascript
复制
---
- hosts: all
  become: yes
  roles:
    - mysql

我从这里开始使用了MySQL角色,https://galaxy.ansible.com/geerlingguy/,但在本地将all重命名为MySQL。在“剧本”的“默认”文件夹中,有一个包含以下参数的文件:

代码语言:javascript
复制
mysql_datadir: /var/lib/mysql

有了这个,Ansible工作得很好。但是现在我希望每个主机都有一个特定的配置,如下所述:practices.html

因此,我创建了文件inventories/host_vars/test.yml,删除了任务默认文件夹中的文件,并将剧本更新为以下内容:

代码语言:javascript
复制
  ---
- hosts: all
  become: yes
  roles:
    - mysql
  tasks:
  - name: include vars
    include_vars: inventories/host_vars/test.yml

现在Ansible不会接受这一点;它说变量没有设置:

=> {" FAILED ":true,"msg":“字段'args‘有一个无效的值,该值似乎包含一个未定义的变量。错误是:'mysql_datadir‘是未定义的\n\n,错误似乎出现在apt第24行第3列中,但可能\n位于文件的其他地方,具体取决于语法问题。\n\n错误行似乎是:\n\n- name:删除apt包在初始安装后创建的innodb日志文件。n^这里\n“}

通过命令行传递参数没有问题。我怎么才能解决呢?

EN

回答 1

Stack Overflow用户

发布于 2016-11-08 15:44:19

我相信你在那里有很多问题。我建议从标准的、更简单的目录结构开始。

我将努力做到以下几点:

  • 使用标准目录布局,因此将host_vars移动到顶部文件夹
  • 在host_vars目录中,为每个主机放置一个文件,完全按照清单中定义的主机名命名,以“--”开始文件,并将变量放在其中。不要将.yml扩展名添加到文件中!
  • 不要显式地“包括”任何东西。它是自动的。site.yml中没有“任务”。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40490601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档