hm. try to use win_reg_stat with register variable to determine what version your need is installed/not installed https://docs.microsoft.com/en-us/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed#use-registry-editor and wrap all other installation tasks with block and when condition
пятница, 4 февраля 2022 г. в 01:09:06 UTC+3, Nitrous: > > Thanks. > > I have a pretask before installing, where it copies files to the target > server, and then run your idempotent way. > > How can I do a check, before copying the .net 4.8 exe, if 4.8 exists, and > only run the copy/install if .net 4.8 isnt installed/exists. > > If it exists, then skip. > > Thanks > On Friday, January 21, 2022 at 2:51:09 PM UTC-6 [email protected] > wrote: > >> Use idempotent way. It will be installed if it has not already been >> installed >> >> - ansible.windows.win_package: >> path: 'c:\path\to\ndp48-x86-x64-allos-enu.exe' >> product_id: "{BAAF5851-0759-422D-A1E9-90061B597188}" >> arguments: "/q /norestart" >> >> среда, 19 января 2022 г. в 21:33:41 UTC+3, Nitrous: >> >>> This is what I get: >>> >>> TASK [net481 : Check if .net 4.8 is installed] >>> ************************************************************************************************************************************************************************** >>> task path: /etc/ansible/roles/net481/tasks/main.yml:1 >>> [WARNING]: conditional statements should not include jinja2 templating >>> delimiters such as {{ }} or {% %}. Found: '4.8' in {{ script_run }} >>> fatal: [xxxxx]: FAILED! => { >>> "msg": "The conditional check ''4.8' in {{ script_run }}' failed. >>> The error was: error while evaluating conditional ('4.8' in {{ script_run >>> }}): 'script_run' is undefined\n\nThe error appears to be in >>> '/etc/ansible/roles/net481/tasks/main.yml': line 1, column 3, but may\nbe >>> elsewhere in the file depending on the exact syntax problem.\n\nThe >>> offending line appears to be:\n\n\n- name: Check if .net 4.8 is installed\n >>> ^ here\n" >>> } >>> >>> Role is this: >>> >>> - import_role: >>> name: net481 >>> when: "'4.8' in {{ script_run }}" >>> >>> Task Ran: >>> >>> - name: Check if .net 4.8 is installed >>> ansible.windows.win_shell: >>> (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\NET Framework >>> Setup\NDP\v4\Full").version -lt 4.8 >>> register: script_run - name: Install .net 4.8, if not installed >>> ansible.builtin.script: >>> /etc/ansible/roles/onprembaseline/files/net48.ps1 >>> register: script_run >>> >>> On Thursday, December 30, 2021 at 12:25:32 PM UTC-6 Niek wrote: >>> >>>> Probably check: >>>> https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html >>>> >>>> Op donderdag 30 december 2021 om 19:24:36 UTC+1 schreef Niek: >>>> >>>>> Not a ansible hero here, but i think you can do something with the >>>>> when: command in your playbook. >>>>> >>>>> So somewhere in de the task where you check the version you will do a >>>>> register: dotnet_version >>>>> >>>>> And in the taks where you execute it: >>>>> when: "'4.8' in {{ dotnet_version }}" >>>>> >>>>> Op woensdag 29 december 2021 om 17:57:20 UTC+1 schreef Nitrous: >>>>> >>>>>> anyone with ideas? >>>>>> >>>>>> On Tuesday, December 21, 2021 at 3:25:23 PM UTC-6 Nitrous wrote: >>>>>> >>>>>>> any suggestions? >>>>>>> >>>>>>> On Monday, December 20, 2021 at 9:09:51 AM UTC-6 Nitrous wrote: >>>>>>> >>>>>>>> How can I incorporate this registry check before my playbook runs >>>>>>>> to install .net 4.8: >>>>>>>> >>>>>>>> (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\NET Framework >>>>>>>> Setup\NDP\v4\Full").version -lt 4.8 >>>>>>>> >>>>>>>> The above should only run my playbook, if 4.8 isnt installed. If >>>>>>>> version is less than 4.8 run the below playbook, else skip >>>>>>>> >>>>>>>> My playbook to install .net 4.8: >>>>>>>> - name: Copy .net 4.8 Files >>>>>>>> ansible.windows.win_copy: >>>>>>>> src: /etc/ansible/roles/net481/files/ndp48-x86-x64-allos-enu.exe >>>>>>>> dest: C:\Scripts\ >>>>>>>> state: present >>>>>>>> >>>>>>>> - name: Install .net 4.8 >>>>>>>> >>>>>>>> ansible.builtin.script: >>>>>>>> /etc/ansible/roles/onprembaseline/files/net48.ps1 >>>>>>>> register: script_run >>>>>>>> >>>>>>>> - name: Reboot after .NET 4.8 Install >>>>>>>> ansible.windows.win_reboot: >>>>>>>> >>>>>>>> Thanks. >>>>>>>> >>>>>>> -- 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/f4ab9ffa-f330-4e64-9426-c26a7916e61cn%40googlegroups.com.
