Esse projeto é uma reprodução do tutorial de Getting Started, que pode ser encontrado no site do openstack site do Openstack. Que tem como objetivo ensinar a programar utilizando componentes do Openstack.
Escolhi o Shade, que utiliza Python, uma linguagem que tenho mais familiaridade e noções avançadas.
- Shade: A Python-based library developed by OpenStack Infra team. Use it to operate multiple OpenStack clouds.
Para conseguir as credenciais, foi preciso acessar o dashboard Horizon, acessar a aba API Access e baixar o RC File.
Para adicionar as credenciais juntamente com as existentes:
nano ~cloud/.config/openstack/clouds.yaml
clouds:
openstack:
auth:
auth_url: http://192.168.1.33:5000/v3
username: "Hugo"
project_id: e6b2220a057049c4b6fd78444dbd7d71
project_name: "HugoSuperProj"
user_domain_name: "admin_domain"
password: "123456"
region_name: "RegionOne"
interface: "public"
identity_api_version: 3
martim_openstack:
auth:
auth_url: http://192.168.1.33:5000/v3
username: "martim"
project_id: f0263df0ae984f50b74204a1f920fc0f
project_name: "MartimProj"
user_domain_name: "admin_domain"
password: "123456"
region_name: "RegionOne"
interface: "public"
identity_api_version: 3
Para criar uma instância, o programa utiliza essa função que recebe todas as informações necessárias para o Launch e aloca um IP flutuante para a máquina.
def create_instance(image_id, flavor_id, instance_name, key_name, sec_group_name, network_id, ex_userdata):
testing_instance = conn.create_server(wait=True, auto_ip=False,
name=instance_name,
image=image_id,
flavor=flavor_id,
key_name=keypair_name,
security_groups=[sec_group_name],
userdata=ex_userdata,
network=network_id)
f_ip = conn.available_floating_ip()
conn.add_ip_list(testing_instance, [f_ip['floating_ip_address']])
print('The Fractals app will be deployed to http://%s' % f_ip['floating_ip_address'] )
Uma possível melhoria para o programa seria transformar o que foi hardcoded em input de usuários. Isto está parcialmente implementado, só é preciso criar inputs criar a interface com o usuário.