playbooks/roles/vhosts/vpn-overlay/xray/site/tasks/main.yml

71 lines
2.0 KiB
YAML

---
- name: Load overlay config from file
set_fact:
overlay_config: "{{ lookup('file', overlay_config_path) | from_yaml }}"
- name: Convert overlay_config.hubs list to dict (hubs_map)
set_fact:
hubs_map: "{{ dict(overlay_config.hubs | map(attribute='name') | zip(overlay_config.hubs)) }}"
when: overlay_config.hubs is defined
- name: Convert overlay_config.sites list to dict (sites_map)
set_fact:
sites_map: "{{ dict(overlay_config.sites | map(attribute='name') | zip(overlay_config.sites)) }}"
when: overlay_config.sites is defined
- name: 显示主机名
debug:
var: overlay_config
when: debug | default(false)
- set_fact:
xray_uuid: "{{ sites_map[inventory_hostname].xray.uuid }}"
xray_remote_domain: "{{ sites_map[inventory_hostname].xray.remote_domain }}"
xray_cert_path: "{{ sites_map[inventory_hostname].xray.cert_path }}"
xray_key_path: "{{ sites_map[inventory_hostname].xray.key_path }}"
- name: Install Xray using official script
shell: |
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)"
args:
creates: /usr/local/bin/xray
notify:
- Restart xray service
- name: Ensure required directories exist
file:
path: "{{ item }}"
state: directory
mode: '0755'
loop:
- "{{ xray_bin_path | dirname }}"
- "{{ xray_config_dir }}"
- name: Deploy Xray config templates
template:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
mode: '0644'
loop:
- { src: "client-config.json.j2", dest: "{{ xray_config_dir }}/client-config.json" }
- name: Deploy systemd service templates
template:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
mode: '0644'
loop:
- { src: "xray-client.service.j2", dest: "/etc/systemd/system/xray-client.service" }
- name: Reload systemd
systemd:
daemon_reload: yes
- name: Enable and start xray services
systemd:
name: "{{ item }}"
enabled: yes
state: started
loop:
- xray-client.service