DIABOLIKSS
RehberlerHPE Morpheus ile Terraform ve Ansible Entegrasyonu: Infrastructure as Code ile Tam Otomasyon
How-To Guide · HPE Morpheus · Terraform · Ansible · IaC

HPE Morpheus ile Terraform ve Ansible Entegrasyonu:Infrastructure as Code ile Tam Otomasyon

HPE Morpheus 8.xTerraform 1.8+ · Ansible 2.16+Haziran 2026

HPE Morpheus kendi provisioning motoruna sahip olmakla birlikte, kurumların mevcut Terraform kod tabanlarını ve Ansible Playbook kütüphanelerini koruyarak Morpheus'un self-service, RBAC ve maliyet yönetimi katmanlarından yararlanmasına olanak tanır. Bu hibrit yaklaşım, Morpheus'u bir "IaC orkestratörüne" dönüştürür: Kullanıcı katalogdan talepte bulunur; arka planda Terraform altyapıyı kurar, Ansible konfigürasyonu tamamlar. Bu rehber; Morpheus'ta Terraform App Template oluşturmaktan Ansible Tower/AWX entegrasyonuna, Git tabanlı playbook yönetiminden Morpheus Cypher ile güvenli değişken geçişine kadar eksiksiz bir IaC otomasyon mimarisi kurar.

01

Morpheus IaC Mimarisi

Morpheus, IaC araçlarını iki katmanda kullanabilir: Provisioning katmanı (Terraform — altyapıyı oluştur) ve Konfigürasyon katmanı (Ansible — VM'i yapılandır). Her ikisi de Morpheus Workflow sistemiyle birbirine bağlanır.

🏗️
Terraform
Altyapı provisioning
VM, ağ, DNS, güvenlik grubu
⚙️
Ansible
Konfigürasyon yönetimi
Paket kurulum, servis ayarı
🔄
Morpheus Workflow
Orkestrasyon katmanı
Sırayı ve tetikleyiciyi yönetir
🔐
Cypher
Güvenli değişken deposu
Secret'ları kod dışında tutar
SenaryoYaklaşımNe Zaman?
Morpheus provisioning + Ansible konfigürasyonMorpheus VM → Post-provision Ansible TaskMevcut Morpheus bulut entegrasyonu varsa
Terraform provisioning + Ansible konfigürasyonMorpheus Terraform App → Post-apply AnsibleMevcut Terraform kodu varsa
Yalnızca AnsibleMorpheus Ansible Task veya AWX Job TemplateMevcut VM'lerin konfigürasyon yönetimi
Tam TerraformMorpheus Terraform App TemplateÇok kaynaklı karmaşık altyapı
02

Terraform Entegrasyonu — Temel Kavramlar

Morpheus, Terraform'u üç farklı biçimde destekler: App Blueprint (çok kaynaklı altyapı), Terraform Instance Type (tek VM odaklı) ve doğrudan Task (workflow içinde Terraform plan çalıştırma).

1
Terraform Versiyon Yönetimi

Morpheus, belirtilen Terraform versiyonunu otomatik olarak indirir ve yönetir. Her App Blueprint için farklı versiyon belirtilebilir.

# Administration → Settings → Terraform # Desteklenen versiyon aralığı: 0.12.x — 1.8.x # App Blueprint'te versiyon belirtimi: terraform { required_version = ">= 1.6.0, < 2.0.0" required_providers { vsphere = { source = "hashicorp/vsphere" version = "~> 2.6" } aws = { source = "hashicorp/aws" version = "~> 5.0" } } }
2
Morpheus'a Provider Kimlik Bilgisi Entegrasyonu

Terraform provider'larının ihtiyaç duyduğu kimlik bilgileri (AWS Access Key, Azure Client Secret, vCenter şifresi) Morpheus Cypher veya Cloud kimlik bilgileri aracılığıyla güvenli şekilde iletilir. Kimlik bilgileri Terraform koduna yazılmaz.

# Morpheus'un Terraform ortamına otomatik aktardığı değişkenler # (Cloud "Terraform" olarak eklendiğinde): # AWS için: # TF_VAR_aws_access_key → Morpheus Cloud kimlik bilgisinden # TF_VAR_aws_secret_key → Morpheus Cloud kimlik bilgisinden # TF_VAR_aws_region → Cloud yapılandırmasından # Azure için: # TF_VAR_client_id → Service Principal Client ID # TF_VAR_client_secret → Service Principal Secret # TF_VAR_subscription_id → Azure Subscription ID # TF_VAR_tenant_id → Azure Tenant ID
03

Terraform App Template Oluşturma

Morpheus'ta App Blueprint → Terraform türü seçilerek Terraform kodu doğrudan gömülür veya Git deposundan referans alınır.

1
Library → Blueprints → Add Blueprint → Terraform
# Blueprint temel alanları Adı : AWS-3tier-Webapp Açıklama : AWS üzerinde 3 katmanlı web uygulaması (ALB + EC2 + RDS) Kaynak Tipi : Terraform Terraform V. : 1.7.5 # Kaynak seçimi: # Seçenek 1: Inline (kod doğrudan girilir) # Seçenek 2: Git (depodan çekilir — önerilir)
2
Örnek Terraform Kodu — AWS EC2
# main.tf — Morpheus App Blueprint içinde variable "instance_type" { description = "EC2 instance boyutu" default = "t3.medium" } variable "environment" { description = "Ortam etiketi" default = "test" } # Morpheus, Option Type değerlerini otomatik TF_VAR_ olarak aktarır # Kullanıcı formda "environment" seçerse: # TF_VAR_environment=prod olarak Terraform'a geçer resource "aws_instance" "app" { ami = data.aws_ami.rhel9.id instance_type = var.instance_type tags = { Name = "morpheus-${var.environment}-app" Environment = var.environment ManagedBy = "morpheus" } } output "instance_ip" { value = aws_instance.app.private_ip } output "instance_id" { value = aws_instance.app.id }
3
Terraform Output → Morpheus Instance Bağlama

Terraform output değerleri Morpheus'a döner ve Instance bilgileri olarak kaydedilir. instance_ip çıktısı Morpheus'un IP adresi alanını doldurur; instance_id kaynağı izlemek için kullanılır.

# Morpheus'un otomatik tanıdığı Terraform output adları: # "ip_address" veya "private_ip" → Instance IP # "public_ip" → Dış IP # "hostname" → Hostname # "instance_id" → Kaynak ID # Özel output'lar Morpheus'ta "Outputs" sekmesinde görünür
04

Git Deposu Entegrasyonu

Üretim ortamı için Terraform kodunu Morpheus'a inline gömek yerine Git deposundan çekmek önerilir. Bu yaklaşım, kod versiyon kontrolü, PR incelemesi ve CI/CD pipeline'larıyla uyum sağlar.

1
Git Repository Entegrasyonu Ekleyin
# Administration → Integrations → Add Integration → Git Repository Adı : GitLab-IaC Tür : GitLab (veya GitHub, Gitea, Bitbucket) API URL : https://gitlab.sirket.com Token : glpat-xxxxxxxxxxxx (Personal Access Token) # SSH tabanlı erişim için: # SSH Key: (Morpheus private key — public'ini GitLab'a ekleyin) # Morpheus kaydedilen depoları listeleyebilir ve # App Blueprint'e bağlayabilirsiniz
2
App Blueprint'i Git'e Bağlayın
# App Blueprint → Source → Git Repository Depo : GitLab-IaC Branch : main (veya release/1.0) Yol : terraform/aws-3tier/ (monorepo yapısında) # Her provisioning'de Morpheus en güncel kodu çeker # Branch/tag belirterek versiyon sabitleme mümkün: # Branch: refs/tags/v1.2.0
3
Terraform Modules — Git Modül Referansı
# Morpheus'tan çekilen Terraform kodu içinde modül referansı module "vpc" { source = "git::https://gitlab.sirket.com/infra/tf-modules.git//vpc?ref=v2.1.0" cidr_block = "10.0.0.0/16" name = "morpheus-managed" } # Morpheus, Terraform init sırasında modülleri otomatik indirir # Private modüller için Git token Cypher'da saklanmalı
05

Terraform State Yönetimi

Morpheus, Terraform state'ini varsayılan olarak kendi veritabanında saklar. Kurumsal ortamlarda harici backend (S3, Azure Blob, Terraform Cloud) kullanımı önerilir.

1
Morpheus Dahili State (Varsayılan)
# Morpheus, state dosyasını kendi veritabanında şifreli saklar # App → Details → State sekmesinde Terraform state görüntülenebilir # State'i indirmek için: App → Actions → Download State # Morpheus state konumu (sunucuda): # /var/opt/morpheus/morpheus-ui/terraform/states/ # Avantaj: Ek yapılandırma gerektirmez # Dezavantaj: Morpheus dışından erişilmez, DR senaryolarında dikkat
2
S3 Backend ile Harici State
# backend.tf — App Blueprint'e ekleyin terraform { backend "s3" { bucket = "sirket-terraform-state" key = "morpheus/${var.environment}/terraform.tfstate" region = "eu-central-1" encrypt = true dynamodb_table = "terraform-state-lock" } } # S3 kimlik bilgileri için Morpheus Cypher kullanın: # cypher/secret/aws-state-access-key → TF_VAR olarak iletilir
⚠️
State kilitleme zorunlu: Çok kullanıcılı Morpheus ortamında aynı anda iki provisioning işlemi aynı state'e yazmaya çalışabilir. S3 backend kullanıyorsanız DynamoDB tabanlı state kilitleme zorunludur. Morpheus dahili state'de bu sorun yoktur — Morpheus işlemleri sıraya alır.
06

Ansible Entegrasyonu — AWX/Tower

Morpheus, Ansible'ı iki yöntemle çalıştırır: SSH üzerinden doğrudan Ansible çalıştırma (Morpheus Appliance üzerinden) veya Ansible Tower/AWX entegrasyonu (kurumsal AWX API'si aracılığıyla). Üretim ortamları için AWX/Tower entegrasyonu önerilir.

1
Ansible Tower/AWX Entegrasyonu Ekleyin
# Administration → Integrations → Add Integration → Ansible Tower Adı : AWX-Production URL : https://awx.sirket.com Kullanıcı : morpheus-api-user Şifre : [AWX şifresi] # veya API Token kullanın Token : [AWX OAuth Token] # önerilir — şifreden daha güvenli # AWX'te Morpheus için ayrı kullanıcı oluşturun # Rol: Job Template Execute (çalıştırabilir, değiştiremez)
2
AWX Job Template'lerini Senkronize Edin

Entegrasyon eklendikten sonra Morpheus, AWX'teki Job Template'leri otomatik olarak listeler. Bu Job Template'ler Morpheus Task olarak kullanılabilir hâle gelir.

# AWX Job Template örnekleri (Morpheus'ta görünecekler) Hardening-RHEL9 → RHEL 9 güvenlik sertleştirme Install-App-Server → Uygulama sunucusu kurulumu Configure-Monitoring → Zabbix agent kurulumu ve yapılandırma DNS-Register → DNS A kaydı oluşturma CMDB-Update → ServiceNow CMDB kaydı güncelleme
3
Morpheus'ta Ansible Task Oluşturun (Doğrudan Çalıştırma)

AWX olmadan doğrudan Ansible çalıştırmak için Library → Automation → Tasks → Add Task → Ansible Playbook:

# Ansible Task yapılandırması (AWX olmadan) Task Adı : RHEL9-Hardening Tür : Ansible Playbook Depo : GitLab-IaC (önceden eklenen Git entegrasyonu) Playbook : ansible/hardening/rhel9-cis.yml Inventory : Morpheus otomatik (provisioning edilen host) User : root (veya sudo yetkili kullanıcı) # Extra Variables (Morpheus değişkenleri kullanılabilir): extra_vars: morpheus_host_ip: "<%=instance.externalIp%>" environment: "<%=customOptions.environment%>" customer_name: "<%=tenant.name%>"
07

Ansible Task ve Playbook Çalıştırma

1
Morpheus Değişkenlerini Ansible'a Aktarma
# Morpheus'un Ansible'a otomatik geçirdiği değişkenler: morpheus_host_ip # VM IP adresi morpheus_host_name # VM hostname morpheus_instance_name # Instance adı morpheus_tenant_name # Tenant adı morpheus_custom_option.* # Option Type değerleri # Ansible playbook içinde kullanım: - name: "Uygulama sunucusu kurulumu" hosts: all vars: app_env: "{{ morpheus_custom_option_environment }}" instance_name: "{{ morpheus_instance_name }}" tasks: - name: "Ortama göre konfigürasyon dosyası oluştur" template: src: "app.conf.j2" dest: "/etc/myapp/app.conf"
2
AWX Job Template'i Morpheus Task Olarak Çalıştırma
# Library → Automation → Tasks → Add Task → Ansible Tower Job Task Adı : AWX – RHEL9 Hardening Tür : Ansible Tower Job Entegrasyon : AWX-Production Job Template : Hardening-RHEL9 # Extra Variables (JSON formatında) { "morpheus_ip": "<%=instance.externalIp%>", "env": "<%=customOptions.environment%>", "ticket_id": "<%=customOptions.ticketId%>" } # AWX bu değişkenleri playbook'a geçirir # Sonuç: AWX Job ID ve çalıştırma günlüğü Morpheus'a döner
3
Manuel Ansible Çalıştırma — Mevcut VM'lerde

Provisioning akışı dışında, mevcut bir Morpheus Instance üzerinde manuel Ansible çalıştırmak için:

# Provisioning → Instances → [VM] → Actions → Run Task Görev : Seçilen Ansible Task Uygula : Bu instance # Veya Morpheus CLI ile: morpheus tasks run "RHEL9-Hardening" --instance nx-app-001
08

Morpheus Cypher ile Güvenli Değişkenler

Morpheus Cypher, HashiCorp Vault benzeri yerleşik bir anahtar-değer deposudur. Terraform ve Ansible'ın ihtiyaç duyduğu secret'lar (şifreler, API anahtarları, sertifikalar) Cypher'da şifreli saklanır ve görev çalışma zamanında alınır.

1
Cypher'a Secret Ekleyin
# Tools → Cypher → + Add Cypher # Cypher yolu örnekleri: secret/db-root-password → Veritabanı root şifresi secret/aws-state-access-key → Terraform state S3 access key secret/ansible-vault-password → Ansible Vault şifresi password/16/admin-pass → 16 karakterlik otomatik şifre üret key/rsa-4096/deploy-key → RSA anahtar çifti oluştur # Morpheus API ile Cypher okuma: GET /api/cypher/v1/secret/db-root-password Authorization: Bearer [TOKEN]
2
Cypher Değerlerini Terraform'a Aktarma
# App Blueprint Terraform Variables bölümünde: Variable Adı : db_password Değer : <%=cypher.read('secret/db-root-password')%> Gizli mi : Evet (log'larda görünmez) # Terraform kodu: variable "db_password" { sensitive = true } resource "aws_db_instance" "main" { password = var.db_password } # Bu sayede şifre ne Terraform kodunda ne de Morpheus loglarında görünür
3
Ansible Vault ile Cypher Entegrasyonu
# Ansible Task Extra Variables bölümünde Cypher kullanımı: { "vault_password": "<%=cypher.read('secret/ansible-vault-password')%>", "db_pass": "<%=cypher.read('secret/db-root-password')%>" } # Ansible Playbook'ta: # vars_files ile Vault şifreli dosyayı okuyun # Morpheus Cypher şifreyi runtime'da iletir
09

Tam Otomasyon Pipeline: Terraform + Ansible

İki aracı bir araya getiren örnek bir pipeline: Kullanıcı katalogdan "3 Katmanlı Web Uygulaması" talep eder; Morpheus önce Terraform ile AWS altyapısını kurar, sonra Ansible ile uygulamayı yapılandırır.

# Provisioning Workflow — Tam Pipeline # Library → Automation → Workflows → Add Workflow # Adım 1 — Pre-Provision Task: ServiceNow Change Request Aç (Webhook) # Adım 2 — Provision App Blueprint: AWS-3tier-Webapp (Terraform) → ALB oluşturulur → EC2 instance'ları oluşturulur (web x2, app x2) → RDS PostgreSQL oluşturulur → Route53 DNS kaydı oluşturulur # Adım 3 — Post-Provision (Terraform apply sonrası) Task 1: AWX – RHEL9 Hardening (tüm EC2'lara uygulanır) Task 2: AWX – Install-App-Server (app EC2'larına uygulanır) Task 3: AWX – Configure-Monitoring (tüm EC2'lara Zabbix agent) Task 4: E-posta bildirimi → talep sahibine # Adım 4 — Teardown (VM silindiğinde) Task: Route53 DNS kaydını sil Task: ServiceNow Change Request kapat Task: Maliyet raporunu kaydet
💡
Paralel görev çalıştırma: Morpheus Workflow'da görevler varsayılan olarak sıralı çalışır. Bağımsız görevleri paralel çalıştırmak için aynı Phase'e ekleyin — Morpheus bunları eş zamanlı tetikler. Örneğin 3 EC2'ya aynı anda Ansible çalıştırarak toplam süreyi kısaltabilirsiniz.
10

Sorun Giderme ve En İyi Uygulamalar

BelirtiAraçOlası NedenÇözüm
terraform init başarısızTerraformProvider indirme ağ sorunuMorpheus → internet erişimi veya özel Terraform registry
State kilitliTerraformBaşarısız önceki çalıştırmaDynamoDB'den kilidi manuel kaldırın: terraform force-unlock
AWX job başlamıyorAnsibleToken süresi dolmuşAWX'te token yenile, Morpheus entegrasyonunu güncelle
Playbook SSH bağlanamıyorAnsibleSSH key yanlış veya agent kurulamadıMorpheus SSH Keypair → Instance'a atanmış mı kontrol edin
Cypher değeri boş geliyorCypherYanlış Cypher yolu veya izin sorunucypher/v1/secret/[path] API'yi doğrudan test edin

En İyi Uygulamalar

  • Terraform kodunu Git'te tutun; inline kodu yalnızca prototip için kullanın
  • Tüm secret'ları Cypher'da saklayın — Terraform variable veya Ansible extra_var olarak asla açık metin kullanmayın
  • Terraform modülleri için versiyon sabitleyin (ref=v1.2.0)
  • AWX Job Template'leri "Ask at Launch" (izin ver) modunda tutun; Morpheus değişkenleri dinamik iletebilsin
  • State backend için S3 + DynamoDB kullanın; Morpheus dahili state'i yalnızca dev/test için uygundur
  • Teardown workflow'u provisioning workflow kadar özenle yazın — kaynak sızıntısını önler
ESH Bilişim

HPE Morpheus IaC Otomasyon Danışmanlığı

ESH Bilişim, Morpheus + Terraform + Ansible pipeline tasarımı, Git entegrasyonu, AWX entegrasyonu ve Cypher tabanlı secret yönetimi konularında danışmanlık verir. IaC olgunluk seviyenizi hızla yükseltin.

Kaynaklar

  1. HPE Morpheus, "Terraform App Blueprints" — docs.morpheusdata.com/terraform
  2. HPE Morpheus, "Ansible Integration" — docs.morpheusdata.com/ansible
  3. HPE Morpheus, "Cypher" — docs.morpheusdata.com/cypher
  4. HashiCorp, "Terraform Backend Configuration" — developer.hashicorp.com/terraform/backends/s3
  5. Ansible, "AWX/Tower API Guide" — docs.ansible.com/automation-controller/api
HPE MorpheusTerraformAnsible IaCAWXCypherGitOps
↑ Başa Dön