Files
fleet/playbook.yml
T

132 lines
3.7 KiB
YAML

- name: Провижнинг приёмников пеленгации
hosts: all
tasks:
- name: Обновить кэш apt (не считается изменением)
become: true
ansible.builtin.apt:
update_cache: true
cache_valid_time: 3600
changed_when: false
tags: [base]
- name: apt full-upgrade
become: true
ansible.builtin.apt:
upgrade: full
tags: [base]
- name: Зависимости сборки и утилиты HackRF
become: true
ansible.builtin.apt:
name: [cmake, g++, pkg-config, git, rsync, libhackrf-dev, libusb-1.0-0-dev, libfftw3-dev, hackrf]
state: present
tags: [base]
- name: pi в группе plugdev (udev HackRF)
become: true
ansible.builtin.user:
name: pi
groups: plugdev
append: true
tags: [base]
- name: Имя узла
become: true
ansible.builtin.hostname:
name: "{{ inventory_hostname }}"
tags: [hostname]
- name: Имя узла в /etc/hosts
become: true
ansible.builtin.lineinfile:
path: /etc/hosts
regexp: '^127\.0\.1\.1'
line: "127.0.1.1\t{{ inventory_hostname }}"
tags: [hostname]
- name: Deploy-ключ есть в keys/
delegate_to: localhost
run_once: true
ansible.builtin.stat:
path: "{{ playbook_dir }}/keys/gitea_deploy"
register: deploy_key
tags: [key]
- name: Ключа нет
run_once: true
ansible.builtin.fail:
msg: "[!] нет keys/gitea_deploy -- запустите scripts/gen-key.sh"
when: not deploy_key.stat.exists
tags: [key]
- name: ~/.ssh
ansible.builtin.file:
path: ~/.ssh
state: directory
mode: "0700"
tags: [key]
- name: Приватный deploy-ключ
ansible.builtin.copy:
src: "{{ playbook_dir }}/keys/gitea_deploy"
dest: ~/.ssh/gitea_deploy
mode: "0600"
tags: [key]
- name: ssh config для Gitea
ansible.builtin.blockinfile:
path: ~/.ssh/config
create: true
mode: "0600"
marker: "# {mark} fleet gitea"
block: |
Host {{ gitea_host }}
Port {{ gitea_port }}
User git
IdentityFile ~/.ssh/gitea_deploy
IdentitiesOnly yes
tags: [key]
- name: Gitea в known_hosts
ansible.builtin.known_hosts:
name: "[{{ gitea_host }}]:{{ gitea_port }}"
key: "{{ lookup('pipe', 'ssh-keyscan -p ' ~ gitea_port ~ ' -t ed25519 ' ~ gitea_host ~ ' 2>/dev/null') }}"
path: ~/.ssh/known_hosts
tags: [key]
- name: Локальные правки в репо (rsync-разработка)?
ansible.builtin.command: git status --porcelain
args:
chdir: ~/hackrf-scanner
register: dirty
failed_when: false
changed_when: false
tags: [repo]
- name: Stash локальных правок перед обновлением
ansible.builtin.command: git stash push -m fleet-provision
args:
chdir: ~/hackrf-scanner
when: dirty.rc == 0 and dirty.stdout != ""
tags: [repo]
- name: Репозиторий hackrf-scanner
ansible.builtin.git:
repo: "{{ scanner_repo }}"
dest: ~/hackrf-scanner
version: "{{ scanner_branch }}"
update: true
register: repo
tags: [repo]
- name: Сборка
ansible.builtin.shell: |
cmake -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo >/dev/null
cmake --build build -j4
args:
chdir: ~/hackrf-scanner
register: build
changed_when: "'Building CXX' in build.stdout or 'Linking' in build.stdout"
tags: [build]