83 lines
2.3 KiB
YAML
83 lines
2.3 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: Convert all nodes (hubs + sites) to one dict as node_map
|
|
set_fact:
|
|
node_map: >-
|
|
{{ dict((overlay_config.hubs + overlay_config.sites)
|
|
| map(attribute='name')
|
|
| zip(overlay_config.hubs + overlay_config.sites)) }}
|
|
|
|
- name: 显示主机名
|
|
debug:
|
|
var: node_map
|
|
when: debug | default(true)
|
|
|
|
- name: Show value for this node
|
|
debug:
|
|
msg: "{{ node_map[inventory_hostname] }}"
|
|
when: debug | default(true)
|
|
|
|
- set_fact:
|
|
xray_uuid: "{{ node_map[inventory_hostname].xray.uuid }}"
|
|
xray_remote_domain: "{{ node_map[inventory_hostname].xray.remote_domain }}"
|
|
xray_cert_path: "{{ node_map[inventory_hostname].xray.cert_path }}"
|
|
xray_key_path: "{{ node_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-tproxy 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: "tproxy-config.json.j2", dest: "{{ xray_config_dir }}/tproxy-config.json" }
|
|
|
|
- name: Deploy systemd service templates
|
|
template:
|
|
src: "{{ item.src }}"
|
|
dest: "{{ item.dest }}"
|
|
mode: '0644'
|
|
loop:
|
|
- { src: "xray-tproxy.service.j2", dest: "/etc/systemd/system/xray-tproxy.service" }
|
|
|
|
- name: Reload systemd
|
|
systemd:
|
|
daemon_reload: yes
|
|
|
|
- name: Enable and start xray services
|
|
systemd:
|
|
name: "{{ item }}"
|
|
enabled: yes
|
|
state: started
|
|
loop:
|
|
- xray-tproxy.service
|