Nota

Installare Oracle Linux Automation Manager su Oracle Linux

Introduzione

Oracle Linux Automation Manager è un motore di attività e un'interfaccia utente grafica (GUI) basata sul Web per la pianificazione e l'esecuzione dei playbook di Oracle Linux Automation Engine rispetto agli inventari degli host remoti. Questa suite di strumenti consente agli amministratori di gestire facilmente la propria infrastruttura IT e di completare attività ripetitive in modo noto e prevedibile, evitando comuni problemi di amministrazione basati su manuali.

Oracle Linux Automation Engine è uno strumento per la gestione e l'esecuzione di attività di amministrazione utilizzando un'infrastruttura basata su codice come file di definizione YAML Code (IaC) chiamati playbook. Questi playbook includono attività didattiche come la distribuzione di software, la configurazione dei sistemi e l'orchestrazione di aggiornamenti e aggiornamenti.

Obiettivi

In questo tutorial imparerai come:

Prerequisiti

Distribuisci Oracle Linux

Nota: se è in esecuzione nella propria tenancy, leggere il progetto linux-virt-labs GitHub README.md e completare i prerequisiti prima di distribuire l'ambiente di esercitazione pratica.

  1. Aprire un terminale sul Luna Desktop.

  2. Duplica il progetto linux-virt-labs GitHub.

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
    
  3. Passare alla directory di lavoro.

    cd linux-virt-labs/olam
    
  4. Installare le raccolte richieste.

    ansible-galaxy collection install -r requirements.yml
    
  5. Aggiornare la configurazione dell'istanza Oracle Linux.

    cat << EOF | tee instances.yml > /dev/null
    compute_instances:
      1:
        instance_name: "olam-node"
        type: "control"
    olam_type: none
    EOF
    
  6. Creare un file di inventario.

    cat << EOF | tee hosts > /dev/null
    localhost ansible_connection=local ansible_connection=local ansible_python_interpreter=/usr/bin/python3.6
    EOF
    
  7. Implementa l'ambiente di laboratorio.

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

    L'ambiente di laboratorio gratuito richiede la variabile extra ansible_python_interpreter per localhost perché installa il pacchetto RPM per Oracle Cloud Infrastructure SDK per Python. La posizione per l'installazione di questo pacchetto si trova sotto i moduli Python predefiniti del sistema in base alla versione di Oracle Linux in uso. L'utilizzo di una variabile di inventario evita di influire sulle riproduzioni in esecuzione su host diversi da localhost.

    La forma di distribuzione predefinita utilizza la CPU AMD. È possibile modificare la forma delle istanze passando una nuova definizione di variabile forma sulla riga di comando.

    Ad esempio: -e instance_shape="VM.Standard3.Flex"

    Analogamente, la versione predefinita dell'immagine Oracle Linux utilizza la variabile os_version definita nel file `default_vars.yml. È possibile modificare questo valore passando la versione principale di Oracle Linux dalla riga di comando.

    Ad esempio: -e os_version="9"

    Importante: attendere che il playbook venga eseguito correttamente e raggiungere il task di sospensione. In questa fase del playbook, l'installazione di Oracle Linux è completa e le istanze sono pronte. Nota la riproduzione precedente, che stampa gli indirizzi IP pubblici e privati dei nodi che distribuisce.

Abilitare il repository DNF di Oracle Linux e impostare le regole del firewall

Abilitare i repository yum e le regole firewall necessari prima di installare Oracle Linux Automation Manager.

  1. Aprire un terminale e connettersi tramite ssh al nodo olam-node.

    ssh oracle@<ip_address_of_instance>
    
  2. Installare il repository di 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
    

    Questo comando abilita l'ultimo repository di Oracle Linux Automation Manager come impostazione predefinita per l'installazione dei pacchetti del prodotto.

  3. Aggiungere i servizi HTTP/HTTPS alle regole del firewall.

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

Installare un database PostgreSQL locale

  1. Abilitare il flusso del modulo.

    sudo dnf module reset postgresql
    sudo dnf -y module enable postgresql:16
    
  2. Installare il database.

    sudo dnf -y install postgresql-server
    
  3. Inizializzare il database.

    sudo postgresql-setup --initdb
    
  4. Passare al meccanismo di storage delle password scram-sha-256.

    sudo sed -i "s/#password_encryption.*/password_encryption = scram-sha-256/" /var/lib/pgsql/data/postgresql.conf
    
  5. Abilitare e avviare il database.

    sudo systemctl enable --now postgresql
    
  6. Creare gli account utente del database.

    Importante: per questo ambiente di esercitazione pratica gratuito, utilizzare la password password al prompt. Questa password non è sicura e viene utilizzata solo a scopo dimostrativo in questo ambiente.

    sudo su - postgres -c "createuser -S -P awx"
    
  7. Creare il database.

    sudo su - postgres -c "createdb -O awx awx"
    
  8. Aggiornare il file di autenticazione basata sull'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. Aggiornare l'indirizzo IP del listener del database.

    sudo sed -i "/^#port = 5432/i listen_addresses = '"$(hostname -i)"'" /var/lib/pgsql/data/postgresql.conf
    
  10. Aggiornare i requisiti di memoria del database.

    Questi calcoli utilizzano la memoria totale del sistema in megabyte e sostituiscono i valori predefiniti nel file di configurazione 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. Riavviare il database.

    sudo systemctl restart postgresql
    

Installare e configurare Oracle Linux Automation Manager

  1. Installare il pacchetto Oracle Linux Automation Manager e tutte le dipendenze.

    sudo dnf -y install ol-automation-manager
    
  2. Aggiornare il file di configurazione 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. Aggiungere CLUSTER_HOST_ID a un file di impostazioni personalizzato.

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

    Nota: l'utilizzo di $(hostname -i) non funziona per i sistemi con IPv6 abilitato a causa degli spazi esistenti nell'output. Utilizzare invece il nome host del sistema, che può essere utilizzato con $(hostname -f), o un'altra stringa senza spazi.

  4. Aggiornare le autorizzazioni per il file delle impostazioni personalizzate.

    sudo chown awx.awx /etc/tower/conf.d/olam.py
    sudo chmod 0640 /etc/tower/conf.d/olam.py
    
  5. Aggiungere le impostazioni del database a un file di configurazione personalizzato.

    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. Abilita persistente.

    Oracle Linux 9:

    sudo loginctl enable-linger awx
    

    Questo messaggio viene risolto quando si esegue un sistema headless:

    AVVERTENZA[0000] Il manager cgroupv2 è impostato su systemd ma non è disponibile alcuna sessione utente systemd WARN[0000] Per l'utilizzo di systemd, potrebbe essere necessario eseguire il login utilizzando una sessione utente WARN[0000] In alternativa, è possibile attivare il persistere con: loginctl enable-linger 986 (possibilmente come root) WARN[0000] Falling back to –cgroup-manager=cgroupfs
    AVVERTENZA[0000] Il manager cgroupv2 è impostato su systemd ma non è disponibile alcuna sessione utente systemd WARN[0000] Per l'utilizzo di systemd, potrebbe essere necessario eseguire il login utilizzando una sessione utente WARN[0000] In alternativa, è possibile attivare il persistere con: loginctl enable-linger 986 (possibilmente come root) WARN[0000] Verrà ripristinato il valore di -cgroup-manager=cgroupfs

  2. Estrai l'immagine del contenitore 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. Creare lo schema e l'account utente amministratore di Oracle Linux Automation Manager.

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

    Nota: nell'esempio precedente, admin@example.com è un indirizzo e-mail di esempio dell'utente amministratore.

  4. Immettere e confermare la password per l'utente amministratore.

  5. Uscire dalla shell awx utente.

    exit
    
  6. Genera un certificato SSL per NGINX.

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

    Immettere le informazioni richieste o semplicemente premere il tasto ENTER.

  7. Sostituire la configurazione NGINX predefinita.

    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. Aggiornare il file di configurazione del ricevitore.

    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. Esegue il provisioning di un'istanza e registra gli ambienti di esecuzione.

    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. Avviare il servizio.

    sudo systemctl enable --now ol-automation-manager.service
    
  11. Esegue la disconnessione dal server.

    exit
    

Verifica dell'installazione

  1. Utilizzando la stessa finestra di terminale, configurare un tunnel SSH.

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

    Nota: nell'esempio precedente, <ip_address_of_instance> è il nome host o l'indirizzo IP del sistema su cui è in esecuzione Oracle Linux Automation Manager. Se si utilizza il nome host, l'host deve essere risolvibile.

  2. Aprire un browser Web e immettere l'URL.

    https://localhost:8444
    

    Nota: approvare l'avvertenza di sicurezza in base al browser utilizzato. Per Chrome, fare clic sul pulsante Advanced, quindi sul collegamento Proceed to localhost (unsafe).

  3. Eseguire il login a Oracle Linux Automation Manager con il nome utente admin e la password creata durante l'impostazione.

Passi successivi

Con Oracle Linux Automation Manager installato, puoi iniziare a esplorare l'interfaccia utente Web e le varie funzioni del prodotto per automatizzare la tua infrastruttura. Dai un'occhiata alla nostra formazione aggiuntiva su Oracle Linux Training Station per ampliare le tue conoscenze e ottenere idee.

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.

Per la documentazione del prodotto, visita l'Oracle Help Center.