Какой модуль или модули наиболее подходят для подключения и переименования машин?

Привет! Можешь подсказать, как лучше всего решить следующую задачу? <br/> Имеется файл ( <b>config.cfg</b> ), в котором определены разные переменные и имена будущих виртуальных машин (VM), например: <br/> <pre><code>vm_name: "clone"
end: "3"</code></pre> <br/> <br/> После выполнения плейбука получается файл <b>vms.ini</b>, содержащий IP-адреса машин, которые нужно переименовать: <br/> <pre><code>[vms]
10.20.12.209
10.20.12.210
10.20.12.211</code></pre> <br/> <br/> Какие модули можно использовать для выполнения следующих действий: зайти по IP-адресу, переименовать машину и перезагрузить её?
  • 16 сентября 2024 г. 14:53
Ответы на вопрос 1
Для выполнения задачи по подключению к виртуальным машинам, переименованию и перезагрузке их с использованием Ansible, вам понадобятся следующие модули и шаги:

1. **Модули для подключения**:
   - Для подключения к виртуальным машинам по IP-адресу вы можете использовать `ansible_connection` для настройки подключения. В зависимости от типа виртуальных машин, вам могут понадобиться разные модули:
     - Для подключения к Linux VM: используйте `ssh` (по умолчанию).
     - Для подключения к Windows VM: используйте `winrm`.

2. **Переименование машины**:
   - Для переименования Linux виртуальных машин используйте модуль `command` или `shell`, чтобы выполнить команду `hostnamectl` (для систем с systemd) или `hostname` (для других систем). Команда может выглядеть следующим образом:
     ```yaml
     - name: Rename the VM
       command: hostnamectl set-hostname {{ new_vm_name }}
     ```

   - Для Windows используйте модуль `win_shell`:
     ```yaml
     - name: Rename the Windows VM
       win_shell: Rename-Computer -NewName {{ new_vm_name }} -Restart
     ```

3. **Перезагрузка виртуальной машины**:
   - Для Linux используйте модуль `reboot`:
     ```yaml
     - name: Reboot the VM
       reboot:
         reboot_timeout: 300
     ```

   - Для Windows можно использовать `win_reboot`:
     ```yaml
     - name: Reboot the Windows VM
       win_reboot:
         reboot_timeout: 300
     ```

### Пример плейбука Ansible

Вот пример плейбука, который выполняет вашу задачу:

```yaml
- hosts: all
  gather_facts: no
  vars:
    new_vm_names:
      - clone1
      - clone2
      - clone3

  tasks:
    - name: Rename the VM
      command: hostnamectl set-hostname {{ item }}
      loop: "{{ new_vm_names }}"

    - name: Reboot the VM
      reboot:
        reboot_timeout: 300
```

### Параметры Invenory

Также учтите, что вам нужно будет настроить инвентарный файл (например, `hosts.ini`), где будут перечислены ваши виртуальные машины по IP-адресам.

### Заключение

Теперь у вас есть общее представление о том, как использовать Ansible для переименования и перезагрузки виртуальных машин, основываясь на заданных параметрах в вашем `config.cfg` и `vms.ini` файлах. Настройте плейбук и инвентарный файл согласно вашим требованиям, и пусть Ansible сделает остальное!
Похожие вопросы