Ansible: ошибка при вызове групп через рестапи - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь выбрать отдельные группы в инвентаре через переменную. Это команда, которую я пытаюсь запустить в книге воспроизведения, чтобы добавить хосты в Nagios XI. Я пытаюсь сделать это с помощью Rest API через команду CURL. Получаю ошибку как неправильный шаблон. Может кто-нибудь, пожалуйста, сообщите о проблеме. или помогите мне с тем, как мы можем вызвать две группы из инвентаря в одной команде.

- name: add host to nagios XI.
      shell: curl -XPOST "http://16.231.22.60/nagiosxi/api/v1/config/host?apikey=qfOQpKFORCNo7HPunDUsSjW7f2rNNmrdVv3kvYpmQcNdSS2grV2jeXKsgbv3QgfL&pretty=1" -d "host_name={{ item.hostname }}&address={{ item.address }}&use=xiwizard_ncpa_host&max_check_attempts=5&check_period=xi_timeperiod_24x7&notification_interval=60&notification_period=xi_timeperiod_24x7&notifications_enabled=0&contacts=nagiosadmin&contact_groups=Candle Admins,Candle-L1-L2-Internal&applyconfig=1"
      with_items:
        - { hostname: "{{ groups['grp1'] }}", address: "{{ groups['grp2'] }}"}

РЕДАКТИРОВАТЬ : форматирование кода

1 Ответ

0 голосов
/ 25 апреля 2018

Понимая, что ваше имя хоста и адрес из каждой группы соответствуют друг другу, вы можете сделать следующее:

Инвентарь:

[grp1]
host1
host2
host3

[grp2]
10.100.10.1
10.100.10.2
10.100.10.3

Играть:

---
- name: Debug Together
  hosts: localhost
  gather_facts: False

  tasks:
    - name: Add host to nagios XI
      shell: shell: curl -XPOST "http://16.231.22.60/nagiosxi/api/v1/config/host?apikey=qfOQpKFORCNo7HPunDUsSjW7f2rNNmrdVv3kvYpmQcNdSS2grV2jeXKsgbv3QgfL&pretty=1" -d "host_name={{ item.0 }}&address={{ item.1 }}&use=xiwizard_ncpa_host&max_check_attempts=5&check_period=xi_timeperiod_24x7&notification_interval=60&notification_period=xi_timeperiod_24x7&notifications_enabled=0&contacts=nagiosadmin&contact_groups=Candle Admins,Candle-L1-L2-Internal&applyconfig=1"
      with_together:
        - "{{ groups['grp1'] }}"
        - "{{ groups['grp2'] }}"

Выполучит что-то вроде:

TASK [debug] ******************************************************************************************************************
ok: [localhost] => (item=None) => {
    "item.0,  item.1": "(u'host1', u'10.100.10.1')"
}
ok: [localhost] => (item=None) => {
    "item.0,  item.1": "(u'host2', u'10.100.10.2')"
}
ok: [localhost] => (item=None) => {
    "item.0,  item.1": "(u'host3', u'10.100.10.3')"
}

Исходя из моего теста:

- name:
  debug:
    var: item.0,  item.1
  with_together:
    - "{{ groups['grp1'] }}"
    - "{{ groups['grp2'] }}"
...