0

我正在尝试在 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

碳.conf.j2:

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

错误是:

失败的!=> {"changed": false, "failed": true, "msg": "无法启动服务 carbon-aggregator@{0..1}: carbon-aggregator@\x7b0..1\x7d.service 的作业失败,因为控制进程以错误代码退出。有关详细信息,请参阅 \"systemctl status \"carbon-aggregator@\\x7b0..1\\x7d.service\"\" 和 \"journalctl -xe\"。\n" }

正如我在这里看到的,正在尝试启用一些我没有要求的服务:

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

我不知道他们是从哪里来的。如果我手动执行此操作,它会像这样完美地工作:

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

有什么建议么?

4

1 回答 1

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@2carbon-aggregator@3

于 2017-09-04T02:23:29.330 回答