Ваш цикл set_fact перезаписывает значение 'nodelist' на каждом проходе, что означает, что вы в конечном итоге получите только последний элемент в цикле. Попробуйте это:
- set_fact:
nodelist: "{{ ( nodelist | default([]) ) + [ hostvars[item].ansible_eth0.ipv4.address ] }}"
loop: "{{ groups['all'] }}"
- debug:
var: nodelist | join(',')
(nodelist | default([]))
выводит текущее значение 'nodelist' или пустой список, если оно не установлено (первый проход) + []
объединяет существующий список с новым списком, содержащим один элемент - IP-адрес хоста Таким образом, «список узлов» в конечном итоге содержит список IP-адресов. Затем вы можете использовать | join(',')
, чтобы превратить это в CSV.
SQL> alter session set nls_date_format = 'yyyy-mm-dd :hh24:mi:ss';
Session changed.
SQL> select sysdate from dual;
SYSDATE
--------------------
2008-12-19 :12:18:28
SQL> select (round(sysdate) + 1/24) + 1 from dual;
(ROUND(SYSDATE)+1/24
--------------------
2008-12-21 :01:00:00
Я не на 100% уверен, что это законно в осуществленном операторе планирования представления, но Вы хотели бы пробовать (возможно) более интуитивную спецификацию ИНТЕРВАЛА:
round(sysdate) + interval '1 1' day to hour
Другие примеры здесь: http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/sql_elements003.htm#SQLRF00221
Отвечать на Ваш первый вопрос (это будет работать раз в час?):
Нет, это будет работать однажды при создании его из-за этого пункта:
START WITH sysdate+0
Лично, я думаю эти "+0", является посторонним, как теперь теперь.
Затем это будет работать завтра в 1:00 из-за следующего пункта:
NEXT (round(sysdate) + 1/24) + 1
"1/24" часть вычисляет, когда 1:00, так как даты Oracle на самом деле хранятся как числа, с десятичными часами указания части, минутами, и т.д. Синтаксис очень хорошо.