On Wednesday, 13 December 2017 16.39.30 CET Justin Seiser wrote:
> GROOVY_ALT_SLAVES=""
> for f in $(ls /opt/groovy-${GROOVY_VERSION}/bin | fgrep -v .bat | grep
> -v '^groovy$'); do
> GROOVY_ALT_SLAVES=" ${GROOVY_ALT_SLAVES} --slave /usr/bin/${f}
> ${f} /opt/groovy-${GROOVY_VERSION}/bin/${f}"
> done
>
> update-alternatives --install /usr/bin/groovy groovy
> /opt/groovy-${GROOVY_VERSION}/bin/groovy 2000 ${GROOVY_ALT_SLAVES}
> update-alternatives --set groovy
> /opt/groovy-${GROOVY_VERSION}/bin/groovy
>
> I cant really wrap my head around the best way to dupe this, that isnt just
> running the shell module. Once I resigned myself to using the shell
> module, I then read that doing something like
>
>
> - shell: GROOVY_ALT_SLAVES=" ${GROOVY_ALT_SLAVES} --slave /usr/bin/{{ item }} {{ item }} /opt/groovy-{{ groovy_version }}/bin/{{ item }}"
> with_items: ['file1', 'file2']
>
>
>
>
> Wouldn't work, since each shell run is a separate connection, so Im not
> really building up a long string to then append to the update-alternatives
> command. There is also the fact I have to manually specify a list of
> items, since I cant use glob because i need to match files that do not
> match a certain set of expressions.
>
>
> Im sure Im missing something obvious, but I haven't made any progress on
> this one and any help would be great.
You could do something like this, not tested so it might have some syntax and logical errors.
- shell: ls /opt/groovy-${GROOVY_VERSION}/bin | fgrep -v .bat | grep -v '^groovy$'
register: r
- set_fact:
GROOVY_ALT_SLAVES: '{% for item in r.stdout_lines %} --slave /usr/bin/{{ item }} {{ item }} /opt/groovy-{{ groovy_version }}/bin/{{ item }} {%- endfor %}'
- command: update-alternatives --install /usr/bin/groovy groovy /opt/groovy-{{ groovy_version }}/bin/groovy 2000 {{ GROOVY_ALT_SLAVES }}
- command: update-alternatives --set groovy /opt/groovy-{{ groovy_version }/bin/groovy
--
Kai Stian Olstad