chrisipa / cloud-portal Goto Github PK
View Code? Open in Web Editor NEWSelf service web portal for different Cloud platforms like Azure, AWS and VMWare vSphere.
License: MIT License
Self service web portal for different Cloud platforms like Azure, AWS and VMWare vSphere.
License: MIT License
Add tags for:
Refactor application to allow different workflow actions after provisioning. Create initial mechanism for workflow actions.
Ideally Workflow actions (like email delivery) should be created by implementing a generic workflow action interface.
With the current release it is not possible to create a new VM in vsphere with IE 11.0.9600โฆ
Add these variables:
Close firewall port 5985 after provisoning of a Windows Server VM.
- hosts: all
vars:
jenkins_hostname: 192.168.0.1
roles:
- role: geerlingguy.java
become: yes
- role: geerlingguy.jenkins
become: yes
ansible-galaxy --ignore-certs install geerlingguy.jenkins
ansible-playbook -i 192.168.0.1, --extra-vars ansible_ssh_user=my_user --extra-vars ansible_sudo_pass='my_pass' --extra-vars ansible_python_interpreter=/usr/bin/python3 playbook.yml
Add support for different flavours of Linux and Windows:
What: Setting only a public ssh key for provisioning should be possible.
This enables the user to directly use the VM without providing his private key.
How: Provisioning might be done with a randomly created ssh keypair, that will be deleted after successfull provisioning while the users public key will be added to the authorized keys.
Main Reasons: Providing your own private ssh key is unintuitive and potentially unsecure.
sudo locale-gen "de_DE.UTF-8"
sudo update-locale LANG="de_DE.UTF-8"
Set-WinUILanguageOverride -Language de-DE
sudo sed -i 's|'XKBMODEL=.*'|'XKBMODEL=pc105'|g' /etc/default/keyboard
sudo sed -i 's|'XKBLAYOUT=.*'|'XKBLAYOUT=de'|g' /etc/default/keyboard
Set-WinUserLanguageList -LanguageList DE-DE
sudo timedatectl set-timezone Europe/Berlin
Set-TimeZone -Name "W. Europe Standard Time"
Allow an admin to configure scripts before and after user script execution:
Add support for Public Key and Username and Password auth.
Be aware: The user you use for your connection will need a lot of different rights for vcenter.
Example:
provider "vsphere" {
user = "my_username"
password = "my_password"
vsphere_server = "my.server.url"
allow_unverified_ssl = true
version = "~> 1.1"
}
data "vsphere_datacenter" "dc" {
name = "my_datacenter_name"
}
data "vsphere_datastore" "datastore" {
name = "my_datastore_name"
datacenter_id = "${data.vsphere_datacenter.dc.id}"
}
data "vsphere_resource_pool" "pool" {
name = "my_resource_pool"
datacenter_id = "${data.vsphere_datacenter.dc.id}"
}
data "vsphere_network" "network" {
name = "my_network"
datacenter_id = "${data.vsphere_datacenter.dc.id}"
}
data "vsphere_virtual_machine" "template" {
name = "my_template"
datacenter_id = "${data.vsphere_datacenter.dc.id}"
}
resource "vsphere_virtual_machine" "vm" {
name = "my_vm"
resource_pool_id = "${data.vsphere_resource_pool.pool.id}"
datastore_id = "${data.vsphere_datastore.datastore.id}"
num_cpus = 2
memory = 1024
guest_id = "${data.vsphere_virtual_machine.template.guest_id}"
folder = "my/folder/path"
network_interface {
network_id = "${data.vsphere_network.network.id}"
}
disk {
name = "my_vm.vmdk"
size = 20
}
clone {
template_uuid = "${data.vsphere_virtual_machine.template.id}"
}
}
output "datacenter id" {
value = "${data.vsphere_datacenter.dc.id}"
}
output "datastore id" {
value = "${data.vsphere_datastore.datastore.id}"
}
output "resource pool id" {
value = "${data.vsphere_resource_pool.pool.id}"
}
output "network id" {
value = "${data.vsphere_network.network.id}"
}
output "template id" {
value = "${data.vsphere_virtual_machine.template.id}"
}
See also:
To speed up provisioning times provider files (e.g. for AWS) could be downloaded on startup. Later on these files could be used for every terraform provisioning.
getting invalid credential error while making an authentication to the application any idea how to fix it
This way it is clear from which system the provisioning of VMs was started.
use docker-compose.yml
mongodb:
image: mongo:3.4.10
volumes:
- /srv/docker/cloud-portal/data:/data/db
tomcat:
image: chrisipa/cloud-portal:latest
links:
- mongodb
environment:
- TOMCAT_SESSION_TIMEOUT=720
- application.title=Cloud Portal
- application.admin.group=my-admin-group
- encryptor.secret=my-encryptor-secret
- ldap.base.dn=dc=example,dc=com
- ldap.group.attribute=memberOf
- ldap.login.attribute=userPrincipalName
- ldap.password=password
- ldap.principal=cn=m y-admin-user,ou=users,dc=example,dc=com
- ldap.url.string=ldap://192.168.0.62:389
- ldap.user.search.filter=
- [email protected]
- mail.host=smtp.gmail.com
- mail.send=true
- spring.data.mongodb.uri=mongodb://mongodb:27017/cloud-portal
volumes:
- /srv/docker/cloud-portal/logs:/opt/tomcat/log
ports:
- "80:8080"
- "443:8443"
Where [email protected] - Login E-mail,
password - Password
LDAP server - working
{'groups': [('cn=my-admin-group,dc=example,dc=com',
{'cn': ['my-admin-group'],
'description': ['my-admin-group'],
'gidNumber': ['1'],
'objectClass': ['posixGroup', 'top']})],
'orgs': [('ou=Cloud Portal,dc=example,dc=com',
{'description': ['Cloud Portal'],
'objectClass': ['organizationalUnit', 'top'],
'ou': ['Cloud Portal']}),
('ou=users,dc=example,dc=com',
{'description': ['users'],
'objectClass': ['organizationalUnit', 'top'],
'ou': ['users']})],
'users': [('cn=m y-admin-user,ou=users,dc=example,dc=com',
{'cn': ['m y-admin-user'],
'gidNumber': ['1'],
'givenName': ['m'],
'homeDirectory': ['/home/my-admin-user'],
'initials': ['m.y.'],
'loginShell': ['/bin/bash'],
'mail': ['[email protected]'],
'objectClass': ['inetOrgPerson', 'posixAccount', 'top'],
'sn': ['y-admin-user'],
'uid': ['my-admin-user'],
'uidNumber': ['1002'],
'userPassword': ['{SSHA}K7D/LX91DPJnIn+EHTCHsOpo+b0RUipL']})]}
/cloud-portal/login?error
here is my mistake?
Provision log entries get overwritten if a virtual machine is deprovisioned successfully. So the creation log entry will disappear from the list which is bad in terms of auditability.
It would be possible to add a parent or child id to a provisioning log entry.
Use cases should be configured using yml files:
An example for a zero downtime deployment could look like this:
Please write a Java client application which is operating system agnostic. This will make it easier to integrate the client into a Continuous Delivery Pipeline in Jenkins running on Windows or MacOS.
In a corporate environment you often have the following scenario:
Possible solution:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.