【问题标题】:How to create host file with ansible with play hosts IP如何使用带有播放主机 IP 的 ansible 创建主机文件
【发布时间】:2016-03-15 01:11:40
【问题描述】:

我正在尝试使用以下任务创建主机文件。我在完全不属于组['hadoop']的机器上运行此任务。在这里,我想为来自 groups['hadoop'] 的节点创建主机文件,而不是在 groups['hadoop'] 上运行我的这个游戏

- name: Update /etc/hosts
  lineinfile: dest=/etc/hosts
          regexp='.*{{ item }}$'
          line="{{ hostvars[item].ansible_default_ipv4.address }} {{item}}"
          state=present
  when: hostvars[item].ansible_default_ipv4.address is defined
  with_items: groups['hadoop']
  tags:
    - etc-hosts

我试过了,但没有用,只有当我的游戏主机中有组['hadoop']时它才有效。

有人知道我在这里做错了什么吗?

【问题讨论】:

    标签: automation ansible ansible-2.x


    【解决方案1】:

    Ansible 将通过设置模块检测 IP 等事实。默认情况下,这是在将由播放处理的那些主机上作为播放的第一个任务执行的。因此,Ansible 只知道当前戏剧的主持人的事实。不是该剧的一部分 -> 没有可用的详细信息。

    要解决此问题,您有两种选择。

    1) 添加一个没有任务的播放,只是为了在hadoop主机上运行设置模块。

    ---
    
     - hosts: hadoop
       gather_facts: yes
    
     - hosts: other hosts
       tasks: your actual tasks here
    
    ...
    

    2) 启用fact caching。顾名思义,事实缓存为 Ansible 提供了一种方法来记忆有关它在当前剧本中未处理的主机的事实。为此,您需要在本地或网络上的某个可用位置设置一个 redis 实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      • 2021-01-18
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      相关资源
      最近更新 更多