Observação:

Instalar o Oracle Linux Automation Manager no Oracle Linux

Introdução

O Oracle Linux Automation Manager é um mecanismo de tarefas e uma interface gráfica de usuário (GUI) baseada na Web para programar e executar playbooks do Oracle Linux Automation Engine em inventários de hosts remotos. Esse conjunto de ferramentas permite que os administradores gerenciem facilmente sua infraestrutura de TI e concluam tarefas repetitivas de maneira conhecida e previsível, evitando problemas comuns de administração baseados em manual.

O Oracle Linux Automation Engine é uma ferramenta para gerenciar e executar tarefas de administração usando infraestrutura baseada em código como arquivos de definição YAML de Código (IaC) chamados playbooks. Esses manuais incluem tarefas instrucionais, como implantação de software, configuração de sistemas e orquestração de atualizações e atualizações.

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: "olam-node"
        type: "control"
    olam_type: none
    EOF
    
  6. Crie um arquivo de inventário.

    cat << EOF | tee hosts > /dev/null
    localhost ansible_connection=local ansible_connection=local ansible_python_interpreter=/usr/bin/python3.6
    EOF
    
  7. Implante o ambiente de laboratório.

    ansible-playbook create_instance.yml -i hosts -e "@instances.yml"
    

    O ambiente de laboratório gratuito requer a variável extra ansible_python_interpreter para localhost porque instala o pacote RPM para o Oracle Cloud Infrastructure SDK para Python. O local para instalar este pacote está nos módulos Python padrão do sistema com base na sua versão do Oracle Linux. Usar uma variável de inventário evita impactar as reproduções em execução em hosts diferentes de localhost.

    A forma de implantação padrão usa a CPU AMD. Você pode alterar a forma das instâncias especificando uma nova definição de variável de forma na linha de comando.

    Por exemplo: -e instance_shape="VM.Standard3.Flex"

    Da mesma forma, a versão padrão da imagem do Oracle Linux usa a variável os_version definida no arquivo `default_vars.yml. Você pode modificar esse valor especificando a versão principal do Oracle Linux na linha de comando.

    Por exemplo: -e os_version="9"

    Importante: Aguarde a execução bem-sucedida do playbook e atinja a tarefa de pausa. Neste estágio do playbook, a instalação do Oracle Linux está concluída e as instâncias estão prontas. Observe o jogo anterior, que imprime os endereços IP públicos e privados dos nós que ele implanta.

Ativar o Repositório DNF do Oracle Linux e Definir as Regras de Firewall

Ative os repositórios yum e as regras de firewall necessários antes de instalar o Oracle Linux Automation Manager.

  1. Abra um terminal e conecte-se via ssh ao nó olam-node.

    ssh oracle@<ip_address_of_instance>
    
  2. Instale o repositório do Oracle Linux Automation Manager.

    Oracle Linux 8:

    sudo dnf -y install oraclelinux-automation-manager-release-el8
    

    Oracle Linux 9:

    sudo dnf -y install oraclelinux-automation-manager-release-el9
    

    Esse comando ativa o repositório mais recente do Oracle Linux Automation Manager como um padrão para a instalação dos pacotes do produto.

  3. Adicione os serviços HTTP/HTTPS às regras de firewall.

    sudo firewall-cmd --add-service=https --permanent
    sudo firewall-cmd --reload
    

Instalar um Banco de Dados PostgreSQL Local

  1. Ativar o stream do módulo.

    sudo dnf module reset postgresql
    sudo dnf -y module enable postgresql:16
    
  2. Instale o banco de dados.

    sudo dnf -y install postgresql-server
    
  3. Inicialize o banco de dados.

    sudo postgresql-setup --initdb
    
  4. Alterne o mecanismo de armazenamento de senhas para scram-sha-256.

    sudo sed -i "s/#password_encryption.*/password_encryption = scram-sha-256/" /var/lib/pgsql/data/postgresql.conf
    
  5. Ative e inicie o banco de dados.

    sudo systemctl enable --now postgresql
    
  6. Crie as contas de usuários do banco de dados.

    Importante: neste ambiente de laboratório gratuito, use a senha password no prompt. Essa senha não é segura e só a usamos para fins de demonstração neste ambiente.

    sudo su - postgres -c "createuser -S -P awx"
    
  7. Crie o banco de dados.

    sudo su - postgres -c "createdb -O awx awx"
    
  8. Atualize o arquivo de autenticação baseada em host.

    echo "host  all  all 0.0.0.0/0 scram-sha-256" | sudo tee -a /var/lib/pgsql/data/pg_hba.conf > /dev/null
    
  9. Atualize o endereço IP do listener do banco de dados.

    sudo sed -i "/^#port = 5432/i listen_addresses = '"$(hostname -i)"'" /var/lib/pgsql/data/postgresql.conf
    
  10. Atualize os requisitos de memória do banco de dados.

    Esses cálculos aproveitam a memória total do sistema em megabytes e substituem os valores padrão no arquivo de configuração PostgreSQL.

    export TOTAL_MEMORY="$(free --mega | awk 'FNR == 2 {print $2}')"
    sudo sed -i 's/max_connections = 100/max_connections = 1024/g' /var/lib/pgsql/data/postgresql.conf
    sudo sed -i "/^shared_buffers =/c\shared_buffers = $( echo "($TOTAL_MEMORY*0.3)/1" | bc )" /var/lib/pgsql/data/postgresql.conf
    sudo sed -i "/^#work_mem =/c\work_mem = $( echo "($TOTAL_MEMORY*0.03)/1" | bc )" /var/lib/pgsql/data/postgresql.conf
    sudo sed -i "/^#maintenance_work_mem =/c\maintenance_work_mem = $( echo "($TOTAL_MEMORY*0.04)/1" | bc )MB" /var/lib/pgsql/data/postgresql.conf
    
  11. Reinicie o banco de dados.

    sudo systemctl restart postgresql
    

Instalar e Configurar o Oracle Linux Automation Manager

  1. Instale o pacote do Oracle Linux Automation Manager e quaisquer dependências.

    sudo dnf -y install ol-automation-manager
    
  2. Atualize o arquivo de configuração Redis.

    Oracle Linux 8:

    sudo sed -i '/^# unixsocketperm/a unixsocket /var/run/redis/redis.sock\nunixsocketperm 775' /etc/redis.conf
    

    Oracle Linux 9:

    sudo sed -i '/^# unixsocketperm/a unixsocket /var/run/redis/redis.sock\nunixsocketperm 775' /etc/redis/redis.conf
    
  3. Adicione o CLUSTER_HOST_ID a um arquivo de configurações personalizadas.

    cat << EOF | sudo tee -a /etc/tower/conf.d/olam.py > /dev/null
    CLUSTER_HOST_ID = '$(hostname -i)'
    EOF
    

    Observação: O uso de $(hostname -i) não funciona para sistemas com IPv6 ativado devido a espaços existentes na saída. Em vez disso, use o nome do host do sistema, o que é possível usando $(hostname -f), ou alguma outra string sem espaços.

  4. Atualize permissões no arquivo de configurações personalizadas.

    sudo chown awx.awx /etc/tower/conf.d/olam.py
    sudo chmod 0640 /etc/tower/conf.d/olam.py
    
  5. Adicione definições de banco de dados a um arquivo de configuração personalizado.

    cat << EOF | sudo tee -a /etc/tower/conf.d/olam.py > /dev/null
    
    DATABASES = {
        'default': {
            'ATOMIC_REQUESTS': True,
            'ENGINE': 'awx.main.db.profiled_pg',
            'NAME': 'awx',
            'USER': 'awx',
            'PASSWORD': 'password',
            'HOST': '$(hostname -i)',
            'PORT': '5432',
        }
    }
    EOF
    
  1. Habilite a permanência.

    Oracle Linux 9:

    sudo loginctl enable-linger awx
    

    Isso resolve esta mensagem ao executar em um sistema headless:

    AVISO[0000] O gerenciador cgroupv2 está definido como systemd, mas não há nenhuma sessão de usuário systemd disponível WARN[0000] Para utilizar systemd, pode ser necessário efetuar login usando uma sessão de usuário WARN[0000] Como alternativa, é possível ativar a permanência com: loginctl enable-linger 986 (possivelmente como root) WARN[0000] Voltando a –cgroup-manager=cgroupfs
    AVISO[0000] O gerenciador cgroupv2 está definido como systemd, mas não há nenhuma sessão de usuário systemd disponível WARN[0000] Para utilizar systemd, pode ser necessário efetuar login usando uma sessão de usuário WARN[0000] Como alternativa, é possível ativar a persistência com: loginctl enable-linger 986 (possivelmente como root) WARN[0000] Voltando a –cgroup-manager=cgroupfs

  2. Obtenha a imagem do contêiner do Oracle Linux Automation Manager.

    Oracle Linux 8:

    sudo su -l awx -s /bin/bash
    
    podman system migrate
    
    podman pull container-registry.oracle.com/oracle_linux_automation_manager/olam-ee:2.3-ol8
    

    Oracle Linux 9:

    sudo su -l awx -s /bin/bash
    
    podman system migrate
    
    podman pull container-registry.oracle.com/oracle_linux_automation_manager/olam-ee:2.3-ol9
    
  3. Crie o esquema do Oracle Linux Automation Manager e a conta de usuário administrador.

    awx-manage migrate
    awx-manage createsuperuser --username admin --email admin@example.com
    

    Observação: No exemplo anterior, admin@example.com é um exemplo de endereço de e-mail do usuário administrador.

  4. Informe e confirme a senha para o usuário administrador.

  5. Saia do shell do usuário awx.

    exit
    
  6. Gere um certificado SSL para NGINX.

    sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
    -keyout /etc/tower/tower.key -out /etc/tower/tower.crt
    

    Digite as informações solicitadas ou apenas pressione a tecla ENTER.

  7. Substitua a configuração NGINX padrão.

    cat << EOF | sudo tee /etc/nginx/nginx.conf > /dev/null
    user nginx;
    worker_processes auto;
    error_log /var/log/nginx/error.log;
    pid /run/nginx.pid;
    
    # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
    include /usr/share/nginx/modules/*.conf;
    
    events {
        worker_connections 1024;
    }
    
    http {
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile            on;
        tcp_nopush          on;
        tcp_nodelay         on;
        keepalive_timeout   65;
        types_hash_max_size 2048;
    
        include             /etc/nginx/mime.types;
        default_type        application/octet-stream;
    
        # Load modular configuration files from the /etc/nginx/conf.d directory.
        # See http://nginx.org/en/docs/ngx_core_module.html#include
        # for more information.
        include /etc/nginx/conf.d/*.conf;
    }
    EOF
    
  8. Atualize o arquivo de configuração do Receptor.

    cat << EOF | sudo tee /etc/receptor/receptor.conf > /dev/null
    ---
    - node:
        id: $(hostname -i)
    
    - log-level: debug
    
    - tcp-listener:
        port: 27199
    
    - control-service:
        service: control
        filename: /var/run/receptor/receptor.sock
    
    - work-command:
        worktype: local
        command: /var/lib/ol-automation-manager/venv/awx/bin/ansible-runner
        params: worker
        allowruntimeparams: true
        verifysignature: false
    EOF
    
  9. Provisione uma instância e registre ambientes de execução.

    sudo su -l awx -s /bin/bash
    
    awx-manage provision_instance --hostname=$(hostname -i) --node_type=hybrid
    
    awx-manage register_default_execution_environments
    
    awx-manage register_queue --queuename=default --hostnames=$(hostname -i)
    
    awx-manage register_queue --queuename=controlplane --hostnames=$(hostname -i)
    
    awx-manage create_preload_data
    
    exit
    
  10. Inicie o serviço.

    sudo systemctl enable --now ol-automation-manager.service
    
  11. Desconecta do servidor.

    exit
    

Verifique a Instalação

  1. Usando a mesma janela de terminal, configure um túnel SSH.

    ssh -L 8444:localhost:443 oracle@<ip_address_of_instance>
    

    Observação: No exemplo anterior, <ip_address_of_instance> é o nome do host ou o endereço IP do sistema que executa o Oracle Linux Automation Manager. Se você usar o nome do host, o host deve ser resolvível.

  2. Abra um navegador da Web e insira o URL.

    https://localhost:8444
    

    Observação: aprove o aviso de segurança com base no navegador usado. Para o Chrome, clique no botão Advanced e, em seguida, no link Proceed to localhost (unsafe).

  3. Faça login no Oracle Linux Automation Manager com o NOME DE USUÁRIO admin e a senha criada durante a configuração.

Próximas Etapas

Com o Oracle Linux Automation Manager instalado, você pode começar a explorar a interface do usuário da Web e os vários recursos do produto para ajudar a automatizar sua infraestrutura. Confira nosso treinamento adicional na Estação de Treinamento do Oracle Linux para expandir seu conhecimento e obter ideias.

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.