从Ansible中的主机名获取数字

时间:2018-05-15 11:08:39

标签: ansible

在Puppet中,我可以使用此示例提取主机名的编号:



$host_number = regsubst($hostname, '^\w+(\d\d)', '\1')




Ansible中有类似内容吗?

例如为:
fqdn:test01.whatever
主机名:test01
输出 - > newvariable:01

我想只提取主机名中的数字,因此我可以在我的Playbook中将其用作变量。

3 个答案:

答案 0 :(得分:0)

Theres做同样事情的多种方式......

您可以使用ansible_facts,ansible_hostname,shell命令等...

text = "I love money" #My test sentence
text2 = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, " \
        "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua"
tokenizer = Tokenizer()
tokenizer.fit_on_texts([text, text2])
...

正如raVan96所说,你需要更好地解释你需要什么以及你期望什么......

答案 1 :(得分:0)

这将获取清单主机名,并用任何字符替换任何字符文本,而保留数字文本。显然,您可以利用自己的想象力来应用所需的任何正则表达式。

Ansible剧本:

vars:
  host_names:
    - {{ inventory_hostname | regex_replace('[^0-9]','' }}

Jinja2模板:

{% for host in groups['some_group_in_inventory'] %}
Some description of the host where I needed the Number {{ host | regex_replace('[^0-9]','') }}
{% endfor %}

答案 2 :(得分:0)

如果只需要从主机名中提取“ test01”,则可以在过滤器“ regex_replace”中使用ansible构建。这是我的示例:

{{ ansible_hostname | regex_replace('^([a-zA-Z_]+)(\d+)$','\\2') | int }}

然后您得到:1 如果需要“ 01”,则删除要传递给整数的部分-“ int”