Назад | Перейти на главную страницу

Как выполнить цикл альтернатив (список папок) с альтернативами по анзиблю

просят гуру Ansible помочь разобраться. возможно это или нет с помощью Ansible

  1. Jdk загружается и распаковывается в /apps/tools/jdk_1.8.121

  2. двоичные файлы - /apps/tools/jdk_1.8.121/bin

необходимо

каждый двоичный файл в /apps/tools/jdk_1.8.121/bin/ java, java, javadoc,

... .... и так далее примерно 40 элементов, нажмите для перехода к альтернативной программе

alternatives --install /usr/bin/java java /apps/tools/jdk_1.8.121/bin/java 1000

alternatives --install /usr/bin/{{ var }} {{var}} /apps/tools/jdk_1.8.121/bin/{{var}} 1000

Это довольно просто, вам просто нужно зарегистрировать результат find модуль и перебрать его с помощью with_items:

- hosts: hosts
  tasks:
  - name: Find binaries
    find:
      paths: /apps/tools/jdk_1.8.121/bin
    register: bins
  - name: Install alternatives
    command: "update-alternatives --install /usr/bin/{{ item.path|basename }} {{ item.path|basename }} {{ item.path }} 1000"
    with_items: "{{ bins.files }}"

Или, используя alternatives модуль:

  - name: Install alternatives
    alternatives:
      name: "{{ item.path|basename }}"
      link: "/usr/bin/{{ item.path|basename }}"
      path: "{{ item.path }}"
      priority: 1000
    with_items: "{{ bins.files }}"

В Ansible 2.5 или новее это рекомендуется использовать loop вместо того with_items:

  - name: Install alternatives
    alternatives:
      name: "{{ item.path|basename }}"
      link: "/usr/bin/{{ item.path|basename }}"
      path: "{{ item.path }}"
      priority: 1000
    loop: "{{ bins.files|flatten(levels=1) }}"