--- # NOTE: The 1Password chocolatey packages are not up to date. # GUI - set_fact: app_exe: '{{ansible_env.LOCALAPPDATA}}/1Password/app/8/1Password.exe' installer_exe: '{{ansible_env.TEMP}}/1PasswordSetup-latest.exe' - name: check if already installed win_stat: path: '{{app_exe}}' register: app_stat - name: get installed version when: app_stat.stat.exists == True win_command: '{{app_exe}} --version' register: app_version changed_when: false - when: app_stat.stat.exists == True set_fact: installed_version: '{{app_version.stdout.strip()}}' - name: download latest installer win_get_url: url: https://downloads.1password.com/win/1PasswordSetup-latest.exe dest: '{{installer_exe}}' - name: get installer version win_shell: | (Get-ItemProperty {{installer_exe}}).VersionInfo.ProductVersion register: installer_product_version changed_when: false # FIXME: The [5:] is to account for a mystery "\e[6 q" prefix, not sure if this # is consistent across machines or some other oddity. - set_fact: installer_version: '{{installer_product_version.stdout.strip()[5:]}}' - name: run installer when: installed_version is not defined or installed_version != installer_version win_command: '{{installer_exe}}' - name: create start menu shortcut win_shortcut: src: '{{app_exe}}' dest: '{{ansible_env.ProgramData}}/Microsoft/Windows/Start Menu/Programs/1Password.lnk' icon: '{{app_exe}},0' # CLI - set_fact: cli_dir: '{{ansible_env.LOCALAPPDATA}}\1Password\cli' cli_zip: '{{ansible_env.TEMP}}/op_windows_amd64.zip' - set_fact: cli_exe: '{{cli_dir}}\op.exe' - name: check if op already installed win_stat: path: '{{cli_exe}}' register: cli_stat - name: get installed op version when: cli_stat.stat.exists == True win_command: '{{cli_exe}} --version' register: cli_version changed_when: false - when: cli_stat.stat.exists == True set_fact: cli_installed_version: '{{cli_version.stdout.strip()}}' - name: get list of op releases win_uri: url: https://raw.githubusercontent.com/kbenzie/op-release-scraper/main/op-releases.json return_content: true register: releases - set_fact: latest: '{{releases.json[0]}}' - name: download latest op zip archive when: cli_installed_version is not defined or cli_installed_version != latest.version win_get_url: url: '{{latest.downloads.Windows.amd64}}' dest: '{{cli_zip}}' - name: unzip op zip archive when: cli_installed_version is not defined or cli_installed_version != latest.version win_unzip: src: '{{cli_zip}}' dest: '{{cli_dir}}' - name: add op install directory to user PATH win_path: scope: user name: Path elements: '{{cli_dir}}' - name: get op powershell completion script win_command: argv: - '{{ansible_env.LOCALAPPDATA}}/1Password/cli/op.exe' - completion - powershell register: powershell_completion_script changed_when: false - name: create op powershell completion file win_copy: content: '{{powershell_completion_script.stdout}}' dest: '{{cli_dir}}/opProfile.psm1'