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.

Reply via email to