循环遍历ansible_devices并选择任何非sda的物理磁盘以包含在卷组中

时间:2017-09-04 21:03:30

标签: ansible jinja2 ansible-facts

我需要构建两个逻辑卷。 sda1将始终形成/ root并为日志等分区,但/ application可能包含一到四个额外磁盘。我知道他们将始终以sdb开头并继续使用sde或sdf。我可以想到几个不同的快速和脏的解决方案,比如运行一个bash命令来构建一个列表以注册为变量,但我想要做的是从Ansible设置事实的ansible_devices部分下拉并匹配sd [bz]的正则表达式。我知道我不太可能拥有sdz,但我希望尽可能保持灵活性。有人有一个很好的技术吗? jinja2过滤器是错误的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用select过滤器match测试:

{{ ansible_devices.keys() | select('match','sd[b-c]') | list }}

使用map('‌​regex_replace','^','‌​/dev/')添加列表中的每个字符串都可以。