使用{0 .. {{ansible_processor_cores}}}启用systemOSl服务的CentOS7中的Ansible不起作用

时间:2017-09-03 05:59:32

标签: centos ansible graphite graphite-carbon

我试图在CentOS7中启用带有ansible的碳聚合器,使用ansible变量" ansible_processor_cores"来启用systemctl服务。它不起作用。 这是角色示例:

- name: enable carbon-aggregator
  service: 
    name: 'carbon-aggregator@{0..{{ansible_processor_cores -3}}}'
    enabled: yes
    state: started
    daemon_reload: yes

Carbon.conf.j2:

{% for aggr in range(ansible_processor_cores -2) %} 
[aggregator:{{aggr}}]
{% endfor %}

错误是:

  

失败! => {"已更改":false,"失败":true," msg":"无法启动   服务碳聚合器@ {0..1}:工作   碳聚合器@ \ x7b0..1 \ x7d.service失败,因为控件   进程退出并显示错误代码。请参阅\" systemctl状态   \"碳 - 聚合@ \\ x7b0..1 \\ x7d.service \" \"和\" journalctl   -xe \"有关详情。\ n"}

我在这里看到的是尝试启用一些我没有问过的服务:

  

碳 - 聚合@ \ x7b0..1 \ x7d.service

我不知道他们来自哪里。 如果我手动执行此操作,则完全可以:

sudo systemctl enable carbon-aggregator@{0..1}

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

要启动许多服务,您可以使用with_sequence循环。有关详细信息,请参阅Loops文档,但我认为with_sequence的文档可能不正确。

示例可能类似于:

- name: enable carbon-aggregator
  service: 
    name: 'carbon-aggregator@{{ item }}'
    enabled: yes
    state: started
    daemon_reload: yes
  with_sequence: start=0 end={{ansible_processor_cores-1}}

在具有四个核心的系统上,上述循环将调用service模块四次,name:设置为carbon-aggregator@0carbon-aggregator@1carbon-aggregator@2 ,和carbon-aggregator@3