【问题标题】:Loop over ansible_devices and select any physical disk that is not sda for inclusion into volume group遍历 ansible_devices 并选择任何不是 sda 的物理磁盘以包含在卷组中
【发布时间】:2017-09-04 21:03:29
【问题描述】:

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

【问题讨论】:

  • 这是我到目前为止在玩的时候想出的:{{ ansible_devices.keys()|difference(['sr0','sda','fd0'])|map( 'regex_replace','^','/dev/')|join(',') }}。我认为这将是解决方案,但我对其他想法持开放态度。

标签: ansible jinja2 ansible-facts


【解决方案1】:

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

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

使用map('‌​regex_replace','^','‌​/dev/') 将列表中的每个字符串前置即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-09
    • 2011-06-08
    • 2012-12-28
    • 2010-11-25
    • 1970-01-01
    • 2019-06-22
    相关资源
    最近更新 更多