Configurazione dell'interfaccia CLI

È possibile utilizzare queste configurazioni opzionali per estendere la funzionalità CLI. L'interfaccia CLI supporta l'uso di un file per configurazioni specifiche dell'interfaccia CLI. È possibile effettuare le operazioni riportate di seguito.

  • Specificare un profilo predefinito.
  • Impostare i valori predefiniti per le opzioni di comando in modo da non doverli digitare nella riga di comando.
  • Definire gli alias per i comandi. Ad esempio, utilizzando "ls" come alias per list.
  • Definire gli alias per le opzioni. Ad esempio, usando "--ad" come alias per --availability-domain.
  • Definire le query denominate passate all'opzione --query invece di digitare un'espressione JMESPath nella riga di comando.

L'interfaccia CLI supporta anche l'uso di variabili d'ambiente per specificare le impostazioni predefinite per alcune opzioni. Per ulteriori informazioni, vedere Variabili d'ambiente della CLI.

File di configurazione CLI

La posizione e il nome file predefiniti per il file di configurazione specifico dell'interfaccia CLI sono ~/.oci/oci_cli_rc, ma è possibile utilizzare la variabile di ambiente OCI_CLI_RC_FILE per modificare la posizione in cui l'interfaccia CLI cerca un file di configurazione e i relativi valori predefiniti all'avvio.

È anche possibile specificare in modo esplicito un file di configurazione CLI con l'opzione --cli-rc-file o con l'opzione --defaults-file legacy. Ad esempio:

# Uses the file from ~/.oci/oci_cli_rc 
# or OCI_CLI_RC_FILE environment variable
oci os bucket list
			
# Uses a custom file
oci os bucket list --cli-rc-file path/to/my/cli/rc/file

Per configurare un file oci_cli_rc, eseguire il comando seguente.


oci setup oci-cli-rc --file path/to/target/file

Questo comando crea il file specificato che include esempi di alias di comando predefiniti, alias di parametri e query denominate.

Nota

Se si utilizza Windows, utilizzare la barra rovesciata come separatore di directory nei percorsi anziché la barra.

Specifica di un profilo predefinito

Specificare un profilo predefinito nella sezione OCI_CLI_SETTINGS del file di configurazione dell'interfaccia CLI. L'esempio successivo mostra come specificare un profilo predefinito denominato IAD. L'interfaccia CLI cerca un profilo denominato IAD nel file ~/.oci/config o qualsiasi altro file specificato utilizzando l'opzione --config-file o la variabile di ambiente OCI_CLI_CONFIG_FILE.

[OCI_CLI_SETTINGS]
default_profile=IAD

È anche possibile specificare un profilo predefinito utilizzando l'opzione --profile o impostando la variabile d'ambiente OCI_CLI_PROFILE.

Se è stato specificato un valore di profilo predefinito in più ubicazioni, l'ordine di precedenza è il seguente:

  1. Il valore specificato nell'opzione --profile.
  2. Il valore specificato nella variabile di ambiente OCI_CLI_PROFILE.
  3. Il valore specificato nel campo default_profile nella sezione OCI_CLI_SETTINGS del file di configurazione dell'interfaccia CLI.

Specifica dei valori predefiniti

L'interfaccia CLI supporta l'uso di valori predefiniti in modo da non dover continuare a digitare tutti i valori nella riga di comando. Ad esempio, invece di digitare un valore --compartment-id in ogni comando dell'istanza di avvio o di dover continuare a specificare il valore --namespace quando si utilizzano i comandi dello storage degli oggetti. È possibile specificare queste informazioni in un file di valori predefinito.

I valori predefiniti possono essere applicati a diversi livelli, da generali a specifici:

  • A livello globale, in tutti i comandi CLI.
  • a un determinato servizio, ad esempio Compute o Object Storage.
  • A un gruppo specifico, ad esempio comandi correlati all'esportazione delle immagini.
  • A un comando specifico.

I valori predefiniti vengono trattati in modo gerarchico, con valori specifici con un ordine di precedenza superiore rispetto ai valori generali. Ad esempio, se esiste un valore definito a livello globale per compartment-id e un valore compartment-id specifico definito per il comando compute instance launch, l'interfaccia CLI utilizza il valore per compute instance launch anziché il valore predefinito globale.

Priorità valore comando

Se un valore specificato nella riga di comando esiste anche in --cli-rc-file, il valore specificato nella riga di comando ha priorità. Per un comando con opzioni che assumono più valori, i valori vengono acquisiti interamente dalla riga di comando o da --cli-rc-file. Le 2 fonti non vengono unite.

Sintassi file valori predefiniti

Il file --cli-rc-file può essere diviso in diverse sezioni con uno o più tasti per sezione.

Sezioni

Nell'esempio successivo, il file ha due sezioni, con una chiave in ogni sezione. Per specificare la sezione da utilizzare, utilizzare l'opzione --profile nell'interfaccia CLI.

[DEFAULT]
compartment-id = ocid1.compartment.oc1..<unique_ID_1>
[ANOTHER_SECTION]
compartment-id = ocid1.compartment.oc1..<unique_ID_2>

Chiavi

Le chiavi sono denominate in base alle opzioni della riga di comando, ma non utilizzano un trattino doppio iniziale (--). Ad esempio, la chiave per --image-id è image-id. È possibile specificare chiavi per valori singoli, più valori e flag.

  • Chiavi per valori singoli. L'esempio successivo mostra come specificare i valori chiave a diversi livelli e con un ambito diverso.

    [DEFAULT]
    # Defines a global default for bucket-name
    bucket-name = my-global-default-bucket-name
    
    # Defines a default for bucket-name, which applies to all 'compute' commands
    compute.bucket-name = bucket-name-for-image-import-export
    				
    # Defines a default for bucket-name, which applies to all 'os object' commands (e.g., os object get)
    os.object.bucket-name = bucket-name-for-object-commands
    
    # Defines a default for bucket-name, for the 'os object multipart list' command
    os.object.multipart.list.bucket-name = bucket-name-for-multipart-list
  • Chiavi per valori multipli. Alcune opzioni, ad esempio --include e --exclude nel comando oci os object bulk-upload, possono essere specificate più volte. Ad esempio:

    oci os object bulk-upload -ns my-namespace -bn my-bucket --src-dir my-directory --include *.txt --include *.png

    L'esempio seguente mostra come immettere i valori --include nel file --cli-rc-file

    [DEFAULT]
    os.object.bulk-upload.include =
    			*.txt
    			*.png

    Nell'esempio precedente viene fornito un valore per ogni riga e ogni riga deve essere rientrata sotto la relativa chiave. È possibile utilizzare tabulazioni o spazi e la quantità di rientranza non è importante. È inoltre possibile inserire un valore nella stessa riga della chiave, aggiungere altri valori nelle righe seguenti e utilizzare un'istruzione di percorso per un valore. Ad esempio:

    [DEFAULT]
    os.object.bulk-upload.include = *.pdf
    			*.txt
    			*.png
    			my-subfolder/*.tiff
  • Chiavi per i flag. Alcune opzioni di comando sono flag, ad esempio --force, che utilizza un valore booleano. Per impostare un flag per l'opzione --force, usare il comando seguente.

    os.object.delete.force=true

Specifica degli alias di comando

Specificare le query denominate nella sezione OCI_CLI_COMMAND_ALIASES del file di configurazione dell'interfaccia CLI. Esistono due tipi di alias, alias globali e alias di sequenza dei comandi. L'esempio seguente mostra ogni tipo di alias.

[OCI_CLI_COMMAND_ALIASES]
# This is a global alias that lets you use "ls" instead of "list" for any list command in the CLI.
#
ls = list

# Command examples:
# oci os object ls or oci os compute ls

# This is a command sequence alias that lets you use "oci os object rm" instead of "oci os 
# object delete". 
# <alias> = <dot-separated sequence of groups and sub-groups>.<command or group to alias>
# 
rm = os.object.delete					

# Command example:
# <alias> = rm, <sequence of groups and sub-groups> = os object, <command or group to alias> = delete	 								

Se si desidera definire i valori predefiniti per le opzioni nel file di configurazione dell'interfaccia CLI, è possibile utilizzare i nomi alias definiti. Ad esempio, se si dispone di -ls come alias per --list, è possibile definire un valore predefinito per un dominio di disponibilità quando si elencano le istanze utilizzando il comando seguente.

[DEFAULT]
compute.instance.ls.compartment-id=ocid1.compartment.oc1..<unique_ID>

Specifica degli alias delle opzioni

Specificare gli alias delle opzioni nella sezione OCI_CLI_PARAM_ALIASES del file di configurazione CLI. Gli alias delle opzioni vengono applicati a livello globale. L'esempio seguente mostra alcuni alias per le opzioni di comando.


[OCI_CLI_PARAM_ALIASES]
# Option aliases either start with a double hyphen (--) or are a single hyphen (-) followed by a # single letter. For example: --example-alias, -e
#
--ad = --availability-domain
--dn = --display-name
--egress-rules = --egress-security-rules
--ingress-rules = --ingress-security-rules

Se si desidera definire i valori predefiniti per le opzioni nel file di configurazione dell'interfaccia CLI, è possibile utilizzare i nomi alias definiti. Ad esempio, se si dispone di -ad come alias per --availability-domain, è possibile definire un valore predefinito per un dominio di disponibilità quando si elencano le istanze utilizzando il comando seguente.

[DEFAULT]
compute.instance.list.ad=xyx:PHX-AD-1

Specifica delle query denominate

Se si utilizza il parametro --query per filtrare o manipolare l'output, è possibile definire query denominate anziché utilizzare un'espressione JMESPath nella riga di comando.

Specificare le query denominate nella sezione OCI_CLI_CANNED_QUERIES del file di configurazione dell'interfaccia CLI.

Esempi di query denominate
[OCI_CLI_CANNED_QUERIES]
#  For list results, this gets the ID and display-name of each item in the list. 
#  Note that when the names of attributes have dashes in them they need to be surrounded 
#  with double quotes. This query knows to look for a list because of the [*] syntax 

get_id_and_display_name_from_list=data[*].{id: id, "display-name": "display-name"}
 
get_id_and_display_name_from_single_result=data.{id: id, "display-name": "display-name"}
						
#  Retrieves a comma separated string, for example:
#  ocid1.instance.oc1.phx.xyz....,cli_test_instance_675195,RUNNING
#						
get_id_display_name_and_lifecycle_state_from_single_result_as_csv=data.[id, "display-name", "lifecycle-state"] | join(`,`, @)					
						
#  Retrieves comma separated strings from a list of results
#
get_id_display_name_and_lifecycle_state_from_list_as_csv=data[*].[join(`,`, [id, "display-name", "lifecycle-state"])][]
 
#  Filters where the display name contains some text
#
filter_by_display_name_contains_text=data[?contains("display-name", `your_text_here`)]	
						
#  Filters where the display name contains some text and pull out certain attributes(id and time-created)
#
filter_by_display_name_contains_text_and_get_attributes=data[?contains("display-name", `your_text_here`)].{id: id, timeCreated: "time-created"}
 
#  Get the top 5 results from a list operation
#						
get_top_5_results=data[:5]
 
#  Get the last 2 results from a list operation
#
get_last_2_results=data[-2:]				

È possibile fare riferimento a una di queste query utilizzando la seguente sintassi: query://<query name>.

Ad esempio, per ottenere l'ID e il nome visualizzato da un elenco, eseguire il comando seguente.

oci compute instance list -c $C --query query://get_id_and_display_name_from_list

Abilitazione del completamento automatico

Se è stato utilizzato il programma di installazione dell'interfaccia CLI, non è necessario configurare il completamento automatico in quanto è abilitato automaticamente.

Per abilitare il completamento automatico (completamento della scheda) per un'installazione manuale dell'interfaccia CLI, eseguire il comando seguente.

oci setup autocomplete

Per abilitare il completamento automatico in una sessione per sessione, eseguire il comando seguente.

eval "$(_OCI_COMPLETE=source oci)"
Nota

Supporto per il completamento automatico su Windows

Il completamento automatico in Windows è supportato solo se si utilizza PowerShell. Viene eseguito uno script per abilitare questa funzione. Tuttavia, è necessario modificare il criterio di esecuzione PowerShell in RemoteSigned. Per configurare questo criterio, eseguire il comando seguente nella riga di comando PowerShell.

Set-ExecutionPolicy RemoteSigned

Specifica di un server proxy

Se l'ambiente richiede l'uso di un server proxy per le richieste HTTP in uscita, è possibile specificare l'impostazione proxy utilizzando una variabile d'ambiente.

Per configurare un server proxy, impostare le variabili di ambiente http_proxy, https_proxy, HTTP_PROXY e HTTPS_PROXY sul server proxy corretto nell'ambiente.

Ad esempio, in un ambiente shell Linux o Unix:

export "https_proxy=http://www-proxy-example.com:80"
In PowerShell:
$Env:https_proxy = "http://www-proxy-example.com:80"

Uso delle librerie convalidate in base a FIPS

L'interfaccia CLI può essere configurata per utilizzare librerie convalidate in base a FIPS su Linux. L'interfaccia CLI si basa sull'SDK di Oracle Cloud Infrastructure per Python e sfrutta le librerie di crittografia a livello di sistema operativo.

Configurazione dell'ambiente

  1. Verificare che la versione installata di OpenSSL sia conforme a FIPS. Eseguire il comando riportato di seguito:
    openssl version

    Se "FIPS" non fa parte del nome della versione, eseguire l'aggiornamento di OpenSSL a una versione conforme a FIPS. È possibile scaricare le versioni più recenti di OpenSSL all'indirizzo: https://www.openssl.org/source/

  2. Determinare la posizione della versione conforme a FIPS di libcrypto:
    ls -l /usr/lib64/libcrypto*
  3. Impostare la variabile di ambiente OCI_CLI_FIPS_LIBCRYPTO_FILE sulla posizione di libcrypto:
    export OCI_CLI_FIPS_LIBCRYPTO_FILE=</path/to/libcrypto.x.x.x>

    Se non si desidera eseguire questo comando all'inizio di ogni sessione, è possibile aggiungerlo al file your.bashrc o .bash_profile.

    È possibile confermare che la variabile di ambiente è impostata correttamente con questo comando:

    set | grep OCI_CLI_FIPS_LIBCRYPTO_FILE

È ora possibile procedere al processo di installazione standard descritto in Avvio rapido

Verifica della configurazione

Per verificare che l'interfaccia CLI utilizzi la libreria specificata durante la configurazione dell'interfaccia CLI, eseguire i comandi riportati di seguito in Python. Assicurarsi di eseguire questa operazione nello stesso ambiente utilizzato dall'interfaccia CLI.

import ssl
ssl.FIPS_mode()

Questa operazione deve restituire 1, che indica che SSL utilizza la libreria specificata dalla variabile di ambiente OCI_CLI_FIPS_LIBCRYPTO_FILE.