Как мне получить эту причудливую «панель пути с иконками git», как показано на этом рисунке zsh

Насколько мне известно, такого интегрированного механизма не существует. Задача начнется с первого хоста в инвентаре в зависимости от того, что совпадает в вашей игре (, то есть параметр hosts, ), и, в конечном итоге, ограничения, которые вы использовали в своей командной строке (, то есть параметр -l. в ansible playbook )и остановится после этого, если был использован run_once.

Между тем, я думаю, что есть способ достичь цели.

Фоновая информация

  • Ansible поддерживает некоторые магические переменные , среди которых :
    • ansible_play_hosts-список активных хостов в текущем воспроизведении, ограниченный серийным номером, он же «пакет»
    • hostvars-хэш-карта со всеми хостами в инвентаре и назначенными им переменными
  • Доступная память на каждом хосте доступна в ansible_memfree_mb. Эта переменная существует только в том случае, если вы собираете факты о своих хостах (, т.е. вы не отключили это с помощью gather_facts: noв своей игре )
  • .
  • В решении используются два фильтра, которые вы, возможно, захотите изучить подробнее.
    • mapпозволяет нам извлекать только соответствующую информацию о хосте изhostvars
    • json_query(реализацияjmespath)позволяет нам фильтровать список переменных, ища максимальную память и получая только имя хоста соответствующего узла в конце

Предлагаемое решение

В приведенном ниже плейбуке показано, как комбинировать вышеперечисленные элементы для достижения цели. В задаче используется комбинация run_once, delegate_toи delegate_facts, поэтому она выполняется на определенном хосте, как если бы он был выбран в первую очередь.

---
- name: Delegate single running task to dynamically chosen host
  hosts: all
  gather_facts: true

  vars:
    max_mem_query: max_by(@, &ansible_memfree_mb).inventory_hostname
    selected_host: >-
      {{
        ansible_play_hosts |
        map('extract', hostvars) |
        list |
        json_query(max_mem_query)
      }}

  tasks:
    - name: Run a command on host with most memory
      debug:
        msg: "I would run on host {{ inventory_hostname }}"
      run_once: true
      delegate_to: "{{ selected_host }}"
      delegate_facts: true

Примечание.:Я проверял это только на инвентаре с двумя локальными экземплярами докеров, чтобы проверить мой плейбук, поэтому вывод на самом деле не актуален (все экземпляры имеют одинаковую доступную память, выбирается первый экземпляр, который делегирует самому себе ). Но я совершенно уверен, что это сработает, и я готов отредактировать это, чтобы учесть некоторые возможные особенности, если нет.

0
18.05.2021, 14:21
1 ответ

Это тема Zsh под названием agnoster , которая работает в сочетании с Powerline -исправленными шрифтами для отображения этих символов.

Он доступен в Oh My Zsh .

3
28.07.2021, 11:31

Теги

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