просят гуру Ansible помочь разобраться. возможно это или нет с помощью Ansible
Jdk загружается и распаковывается в /apps/tools/jdk_1.8.121
двоичные файлы - /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) }}"