What you are looking for is the set_fact module. This allows you to set a variable in the current context which will allow you to use it in the subsequent tasks in the play.
On Tuesday, August 27, 2019 at 3:42:28 PM UTC+2, scorp123 wrote: > > I want to roll out the latest Virtualbox onto my Ubuntu 18.04 servers via > ansible. What I've managed so far is an installer-script that gets copied > over to any host in the "virtualbox" hosts group (as per ansible hosts > configuration file), then gets remotely executed and does this job. While > this solution "gets the job done" it's more of a "quick and dirty hack" and > not really elegant. What's the proper way to do this via pure ansible > playbook code? E.g. I would like to write playbook code that determines the > latest version of Virtualbox and then installs it, just like the bash > script below does. Is there any way to do this? So my playbook so far looks > like this: ``` --- - hosts: virtualbox tasks: - name: Copy the repo file if > needed copy: src: > /home/admin/System_Configs/sources.list.d/18.04/virtualbox.list dest: > /etc/apt/sources.list.d/ mode: 0644 owner: root group: root - name: Make > sure repo keys are installed if needed apt_key: url: " > https://www.virtualbox.org/download/{{ item }}.asc" state: present > with_items: - oracle_vbox - oracle_vbox_2016 - name: Transfer the installer > script copy: src: /home/admin/System_Configs/bin/virtualbox-installer.sh > dest: /tmp/ mode: 0755 owner: root group: root - name: Execute the > installer script shell: /tmp/virtualbox-installer.sh changed_when: False > register: scriptoutput - debug: var={{ item }} with_items: - > scriptoutput.stdout_lines ``` ... and the script that is called looks like > this: ``` #! /bin/bash cd /tmp rm /tmp/*.vbox-extpack >/dev/null 2>&1 wget > -q -N https://download.virtualbox.org/virtualbox/LATEST-STABLE.TXT > VBOXVERSION=`cat /tmp/LATEST-STABLE.TXT` echo "Latest Virtualbox is: > "$VBOXVERSION MAJORVERSION=`cat /tmp/LATEST-STABLE.TXT | cut -d. -f1,2` > echo "Latest major release is: "$MAJORVERSION apt install > virtualbox-$MAJORVERSION INSTALLEDVBOXVERSION=`VBoxManage --version | sed > -r 's/([0-9])\.([0-9])\.([0-9]{1,2}).*/\1.\2.\3/'` echo "Installed > Virtualbox is: "$INSTALLEDVBOXVERSION echo wget -q -N " > http://download.virtualbox.org/virtualbox/$INSTALLEDVBOXVERSION/Oracle_VM_VirtualBox_Extension_Pack-$INSTALLEDVBOXVERSION.vbox-extpack" > > echo y | VBoxManage extpack install --replace > /tmp/Oracle_VM_VirtualBox_Extension_Pack-"$INSTALLEDVBOXVERSION".vbox-extpack > | grep Success rm /tmp/*.vbox-extpack >/dev/null 2>&1 rm > /tmp/LATEST-STABLE.TXT >/dev/null 2>&1 ``` While the script "gets the job > done" ... meh. I'd like a proper ansible playbook that could do this. All > the examples on Ansible Galaxy that I've looked at needed the Virtualbox > version number statically defined as variable inside their playbooks or > their role's variable definitions.... not really what I want. I'd like to > get ansible to look at the "LATEST-STABLE.TXT" file on Oracle's web site, > read that into a variable, and then act accordingly. So my ansible playbook > would need to: * read the contents of " > https://download.virtualbox.org/virtualbox/LATEST-STABLE.TXT" * assign > that resulting number to a variable ("6.0.10") * cut that number down so we > know the major release ("6.0") * install the "virtualbox-*" package that > results from that ("virtualbox-6.0") * download and install the Extension > Package too ("Oracle_VM_VirtualBox_Extension_Pack-6.0.10.vbox-extpack") > I've been tinkering around with "get_url", "slurp", "fetch", "lookup" and > what not but I always fail to get the content of "LATEST-STABLE.TXT" > assigned to a variable. What would be a proper Ansible way to do that? > Thanks in advance for any help <3 > -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/646cca38-4f30-4b4c-9722-85fc917130ea%40googlegroups.com.
