为nagiosXI之外的服务创建Ansible角色

为nagiosXI之外的服务创建Ansible角色,ansible,yaml,ansible-role,nagiosxi,Ansible,Yaml,Ansible Role,Nagiosxi,我正在尝试使用下面的CURL命令向NagiosXI添加服务 curl -k -XPOST "https://16.231.22.60/nagiosxi/api/v1/config/service?apikey=qfOQpKFORCNo7HPunDUsSjW7f2rNNmrdVv3kvYpmQcNdSS2grV2jeXKsgbv3QgfL&pretty=1" -d "host_name=***{{ item }}***&***service_description=Service

我正在尝试使用下面的CURL命令向NagiosXI添加服务

curl -k -XPOST "https://16.231.22.60/nagiosxi/api/v1/config/service?apikey=qfOQpKFORCNo7HPunDUsSjW7f2rNNmrdVv3kvYpmQcNdSS2grV2jeXKsgbv3QgfL&pretty=1" -d "host_name=***{{ item }}***&***service_description=Service status for: sshd***&use=xiwizard_ncpa_service&check_command=check_xi_ncpa\! -t 5nidNag -P 5693 -M services -q service=sshd,status=running&check_interval=5&retry_interval=1"
在上面的命令中,仅主机名和服务描述发生更改。我正在使用项模块调用主机名。以及手动添加服务描述。如果我需要添加50个服务,我需要写50次这个命令


我正计划由ansible roles撰写。有人能帮我解决这个问题吗。

你可以这样做:

---
- name: Nagios Config
  gather_facts: False
  hosts: localhost

  vars: 

    servers: 
      - 10.100.10.5
      - 10.100.10.6
      - 10.100.10.7

    services: 
      - ssh
      - https
      - smtp

  tasks:

    - name: Add Nagios services
      debug:
        msg: "curl -host {{item.0}} with service {{ item.1 }}"
      with_nested:
        - "{{ servers }}"
        - "{{ services }}"
获取以下输出:

TASK [Add Nagios services] ********************************************************************************************************
ok: [localhost] => (item=None) => {
    "msg": "curl -host 10.100.10.5 with service ssh"
}
ok: [localhost] => (item=None) => {
    "msg": "curl -host 10.100.10.5 with service https"
}
ok: [localhost] => (item=None) => {
    "msg": "curl -host 10.100.10.5 with service smtp"
}
ok: [localhost] => (item=None) => {
    "msg": "curl -host 10.100.10.6 with service ssh"
}
ok: [localhost] => (item=None) => {
    "msg": "curl -host 10.100.10.6 with service https"
}
ok: [localhost] => (item=None) => {
    "msg": "curl -host 10.100.10.6 with service smtp"
}
ok: [localhost] => (item=None) => {
    "msg": "curl -host 10.100.10.7 with service ssh"
}
ok: [localhost] => (item=None) => {
    "msg": "curl -host 10.100.10.7 with service https"
}
ok: [localhost] => (item=None) => {
    "msg": "curl -host 10.100.10.7 with service smtp"
}

尝试
uri
模块如果它不符合您的要求,请选择
shell
模块。我已经反映了
调试
一个,只是为了回答这个问题。

Hey@dude你有很多地方可以理解如何创建一个角色。你的想法是什么?您是否打算将数据库中的服务包含在变量中?Hi@imjoseangel我正在将这些主机和服务添加到NagiosXI。命令中的变量项填充清单中的主机名,同样的内容将反映在nagios服务器中。如果您知道服务是什么,请将它们保存在var文件中,并使用include_vars导入。然后,使用循环对其进行迭代。如果您看到我的curl命令中有服务描述,我想对3个服务执行此操作,其中一个项将调用主机,我如何在那里迭代服务??使用嵌套。对于每个项目。0,您将应用服务项目。1感谢您的帮助,这里我尝试使用Ansible Tower而不是CLI。其中我创建了3个组,grp1代表主机名,grp2代表IP地址,Grp3代表服务。但是在创建group3后的tower中,我如何才能将这些服务添加到库存中。?与item.2相同。是的,但使用外部var文件也很有用。如果这个角色很常见,我总是喜欢它。嗨,我在这里尝试在一个组中添加25台服务器,在一个组中添加一台主机。但是它并没有添加所有的服务,只添加了一个服务