nethasp.ini распространен через Ansible PlayBook

Итак: Сегодня речь пойдет о практической реализации применения инструмента Ansible посредством которого я на рабочие станции с учетом принадлежности отделов буду распространять файл nethasp.ini в каталог клиента 1С 8.3, где клиент устанавливается по заметке "Формируем установку 1с 8.3.18.1957 через GPO". Также требуется пояснение, что клиента на рабочих местах мы используем x86, что тоже будет накладывать на себя нюанс.

Как всегда, ниже указаны шаги посредством которых реализую свою задумку.

Шаг №1: В домене разворачиваем виртуальную машину под ESXi 7 и в качестве операционной системы устанавливаю Ubuntu 22.04 Server, затем опираясь на заметку "Через Ansible с доменными Windows системами на Ubuntu 22.04 Server" настраиваем чтобы можно было обращаться к доменным системам использую Kerberos аутентификацию.

hostname: srv-ansible.polygon.local

ekzorchik@srv-ansible:~$ dpkg -l | grep ansible
ii  ansible                               8.3.0-1ppa~jammy                        all          Ansible collections for ansible-core
ii  ansible-core                          2.15.2-1ppa~jammy                       all          Ansible IT Automation
ekzorchik@srv-ansible:~$

Шаг №2: Опираясь на заметку "Выполнить ConfigureRemotingForAnsible.ps1 через GPO" распространяем функционал разрешающий подключение через Ansible с Ubuntu 22.04 Server к Windows системам:

Шаг №3: На Ubuntu 22.04 Server + Ansible создаю файл hosts, переменные аутентификации подключения к хостам Windows:

ekzorchik@srv-ansible:~$ sudo mkdir /etc/ansible/windows/
ekzorchik@srv-ansible:~$ sudo nano /etc/ansible/windows/hosts
[windows]
wrkst0101.polygon.local
ekzorchik@srv-ansible:~$ sudo mkdir /etc/ansible/windows/group_vars/
ekzorchik@srv-ansible:~$ sudo nano /etc/ansible/windows/group_vars/windows.yml
file: group_vars/windows.yml
ansible_user: ekzorchik@POLYGON.LOCAL
ansible_password: 712mbddr@
ansible_winrm_transport: kerberos
ansible_port: 5985
ansible_connection: winrm
ansible_winrm_server_cert_validation: ignore
validate_certs: false

Шаг №4: На Ubuntu 22.04 Server + Ansible создаю каталог где будут располагаться файлы шаблонов:

ekzorchik@srv-ansible:~$ sudo mkdir /etc/ansible/playbook/templates

Шаг №5: На Ubuntu 22.04 Server + Ansible создаю шаблон файла nethasp.ini:

ekzorchik@srv-ansible:~$ sudo nano /etc/ansible/playbook/templates/nethasp.ini.j2
[NH_COMMON]
NH_TCPIP = Enabled
[NH_IPX]
[NH_NETBIOS]
[NH_TCPIP]
NH_SERVER_ADDR = 10.90.90.10, srv-db04.polygon.local
NH_TCPIP_METHOD = UDP

Шаг №6: На Ubuntu 22.04 Server + Ansible создаю PlayBook посредством которого буду размещать nethasp.ini на определенных рабочих станциях с учетом их использования базами данных: если бухгалтерия то один nethasp.ini, если "Управление торговлей" то файл nethasp.ini другой — т.к. у меня два сервера с различными ключами по части количества лицензий.

ekzorchik@srv-ansible:~$ sudo nano /etc/ansible/playbook/nethasp.ini
#sudo ansible-galaxy collection install ansible.windows
- name: Copy nethasp.ini
  hosts: windows
  tasks:
   - name: Copy nethasp.ini
     win_template:
       src: nethasp.ini.j2
       dest: "C:\\Program Files (x86)\\1cv8\\conf\\nethasp.ini"

Шаг №7: На Ubuntu 22.04 Server + Ansible запускаю созданный playbook:

ekzorchik@srv-ansible:~$ sudo ansible-playbook -i /etc/ansible/windows/hosts /etc/ansible/playbook/nethasp.ini  -vvv
и PlayBook отработал успешно, вот результат:
changed: [wrkst0101.polygon.local] => {
    "changed": true,
    "checksum": "bb3a887e62b524d0c2adadd0c8acb1e47c1379ae",
    "dest": "C:\\Program Files (x86)\\1cv8\\conf\\nethasp.ini",
    "operation": "file_copy",
    "original_basename": "nethasp.ini.j2",
    "size": 154,
    "src": "/root/.ansible/tmp/ansible-local-20729tbjcgzty/tmptklha2vf/nethasp.ini.j2"
}

PLAY RECAP *************************************************************************************************************
wrkst0101.polygon.local   : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

ekzorchik@srv-ansible:~$

nethasp.ini распространен через Ansible PlayBook

Шаг №8: А вот как выглядит если PlayBook запускается для нескольких машин:

ekzorchik@srv-ansible:~$ sudo nano /etc/ansible/windows/hosts
[windows]
wrkst0101.polygon.local
wrkst0102.polygon.local

или

ekzorchik@srv-ansible:~$ sudo nano /etc/ansible/windows/hosts
[w1]
wrkst0101.polygon.local
[w2]
wrkst0102.polygon.local

playbook и запуск playbook:

ekzorchik@srv-ansible:~$ sudo nano /etc/ansible/playbook/nethasp.ini
#sudo ansible-galaxy collection install ansible.windows
- name: Copy nethasp.ini
  hosts: w1,w2
  tasks:
   - name: Copy nethasp.ini
     win_template:
       src: nethasp.ini.j2
       dest: "C:\\Program Files (x86)\\1cv8\\conf\\nethasp.ini"
ekzorchik@srv-ansible:~$ sudo ansible-playbook -i /etc/ansible/windows/hosts  /etc/ansible/playbook/nethasp.ini  -vvv
ok: [wrkst0101.polygon.local] => {
    "changed": false,
    "checksum": "bb3a887e62b524d0c2adadd0c8acb1e47c1379ae",
    "dest": "C:\\Program Files (x86)\\1cv8\\conf\\nethasp.ini",
    "operation": "file_copy",
    "original_basename": "nethasp.ini.j2",
    "size": 154,
    "src": "/root/.ansible/tmp/ansible-local-21142lrsk0m61/tmpa86gktvx/nethasp.ini.j2"
}
EXEC (via pipeline wrapper)
ok: [wrkst0102.polygon.local] => {
    "changed": false,
    "checksum": "bb3a887e62b524d0c2adadd0c8acb1e47c1379ae",
    "dest": "C:\\Program Files (x86)\\1cv8\\conf\\nethasp.ini",
    "operation": "file_copy",
    "original_basename": "nethasp.ini.j2",
    "size": 154,
    "src": "/root/.ansible/tmp/ansible-local-21142lrsk0m61/tmphzjlc2lc/nethasp.ini.j2"
}

PLAY RECAP *************************************************************************************************************
wrkst0101.polygon.local   : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
wrkst0102.polygon.local   : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

ekzorchik@srv-ansible:~$

Итого: мною, как системным администратором воплощена в реальность задумка по распространению nethasp.ini на рабочие места. Не претендую на 100% решение, думается что будут в процессе возникать нюансы, о которых я поведаю в последующих заметках/доработках, сейчас работает.

Также чем больше я для себя придумаю задач, тем больше буду ориентироваться в использовании Ansible.

На этом данная заметка завершена, с уважением автор блога Олло Александр aka ekzorchik.