feat(ansible): add solana-rpc service as solana user
This commit is contained in:
@@ -16,6 +16,32 @@
|
||||
update_cache: true
|
||||
when: ansible_facts.os_family == "Debian"
|
||||
|
||||
- name: Install Solana host base packages (Debian/Ubuntu)
|
||||
ansible.builtin.apt:
|
||||
name:
|
||||
- chrony
|
||||
- curl
|
||||
- jq
|
||||
- smartmontools
|
||||
- nvme-cli
|
||||
- prometheus-node-exporter
|
||||
state: present
|
||||
update_cache: true
|
||||
when: ansible_facts.os_family == "Debian"
|
||||
|
||||
- name: Ensure solana group exists
|
||||
ansible.builtin.group:
|
||||
name: "{{ solana_group }}"
|
||||
system: true
|
||||
|
||||
- name: Ensure solana user exists
|
||||
ansible.builtin.user:
|
||||
name: "{{ solana_user }}"
|
||||
group: "{{ solana_group }}"
|
||||
home: "{{ solana_home }}"
|
||||
system: true
|
||||
create_home: true
|
||||
|
||||
- name: Ensure root config directories exist
|
||||
ansible.builtin.file:
|
||||
path: "{{ item }}"
|
||||
@@ -29,6 +55,20 @@
|
||||
- /root/.config/nvim
|
||||
- /root/.config/nvim/lua
|
||||
|
||||
- name: Ensure Solana directories exist
|
||||
ansible.builtin.file:
|
||||
path: "{{ item.path }}"
|
||||
state: directory
|
||||
owner: "{{ item.owner }}"
|
||||
group: "{{ item.group }}"
|
||||
mode: "{{ item.mode }}"
|
||||
loop:
|
||||
- { path: "/etc/solana", owner: "root", group: "root", mode: "0755" }
|
||||
- { path: "{{ solana_home }}", owner: "{{ solana_user }}", group: "{{ solana_group }}", mode: "0750" }
|
||||
- { path: "{{ solana_ledger_dir }}", owner: "{{ solana_user }}", group: "{{ solana_group }}", mode: "0750" }
|
||||
- { path: "{{ solana_accounts_dir }}", owner: "{{ solana_user }}", group: "{{ solana_group }}", mode: "0750" }
|
||||
- { path: "{{ solana_log_dir }}", owner: "{{ solana_user }}", group: "{{ solana_group }}", mode: "0750" }
|
||||
|
||||
- name: Deploy tmux config (Ctrl+a prefix)
|
||||
ansible.builtin.copy:
|
||||
src: ../files/operator-dotfiles/tmux.conf
|
||||
@@ -64,6 +104,50 @@
|
||||
- { src: "lua/utils.lua", dest: "lua/utils.lua" }
|
||||
- { src: "lua/hazard3_dap.lua", dest: "lua/hazard3_dap.lua" }
|
||||
|
||||
- name: Deploy solana-rpc systemd unit (runs as solana user)
|
||||
ansible.builtin.template:
|
||||
src: ../templates/solana-rpc.service.j2
|
||||
dest: /etc/systemd/system/{{ solana_rpc_service_name }}.service
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
register: solana_rpc_unit
|
||||
|
||||
- name: Reload systemd after unit change
|
||||
ansible.builtin.systemd:
|
||||
daemon_reload: true
|
||||
when: solana_rpc_unit.changed
|
||||
|
||||
- name: Check validator binary exists
|
||||
ansible.builtin.stat:
|
||||
path: "{{ solana_validator_bin }}"
|
||||
register: solana_validator_bin_stat
|
||||
|
||||
- name: Check identity key exists
|
||||
ansible.builtin.stat:
|
||||
path: "{{ solana_identity_path }}"
|
||||
register: solana_identity_stat
|
||||
|
||||
- name: Ensure solana-rpc service state when prerequisites exist
|
||||
ansible.builtin.systemd:
|
||||
name: "{{ solana_rpc_service_name }}"
|
||||
enabled: "{{ solana_rpc_enable_on_boot | bool }}"
|
||||
state: "{{ 'started' if (solana_rpc_start_now | bool) else 'stopped' }}"
|
||||
when:
|
||||
- solana_rpc_manage_service | bool
|
||||
- solana_validator_bin_stat.stat.exists
|
||||
- solana_identity_stat.stat.exists
|
||||
|
||||
- name: Report skipped solana-rpc start due to missing prerequisites
|
||||
ansible.builtin.debug:
|
||||
msg:
|
||||
- "solana-rpc start skipped: missing prerequisites"
|
||||
- "validator_bin={{ solana_validator_bin }} exists={{ solana_validator_bin_stat.stat.exists }}"
|
||||
- "identity={{ solana_identity_path }} exists={{ solana_identity_stat.stat.exists }}"
|
||||
when:
|
||||
- solana_rpc_manage_service | bool
|
||||
- not (solana_validator_bin_stat.stat.exists and solana_identity_stat.stat.exists)
|
||||
|
||||
- name: Validate Ansible transport
|
||||
ansible.builtin.ping:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user