Использование условий в Playbook для выполнения на основе IP-адреса

#include <chrono>

typedef std::chrono::system_clock Clock;

auto now = Clock::now();
auto seconds = std::chrono::time_point_cast<std::chrono::seconds>(now);
auto fraction = now - seconds;
time_t cnow = Clock::to_time_t(now);

Затем вы можете распечатать time_t с точностью до секунд, а затем распечатать любую фракцию. Может быть миллисекунды, микросекунды или что-то еще. Чтобы конкретно получить миллисекунды:

auto milliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(fraction);
std::cout << milliseconds.count() << '\n';
0
задан Drumbum51 17 January 2019 в 16:09
поделиться

1 ответ

Отказ от ответственности: я запускаю Ansible только на хостах Linux, поэтому я полагаю, что на хостах Windows все по-другому.

Вы не указываете ansible_facts, а вместо этого просто начинаете с определенного корневого факта.

В первом случае факт, к которому вы пытаетесь добраться, не поможет вам, потому что он возвращает список всех IP-адресов в системе. Даже если есть только один, он все равно возвращает список, с которым вы не можете просто сравнить строки.

Это должно сделать то, что вы хотите в первую очередь:

- name: Change the hostname to newname2
  win_hostname:
    name: newname2
  register: res
  when: "ansible_default_ipv4.address == '10.0.0.1'"

Вы собираетесь дублировать этот блок кода, по одному на хост? Если это так, рассмотрите возможность установки переменной для поиска IP и нового имени:

- hosts: all
  vars:
    ip_newname:
      10.0.0.1: newname1
      10.0.0.2: newname2
      10.0.0.3: newname3
  tasks:
    - name: Change the hostname
      win_hostname:
        name: "{{ ip_newname[ansible_default_ipv4.address] }}"
      register: res
      when: ansible_default_ipv4.address in ip_newname.keys()
    - name: Reboot
        win_reboot:
      when: res is defined and res.reboot_required
0
ответ дан clockworknet 17 January 2019 в 16:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: