O OpenStack é uma plataforma de código aberto (open source) que usa recursos virtuais agrupados para criar e gerenciar ambientes (IaaS, PaaS e SaaS) em nuvem.
Suas ferramentas são chamadas de “projetos” pela comunidade e lidam com os serviços essenciais de cloud computing: computação, rede, armazenamento, identidade e imagem.
Dentre esses projetos, temos o OpenStack Client (também conhecido como OSC), que traz um conjunto de linhas de comando para controlar diversos projetos do Openstack via API, por exemplo computação (Nova), identidade (Keystone), imagens (Glance), armazenamento de objetos (Swift) e armazenamento em blocos (Cinder) em um único “shell” por meio de uma estrutura de comando uniforme — ou seja, descrever comandos usando a mesma língua, de uma maneira padronizada.
Na prática, quando você é cliente Binario Cloud, consegue fazer o gerenciamento desses atributos através da interface gráfica do nosso sistema operacional (o BCOS), porém há situações e projetos em que pode ser mais estratégico para sua operação manipular o ambiente através das linhas de comando fornecidas pelo OSC. Por exemplo:
- Permitir que o usuário utilize os recursos computacionais de forma mais conveniente para a organização (computação ubíqua e pervasiva);
- Desenvolver suas próprias rotinas de automação;
- Scriptar rotinas operacionais, como ligar e desligar máquinas, criar redes, regras de firewall, etc;
- Esses scripts poderão ser acionados por gatilhos automáticos definidos de acordo com a necessidade de cada cliente.
Verifique nosso glossário para encontrar o que está procurando:
- Como instalar o OpenStack Client usando o PyPI
- Como instalar o OpenStack Client no Debian / Ubuntu / Linux Mint
- Como instalar o OpenStack Client no Fedora / CentOS
- Como fazer testes e contribuir com o OSC usando o PyPI
- Suporte e ajuda para usar o OSC com o PyPI
- Como autenticar e configurar o OSC com o PyPI
- Autenticação com usuário e senha
- Autenticação com credencial de aplicação
Vamos lá.
Como instalar o OpenStack Client usando o PyPI
Você pode usar o OSC a partir do maior repositório de Python, o PyPI. Caso você ainda não tenha instalado o repositório em sua máquina, pode verificar neste artigo um passo a passo rápido.
Com o repositório instalado em sua máquina, basta “fazer um pip” da seguinte linha:
pip3 install pip --upgrade
pip3 install python-openstackclient --upgrade
Como instalar o OpenStack Client no Debian / Ubuntu / Linux Mint
Dê um pip na seguinte linha:
apt-get install python3-openstackclient
Como instalar o OpenStack Client no Fedora / CentOS
Após incluir o repositório do Openstack, instale com o comando
yum install -y python3-openstackclient
Como fazer testes e contribuir com o OSC usando o PyPI
Para testar novas funcionalidades e contribuir com o OpenStack Client, faça suas modificações e faça o pip da seguinte linha:
python setup.py develop
Suporte e ajuda para usar o OSC com o PyPI
Se você precisa de ajuda para usar o OpenStack Client, basta fazer o pip da seguinte linha de comando para exibir todas as opções de ajuda e comandos suportados pelo OSC:
openstack --help
Se precisar de ajuda com um comando específico do OpenStack Client, basta fazer o pip da linha:
openstack help (nome do comando)
Exemplo:
openstack help server create
Como autenticar e configurar o OSC com o PyPI
A autenticação do OSC é configurada por meio de variáveis de ambiente, sendo que o processo de autenticação mais comum é usando usuário e senha.
Nesse processo, o usuário fornece algumas opções de credencial de autenticação. Se um tipo de autenticação não for fornecido (–os-auth-type), as opções de autenticação serão examinadas para determinar se um dos tipos padrão do OSC pode ser usado.
Se nenhuma correspondência for encontrada, o OSC vai relatar um erro e será encerrado.
Você pode definir os seguintes tipos de autenticação para usar o OSC:
- Senha: autenticação de usuário feita através de nome de projeto, nome de usuário e senha. Um domínio opcional também pode ser incluído para adicionar um nível maior de segurança. Este é o tipo mais comum e é o padrão sempre que um nome de usuário é fornecido.
- Token: token que requisita ao plugin Identity uma credencial de acesso para que o usuário possa acessar o projeto.
- Métodos menos utilizados: outros plugins de autenticação, como SAML, Kerberos e OAuth1.0 estão em desenvolvimento e também são compatíveis. Para usá-los, eles devem ser selecionados fornecendo a opção –os-auth-type.
Para seguir, indicamos que você abra o portal BCOS em API Access e pegue as informações por lá.
Clicando em view credentials, você visualizará as seguintes informações (preenchidas):
Mas, se quiser fazer manualmente, pode salvar em seu computador um arquivo de texto com as seguintes linhas para usar antes de executar qualquer comando no terminal:
Autenticação com usuário e senha
Para um usuário local, sua configuração será parecida com esta:
export OS_AUTH_URL=${AUTH_URL-”https://identity.wse.zone/v3/”}
export OS_IDENTITY_API_VERSION=3
export OS_PROJECT_NAME=<project-name>
export OS_PROJECT_DOMAIN_NAME=<project-domain-name>
export OS_USERNAME=<username>
export OS_USER_DOMAIN_NAME=<user-domain-name>
export OS_PASSWORD=<password> # (optional)
Também é possível usar uma linha de comando correspondente àquela, como:
--os-auth-url <url>
--os-identity-api-version 3
--os-project-name <project-name>
--os-project-domain-name <project-domain-name>
--os-username <username>
--os-user-domain-name <user-domain-name>
[--os-password <password>]
Autenticação com credencial de aplicação
A credencial de acesso é um tipo de autenticação que permite maior granularidade na delegação de regras de acesso dos usuários do projeto. Para criar uma credencial de aplicação, se você for cliente Binario Cloud, basta acessar o BCOS e, no menu, clicar em Identidade > Credenciais de Aplicação.
A seguir, clique no botão + Credenciais de Aplicação. A seguinte tela será aberta. Basta preenchê-la de acordo com as orientações disponíveis logo em seguida.
Aqui vão algumas dicas:
- Nome: nome de usuário para acesso ao projeto. Único campo obrigatório.
- Descrição: anotações para facilitar a gestão de acessos no seu projeto.
- Segredo: senha para acesso.
- Data de expiração: data limite até a renovação do acesso ao projeto.
- Horário de expiração: horário na data limite para renovação do acesso ao projeto.
- Papéis: define o tipo de acesso que o usuário terá ao projeto;
- reader: apenas leitura, sem acesso a edição.
- user/member: acesso padrão, com permissão de edição.
- load-balancer member: acesso para edição dos nós de balanceamento de carga.
- Observação: caso o papel não seja definido, o sistema aplicará o papel padrão no projeto como o papel do usuário.
- Access rules: campo para inserir limitações ainda mais granulares. Por exemplo, caso determinado usuário possa editar o ambiente, mas não deve ter permissão de postar instâncias de compute, basta inserir o tipo de serviço neste campo em JSON ou YAML.
Exemplo de regra em JSON para as Access rules em credenciais de aplicação:
[
{"service": "compute",
"method": "POST",
"path": "/v2.1/servers"}
]
Exemplo de regra em YAML para as Access rules em credenciais de aplicação:
- service: compute
method: POST
path: /v2.1/servers
A explicação ampliada sobre esses pontos está logo abaixo das configurações de Credenciais de Aplicação, conforme a imagem:
Com tudo pronto, basta clicar em Criar Credencial de Aplicação.
Outra possibilidade é utilizar usuários federados para realizar seus comandos. Estamos trabalhando para ampliar o leque de possibilidades para este tipo de usuário, porém, caso você esteja usando uma tecnologia voltada para a administração de ambientes com usuário federado, sua linha de código será assim:
export OS_PROJECT_NAME=<project-name>
export OS_PROJECT_DOMAIN_NAME=<project-domain-name>
export OS_AUTH_URL=${AUTH_URL-”https://identity.wse.zone/v3/”}
export OS_IDENTITY_API_VERSION=3
export OS_IDENTITY_PROVIDER=${PROVIDER-"idp.binario.cloud”}
export OS_IDENTITY_PROVIDER_URL=${PROVIDER_URL-”https://idp.binario.cloud/idp/shibboleth”}
export OS_PROTOCOL="saml2"
export OS_AUTH_TYPE="v3samlpassword"
export OS_USERNAME=<username-in-idp>
export OS_PASSWORD=<password-in-idp>
Ou, com uma linha correspondente:
--os-project-name <project-name>
--os-project-domain-name <project-domain-name>
--os-auth-url <url-to-openstack-identity>
--os-identity-api-version 3
--os-auth-type v3samlpassword
--os-username <username-in-idp>
--os-password <password-in-idp>
--os-identity-provider <the-desired-idp-in-keystone>
--os-identity-provider_url <the-desired-idp-url-in-keystone>
--os-protocol saml2
Ao utilizar o OSC via PyPI, basta dar um source no arquivo de autenticação e começar a rodar os códigos.
Observação 1: se uma senha não for fornecida acima (em texto simples), você será solicitado a fornecer uma senha de forma interativa pelo PyPI.
Observação 2: note que o OSC ainda não chama o Identity enquanto um meio de autenticação não é fornecido. Essa chamada é adiada até o último momento, a fim de reduzir o número de consultas desnecessárias ao servidor.
Agora que você já instalou e autenticou o OSC, já pode começar a utilizá-lo para automatizar a gestão do seu ambiente!
Caso tenha alguma dúvida específica, fique à vontade para enviar pra gente através do Help Center do Central (para clientes Binario Cloud) ou através do 0800 8080 790.