Configuration de l'interface de ligne de commande

Vous pouvez utiliser les configurations facultatives suivantes pour étendre les fonctionnalités de l'interface de ligne de commande (CLI). La CLI prend en charge l'utilisation d'un fichier pour les configurations qui lui sont propres. Vous pouvez :

  • indiquer un profil par défaut,
  • définir des valeurs par défaut pour les options de commande afin de ne pas avoir à les saisir dans la ligne de commande,
  • définir des alias pour les commandes (par exemple, utiliser "ls" comme alias pour list),
  • définir des alias pour les options (par exemple, utiliser "--ad" comme alias pour --availability-domain),
  • définir des requêtes nommées qui sont transmises à l'option --query au lieu de saisir une expression JMESPath sur la ligne de commande.

L'interface de ligne de commande prend également en charge l'utilisation de variables d'environnement pour spécifier les valeurs par défaut de certaines options. Pour plus d'informations, reportez-vous à Variables d'environnement de l'interface de ligne de commande.

Fichier de configuration de l'interface de ligne de commande

L'emplacement par défaut et le nom du fichier de configuration propre à l'interface de ligne commande sont ~/.oci/oci_cli_rc, mais vous pouvez utiliser la variable d'environnement OCI_CLI_RC_FILE pour modifier l'emplacement où l'interface de ligne de commande doit rechercher un fichier de configuration et ses valeurs par défaut au démarrage.

Vous pouvez également spécifier explicitement un fichier de configuration d'interface de ligne de commande à l'aide de l'option --cli-rc-file ou de l'option héritée --defaults-file. Par exemple :

# 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

Pour configurer un fichier oci_cli_rc, exécutez la commande suivante.


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

Cette commande crée le fichier indiqué, qui inclut des exemples d'alias de paramètre, de requête nommée et d'alias de commande par défaut.

Remarque

Sous Windows, vous devez utiliser une barre oblique inverse comme séparateur de répertoires dans les noms de chemin au lieu d'une barre oblique.

Spécification d'un profil par défaut

Spécifiez un profil par défaut dans la section OCI_CLI_SETTINGS du fichier de configuration de l'interface de ligne de commande. L'exemple suivant montre comment spécifier un profil par défaut nommé IAD. L'interface de ligne de commande recherche un profil nommé IAD dans votre fichier ~/.oci/config ou dans tout fichier que vous indiquez à l'aide de l'option --config-file ou de la variable d'environnement OCI_CLI_CONFIG_FILE.

[OCI_CLI_SETTINGS]
default_profile=IAD

Vous pouvez également spécifier un profil par défaut en utilisant l'option --profile ou en définissant la variable d'environnement OCI_CLI_PROFILE.

Si une valeur de profil par défaut a été indiquée dans plusieurs emplacements, l'ordre de priorité est le suivant :

  1. Valeur indiquée dans l'option --profile.
  2. Valeur indiquée dans la variable d'environnement OCI_CLI_PROFILE.
  3. Valeur indiquée dans le champ default_profile de la section OCI_CLI_SETTINGS du fichier de configuration de la CLI.

Spécification de valeurs par défaut

L'interface de ligne de commande prend en charge les valeurs par défaut. Vous n'avez pas besoin de ressaisir chaque valeur dans la ligne de commande. Par exemple, au lieu de saisir une valeur --compartment-id dans chaque commande de lancement d'instance ou d'indiquer la valeur --namespace lors de l'utilisation de commandes Object Storage, Vous pouvez renseigner ces informations dans un fichier de valeurs par défaut.

Les valeurs par défaut peuvent être appliquées à différents niveaux, du plus général au plus spécifique :

  • Globalement, pour toutes les commandes de la CLI.
  • Pour un service particulier, comme Compute ou Object Storage.
  • Pour un groupe spécifique, comme des commandes relatives à l'export d'images.
  • Pour une commande spécifique.

Les valeurs par défaut sont traitées de façon hiérarchique, les valeurs spécifiques ayant un ordre de priorité plus élevé que les valeurs générales. Par exemple, s'il existe une valeur définie globalement pour compartment-id, mais qu'une valeur compartment-id spécifique est définie pour la commande compute instance launch, l'interface de ligne de commande utilise la valeur de compute instance launch au lieu de la valeur globale par défaut.

Priorité des valeurs de commande

Si une valeur indiquée sur la ligne de commande existe aussi dans --cli-rc-file, la valeur de la ligne de commande est prioritaire. Pour une commande avec des options qui incluent plusieurs valeurs, ces dernières sont entièrement issues de la ligne de commande ou de --cli-rc-file. Les 2 sources ne sont pas fusionnées.

Syntaxe du fichier de valeurs par défaut

Le fichier --cli-rc-file peut être divisé en plusieurs sections contenant des clés.

Sections

Dans l'exemple suivant, le fichier comporte deux sections, avec une clé dans chacune d'elles. Pour spécifier la section à utiliser, utilisez l'option --profile dans la CLI.

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

Clés

Les clés sont nommées en fonction des options de la ligne de commande, mais ne commencent pas par un tiret double (--). Par exemple, la clé correspondant à --image-id est image-id. Vous pouvez indiquer des clés pour des valeurs uniques, des valeurs multiples et des indicateurs.

  • Clés pour les valeurs uniques. L'exemple suivant montre comment indiquer des valeurs de clé à différents niveaux et avec une portée différente.

    [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
  • Clés pour les valeurs multiples. Certaines options, comme --include et --exclude dans la commande oci os object bulk-upload, peuvent être indiquées plusieurs fois. Par exemple :

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

    L'exemple suivant montre comment saisir les valeurs --include dans le fichier --cli-rc-file.

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

    Dans l'exemple précédent, une valeur est donnée pour chaque ligne et chaque ligne est mise en retrait sous sa clé. Vous pouvez utiliser des tabulations ou des espaces. L'amplitude de la mise en retrait n'a pas d'importance. Vous pouvez également placer une valeur sur la même ligne que la clé, ajouter d'autres valeurs sur les lignes suivantes et utiliser une instruction de chemin pour une valeur. Par exemple :

    [DEFAULT]
    os.object.bulk-upload.include = *.pdf
    			*.txt
    			*.png
    			my-subfolder/*.tiff
  • Clés pour les indicateurs. Certaines options de commande sont des indicateurs, comme --force, qui utilise une valeur booléenne. Afin de définir un indicateur pour l'option --force, utilisez la commande suivante.

    os.object.delete.force=true

Spécification d'alias de commande

Spécifiez des requêtes nommées dans la section OCI_CLI_COMMAND_ALIASES du fichier de configuration de la CLI. Il existe deux types d'alias : les alias globaux et les alias de séquence de commandes. L'exemple suivant illustre chaque type d'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	 								

Si vous voulez définir des valeurs par défaut pour les options dans le fichier de configuration de la CLI, vous pouvez utiliser les noms d'alias que vous avez définis. Par exemple, si vous avez -ls comme alias pour --list, vous pouvez définir une valeur par défaut pour un domaine de disponibilité lorsque vous répertoriez les instances à l'aide de la commande suivante.

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

Spécification d'alias d'option

Spécifiez des alias d'option dans la section OCI_CLI_PARAM_ALIASES du fichier de configuration de la CLI. Les alias d'option sont appliqués de façon globale. L'exemple suivant indique des alias pour les options de commande.


[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

Si vous voulez définir des valeurs par défaut pour les options dans le fichier de configuration de la CLI, vous pouvez utiliser les noms d'alias que vous avez définis. Par exemple, si vous avez -ad comme alias pour --availability-domain, vous pouvez définir une valeur par défaut pour un domaine de disponibilité lorsque vous répertoriez les instances à l'aide de la commande suivante.

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

Spécification de requêtes nommées

Si vous utilisez le paramètre --query pour filtrer ou manipuler la sortie, vous pouvez définir des requêtes nommées au lieu d'utiliser une expression JMESPath sur la ligne de commande.

Spécifiez des requêtes nommées dans la section OCI_CLI_CANNED_QUERIES du fichier de configuration de la CLI.

Exemples de requête nommée
[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:]				

Vous pouvez référencer ces requêtes en utilisant la syntaxe suivante : query://<query name>.

Par exemple, pour obtenir l'ID et le nom d'affichage à partir d'une liste, exécutez la commande suivante.

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

Activation de l'écriture automatique

Si vous avez utilisé le programme d'installation de la CLI, vous n'avez pas besoin de configurer l'écriture automatique car elle est activée automatiquement.

Afin d'activer l'écriture automatique (saisie semi-automatique par tabulation) pour une installation manuelle de la CLI, exécutez la commande suivante.

oci setup autocomplete

Pour activer l'écriture automatique session par session, exécutez la commande suivante.

eval "$(_OCI_COMPLETE=source oci)"
Remarque

Prise en charge de l'écriture automatique sous Windows

L'écriture automatique sous Windows n'est prise en charge que si vous utilisez PowerShell. Un script est exécuté pour activer cette fonctionnalité. Toutefois, vous devez remplacer la stratégie d'exécution PowerShell par RemoteSigned. Pour configurer cette stratégie, exécutez la commande suivante sur la ligne de commande PowerShell.

Set-ExecutionPolicy RemoteSigned

Spécification d'un serveur proxy

Si votre environnement requiert que vous utilisiez un serveur proxy pour les demandes HTTP sortantes, vous pouvez spécifier le paramètre de proxy à l'aide d'une variable d'environnement.

Pour configurer un serveur proxy, définissez les variables d'environnement http_proxy, https_proxy, HTTP_PROXY et HTTPS_PROXY sur le serveur proxy approprié dans votre environnement.

Par exemple, dans un environnement shell Linux ou Unix, exécutez la commande suivante :

export "https_proxy=http://www-proxy-example.com:80"
Dans PowerShell, exécutez la commande suivante :
$Env:https_proxy = "http://www-proxy-example.com:80"

Utilisation des bibliothèques validées par FIPS

La CLI peut être configurée de sorte à utiliser des bibliothèques validées par FIPS sous Linux. Elle repose sur le kit SDK Oracle Cloud Infrastructure pour Python et tire parti des bibliothèques cryptographiques au niveau du système d'exploitation.

Configuration de l'environnement

  1. Vérifiez que la version installée d'OpenSSL est conforme à FIPS. Exécutez la commande suivante :
    openssl version

    Si le nom de la version ne contient pas "fips", vous devez mettre à niveau OpenSSL vers une version conforme à FIPS. Vous pouvez télécharger les dernières versions d'OpenSSL à l'adresse https://www.openssl.org/source/

  2. Déterminez l'emplacement de la version compatible FIPS de libcrypto :
    ls -l /usr/lib64/libcrypto*
  3. Définissez la variable d'environnement OCI_CLI_FIPS_LIBCRYPTO_FILE sur l'emplacement de libcrypto :
    export OCI_CLI_FIPS_LIBCRYPTO_FILE=</path/to/libcrypto.x.x.x>

    Si vous ne souhaitez pas exécuter cette commande au démarrage de chaque session, vous pouvez l'ajouter au fichier .bashrc ou .bash_profile.

    Vous pouvez vérifier que la variable d'environnement est correctement définie à l'aide de cette commande :

    set | grep OCI_CLI_FIPS_LIBCRYPTO_FILE

Vous pouvez maintenant exécuter le processus d'installation standard décrit dans Démarrage rapide.

Vérification de la configuration

Pour vérifier que l'interface de ligne de commande utilise la bibliothèque que vous avez spécifiée lors de la configuration de l'interface de ligne de commande, exécutez les commandes ci-dessous dans Python. Veillez à effectuer cette opération dans le même environnement que celui utilisé par la CLI.

import ssl
ssl.FIPS_mode()

La valeur renvoyée doit être 1, ce qui indique que SSL utilise la bibliothèque spécifiée par la variable d'environnement OCI_CLI_FIPS_LIBCRYPTO_FILE.