2016-08-03 5 views
1

Я пытаюсь развернуть виртуальную машину через Ansible на моем хосте ESXi. Я использую следующую роль для этого:проблема с pysphere - ansible

- vsphere_guest: 
    vcenter_hostname: emea-esx-s18t.****.net 
    username: **** 
    password: **** 
    guest: newvm001 
    state: powered_off 
    vm_extra_config: 
     vcpu.hotadd: yes 
     mem.hotadd: yes 
     notes: This is a test VM 
    vm_disk: 
     disk1: 
     size_gb: 10 
     type: thin 
     datastore: **** 
    vm_nic: 
     nic1: 
     type: vmxnet3 
     network: VM Network 
     network_type: standard 
    vm_hardware: 
     memory_mb: 4096 
     num_cpus: 4 
     osid: windows7Server64Guest 
     scsi: paravirtual 
    esxi: 
     datacenter: MyDatacenter 
     hostname: esx-s18t.****.net 

, когда я исполняю эту роль в настоящее время через PlayBook я получаю следующее сообщение:

[email protected]:~/ansible# ansible-playbook -i Inventory vmware_deploy.yml 

PLAY *************************************************************************** 

TASK [setup] ******************************************************************* 
ok: [172.20.22.5] 

TASK [vmware : vsphere_guest] ************************************************** 
fatal: [172.20.22.5]: FAILED! => {"changed": false, "failed": true, "msg": "pysphere module required"} 

PLAY RECAP ********************************************************************* 
172.20.22.5    : ok=1 changed=0 unreachable=0 failed=1 

Так что, кажется, модуль «pysphere» отсутствует , я уже проверил, что с помощью команды:

[email protected]:~/ansible# pip install pysphere 
Requirement already satisfied (use --upgrade to upgrade): pysphere in /usr/local/lib/python2.7/dist-packages/pysphere-0       .1.7-py2.7.egg 

Тогда я сделал «обновление» и получить следующее сообщение обратно:

[email protected]:~/ansible# pip install pysphere --upgrade 
Requirement already up-to-date: pysphere in /usr/local/lib/python2.7/dist-packages/pysphere-0.1.7-py2.7.egg 

Так что, кажется, он уже установлен и его до -то-дата, почему я получаю это сообщение об ошибке? Как я могу исправить это, что теперь моя божественная чертова роль отлично работает? Иисус, Ansible делает меня сумасшедшим ..

Надеюсь, вы, ребята, можете мне помочь, спасибо заранее!

Уважением, kgierman

EDIT: так я уже прописан новый сборник пьес со старым материалом, новый playbool lookes как это (я добавил свой Localhost и соединение местного материала):

--- 
- hosts: localhost 
    connection: local 
    tasks: 
    vsphere_guest: 
     vcenter_hostname: emea-esx-s18t.****.net 
      username: **** 
      password: **** 
      guest: newvm001 
      state: powered_off 
     vm_extra_config: 
      vcpu.hotadd: yes 
      mem.hotadd: yes 
      notes: This is a test VM 
     vm_disk: 
      disk1: 
      size_gb: 10 
      type: thin 
      datastore: **** 
     vm_nic: 
      nic1: 
      type: vmxnet3 
      network: VM Network 
      network_type: standard 
     vm_hardware: 
      memory_mb: 4096 
      num_cpus: 4 
      osid: windows7Server64Guest 
      scsi: paravirtual 
     esxi: 
      datacenter: MyDatacenter 
      hostname: esx-s18t.****.net 

так, когда я исполняю этот сборник пьес я получаю следующее сообщение об ошибке:

[email protected]:~/ansible# ansible-playbook vmware2.yml 
ERROR! Syntax Error while loading YAML. 


The error appears to have been in '/root/ansible/vmware2.yml': line 7, column 19, but may 
be elsewhere in the file depending on the exact syntax problem. 

The offending line appears to be: 

     vcenter_hostname: emea-esx-s18t.sddc-hwl-family.net 
      username: root 
       ^here 

борьба реальна -.-

ответ

0

Обычно вы должны выполнять модули обеспечения, такие как vsphere_guest на вашей локальной машине.
Я подозреваю, что 172.20.22.5 на самом деле является вашим хостом ESX, и можно попытаться выполнить модуль оттуда, где pysphere, безусловно, отсутствует.
Использование:

- hosts: localhost 
    tasks: 
    - vsphere_guest: 
     ... 
+0

да ypu're право, 172.20.22.5 является ESXi хост, но если я хочу, чтобы развернуть виртуальную машину там (причина есть VCENTER и прочее) - но ОС на ESXi что-то еще тогда Ubuntu, так как я могу создать виртуальную машину через Ansible на VSphere? –

+0

Вы указываете его как 'vcenter_hostname' param - доступный модуль будет подключаться к нему _from localhost_ и создавать запрошенные виртуальные машины. –

+0

Извините, я не понимаю, что вы имеете в виду:/ «Вы указываете его как vcenter_hostname param», не могли бы вы привести мне пример? –

0

в очередной раз столкнулся с этим вопросом на MacOS/OSX ... Это, кажется, связано с PYTHONPATH.

У меня есть это в моем .profile:

export PYTHONPATH="/usr/local/lib/python2.7/site-packages" 

[ ... further down ... ] 

export PYTHONPATH="/usr/local/Cellar/ansible/2.1.2.0/libexec/lib/python2.7/site-packages:/usr/local/Cellar/ansible/2.2.1.0/libexec/vendor/lib/python2.7/site-packages:$PYTHONPATH" 

Первая линия с PYTHONPATH где pysphere и другие системные модули находятся.
Также обратите внимание на конкретную версию of Ansible!
В любом случае, похоже, проблема решена.

Источник: https://github.com/debops/debops-tools/issues/159#issuecomment-236536195

Смежные вопросы