Ansible: Как использовать несколько vCenter? - PullRequest
0 голосов
/ 28 января 2020

Я использую Ansible, чтобы сделать снимки виртуальной машины в VMware vCenter.

Если vcenter только один, то он работает нормально, но что, если есть много vcenter?

Как описать несколько Vmware vCenter в текущей роли?

Мой текущий пример для одного vcenter:

# cat snapshot.yml

- name: ROLE_update
   hosts: all
   gather_facts: False
   become: yes
   become_method: su
   become_user: root
   vars_files:
     -  /ansible/vars/privileges.txt
   roles:
    - role: snapshot

# cat tasks / main.yml

- block:
    - name: "Create vmware snapshot of {{ inventory_hostname }}"
      vmware_guest_snapshot:
        hostname: "{{vcenter_hostname }}"
        username: "{{ vcenter_username }}"
        password: "{{ vcenter_password }}"
        datacenter: "{{datacenter_name}}"
        folder: find_folder.yml
        name: "{{inventory_hostname }}"
        state: present
        snapshot_name: snap check
        validate_certs: False
      delegate_to: localhost
      register: vm_facts

# cat find_folder.yml

- name: Find folder path of an existing virtual machine
  hosts: all
  gather_facts: False
  vars:
    ansible_python_interpreter: "/usr/bin/env python3"
  tasks:

    - name: "Find folder for VM - {{ vm_name }}"
      vmware_guest_find:
        hostname: "{{ vcenter_hostname }}"
        username: "{{ vcenter_username }}"
        password: "{{ vcenter_password }}"
        datacenter: "{{ datacenter_name }}"
        validate_certs: False
        name: "{{ vm_name }}"
      delegate_to: localhost
      register: vm_facts

# объявлены переменные cat vars / main.yml

vcenter_hostname: <secret>
vcenter_username: <secret>
vcenter_password: <secret>

Спасибо!

1 Ответ

0 голосов
/ 28 января 2020

Имеет ли значение переменная для разных vcenter в разных файлах ".yml"? Если это так, вы можете легко вызывать эти переменные во время выполнения, например:

ansible-playbook your_playbook.yml --extra-vars "your_vcenter_1.yml"

Есть и другие способы, о которых я мог подумать, например, использовать теги в вашем playbook для каждой задачи и вызывать ваш playbook, используя определенные c тег. В каждой задаче с разными тегами на import_role вы можете определить новые переменные, например:

tasks:
- import_tasks: your_role.yml
  vars:
   vcenter_hostname: your_vcenter_1
  tags:
    - vcenter1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...