星期二, 6月 21, 2016

Ansible vsphere_guest module with openSUSE 小記

Ansible vsphere_guest module with openSUSE 小記

OS: openSUSE Leap 42.1
Ansible: 2.1.0.0
Module: vsphere_guest

Requirements (on host that executes module)
  • python >= 2.6
  • pysphere

檢查需求
# python --version
Python 2.7.9

pysphere 的部份

參考之前的網誌
加入套件庫

搜尋套件
# zypper   search   -s   sphere
Loading repository data...
Reading installed packages...

S | Name            | Type       | Version   | Arch   | Repository                         
--+-----------------+------------+-----------+--------+------------------------------------
 | python-pysphere | package    | 0.1.8-1.1 | noarch | Python Modules (openSUSE_Leap_42.1)


安裝 pysphere
# zypper  install   python-pysphere
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following NEW package is going to be installed:
 python-pysphere

1 new package to install.
Overall download size: 891.9 KiB. Already cached: 0 B. After the operation, additional 13.8 MiB will be used.
Continue? [y/n/? shows all options] (y):  Y

建立測試 playbook
後來採用 local 的方式執行, 然後相關資訊使用 var_prompt 的方式

檔案 Test_vsphere_guest_get_facts.yml

- name: Testing vsphere_guest module in VMware
# 這邊自己習慣控管 VMware 的是用本機
# 配合 hosts 內的 ansible_connection=local
 hosts: localhost
# 設定使用 local connection
 connection: local
# 這種方式還不錯, 透過提示來輸入相關變數
 vars_prompt:
# 這邊的 name 就會是變數的名稱
   - name: "vcenter_hostname"
# 設定提示文字
     prompt: "Enter vcenter hostname"
# private 設定為 no 會顯示輸入的內容
     private: no
# 這邊可以設定預設值
     default: "vcsa"

   - name: "vcenter_user"
     prompt: "Enter vCenter username"
     private: no
     default: root

   - name: "vcenter_pass"
     prompt: "Enter vcenter password"
# private 設定為 yes 會顯示輸入的內容
     private: yes

   - name: "guest_name"
     prompt: "Enter guest vm name"
     private: no


 tasks:
   - name: Testing gater facts from vSphere
# 使用 vsphere_guest 來設定相關工作
     vsphere_guest:
# vCenter 的 IP 或是 FQDN, 這邊用上面的變數讓使用者輸入
       vcenter_hostname: "{{ vcenter_hostname }}"
# Ansible 2.1 以後的版本可以設定 validate_certs, 預設會檢查 SSL certs, 如果是自己架設的vC, 可以設定no
       validate_certs: no
# vCenter 上面的使用者名稱, 對應上面的變數
       username: "{{ vcenter_user }}"
# vCenter 使用者的密碼, 對應上面的變數
       password: "{{ vcenter_pass }}"
# 要針對的 VMware guest 名稱
       guest: "{{ guest_name }}"
# 是否要取回 guest 資訊
       vmware_guest_facts: yes


下指令執行還有輸出結果

> ansible-playbook   -v   test_vsphere_guest_get_facts.yml
Enter vcenter hostname [vcsa]:  YOURIP_FQDN
Enter vCenter username [root]:
Enter vcenter password:
Enter guest vm name: openSUSELeap_SA_Docker

PLAY [Testing vsphere_guest module in VMware] **********************************

TASK [setup] *******************************************************************
ok: [localhost]

TASK [Testing gater facts from vSphere] ****************************************
ok: [localhost] => {"ansible_facts": {"hw_eth0": {"addresstype": "manual", "ipaddresses": [“w.x.y.z", "fe80::220:5fff:fe11:1111"], "label": "Network adapter 1", "macaddress": "00:50:56:11:11:11", "macaddress_dash": "00-50-56-11-11-11", "summary": "VM Net"}, "hw_guest_full_name": "Other Linux (32-bit)", "hw_guest_id": "otherLinuxGuest", "hw_interfaces": ["eth0"], "hw_memtotal_mb": 3976, "hw_name": "openSUSELeap_SA_Docker", "hw_power_status": "POWERED ON", "hw_processor_count": 2, "hw_product_uuid": "4222b4d6-ef7b-dc72-8603-9f7cbbfc2737", "module_hw": true}, "changed": false}

PLAY RECAP *********************************************************************
localhost                  : ok=2    changed=0    unreachable=0    failed=0   



建立 test_vsphere_guest_delete_vm.yml

- name: Testing vsphere_guest module in VMware
# 這邊自己習慣控管 VMware 的是用本機
# 配合 hosts 內的 ansible_connection=local
 hosts: localhost
# 設定使用 local connection
 connection: local
# 這種方式還不錯, 透過提示來輸入相關變數
 vars_prompt:
# 這邊的 name 就會是變數的名稱
   - name: "vcenter_hostname"
# 設定提示文字
     prompt: "Enter vcenter hostname"
# private 設定為 no 會顯示輸入的內容
     private: no
# 這邊可以設定預設值
     default: "vcsa"
   - name: "vcenter_user"
     prompt: "Enter vCenter username"
     private: no
     default: root
   - name: "vcenter_pass"
     prompt: "Enter vcenter password"
# private 設定為 yes 會顯示輸入的內容
     private: yes
   - name: "guest_name"
     prompt: "Enter guest VM name your want to delete"
     private: no
 tasks:
   - name: Delete VM
# 使用 vsphere_guest 來設定相關工作
     vsphere_guest:
# vCenter 的 IP 或是 FQDN, 這邊用上面的變數讓使用者輸入
       vcenter_hostname: "{{ vcenter_hostname }}"
# Ansible 2.1 以後的版本可以設定 validate_certs, 預設會檢查 SSL certs, 如果是自己架設的vC, 可以設定no
       validate_certs: no
# vCenter 上面的使用者名稱, 對應上面的變數
       username: "{{ vcenter_user }}"
# vCenter 使用者的密碼, 對應上面的變數
       password: "{{ vcenter_pass }}"
# 要針對的 VMware guest 名稱
       guest: "{{ guest_name }}"
#
       state: absent
# 如果有使用 force: yes, 就是虛擬機不需要先關機就刪除
# 實際上觀察, 是會先關機然後刪除
       force: yes     

這樣可以用來刪除指定的 VM

建立 test_vsphere_guest_deploy_from_template.yml


- name: Testing vsphere_guest module in VMware
# 這邊自己習慣控管 VMware 的是用本機
# 配合 hosts 內的 ansible_connection=local
 hosts: localhost
 connection: local
# 這種方式還不錯, 透過提示來輸入相關變數
 vars_prompt:
# 這邊的 name 就會是變數的名稱
   - name: "vcenter_hostname"
# 設定提示文字
     prompt: "Enter vcenter hostname"
# private 設定為 no 會顯示輸入的內容
     private: no
# 這邊可以設定預設值
     default: "vcsa"

   - name: "vcenter_user"
     prompt: "Enter vCenter username"
     private: no
     default: root

   - name: "vcenter_pass"
     prompt: "Enter vcenter password"
# private 設定為 yes 會顯示輸入的內容
     private: yes

   - name: "esxi_hostname"
     prompt: "Enter esxi hostname"
     private: no

 tasks:
   - name: Create VM
# 使用 vsphere_guest 來設定相關工作
     vsphere_guest:
# vCenter 的 IP 或是 FQDN, 這邊用上面的變數讓使用者輸入
       vcenter_hostname: "{{ vcenter_hostname }}"
# Ansible 2.1 以後的版本可以設定 validate_certs, 預設會檢查 SSL certs, 如果是自己架設的vC, 可以設定no
       validate_certs: no
# vCenter 上面的使用者名稱, 對應上面的變數
       username: "{{ vcenter_user }}"
# vCenter 使用者的密碼, 對應上面的變數
       password: "{{ vcenter_pass }}"
# 要針對的 VMware guest 名稱
       guest: newvm003
# 從範本複製
# 如果有 from_template 就不能設定 state
       from_template: yes
# 範本名稱
       template_src: openSUSELeap42.1_Template

# 要佈署的 esxi 主機
       esxi:
         datacenter: Lab
         hostname: "{{ esxi_hostname }}"
下指令執行還有輸出結果

> ansible-playbook   -v   test_vsphere_guest_deploy_from_template.yml
Enter vcenter hostname [vcsa]: YOURIP_FQDN
Enter vCenter username [root]:
Enter vcenter password:
Enter esxi hostname: YOURIP_FQDN

PLAY [Testing vsphere_guest module in VMware] **********************************

TASK [setup] *******************************************************************
ok: [localhost]

TASK [Create VM] ***************************************************************
changed: [localhost] => {"changed": true}

PLAY RECAP *********************************************************************
localhost                  : ok=2    changed=1    unreachable=0    failed=0   

在 VMware 上面的結果
2016-06-21 21-27-15 的螢幕擷圖.png



先記下來

~ enjoy it

沒有留言: