Cloud Assembly unterstützt die Integration mit Puppet Enterprise, Ansible Open Source und Ansible Tower, wodurch Bereitstellungen für Konfigurationsabweichungen verwaltet werden können.

Puppet-Integration

Zur Integration der Puppet-basierten Konfigurationsverwaltung muss eine gültige Instanz von Puppet Enterprise in einer Public oder Private Cloud mit einer vSphere-Arbeitslast installiert sein. Sie müssen eine Verbindung zwischen diesem externen System und der Cloud Assembly-Instanz erstellen. Anschließend können Sie die Puppet-Konfigurationsverwaltung in Cloud Assembly zur Verfügung stellen, indem Sie sie zu entsprechenden Blueprints hinzufügen.

Der Puppet-Anbieter des Cloud Assembly-Blueprint-Diensts installiert, konfiguriert und führt den Puppet-Agent in einer bereitgestellten Computing-Ressource aus. Der Puppet-Anbieter unterstützt sowohl SSH- als auch WinRM-Verbindungen mit den folgenden Voraussetzungen:

  • SSH-Verbindungen:
    • Zur Ausführung von Befehlen mit NOPASSWD muss als Benutzername ein Superuser oder ein Benutzer mit sudo-Berechtigungen angegeben werden.
    • Deaktivieren Sie requiretty für den angegebenen Benutzer.
    • cURL muss in der Computing-Ressource der Bereitstellung verfügbar sein.
  • WinRM-Verbindungen:
    • PowerShell 2.0 muss in der Computing-Ressource der Bereitstellung verfügbar sein.
    • Konfigurieren Sie die Windows-Vorlage gemäß der Beschreibung in der vRealize Orchestrator-Dokumentation.

Der DevOps-Administrator ist für die Verwaltung der Verbindungen mit einem Puppet Master und für die Anwendung von Puppet-Rollen oder Konfigurationsregeln auf bestimmte Bereitstellungen zuständig. Nach der Bereitstellung werden virtuelle Maschinen, die zur Unterstützung der Konfigurationsverwaltung konfiguriert wurden, beim zugewiesenen Puppet-Master registriert.

Wenn virtuelle Maschinen bereitgestellt werden, können Benutzer einen Puppet-Master als externes System hinzufügen bzw. löschen oder Projekte aktualisieren, die dem Puppet-Master zugewiesen sind. Schließlich können entsprechende Benutzer die Registrierung bereitgestellter virtueller Maschinen mithilfe des Puppet-Masters aufheben, wenn die Maschinen außer Betrieb genommen werden.

Ansible Open Source-Integration

Beim Einrichten einer Ansible-Integration installieren Sie Ansible Open Source gemäß den Installationsanweisungen für Ansible. Weitere Informationen zur Installation finden Sie in der Ansible-Dokumentation.

Ansible aktiviert standardmäßig die Überprüfung von Host-Schlüsseln. Wenn ein Host mit einem anderen Schlüssel in der known_hosts-Datei neu installiert wird, wird eine Fehlermeldung angezeigt. Wenn ein Host nicht in der known_hosts-Datei aufgeführt ist, müssen Sie den Schlüssel beim Start angeben. Mit der folgenden Einstellung in der Datei /etc/ansible/ansible.cfg oder ~/.ansible.cfg können Sie die Hostschlüsselüberprüfung deaktivieren:
[defaults]
host_key_checking = False
localhost_warning = False
 
[paramiko_connection]
record_host_keys = False
 
[ssh_connection]
#ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s
ssh_args = -o UserKnownHostsFile=/dev/null

Um Fehler bei der Überprüfung der Hostschlüssel zu vermeiden, legen Sie host_key_checking und record_host_keys auf „False“ fest und fügen eine zusätzliche Option UserKnownHostsFile=/dev/null hinzu, die in ssh_args festgelegt wird. Wenn die Bestandsliste anfänglich leer ist, warnt Ansible außerdem, dass die Hostliste leer ist. Dies führt dazu, dass die Überprüfung der Playbook-Syntax fehlschlägt.

Im Ansible-Tresor können Sie vertrauliche Informationen, wie z. B. Kennwörter oder Schlüssel, in verschlüsselten Dateien statt in Form von Klartext speichern. Der Tresor ist mit einem Kennwort verschlüsselt. In Cloud Assembly werden Daten von Ansible wie SSH-Kennwörter für Host-Maschinen im Tresor verschlüsselt. Ansible setzt dabei voraus, dass der Pfad zum Tresor-Kennwort festgelegt wurde.

Sie können die Datei ansible.cfg ändern, um den Speicherort der Kennwortdatei anzugeben. Verwenden Sie folgendes Format.

vault_password_file = /path to/file.txt

Außerdem können Sie die Umgebungsvariable ANSIBLE_VAULT_PASSWORD_FILE so festlegen, dass Ansible automatisch nach dem Kennwort sucht. Beispiel: ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txt.

Da die Ansible-Bestandslistendatei von Cloud Assembly verwaltet wird, müssen Sie sicherstellen, dass der Cloud Assembly-Benutzer über rwx-Zugriff auf die Bestandslistendatei verfügt.

cat ~/var/tmp/vmware/provider/user_defined_script/$(ls -t ~/var/tmp/vmware/provider/user_defined_script/ | head -1)/log.txt
Wenn Sie einen Nicht-Root-Benutzer mit Cloud Assembly-Open Source-Integration verwenden möchten, benötigen die Benutzer eine Reihe von Berechtigungen zum Ausführen der Befehle, die vom Open Source-Anbieter von Cloud Assembly verwendet werden. Die folgenden Befehle müssen in der Sudoers-Datei des Benutzers festgelegt werden.
Defaults:myuser !requiretty
Wenn der Benutzer nicht zu einer Admin-Gruppe gehört, für die keine askpass-Anwendung angegeben ist, legen Sie den folgenden Befehl in der Sudoers-Datei des Benutzers fest:
myuser ALL=(ALL) NOPASSWD: ALL

Wenn Sie beim Einrichten der Ansible-Integration auf Fehler oder andere Probleme stoßen, finden Sie weitere Informationen in der log.txt-Datei auf der Ansible-Steuerungsmaschine. Diese Datei befindet sich im Verzeichnis 'cat~/var/tmp/vmware/provider/user_defined_script/$(ls -t ~/var/tmp/vmware/provider/user_defined_script/ | head -1)/'.

Ansible Tower-Integration

Unterstützte Betriebssystemtypen
  • Red Hat Enterprise Linux 8.0 oder höher 64-Bit (x86), unterstützt nur Ansible Tower 3.5 und höher.
  • Red Hat Enterprise Linux 7.4 oder höher 64-Bit (x86).
  • CentOS 7.4 oder höher 64-Bit (x86).

Im Folgenden finden Sie eine Beispiel-Bestandslistendatei, die bei der Installation von Ansible Tower generiert wird. Möglicherweise müssen Sie sie für Cloud Assembly-Integrationszwecke ändern.

[root@cava-env8-dev-001359 ansible-tower-setup-bundle-3.5.2-1.el8]# pwd
 
/root/ansible-tower-install/ansible-tower-setup-bundle-3.5.2-1.el8
 
[root@cava-env8-dev-001359 ansible-tower-setup-bundle-3.5.2-1.el8]# cat inventory
 
[tower]
 
localhost ansible_connection=local
 
 
 
 
[database]
 
 
 
 
[all:vars]
 
admin_password='VMware1!'
 
 
 
 
pg_host=''
 
pg_port=''
 
 
 
 
pg_database='awx'
 
pg_username='awx'
 
pg_password='VMware1!'
 
 
 
 
rabbitmq_port=5672
 
rabbitmq_vhost=tower
 
rabbitmq_username=tower
 
rabbitmq_password='VMware1!'
 
rabbitmq_cookie=cookiemonster
 
 
 
 
# Needs to be true for fqdns and ip addresses
 
rabbitmq_use_long_name=false
 
 
 
 
# Isolated Tower nodes automatically generate an RSA key for authentication;
 
# To disable this behavior, set this value to false
 
# isolated_key_generation=true