Observação:
- Este tutorial está disponível em um ambiente de laboratório gratuito fornecido pela Oracle.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Crie um Playbook com o Oracle Linux Automation Engine
Introdução
O Oracle Linux Automation Engine, um componente do Oracle Linux Automation Manager, é uma ferramenta de automação para implantar software, configurar sistemas e orquestrar tarefas, como atualizações e atualizações, na forma de playbooks. Inicialmente, usando o pacote ansible
, o Oracle Linux Automation Engine agora deriva do pacote de software ansible-core
de código-fonte aberto.
O tutorial a seguir apresenta manuais de escrita com o Oracle Linux Automation Engine.
Objetivos
Neste tutorial, você aprenderá a:
- Instalar o Oracle Linux Automation Engine
- Criar um arquivo de inventário
- Executar um comando ad hoc
- Escreva e execute um manual
Pré-requisitos
-
Um mínimo de dois sistemas Oracle Linux com a seguinte configuração:
- um usuário não raiz com permissões
sudo
- par de chaves ssh para o usuário não raiz
- a capacidade de SSH de um host para outro usando um login SSH sem senha
- um usuário não raiz com permissões
Implante o Oracle Linux
Observação: Se estiver em execução em sua própria tenancy, leia o projeto linux-virt-labs
GitHub README.md e conclua os pré-requisitos antes de implantar o ambiente de laboratório.
-
Abra um terminal no Luna Desktop.
-
Clone o projeto
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Altere para o diretório de trabalho.
cd linux-virt-labs/olam
-
Instale as coleções necessárias.
ansible-galaxy collection install -r requirements.yml
-
Atualize a configuração da instância do Oracle Linux.
cat << EOF | tee instances.yml > /dev/null compute_instances: 1: instance_name: "ol-control-node" type: "control" 2: instance_name: "ol-host" type: "remote" EOF
-
Implante o ambiente de laboratório.
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e "@instances.yml"
O ambiente de laboratório gratuito requer a variável extra
local_python_interpreter
, que defineansible_python_interpreter
para execuções em execução no localhost. Essa variável é necessária porque o ambiente instala o pacote RPM do SDK para Python do Oracle Cloud Infrastructure, localizado nos módulos python3.6.A forma de implantação padrão usa a CPU AMD e o Oracle Linux 8. Para usar uma CPU Intel ou Oracle Linux 9, adicione
-e instance_shape="VM.Standard3.Flex"
ou-e os_version="9"
ao comando de implantação.Importante: Aguarde a execução bem-sucedida do playbook e atinja a tarefa de pausa. Nesta fase do manual, a instalação do Oracle Linux está concluída e as instâncias estão prontas. Tome nota da reprodução anterior, que imprime os endereços IP públicos e privados dos nós que ele implanta e qualquer outra informação de implantação necessária durante a execução do laboratório.
Configurar Nó de Controle do Oracle Linux Automation Engine
O nó de controle é o sistema para executar os playbooks do Oracle Linux Automation Engine. A execução de playbooks requer a instalação do pacote Oracle Linux Automation Engine.
-
Defina uma variável igual ao endereço IP do nó de controle.
export CONTROL="<ip_address_of_ol-control-node>"
-
Abra um terminal e copie o par de chaves SSH para o nó de controle.
scp -rp ~/.ssh/id_rsa* oracle@$CONTROL:~/.ssh/
-
Defina as permissões na chave privada SSH.
ssh oracle@$CONTROL "chmod 600 ~/.ssh/id_rsa"
-
Conecte via SSH ao sistema ol-control-node.
ssh oracle@$CONTROL
-
Instale o pacote e as dependências do Oracle Linux Automation Engine.
sudo dnf install -y ansible-core
O pacote
ansible-core
está disponível no repositóriool8_appstream
do Oracle Linux. -
Teste a instalação do pacote.
ansible --version
A saída exibirá a versão do comando, os detalhes da configuração e a dependência da versão do Python.
Observação: Se a saída mostrar ERRO: o Ansible exige que a codificação da configuração regional seja UTF-8; Nenhuma Detectada., isso indica uma definição de configuração regional incorreta para
ansible
. Corrija o problema definindo estas duas variáveis de ambiente:export LC_ALL="en_US.UTF-8" export LC_CTYPE="en_US.UTF-8"
Criar um Inventário
O arquivo de inventário contém detalhes sobre os hosts que pertencem à sua infraestrutura ou que você gerenciará usando o Oracle Linux Automation Engine. Esses detalhes instruem como se conectar a esses hosts ao executar comandos ad hoc ou playbooks.
Coletar informações de endereço IP ou nome de host
Para criar um inventário para o Oracle Linux Automation Engine, você precisará determinar o endereço IP ou o nome do host resolvível do sistema ou sistemas que você gerencia. As etapas podem variar de acordo com o tipo de sistema e onde você o está implantando.
No ambiente de laboratório gratuito fornecido, precisamos do endereço IP do sistema ol-host
, que localizamos usando a guia Recursos do Luna Lab.
Criar Arquivo de Inventário
O Oracle Linux Automation Engine coloca o inventário padrão em /etc/ansible/hosts
. Ele também permite um arquivo de inventário no nível do projeto. Ao usar um inventário no nível do projeto, você precisará fornecer o caminho para o arquivo de inventário usando a opção -i
ao executar comandos ou playbooks ad hoc.
Em um terminal no nó de controle do Oracle Linux Automation Engine:
-
Criar um diretório de projeto
mkdir ~/ol-automation
-
Mova para o novo diretório e abra um novo arquivo de inventário usando o editor de texto escolhido. Aqui, usaremos
vi
.cd ~/ol-automation
vi inventory
-
Digite o modo de inserção
vi
digitandoi
. -
Adicione o endereço IP público do sistema ol-host fornecido. O arquivo deve conter apenas o endereço IP.
Exemplo:
130.61.100.96
-
Salve e feche o arquivo. Se estiver usando
vi
, você poderá digitarESC
,:wq!
eENTER
. -
Valide o arquivo de inventário.
ansible-inventory -i inventory --list
A saída mostra as informações de estoque.
Exemplo de saída:
{ "_meta": { "hostvars": {} }, "all": { "children": [ "ungrouped" ] }, "ungrouped": { "hosts": [ "130.61.100.96" ] } }
A referência
all
refere-se a cada host no arquivo de inventário, e a seçãoungrouped
destina-se a qualquer host que não faça parte de um grupo listado. -
Edite o inventário e coloque o host dentro de um grupo chamado
development
.vi inventory
-
Digite o modo de inserção
vi
digitandoi
. -
Adicione o nome do grupo entre colchetes com o endereço IP abaixo, conforme mostrado no exemplo.
Exemplo:
[development] 130.61.100.96
-
Salve e feche o arquivo. Se estiver usando
vi
, você poderá digitarESC
,:wq!
eENTER
. -
Execute a etapa de validação novamente para ver o grupo adicionado à saída.
ansible-inventory -i inventory --list
A saída mostra as informações atualizadas com o grupo.
Exemplo de saída:
{ "_meta": { "hostvars": {} }, "all": { "children": [ "development", "ungrouped" ] }, "development": { "hosts": [ "130.61.100.96" ] } }
Executar Comando Ad Hoc
O Oracle Linux Automation Engine tem vários módulos executados uma vez que não exigem a criação de um manual. O mais básico deles é o módulo ping
, que tenta fazer uma conexão SSH com base nos detalhes fornecidos no inventário.
Em um terminal no nó de controle do Oracle Linux Automation Engine:
-
Execute o módulo
ping
.ansible all -i inventory -m ping
A opção
all
instrui o comando a ser executado em todos os hosts listados no arquivo de inventário especificado pela opção-i
. O comando também aceita nomes de host individuais ou grupos.A opção
-m
especifica o módulo a ser executado. -
Aceite a impressão digital da chave ECDSA digitando
yes
no prompt.Com base no seu ambiente, o
ping
pode falhar com a seguinte saída:Exemplo de saída:
130.61.100.96 | UNREACHABLE! => { "changed": false, "msg": "Failed to connect to the host via ssh: Warning: Permanently added '130.61.100.96' (ECDSA) to the list of known hosts.\r\noracle@130.61.100.96: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).", "unreachable": true }
Essa falha ocorre porque a conta de usuário local
oracle
não existe no host que estamos tentando gerenciar. Corrija isso adicionando um usuário remoto válido ao inventário usando a variávelansible_user
. Enquanto estiver no arquivo de inventário, forneça ao host uma referência de nome de host e atribua o endereço IP à variávelansible_host
. -
Adicione o usuário remoto ao arquivo de inventário.
vi inventory
-
Digite o modo de inserção
vi
digitandoi
. -
Adicione as duas variáveis, como mostrado no exemplo.
Exemplo:
[development] ol-host ansible_host=130.61.100.96 ansible_user=opc
O ambiente de laboratório gratuito fornece um sistema pré-configurado para testar o gerenciamento remoto contendo um usuário chamado
opc
.opc
é o usuário padrão criado em uma instância do Oracle Linux no OCI (Oracle Cloud Infrastructure). Podemos usar um nome de amostraol-host
para o nome do host. -
Salve e feche o arquivo. Se estiver usando
vi
, você poderá fazer isso digitandoESC
,:wq!
eENTER
. -
Execute novamente o módulo
ping
, usando o nome do host em vez deall
.ansible ol-host -i inventory -m ping
O comando é executado com êxito com resultados semelhantes aos mostrados.
Exemplo de saída:
ol-host | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" }
Escrever um Playbook
Um playbook é um conjunto de instruções, escritas na sintaxe YAML adequada, executadas em um único host ou em um grupo de hosts. Esses arquivos têm a extensão padrão .yml
ou .yaml
.
Nosso primeiro playbook direcionará hosts all
do arquivo de inventário criado. Este exemplo de manual consiste em uma única tarefa que imprime uma mensagem de depuração.
Em um terminal no nó de controle do Oracle Linux Automation Engine:
-
Crie um novo arquivo de playbook.
vi hello.yml
-
Digite o modo de inserção
vi
digitandoi
. -
Adicione o texto a seguir ao arquivo de playbook.
Exemplo:
--- - hosts: all tasks: - name: Print message debug: msg: Hello from Oracle Linux
Um playbook sempre deve começar com
---
, seguido por uma linhahosts
especificando quais hosts gerenciar. O valorall
indica que o playbook atuará em todos os hosts listados no inventário. Como alternativa, você pode instruir um playbook a executar apenas tarefas em uma lista específica de hosts ou grupos listando cada alvo separado por dois-pontos ou vírgulas. Em seguida, a tarefa usa o módulo de depuração para imprimir uma mensagem.A linha
name
faz com que o Oracle Linux Automation Engine exiba a saída no terminal à medida que ele executa o playbook. -
Salve e feche o arquivo. Se estiver usando
vi
, você poderá fazer isso digitandoESC
,:wq!
eENTER
. -
Execute o playbook hello.yml no inventário.
ansible-playbook -i inventory hello.yml
Em vez de usar a variável
ansible_user
no arquivo de inventário, você pode especificar o nome de usuário remoto na linha de comando usando a opção-u username
.ansible-playbook -i inventory hello.yml -u opc
Se tudo funcionar, o comando será concluído com sucesso e imprimirá a mensagem de depuração.
Exemplo de saída:
PLAY [all] ********************************************************************* TASK [Gathering Facts] ********************************************************* [WARNING]: Platform linux on host ol-host is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change this. See https://docs.ansible.com/ansible/2.9/referen ce_appendices/interpreter_discovery.html for more information. ok: [ol-host] TASK [Print message] *********************************************************** ok: [ol-host] => { "msg": "Hello from Oracle Linux" } PLAY RECAP ********************************************************************* ol-host : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Como o inventário define apenas um único host,
ol-host
, o playbook é executado uma vez. Antes de executar a tarefa listada no playbook, o Oracle Linux Automation Engine executa uma informação de coleta de tarefas padrão chamada fatos. Esta tarefa extrai informações sobre o host remoto, que os playbooks podem utilizar posteriormente para personalizar o comportamento da tarefa por meio de condicionais. -
Execute o comando ad hoc a seguir para imprimir uma lista completa de fatos para o host.
ansible ol-host -i inventory -m setup
Próximas Etapas
Esta mensagem e a saída de fatos confirmam que você executou seu primeiro playbook com sucesso usando o Oracle Linux Automation Engine.
Links Relacionados
- Documentação do Oracle Linux Automation Manager
- Treinamento do Oracle Linux Automation Manager
- Oracle Linux Training Station
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Write a Playbook with Oracle Linux Automation Engine
F52962-04
Copyright ©2021, Oracle and/or its affiliates.