[ADD] playbook провижнинга: base, hostname, key, repo, build
This commit is contained in:
+125
@@ -0,0 +1,125 @@
|
|||||||
|
- name: Провижнинг приёмников пеленгации
|
||||||
|
hosts: all
|
||||||
|
tasks:
|
||||||
|
|
||||||
|
- name: apt update и full-upgrade
|
||||||
|
become: true
|
||||||
|
ansible.builtin.apt:
|
||||||
|
update_cache: true
|
||||||
|
cache_valid_time: 3600
|
||||||
|
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]
|
||||||
Reference in New Issue
Block a user