Сегодня речь пойдет о практической задумке на тему, как использую систему Ansible
в домене провести выключение определенных компьютеров. Для чего может понадобится выключение:
Если обновляем сервисы, и чтобы не получилось, что кто-то с ними работает
Планируется отключение электричества, электрики буду заменять оборудование в щитке, дабы ИБП на рабочих местах не подохли от разряда.
и по многим другим причинам
Здесь и далее используется система Ubuntu 22.04 Server
на которую установлен пакет Ansible
опираясь на заметку: "Через Ansible с доменными Windows системами на Ubuntu 22.04 Server"
. В ней задокумментировано все что нужно дабы начать работать с Windows
системами в домене.
Шаг №1:
Предопределяю для каких Windows
систем буду применять написаемые Playbook(и)
с учетом своих задач:
ekzorchik@srv-ansible:~$ cat /etc/ansible/windows/hosts
[windows]
wrkst0003.polygon.local
wrkst0002.polygon.local
Шаг №2:
Создаем Playbook
ответственный за выключение компьютеров в домене:
ekzorchik@srv-ansible:~$ sudo nano /etc/ansible/playbook/poweroff.yml
- hosts: windows
gather_facts: no
tasks:
- name: Turn off computers
raw: shutdown /s /hybrid /t 15 /c "Выключаем все компьютеры перед тех обслуживанием серверов"
Шаг №3:
Запускаю созданный в предыдущем шаге Playbook
применительно к группе Windows
, см. Шаг №1:
ekzorchik@srv-ansible:~$ sudo ansible-playbook -i /etc/ansible/windows/hosts /etc/ansible/playbook/poweroff.yml
PLAY [windows] *********************************************************************************************************
TASK [Turn off computers] **********************************************************************************************
changed: [wrkst0003.polygon.local]
changed: [wrkst0002.polygon.local]
PLAY RECAP *************************************************************************************************************
wrkst0002.polygon.local : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
wrkst0003.polygon.local : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ekzorchik@srv-ansible:~$
Шаг №4:
После проверяю, что узлы не доступны через модуль win_ping:
ekzorchik@srv-ansible:~$ sudo ansible windows -i /etc/ansible/windows/hosts -m win_ping
wrkst0003.polygon.local | UNREACHABLE! => {
"changed": false,
"msg": "kerberos: HTTPConnectionPool(host='wrkst0003.polygon.local', port=5985): Max retries exceeded with url: /wsman (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7ff68ecb9d50>: Failed to establish a new connection: [Errno 113] No route to host'))",
"unreachable": true
}
wrkst0002.polygon.local | UNREACHABLE! => {
"changed": false,
"msg": "kerberos: HTTPConnectionPool(host='wrkst0002.polygon.local', port=5985): Max retries exceeded with url: /wsman (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7ff68ecb9960>: Failed to establish a new connection: [Errno 113] No route to host'))",
"unreachable": true
}
ekzorchik@srv-ansible:~$
из вывода выше видно, что модуль не смог отправить ICMP
запрос до узлов тем самым по этому признаку можно судить о правильной отработке созданного Playbook
на выключение систем.
Отлично, playbook
по выключению Windows
систем готов и успешно отработал.
От этой заметки и будем в дальнейшем отталкиваться если что при возобновлении изучения Ansible.
На этом пока у меня все, с уважением автор блога Олло Александр aka ekzorchik.