diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..249f72b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.zed/ diff --git a/ansible.cfg b/ansible.cfg deleted file mode 100644 index a2f29df..0000000 --- a/ansible.cfg +++ /dev/null @@ -1,5 +0,0 @@ -[defaults] -inventory = localhost, -roles_path = ./roles -retry_files_enabled = False -interpreter_python = auto_silent diff --git a/group_vars/all.yml b/group_vars/all.yml deleted file mode 100644 index 48d7611..0000000 --- a/group_vars/all.yml +++ /dev/null @@ -1,4 +0,0 @@ ---- - -# Version of the common config repo, rendered into example.conf. -group_version: "common-1.0.0" diff --git a/main.yml b/main.yml index 1d731a5..2bf4a79 100644 --- a/main.yml +++ b/main.yml @@ -1,11 +1,7 @@ --- -# Common playbook. Imported by the node-specific playbook in the local repo; -# can also be run on its own for testing. -- name: Common node configuration +# Common node configuration, run via ansible-pull. +- name: Common Node Configuration hosts: all become: true - vars_files: - - group_vars/all.yml roles: - - role: base_packages - - role: example_config + - role: common diff --git a/roles/base_packages/defaults/main.yml b/roles/base_packages/defaults/main.yml deleted file mode 100644 index e328786..0000000 --- a/roles/base_packages/defaults/main.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- - -apt_packages: - - xz-utils - - tree - - nano diff --git a/roles/base_packages/tasks/main.yml b/roles/base_packages/tasks/main.yml deleted file mode 100644 index 3412d0d..0000000 --- a/roles/base_packages/tasks/main.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- - -- name: Install baseline packages - ansible.builtin.apt: - name: "{{ apt_packages }}" - state: present - update_cache: true - cache_valid_time: 3600 diff --git a/roles/common/defaults/main.yml b/roles/common/defaults/main.yml new file mode 100644 index 0000000..d6d791c --- /dev/null +++ b/roles/common/defaults/main.yml @@ -0,0 +1,10 @@ +--- +### Signalytic Directories ### + +default_user: "root" +signalytic_root_ansible_dir: "/var/signalytic/ansible" +signalytic_common_dir: "{{ signalytic_root_ansible_dir }}/common" +signalytic_clientapps_dir: "/var/signalytic/clientapps" + +### Node config directories ### +node_config: "{{ signalytic_root_ansible_dir }}/config" diff --git a/roles/common/files/cellmodem-scripts-v15.tar.bz2 b/roles/common/files/cellmodem-scripts-v15.tar.bz2 new file mode 100644 index 0000000..f32fd31 Binary files /dev/null and b/roles/common/files/cellmodem-scripts-v15.tar.bz2 differ diff --git a/roles/common/files/power-management-v11.tar.bz2 b/roles/common/files/power-management-v11.tar.bz2 new file mode 100644 index 0000000..0e3afde Binary files /dev/null and b/roles/common/files/power-management-v11.tar.bz2 differ diff --git a/roles/common/files/signalytic-ap-manager-5.v5.tar.bz2 b/roles/common/files/signalytic-ap-manager-5.v5.tar.bz2 new file mode 100644 index 0000000..4ebd06a Binary files /dev/null and b/roles/common/files/signalytic-ap-manager-5.v5.tar.bz2 differ diff --git a/roles/common/files/signalytic-battery-manager_3.0_all.deb b/roles/common/files/signalytic-battery-manager_3.0_all.deb new file mode 100644 index 0000000..6d2ce45 Binary files /dev/null and b/roles/common/files/signalytic-battery-manager_3.0_all.deb differ diff --git a/roles/common/files/signalytic-network-manager-1.1.v1-1_all.deb b/roles/common/files/signalytic-network-manager-1.1.v1-1_all.deb new file mode 100644 index 0000000..55f2a8e Binary files /dev/null and b/roles/common/files/signalytic-network-manager-1.1.v1-1_all.deb differ diff --git a/roles/common/scripts/install-k3s.sh b/roles/common/scripts/install-k3s.sh new file mode 100755 index 0000000..d3c2542 --- /dev/null +++ b/roles/common/scripts/install-k3s.sh @@ -0,0 +1,3 @@ +#! /bin/bash + +curl -sfL https://get.k3s.io | sh - diff --git a/roles/common/tasks/create-dirs.yml b/roles/common/tasks/create-dirs.yml new file mode 100644 index 0000000..a165877 --- /dev/null +++ b/roles/common/tasks/create-dirs.yml @@ -0,0 +1,14 @@ +--- +- name: Check signalytic directories exist + ansible.builtin.file: + path: "{{ item }}" + state: directory + owner: "{{ default_user }}" + group: "{{ default_user }}" + mode: "0755" + become: true + loop: + - "{{ signalytic_root_ansible_dir }}" + - "{{ signalytic_common_dir }}" + - "{{ signalytic_clientapps_dir }}" + - "{{ node_config }}" diff --git a/roles/common/tasks/install-cellmodem-package.yml b/roles/common/tasks/install-cellmodem-package.yml new file mode 100644 index 0000000..70f54e3 --- /dev/null +++ b/roles/common/tasks/install-cellmodem-package.yml @@ -0,0 +1,30 @@ +--- +- name: Extract cellmodem package + ansible.builtin.unarchive: + src: files/cellmodem-scripts-v15.tar.bz2 + dest: /tmp + remote_src: false + become: true + +- name: Find the top-level extracted directory + ansible.builtin.find: + paths: /tmp + file_type: directory + recurse: false + patterns: "cellmodem-scripts-*" + register: extracted_dir + become: true + +- name: Fail if the archive layout is unexpected + ansible.builtin.assert: + that: + - extracted_dir.matched == 1 + fail_msg: >- + Expected exactly one cellmodem-scripts-* directory in /tmp, + found {{ extracted_dir.matched }}. Check the archive structure. + +- name: Run the install script from the top-level directory + ansible.builtin.command: + cmd: ./install.sh + chdir: "{{ extracted_dir.files[0].path }}" + become: true diff --git a/roles/common/tasks/install-power-management.yml b/roles/common/tasks/install-power-management.yml new file mode 100644 index 0000000..032126b --- /dev/null +++ b/roles/common/tasks/install-power-management.yml @@ -0,0 +1,30 @@ +--- +- name: Extract power-management package + ansible.builtin.unarchive: + src: files/power-management-v11.tar.bz2 + dest: /tmp + remote_src: false + become: true + +- name: Find the top-level extracted directory + ansible.builtin.find: + paths: /tmp + file_type: directory + recurse: false + patterns: "power-management-*" + register: extracted_dir + become: true + +- name: Fail if the archive layout is unexpected + ansible.builtin.assert: + that: + - extracted_dir.matched == 1 + fail_msg: >- + Expected exactly one power-management-* directory in /tmp, + found {{ extracted_dir.matched }}. Check the archive structure. + +- name: Run the install script from the top-level directory + ansible.builtin.command: + cmd: ./install.sh + chdir: "{{ extracted_dir.files[0].path }}" + become: true diff --git a/roles/common/tasks/install-signalytic-ap.yml b/roles/common/tasks/install-signalytic-ap.yml new file mode 100644 index 0000000..3470ddf --- /dev/null +++ b/roles/common/tasks/install-signalytic-ap.yml @@ -0,0 +1,30 @@ +--- +- name: Extract signalytic-ap package + ansible.builtin.unarchive: + src: files/signalytic-ap-manager-5.v5.tar.bz2 + dest: /tmp + remote_src: false + become: true + +- name: Find the top-level extracted directory + ansible.builtin.find: + paths: /tmp + file_type: directory + recurse: false + patterns: "signalytic-ap-manager-*" + register: extracted_dir + become: true + +- name: Fail if the archive layout is unexpected + ansible.builtin.assert: + that: + - extracted_dir.matched == 1 + fail_msg: >- + Expected exactly one signalytic-ap-manager-* directory in /tmp, + found {{ extracted_dir.matched }}. Check the archive structure. + +- name: Run the install script from the top-level directory + ansible.builtin.command: + cmd: ./install.sh + chdir: "{{ extracted_dir.files[0].path }}" + become: true diff --git a/roles/common/tasks/install-signalytic-deb.yml b/roles/common/tasks/install-signalytic-deb.yml new file mode 100644 index 0000000..d974b81 --- /dev/null +++ b/roles/common/tasks/install-signalytic-deb.yml @@ -0,0 +1,14 @@ +--- +## Network Manager +- name: Install signalytic-network manager + ansible.builtin.apt: + deb: "{{ role_path }}/files/signalytic-network-manager-1.1.v1-1_all.deb" + fail_on_autoremove: true + become: true + +## Battery Manager +- name: Install signalytic-battery manager + ansible.builtin.apt: + deb: "{{ role_path }}/files/signalytic-battery-manager_3.0_all.deb" + fail_on_autoremove: true + become: true diff --git a/roles/common/tasks/main.yml b/roles/common/tasks/main.yml new file mode 100644 index 0000000..0578b71 --- /dev/null +++ b/roles/common/tasks/main.yml @@ -0,0 +1,18 @@ +--- +- name: Create system directories + ansible.builtin.import_tasks: create-dirs.yml + +- name: Install system utilities + ansible.builtin.import_tasks: system-utils.yml + +- name: Install signalytic-debian packages + ansible.builtin.import_tasks: install-signalytic-deb.yml + +- name: Install cellmodem package + ansible.builtin.import_tasks: install-cellmodem-package.yml + +- name: Install power-management package + ansible.builtin.import_tasks: install-power-management.yml + +- name: Install signalytic-ap package + ansible.builtin.import_tasks: install-signalytic-ap.yml diff --git a/roles/common/tasks/system-utils.yml b/roles/common/tasks/system-utils.yml new file mode 100644 index 0000000..d10d608 --- /dev/null +++ b/roles/common/tasks/system-utils.yml @@ -0,0 +1,25 @@ +--- +- name: Install system utils + ansible.builtin.apt: + name: + - xz-utils + - git + - modemmanager + state: present + update_cache: true + become: true + register: apt_result + until: apt_result is succeeded + retries: 7 + delay: 5 + +- name: Check if k3s is installed + ansible.builtin.stat: + path: /usr/local/bin/k3s + register: k3s_binary + +- name: Install k3s + ansible.builtin.script: + cmd: scripts/install-k3s.sh + become: true + when: not k3s_binary.stat.exists diff --git a/roles/example_config/defaults/main.yml b/roles/example_config/defaults/main.yml deleted file mode 100644 index 22cb8f9..0000000 --- a/roles/example_config/defaults/main.yml +++ /dev/null @@ -1,7 +0,0 @@ ---- - -signalytic_config_dir: /etc/signalytic - -# Overridden by group_vars/all.yml (common repo) and host_vars.yml (local repo). -group_version: "unset" -host_version: "unset" diff --git a/roles/example_config/tasks/main.yml b/roles/example_config/tasks/main.yml deleted file mode 100644 index 8ef8522..0000000 --- a/roles/example_config/tasks/main.yml +++ /dev/null @@ -1,17 +0,0 @@ ---- - -- name: Create signalytic config directory - ansible.builtin.file: - path: "{{ signalytic_config_dir }}" - state: directory - owner: root - group: root - mode: "0755" - -- name: Render example.conf - ansible.builtin.template: - src: example.conf.j2 - dest: "{{ signalytic_config_dir }}/example.conf" - owner: root - group: root - mode: "0644" diff --git a/roles/example_config/templates/example.conf.j2 b/roles/example_config/templates/example.conf.j2 deleted file mode 100644 index 302e95b..0000000 --- a/roles/example_config/templates/example.conf.j2 +++ /dev/null @@ -1,2 +0,0 @@ -group_version = {{ group_version }} -host_version = {{ host_version }}