Observação:

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:

Pré-requisitos

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.

  1. Abra um terminal no Luna Desktop.

  2. Clone o projeto linux-virt-labs GitHub.

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
    
  3. Altere para o diretório de trabalho.

    cd linux-virt-labs/olam
    
  4. Instale as coleções necessárias.

    ansible-galaxy collection install -r requirements.yml
    
  5. 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
    
  6. 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 define ansible_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.

  1. Defina uma variável igual ao endereço IP do nó de controle.

    export CONTROL="<ip_address_of_ol-control-node>"
    
  2. Abra um terminal e copie o par de chaves SSH para o nó de controle.

    scp -rp ~/.ssh/id_rsa* oracle@$CONTROL:~/.ssh/
    
  3. Defina as permissões na chave privada SSH.

    ssh oracle@$CONTROL "chmod 600 ~/.ssh/id_rsa"
    
  4. Conecte via SSH ao sistema ol-control-node.

    ssh oracle@$CONTROL
    
  5. 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ório ol8_appstream do Oracle Linux.

  6. 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:

  1. Criar um diretório de projeto

    mkdir ~/ol-automation
    
  2. 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
    
  3. Digite o modo de inserção vi digitando i.

  4. 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
    
  5. Salve e feche o arquivo. Se estiver usando vi, você poderá digitar ESC, :wq! e ENTER.

  6. 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ção ungrouped destina-se a qualquer host que não faça parte de um grupo listado.

  7. Edite o inventário e coloque o host dentro de um grupo chamado development.

    vi inventory
    
  8. Digite o modo de inserção vi digitando i.

  9. Adicione o nome do grupo entre colchetes com o endereço IP abaixo, conforme mostrado no exemplo.

    Exemplo:

    [development]
    130.61.100.96
    
  10. Salve e feche o arquivo. Se estiver usando vi, você poderá digitar ESC, :wq! e ENTER.

  11. 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:

  1. 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.

  2. 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ável ansible_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ável ansible_host.

  3. Adicione o usuário remoto ao arquivo de inventário.

    vi inventory
    
  4. Digite o modo de inserção vi digitando i.

  5. 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 amostra ol-host para o nome do host.

  6. Salve e feche o arquivo. Se estiver usando vi, você poderá fazer isso digitando ESC, :wq! e ENTER.

  7. Execute novamente o módulo ping, usando o nome do host em vez de all.

    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:

  1. Crie um novo arquivo de playbook.

    vi hello.yml
    
  2. Digite o modo de inserção vi digitando i.

  3. 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 linha hosts especificando quais hosts gerenciar. O valor all 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.

  4. Salve e feche o arquivo. Se estiver usando vi, você poderá fazer isso digitando ESC, :wq! e ENTER.

  5. 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.

  6. 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.

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.