【问题标题】:Ansible: How do I get IP address from only FQDN in Ansible?Ansible:如何在 Ansible 中仅从 FQDN 获取 IP 地址?
【发布时间】:2017-11-10 19:06:53
【问题描述】:

所以,这是设置。

我通过额外变量将 FQDN 列表传递给剧本,但控制机器的密钥与其对应的 IP 地址一起复制。此外,它们在清单中也没有特定的组。

这个剧本的主机是一个服务器,它可能是也可能不是我通过额外变量传递的这个列表的一部分。因此,剧本根本没有这些节点的事实。

所以,我的问题是如何即时获取各个主机的 IP 地址,以便我可以遍历它们以检查我之前通过另一个剧本/角色使用它们的 FQDN 设置的某些属性。 (注意:我严格需要 FQDN 来设置这些属性)

我使用了 delegate_to 模块,并传递了 FQDN,它可以工作,但它会询问我是否要继续连接(是/否)并等待用户输入以进行初始运行(如果给定是,它会按预期工作)。他们还有其他更简单、更清洁的方法来解决这个问题吗?
(注意:请记住,我不能修改库存的内容,例如放置别名等)

这里是sn-p的代码:

- name: Checks
  become_user: hdfs
  shell: hdfs dfsadmin –report
  delegate_to: "{{ item.host_name }}"
  with_items:
    - "{{rackDetails}}"

这是调用上述角色的主 yml 文件的 sn-p :

- name: Checks for the property
  hosts: servernode
  roles:
    - Checks

库存代码 sn-p 如下所示:

[服务器节点]
10.0.2.15 ansible_ssh_user=授予 ansible_ssh_pass=授予
[全部]
10.0.2.15 ansible_ssh_user=授予 ansible_ssh_pass=授予
10.0.2.16 ansible_ssh_user=授予 ansible_ssh_pass=授予
10.0.2.17 ansible_ssh_user=授予 ansible_ssh_pass=授予
10.0.2.18 ansible_ssh_user=授予 ansible_ssh_pass=授予
10.0.2.19 ansible_ssh_user=grant ansible_ssh_pass=grant

最后,这就是我通过额外变量传递的内容:

{"rackDetails":[{"host_name":"prod_node1.paas.com","rack_name":"/rack1"},{"host_name":"prod_node2.paas.com","rack_name":"/rack2"},{"host_name":"prod_node3.paas.com","rack_name":"/rack3"}]}

【问题讨论】:

  • 在 Ansible 中有一个dig lookup plugin。不幸的是,我无法理解您的问题。
  • @techraf 请让我知道您不理解问题的哪一部分,以便我更好地说明。
  • 除了“我如何获得 IP 地址”之外的一切我都不清楚。

标签: ansible ansible-inventory ansible-facts


【解决方案1】:

我想知道如果主机作为额外变量传递但不存在于库存中,delegate_to 是否有效。

无论如何,您可以使用dig 查找插件: http://docs.ansible.com/ansible/playbooks_lookups.html#the-dns-lookup-dig

{{ lookup('dig', item.host_name) }}

【讨论】:

  • delegate_to 有效,它只是初始运行要求用户输入以继续连接(是/否),因为我猜,ansible 不知道 fqdn,而只知道他们的 IP 地址。从第二次运行开始,我得到了预期的输出。
【解决方案2】:

我认为您想要的是将这些转换为 FQDN 的 IP 地址并将它们放入 -l(限制)到剧本:

ansible-playbook my_playbook -l $( getent hosts $( cat fqdns.txt ) | cut -d' ' -f1 | tr '\n' ',' )

【讨论】:

    猜你喜欢
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多