当前位置: 首页 > 知识库问答 >
问题:

从Ansible中的inventory_hostname获取第n台主机

经佐
2023-03-14

下面是我的库存主机文件的样子。

[all_hosts]
server1 USER=user1
server3 USER=user2
server5 USER=user1
…..
---

- name: "Play 1"

  hosts: "{{ domain_home }}"
  gather_facts: false
  vars:
    ansible_ssh_extra_args: -o StrictHostKeyChecking=no
  tasks:

    - debug:
        msg: "Although the inventory hostname is {{ inventory_hostname }} the first host will always be  <need help get first host> and the user will always be <need help get user for first host>

   

你能建议一下吗?

共有1个答案

松国兴
2023-03-14

组[“all_hosts”]事实是根据它们在.ini文件中的位置排序的,因此您只需询问[0]第1项(或使用first筛选器),然后hostvarsdict类似地根据它们的名称进行索引

- debug:
    msg: >-
     Although the inventory hostname is {{ inventory_hostname }}
     the first host will always be {{ host0 }}
     and the user will always be {{ hostvars[host0].USER }}
  vars:
    host0: '{{ groups[domain_home][0] }}'

以后,为了帮助自学钓鱼,-debug:var=vars-debug:var=hostvars将作为示例,查看在剧本中的任何时候都有哪些信息可供您使用

 类似资料:
  • 本文向大家介绍Elm从列表中获取第n个元素,包括了Elm从列表中获取第n个元素的使用技巧和注意事项,需要的朋友参考一下 示例 List不支持“随机访问”,这意味着要从列表中获取第五个元素要比第一个元素花费更多的工作,因此没有任何List.get nth list功能。必须从头开始(1 -> 2 -> 3 -> 4 -> 5)。 如果您需要随机访问,则使用随机访问数据结构(例如)可能会获得更好的结果

  • 学习如何使用ansible--我需要为集群部署准备服务器。 在所有节点上安装相同的程序集,依此类推。这部分没有问题,一切都解决了。我是通过Ansible-Playbook来做的。在每个节点上,需要在文件/etc/sysconfig/network中执行 也许一些建议,帮忙?

  • 问题内容: 我有一个文本文件: 我想要这样的每一行的第二个和第四个词: 我正在使用此代码: 它可以工作,但是非常复杂,并且需要很长时间来处理长文本文件。 有没有更简单的方法可以做到这一点? 问题答案: iirc: 或者,如评论中所述:

  • 问题内容: 是否有一种简单的方法可以从UILabel中的给定行中获取(或简单地显示)文本? 我的UILabel正确显示了我的文本并将其布置得很漂亮,但偶尔我需要能够仅显示某些行,但是显然我需要知道UILabel如何放置所有东西来做到这一点。 我知道可以使用子字符串轻松完成此操作,但是我需要知道该行的起点和终点。 或者,如果UILabel的框架存在某种偏移,则可以滚动UILabel,并隐藏我不想看到

  • 问题内容: 有没有一种语法更简洁的方式编写以下内容? 生成器应该具有一个表达式,该表达式充当列表,但在功能上与上述代码相同,这似乎是很自然的。 问题答案: 一种方法是使用

  • 返回数组的第n个元素。 使用 Array.slice() 获取数组的第 n 个元素。如果索引超出范围,则返回 [] 。省略第二个参数 n ,将得到数组的第一个元素。 const nthElement = (arr, n = 0) => (n > 0 ? arr.slice(n, n + 1) : arr.slice(n))[0]; nthElement(['a', 'b', 'c'], 1);