DIABOLIKSS
RehberlerHPE Morpheus Workflow ve Otomasyon Pipeline'ları: Provisioning'den Decommissioning'e Tam Yaşam Döngüsü
How-To Guide · HPE Morpheus · Workflow · Otomasyon · Lifecycle

HPE Morpheus Workflow ve Otomasyon Pipeline'ları:Provisioning'den Decommissioning'e Tam Yaşam Döngüsü

HPE Morpheus 8.xTasks · Workflows · Lifecycle PoliciesHaziran 2026

HPE Morpheus'ta Workflow sistemi, bir VM'in dünyaya gelişinden silinişine kadar geçen tüm yaşam döngüsünü otomatize eder. DNS kaydı oluşturma, CMDB güncelleme, güvenlik taraması başlatma, yaşam süresi sonunda uyarı gönderme ve decommissioning sırasında temizlik işlemleri — bunların hepsini manuel görev olarak yapmak yerine Morpheus'un Workflow motoruna bırakmak mümkündür. Bu rehber; Task türlerinden başlayarak Lifecycle Workflow tasarımına, koşullu görev çalıştırmadan Webhook ve HTTP entegrasyonlarına, Groovy Script ile ileri otomasyon senaryolarına kadar eksiksiz bir Morpheus otomasyon mimarisi kurar.

01

Task Türleri ve Çalıştırma Modları

Morpheus'ta bir Task, tek bir otomasyon birimini temsil eder. Task'lar birleştirilerek Workflow oluşturulur. Her Task'ın nerede çalışacağı (VM içinde mi, Morpheus sunucusunda mı, uzak aracı üzerinden mi) Execute Target ayarıyla belirlenir.

Task TürüÇalışma YeriKullanım Senaryosu
Shell ScriptVM içinde veya Morpheus'taLinux/Windows komutları, dosya işlemleri
Ansible PlaybookVM'e SSH ileKonfigürasyon yönetimi
HTTP/WebhookMorpheus → Dış sistemREST API çağrısı, webhook tetikleme
Groovy ScriptMorpheus JVM içindeİş mantığı, karar verme, API çağrısı
Python ScriptVM içindeVeri işleme, özel otomasyon
PowerShellVM içinde (Windows)Windows konfigürasyon yönetimi
Ansible Tower JobAWX APIMerkezi Ansible çalıştırma
E-postaMorpheus SMTPBildirim, onay, rapor gönderimi
Container TaskDocker/K8sKonteyner tabanlı araçlar çalıştırma
🖥️
Execute on VM
VM içinde çalışır
Agent veya SSH gerekli
🏛️
Execute on Morpheus
Appliance'ta çalışır
Ağ erişimi gerektirmez
🔗
Execute on Remote
Uzak Agent üzerinden
Özel ağ segmentleri için
🌐
Execute via API
Dış sisteme çağrı
HTTP/Webhook/AWX
02

Shell Script Task'ları

En sık kullanılan Task türüdür. Bash veya PowerShell scriptleri VM içinde veya Morpheus üzerinde çalıştırılır. Morpheus değişkenleri (instance bilgileri, custom option'lar) script içinde kullanılabilir.

1
Temel Shell Script Task
# Library → Automation → Tasks → Add Task → Shell Script Task Adı : DNS-Kaydi-Ekle Execute Target : Morpheus Agent (VM üzerinde çalışır) Sudo : Evet (root yetkisi gerekiyorsa) Run as User : root # Script içeriği — Morpheus değişkenleri kullanımı #!/bin/bash HOSTNAME="<%=instance.hostname%>" IP="<%=instance.externalIp%>" ENVIRONMENT="<%=customOptions.environment%>" DNS_SERVER="10.10.10.10" echo "DNS kaydı ekleniyor: ${HOSTNAME} → ${IP}" # nsupdate ile DNS A kaydı ekle nsupdate -v <<EOF server ${DNS_SERVER} zone sirket.com. update add ${HOSTNAME}.sirket.com. 300 A ${IP} send EOF echo "DNS kaydı eklendi: ${HOSTNAME}.sirket.com → ${IP}"
2
Morpheus Değişken Referans Listesi
# Tüm görevlerde kullanılabilen Morpheus değişkenleri <%=instance.id%> # Instance ID (sayısal) <%=instance.name%> # Instance adı <%=instance.hostname%> # Hostname <%=instance.externalIp%> # Dış IP adresi <%=instance.internalIp%> # İç IP adresi <%=instance.createdByUsername%> # Oluşturan kullanıcı <%=instance.status%> # Durum (running, stopped vb.) <%=server.id%> # Sunucu/VM ID <%=server.serverOs.name%> # İşletim sistemi adı <%=server.osType%> # OS tipi <%=tenant.name%> # Tenant adı <%=tenant.id%> # Tenant ID <%=customOptions.ALAN_ADI%> # Option Type değeri (alan adı ile) <%=cypher.read('secret/anahtar')%> # Cypher secret değeri
03

HTTP/Webhook Task'ları

HTTP Task, Morpheus'tan herhangi bir REST API'ye çağrı yapmayı sağlar. ServiceNow ticket açma, Jira konu oluşturma, Slack bildirimi, PagerDuty incident tetikleme gibi tüm entegrasyonlar bu Task türüyle yapılır.

1
HTTP Task — Slack Bildirimi
# Library → Automation → Tasks → Add Task → HTTP Task Adı : Slack-Bildirim-Gondер URL : https://hooks.slack.com/services/T.../B.../xxx Method : POST Content-Type : application/json # Body (Morpheus değişkenleri kullanılır): { "text": "VM hazır: *<%=instance.name%>*", "attachments": [{ "color": "good", "fields": [ {"title": "IP Adresi", "value": "<%=instance.externalIp%>", "short": true}, {"title": "Ortam", "value": "<%=customOptions.environment%>", "short": true}, {"title": "Tenant", "value": "<%=tenant.name%>", "short": true}, {"title": "Oluşturan", "value": "<%=instance.createdByUsername%>", "short": true} ] }] }
2
HTTP Task — Kimlik Doğrulamalı API Çağrısı
# Kimlik gerektiren API'ler için Headers bölümü kullanılır Header Adı : Authorization Header Değer : Bearer <%=cypher.read('secret/servicenow-api-token')%> # Veya Basic Auth: Header Adı : Authorization Header Değer : Basic dXNlcjpwYXNz (Base64 encoded user:pass) # Proxy ayarı (şirket proxy varsa): Proxy URL : http://proxy.sirket.com:8080 # SSL doğrulama (iç sistemler için kapatılabilir): Ignore SSL : Evet (yalnızca test — üretimde kapatmayın)
3
HTTP Task Çıktısını Sonraki Task'a Aktarma

HTTP Task'ın yanıt gövdesi Morpheus'ta results değişkenine atanır. Sonraki Groovy Script Task bu değeri okuyabilir:

# HTTP Task → ServiceNow'dan ticket_id döndürür # Yanıt: {"result": {"number": "CHG0012345", "sys_id": "abc123"}} # Sonraki Groovy Task'ta yanıtı okuma: def response = results.get('HTTP-Task-Adı') def ticketId = new groovy.json.JsonSlurper() .parseText(response).result.number morpheus.vars['snow_ticket'] = ticketId morpheus.log("ServiceNow ticket: ${ticketId}")
04

Groovy Script ile İleri Otomasyon

Groovy Script Task, Morpheus'un en güçlü Task türüdür. JVM içinde çalışır; Morpheus API'sine doğrudan erişebilir, diğer Task çıktılarını işleyebilir ve karmaşık iş mantığı uygulayabilir.

1
Temel Groovy Script Yapısı
// Groovy Script Task — temel yapı import groovy.json.JsonSlurper import groovy.json.JsonOutput // Morpheus context nesneleri: // morpheus.vars — değişken deposu (okuma/yazma) // morpheus.results — önceki task çıktıları // morpheus.log() — Morpheus log'una yaz // morpheus.api — Morpheus API istemcisi // Instance bilgilerini al def instanceName = morpheus.vars['<%=instance.name%>'] def instanceIp = morpheus.vars['<%=instance.externalIp%>'] def environment = morpheus.vars['<%=customOptions.environment%>'] morpheus.log("İşleniyor: ${instanceName} — ${instanceIp}") // Koşullu karar if (environment == 'prod') { morpheus.log("Üretim ortamı — ek güvenlik adımları aktif") morpheus.vars['security_level'] = 'high' } else { morpheus.vars['security_level'] = 'standard' } // Sonraki task'lar bu değişkeni kullanabilir
2
Groovy ile Morpheus API Çağrısı
// Morpheus API'sine instance tag ekle def instanceId = '<%=instance.id%>' def apiToken = cypher.read('secret/morpheus-api-token') def http = new URL("https://morpheus.sirket.com/api/instances/${instanceId}/metadata") .openConnection() http.requestMethod = 'PUT' http.setRequestProperty('Authorization', "Bearer ${apiToken}") http.setRequestProperty('Content-Type', 'application/json') http.doOutput = true def body = JsonOutput.toJson([ metadata: [ [name: 'DeployedBy', value: '<%=instance.createdByUsername%>'], [name: 'DeployedAt', value: new Date().format("yyyy-MM-dd HH:mm")], [name: 'Environment', value: '<%=customOptions.environment%>'] ] ]) http.outputStream.write(body.bytes) def responseCode = http.responseCode morpheus.log("Tag ekleme sonucu: ${responseCode}")
05

Provisioning Workflow Tasarımı

Bir Provisioning Workflow, VM oluşturulurken otomatik çalışan görev dizisidir. Phase sistemi sayesinde görevler doğru sıraya ve doğru zamana yerleştirilir.

PhaseNe Zaman Çalışır?Tipik Görevler
Pre-ProvisionVM oluşturulmadan önceCMDB kontrol, kaynak rezervasyonu, onay talebi
ProvisionVM oluşturuluyorMorpheus'un kendi provisioning süreci
Post-ProvisionVM hazır, agent bağlıDNS kaydı, agent kurulum, monitoring, CMDB güncelleme
Start-CompleteVM başlatıldığındaServis başlatma, health check
Stop-CompleteVM durdurulduğundaMonitoring durdurma, kayıt güncelleme
TeardownVM silindiğindeDNS silme, CMDB güncelleme, depolama temizleme
1
Kapsamlı Provisioning Workflow Örneği
# Library → Automation → Workflows → Add Workflow Workflow Adı : Kurumsal-Standart-Provisioning Platform : Linux # Phase: Pre-Provision Task 1: Groovy – Kaynak Kontrolü → VMware datastore kapasitesi yeterli mi? → IP havuzunda boş adres var mı? Hata varsa: Provisioning iptal edilsin # Phase: Post-Provision (sıralı) Task 1: Shell – Hostname Doğrulama → hostname -f çalıştır, Morpheus'la karşılaştır Task 2: DNS-Kaydi-Ekle (Shell) → nsupdate ile A kaydı ekle Task 3: HTTP – ServiceNow CMDB Güncelle → CI kaydı oluştur, IP ve hostname ekle Task 4: AWX – RHEL9-Hardening → CIS benchmark güvenlik sertleştirmesi Task 5: AWX – Zabbix-Agent-Kur → Monitoring agent kurulumu Task 6: Slack-Bildirim-Gonder → Talep sahibine VM hazır bildirimi Task 7: E-posta – VM Bilgi Belgesi → SSH bağlantı detayları, IP, hostname
2
Paralel Görev Çalıştırma

Aynı Phase'deki bağımsız görevler paralel çalışabilir. Task'larda Phase Order ve Task Order değerleri aynıysa paralel çalışır:

# Paralel çalışan görevler (aynı Phase, aynı Order): Post-Provision Order=10: DNS-Kaydi-Ekle (paralel başlar) Post-Provision Order=10: HTTP – CMDB Güncelle (paralel başlar) Post-Provision Order=10: HTTP – Ticket Kapat (paralel başlar) Post-Provision Order=20: Slack-Bildirim (yukarıdakiler bittikten sonra) # Order=10 olan 3 görev eş zamanlı çalışır # Hepsi tamamlandıktan sonra Order=20 başlar
06

Teardown (Decommissioning) Workflow

Morpheus'un en gözden kaçan özelliklerinden biri kapsamlı Teardown workflow'larıdır. Bir VM silinirken DNS kaydının geride kalmaması, monitoring'in devre dışı bırakılmaması, CMDB'nin güncellenmemesi ve depolama artıklarının temizlenmemesi kurumsal ortamlarda ciddi sorunlara yol açar.

1
Teardown Workflow Tasarımı
# Teardown Phase görevleri (VM silinmeden önce çalışır) Task 1: Groovy – Silme Onayı Kontrolü → Prod VM'ler için çift onay mekanizması → Silme tarihi, kullanıcı ve gerekçe log'a yazılır Task 2: AWX – Monitoring-Agent-Kaldir → Zabbix'ten host kaydını sil → Alert kanallarından host'u kaldır Task 3: DNS-Kaydi-Sil (Shell) → nsupdate ile A kaydını kaldır Task 4: HTTP – ServiceNow CMDB Güncelle → CI durumu: "Decommissioned" → Silme tarihi ve onaylayan kullanıcıyı kaydet Task 5: HTTP – Jira/Ticket Kapat → İlgili değişiklik talebini kapat Task 6: Groovy – Maliyet Raporu Kaydet → Instance'ın toplam maliyetini log'a yaz → Departman bütçe raporuna ekle Task 7: E-posta – Decommission Raporu → Yöneticiye ve talep sahibine özet gönder
2
Güvenli Silme — Geri Alma Penceresi
# Üretim VM'leri için yumuşak silme (soft delete) mekanizması # Kullanıcı silme isteği gönderir → VM hemen silinmez # Groovy Task: Soft Delete Uygulaması def instanceId = '<%=instance.id%>' // VM'i durdur (kapatma) // Morpheus API: POST /api/instances/{id}/stop // 72 saat bekleme penceresi (Policy ile yönetilir) // Instance durumu: "Scheduled for Deletion" // 72 saat sonra Teardown workflow tetiklenir // Bu sürede geri alma mümkün: Actions → Cancel Deletion
07

Yaşam Döngüsü Politikaları

Morpheus Lifecycle Policy'leri, VM'lerin zaman içinde ne olacağını otomatik olarak yönetir. Özellikle test ortamlarında onlarca geçici VM'in sonsuza dek çalışmasını önlemek için kritiktir.

1
Instance Expiration Policy
# Administration → Policies → Add Policy → Instance Expiration Politika Adı : Test-Ortami-Yaşam-Süresi Kapsam : Tenant — Test-Ortami Max Yaşam : 30 gün Uyarı Günleri : 7, 3, 1 (gün kala e-posta uyarısı) Süre Dolunca : Sil (veya Durdur — kullanıcı karar versin) # Kullanıcıya verilen seçenekler: Uzatma İzni : Evet (7 güne kadar uzatma, en fazla 2 kez) Onay Gerekli : Tenant Admin onayıyla uzatma # Teardown Workflow: Workflow : Kurumsal-Teardown-Workflow (oluşturduğumuz)
2
Power Scheduling — İş Saatleri Dışında Kapatma
# Administration → Policies → Add Policy → Power Scheduling Politika Adı : Test-Mesai-Saatleri Kapsam : Tenant — Test-Ortami Çalışma Saatleri: Hafta içi : 08:00 – 19:00 (Türkiye saati) Hafta sonu : Kapalı # VM mesai dışında otomatik kapatılır # Mesai başında otomatik başlatılır # Tasarruf: Test ortamı maliyetleri %60 azalır
3
Atıl VM Kapatma Politikası
# Administration → Policies → Add Policy → Utilization Politika Adı : Atıl-VM-Politikası CPU Eşiği : yüzde 5 altında Süre : 14 gün Eylem : Uyarı E-postası Gönder + Sahipten onay iste # Yanıt gelmezse 7 gün sonra durdur
08

ServiceNow Entegrasyonu

ServiceNow, kurumsal ITSM platformlarının en yaygın kullanılanıdır. Morpheus'un ServiceNow entegrasyonu iki yönde çalışır: Morpheus → ServiceNow (ticket açma, CMDB güncelleme) ve ServiceNow → Morpheus (onay akışı, katalog tetikleme).

1
ServiceNow Entegrasyonu Ekleyin
# Administration → Integrations → Add Integration → ServiceNow Adı : ServiceNow-Production URL : https://sirket.service-now.com Kullanıcı : morpheus.integration Şifre : [ServiceNow şifresi] # Cypher'dan: <%=cypher.read('secret/snow-password')%> # Morpheus aşağıdaki ServiceNow nesnelerini otomatik senkronize eder: # - Change Request Types # - CMDB CI Classes # - Approval Groups
2
Otomatik Change Request Açma
# HTTP Task — ServiceNow Change Request URL : https://sirket.service-now.com/api/now/table/change_request Method : POST Header : Authorization: Basic [base64_encoded_credentials] # Body: { "short_description": "Morpheus VM Provisioning: <%=instance.name%>", "description": "Ortam: <%=customOptions.environment%>\nIP: <%=instance.externalIp%>\nTalep Eden: <%=instance.createdByUsername%>", "category": "Infrastructure", "cmdb_ci": "<%=customOptions.cmdb_ci%>", "assignment_group": "Cloud Operations", "state": "1", "type": "Standard" }
3
ServiceNow Onay ile Morpheus Provisioning

Morpheus'un yerleşik ServiceNow onay entegrasyonu ile provisioning talebi ServiceNow'da change request olarak açılır; ServiceNow'daki onay Morpheus'a webhook ile geri döner ve provisioning otomatik başlar.

# Administration → Integrations → ServiceNow → Approval Approval Türü : ServiceNow Change Request Change Type : Normal (üretim) veya Standard (rutin) Onay Grubu : Cloud Ops Change Advisory Board # Akış: # Kullanıcı katalogdan talepte bulunur # Morpheus → ServiceNow Change Request açar # CAB onaylar → ServiceNow webhook → Morpheus # Morpheus provisioning'i başlatır
09

Koşullu Görev Çalıştırma

Morpheus Workflow'da koşullu mantık iki yöntemle uygulanır: Task düzeyinde On Success / On Failure dallanması veya Groovy Script içinde programatik karar verme.

1
On Success / On Failure Dallanması
# Task A çalışır # Başarılı olursa → Task B çalışır # Başarısız olursa → Task C çalışır (hata yönetimi) # Örnek: # Task: Uygulama Sunucusu Kurulumu # On Success: Monitoring-Aktif-Et # On Failure: Slack-Hata-Bildirimi + ServiceNow Incident Aç # Workflow Designer arayüzünde görsel olarak bağlanabilir # (drag-and-drop)
2
Groovy ile Ortama Göre Farklı İşlem
// Groovy Task — Ortama göre farklı playbook tetikle def environment = '<%=customOptions.environment%>' def instanceId = '<%=instance.id%>' def morpheusUrl = 'https://morpheus.sirket.com' def token = cypher.read('secret/morpheus-api-token') String taskName if (environment == 'prod') { taskName = 'AWX-RHEL9-Hardening-Full' } else if (environment == 'test') { taskName = 'AWX-RHEL9-Hardening-Basic' } else { taskName = 'AWX-Minimal-Setup' } morpheus.log("Seçilen Task: ${taskName} — Ortam: ${environment}") // Task'ı Morpheus API üzerinden tetikle def url = new URL("${morpheusUrl}/api/tasks") // ... API çağrısı devam eder
10

Workflow Hata Yönetimi

1
Task Retry ve Timeout
# Her Task için: Timeout : 300 saniye (varsayılan — artırılabilir) Retry Count : 3 (hata sonrası yeniden deneme) Retry Delay : 30 saniye (denemeler arası bekleme) # Özellikle DNS propagasyonu veya agent bağlantısı için # biraz gecikme sonrası retry yararlıdır
2
Workflow Hata Bildirimleri
# Workflow başarısız olduğunda otomatik bildirim # Administration → Monitoring → Alert Rules → Add Kural Adı : Workflow-Hata-Alarmı Tetikleyici : Workflow execution failure Bildirim : E-posta → cloudops@sirket.com : Slack → #cloud-ops-alerts kanalı # Hata detayları: # Operations → Activity → [Başarısız Workflow] # Her Task'ın çıktısı ve hata mesajı ayrı görüntülenir
3
Rollback Stratejisi
# Post-Provision başarısız olursa VM'e ne olsun? # Seçenek 1: VM'i sil (rollback) — Teardown workflow çalıştır # Seçenek 2: VM'i bırak — Manuel müdahale için fırsat ver # Kritik Task'ta hata varsa Groovy ile rollback tetikle: // Rollback Groovy Task def instanceId = '<%=instance.id%>' def token = cypher.read('secret/morpheus-api-token') // Morpheus API ile instance'ı sil def http = new URL("https://morpheus.sirket.com/api/instances/${instanceId}") .openConnection() http.requestMethod = 'DELETE' http.setRequestProperty('Authorization', "Bearer ${token}") morpheus.log("Rollback: Instance ${instanceId} siliniyor")
ESH Bilişim

HPE Morpheus Workflow ve Otomasyon Danışmanlığı

ESH Bilişim, HPE Morpheus Lifecycle Workflow tasarımı, ServiceNow entegrasyonu, Groovy Script otomasyon ve tam decommissioning pipeline'ı konularında danışmanlık verir. Manuel operasyonları sıfıra indirin.

  • Pre-Provision, Post-Provision ve Teardown phase'leri tanımlandı
  • DNS kaydı ekleme/silme Task'ları çalışıyor
  • ServiceNow CMDB entegrasyonu aktif
  • Monitoring agent kurulumu otomatik
  • Slack/e-posta bildirimleri çalışıyor
  • Instance Expiration Policy tanımlandı
  • Power Scheduling aktif (test ortamı)
  • Task timeout ve retry değerleri ayarlandı
  • Hata bildirimleri yapılandırıldı

Kaynaklar

  1. HPE Morpheus, "Tasks and Workflows" — docs.morpheusdata.com/workflows
  2. HPE Morpheus, "Available Task Types" — docs.morpheusdata.com/tasks
  3. HPE Morpheus, "Lifecycle Policies" — docs.morpheusdata.com/policies/expiration
  4. HPE Morpheus, "ServiceNow Integration" — docs.morpheusdata.com/servicenow
  5. ServiceNow, "REST API Explorer" — docs.servicenow.com/rest-api
HPE MorpheusWorkflowOtomasyon LifecycleServiceNowGroovy
↑ Başa Dön