63 lines
2.4 KiB
YAML
63 lines
2.4 KiB
YAML
|
|
# Узлы подключаются к домашней сети (vars/wifi.yml) ради интернета для apt.
|
||
|
|
# Проводная сеть 11.0.0.0/24 без шлюза, поэтому маршрут по умолчанию
|
||
|
|
# и DNS приходят от Wi-Fi. В конце каждый узел обязан достучаться до интернета.
|
||
|
|
- name: Wi-Fi включить и подключить к домашней сети
|
||
|
|
hosts: all
|
||
|
|
gather_facts: false
|
||
|
|
vars_files:
|
||
|
|
- vars/wifi.yml
|
||
|
|
vars:
|
||
|
|
wifi_con: fleet-wifi
|
||
|
|
tasks:
|
||
|
|
- name: Радио Wi-Fi включено
|
||
|
|
become: true
|
||
|
|
ansible.builtin.shell: |
|
||
|
|
if [ "$(nmcli radio wifi)" = enabled ]; then echo OK; else nmcli radio wifi on && echo CHANGED; fi
|
||
|
|
register: radio
|
||
|
|
changed_when: "'CHANGED' in radio.stdout"
|
||
|
|
|
||
|
|
- name: Профиль {{ wifi_con }} с актуальными SSID и паролем
|
||
|
|
become: true
|
||
|
|
community.general.nmcli:
|
||
|
|
conn_name: "{{ wifi_con }}"
|
||
|
|
ifname: wlan0
|
||
|
|
type: wifi
|
||
|
|
ssid: "{{ wifi_ssid }}"
|
||
|
|
wifi_sec:
|
||
|
|
key-mgmt: wpa-psk
|
||
|
|
psk: "{{ wifi_psk }}"
|
||
|
|
autoconnect: true
|
||
|
|
state: present
|
||
|
|
register: profile
|
||
|
|
|
||
|
|
- name: Переподключение после смены SSID или пароля
|
||
|
|
become: true
|
||
|
|
ansible.builtin.command: nmcli con down {{ wifi_con }}
|
||
|
|
when: profile.changed
|
||
|
|
failed_when: false
|
||
|
|
|
||
|
|
- name: Подключение активно
|
||
|
|
become: true
|
||
|
|
ansible.builtin.shell: |
|
||
|
|
state=$(nmcli -t -f GENERAL.STATE con show {{ wifi_con }} | cut -d: -f2)
|
||
|
|
if [ "$state" = activated ]; then echo OK; else nmcli con up {{ wifi_con }} >/dev/null && echo CHANGED; fi
|
||
|
|
register: up
|
||
|
|
changed_when: "'CHANGED' in up.stdout"
|
||
|
|
|
||
|
|
- name: Интернет доступен (DNS и HTTPS)
|
||
|
|
ansible.builtin.uri:
|
||
|
|
url: https://deb.debian.org/
|
||
|
|
register: inet
|
||
|
|
retries: 6
|
||
|
|
delay: 5
|
||
|
|
until: inet.status == 200
|
||
|
|
|
||
|
|
- name: Адрес в домашней сети
|
||
|
|
ansible.builtin.command: nmcli -t -f IP4.ADDRESS con show {{ wifi_con }}
|
||
|
|
register: addr
|
||
|
|
changed_when: false
|
||
|
|
|
||
|
|
- name: Итог по узлу
|
||
|
|
ansible.builtin.debug:
|
||
|
|
msg: "[+] {{ inventory_hostname }}: {{ addr.stdout | regex_replace('^IP4.ADDRESS\\[1\\]:', '') }}, интернет есть"
|