1
0
Fork 0
mirror of https://github.com/iiab/iiab.git synced 2025-02-13 19:52:06 +00:00
iiab/roles/remoteit/tasks/install.yml

156 lines
6.1 KiB
YAML

- name: Record (initial) disk space used
shell: df -B1 --output=used / | tail -1
register: df1
# - name: Fail if architecture remoteit_device_suffix == "unknown"
# fail:
# msg: "Could not find a remote.it Device Package (.deb) for CPU architecture \"{{ ansible_architecture }}\""
# when: remoteit_device_suffix == "unknown"
# - name: mkdir {{ downloads_dir }} # As roles/2-common/tasks/fl.yml has not run yet
# file:
# path: "{{ downloads_dir }}" # /opt/iiab/downloads
# state: directory
# - name: Download {{ remoteit_device_url }} (Device Package) for arch {{ remoteit_device_suffix }} into {{ downloads_dir }}/
# get_url:
# url: "{{ remoteit_device_url }}"
# dest: "{{ downloads_dir }}/"
# force: yes
# timeout: "{{ download_timeout }}"
# 2022-04-03: Unfort still necessary, as their install_agent.sh below uses apt
# with 'install -y' instead of '-y reinstall' or '-y --reinstall install'
# FWIW: Some remoteit.*.deb installers also work with '-y --allow-downgrades install'
# (e.g. *.amd64.deb) but others (e.g. both *.rpi.deb) do not.
- name: Purge previously installed 'remoteit*' Device Package(s)
apt:
name: remoteit*
state: absent
purge: yes
ignore_errors: yes
# Speeds things up a bit, deferring online claim code generation if not nec:
# https://docs.remote.it/oem-and-bulk-provisioning/registration-into-a-users-account
# - name: "'mkdir /etc/remoteit' e.g. if your 'remoteit_license_key: 592AA9BB-XXXX-YYYY-ZZZZ-6E27654C3DF6' exists in /etc/iiab/local_vars.yml"
# file:
# state: directory
# path: /etc/remoteit
# when: remoteit_license_key is defined
# - name: "'touch /etc/remoteit/registration' e.g. if your 'remoteit_license_key: 592AA9BB-XXXX-YYYY-ZZZZ-6E27654C3DF6' exists in /etc/iiab/local_vars.yml"
# file:
# state: touch
# path: /etc/remoteit/registration
# when: remoteit_license_key is defined
- name: "'mkdir /etc/remoteit'"
file:
state: directory
path: /etc/remoteit
- name: "'touch /etc/remoteit/registration' (might contain a remoteit_license_key) to prevent generation of claim code below; also speeding things up a bit"
file:
state: touch
path: /etc/remoteit/registration
# - name: "Install Device Package: {{ downloads_dir }}/{{ remoteit_deb }}"
# apt:
# deb: "{{ downloads_dir }}/{{ remoteit_deb }}"
# - name: "Install Device Package: {{ remoteit_device_url }}"
# apt:
# deb: "{{ remoteit_device_url }}"
# 2022-04-29: https://downloads.remote.it/remoteit/install_agent.sh refuses to
# install on Mint as "ID_LIKE=ubuntu" in /etc/os-release is lowercase. So we
# add a tag with the word 'Ubuntu' containing an uppercase 'U' as a workaround.
# (This hack can later be removed, if remote.it adjusts install_agent.sh above)
- name: If Linux Mint, add "IIAB_LIKE=Ubuntu" to /etc/os-release to force install of remote.it
# shell: echo "IIAB_LIKE=Ubuntu" >> /etc/os-release
lineinfile:
path: /etc/os-release
line: IIAB_LIKE=Ubuntu
when: is_linuxmint
# - name: Install remote.it Device Package for your CPU/OS, using https://downloads.remote.it/remoteit/install_agent.sh -- this puts a claim code in /etc/remoteit/config.json which is valid for 24h
- name: Install remote.it Device Package for your CPU/OS, using https://downloads.remote.it/remoteit/install_agent.sh
shell: curl -L https://downloads.remote.it/remoteit/install_agent.sh | sh
# 2022-06-29: Ansible misinterprets "IIAB_LIKE=Ubuntu" (interpreting the entire
# OS as Ubuntu instead of Mint, on later Ansible runs) so let's remove line now.
- name: If Linux Mint, remove above "IIAB_LIKE=Ubuntu" from /etc/os-release (for Ansible's sloppy OS recognition logic)
lineinfile:
path: /etc/os-release
line: IIAB_LIKE=Ubuntu
state: absent
when: is_linuxmint
# 2022-10-09: Let's keep the file (empty or not!) If it exists with size zero
# bytes, enable-or-disable.yml or /usr/bin/iiab-remoteit delete it later as nec.
# - name: "'rm /etc/remoteit/registration' (empty file used just above)"
# file:
# state: absent
# path: /etc/remoteit/registration
# ignore_errors: yes # In case a future version of install_agent.sh deletes it for us
- name: Install /usr/bin/iiab-remoteit from template -- so IIAB operators can quickly enable remote.it AND generate a new remote.it claim code (in /etc/remoteit/config.json) -- optionally downloading + installing the very latest Device Package (like the 2 steps above)
template:
src: iiab-remoteit
dest: /usr/bin
mode: 0755
- name: Install /usr/bin/iiab-remoteit-off from template -- so IIAB operators can quickly turn off AND disable remote.it services on this IIAB
template:
src: iiab-remoteit-off
dest: /usr/bin
mode: 0755
- name: Fail if architecture remoteit_arch == "unknown"
fail:
msg: "Could not find a remote.it CLI binary for CPU architecture \"{{ ansible_architecture }}\""
when: remoteit_arch == "unknown"
# 2023-07-26: Remote.It CLI used to coexist fine with their "Device Package"
# e.g. it worked with remoteit apt package 4.17.12 in Q2 2023.
# But no longer--with remoteit apt package 4.18.4 (in Q3 2023) which fails to
# install with error: "Device Package cannot coexist with Remote.It CLI"
#
# - name: Download OPTIONAL {{ remoteit_cli_url }} (CLI) to /usr/bin/remoteit (755)
# get_url:
# url: "{{ remoteit_cli_url }}" # e.g. https://downloads.remote.it/cli/latest/remoteit.{{ remoteit_arch }}-linux
# dest: /usr/bin/remoteit
# mode: 0755
# force: yes
# timeout: "{{ download_timeout }}"
# RECORD remote.it AS INSTALLED
- name: Record (final) disk space used
shell: df -B1 --output=used / | tail -1
register: df2
- name: Add 'remoteit_disk_usage = {{ df2.stdout|int - df1.stdout|int }}' to {{ iiab_ini_file }}
ini_file:
path: "{{ iiab_ini_file }}" # /etc/iiab/iiab.ini
section: remoteit
option: remoteit_disk_usage
value: "{{ df2.stdout|int - df1.stdout|int }}"
- name: "Set 'remoteit_installed: True'"
set_fact:
remoteit_installed: True
- name: "Add 'remoteit_installed: True' to {{ iiab_state_file }}"
lineinfile:
path: "{{ iiab_state_file }}" # /etc/iiab/iiab_state.yml
regexp: '^remoteit_installed'
line: 'remoteit_installed: True'