Configuration de l'interface de ligne de commande

Vous pouvez utiliser ces configurations facultatives pour étendre la fonctionnalité de l'interface de ligne de commande. L'interface de ligne de commande prend en charge l'utilisation d'un fichier pour des configurations qui lui sont propres. Vous pouvez :

  • Spécifier un profil par défaut.
  • Définir des valeurs par défaut pour les options de commande afin de ne pas avoir à les entrer 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 les interrogations nommées qui sont transmises à l'option --query au lieu d'entrer une expression JMESPath dans 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, voir Variables d'environnement pour l'interface de ligne de commande.

Fichier de configuration de l'interface de ligne de commande

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

Vous pouvez également spécifier explicitement un fichier de configuration de l'interface de ligne de commande avec l'option --cli-rc-file ou avec l'option existante --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 que vous spécifiez, qui inclut des exemples d'alias de commande par défaut, d'alias de paramètre et d'interrogations nommées.

Note

Si vous utilisez Windows, vous devez utiliser une barre oblique inverse comme séparateur de répertoire dans les noms de chemin, au lieu de la barre oblique.

Spécification d'un profil par défaut

Indiquez 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 tout autre fichier que vous spécifiez à 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é spécifiée dans plusieurs emplacements, l'ordre de priorité est le suivant :

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

Spécification des valeurs par défaut

L'interface de ligne de commande prend en charge des valeurs par défaut afin que vous n'ayez pas à les entrer dans la ligne de commande. Par exemple, au lieu d'entrer une valeur dans --compartment-id pour chaque commande d'instance de lancement ou d'avoir à entrer --namespace lors de l'utilisation des commandes du service de stockage d'objets. Vous pouvez spécifier ces informations dans un fichier de valeurs par défaut.

Les valeurs par défaut peuvent être appliquées à des niveaux différents, du niveau général à des niveaux spécifiques :

  • Globalement, dans toutes les commandes de l'interface de ligne de commande.
  • Pour un service particulier, tel que le service Calcul ou Stockage d'objets.
  • Pour un groupe spécifique, tel que des commandes liées à l'exportation d'images.
  • À une commande spécifique.

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

Priorité des valeurs de commande

Si une valeur fournie dans la ligne de commande existe également dans --cli-rc-file, la valeur de la ligne de commande a la priorité. Pour une commande avec des options qui prennent plusieurs valeurs, les valeurs sont entièrement extraites de la ligne de commande ou du fichier --cli-rc-file. Les 2 sources ne sont pas fusionnées.

Syntaxe de fichier de valeurs par défaut

Le fichier --cli-rc-file peut être divisé en différentes sections (avec au moins une clé par section).

Sections

Dans l'exemple suivant, le fichier comprend deux sections, avec une clé dans chaque section. Pour spécifier la section à utiliser, vous utilisez l'option --profile dans l'interface de ligne de commande.

[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 d'après les options de ligne de commande, mais elles n'utilisent pas de tiret double (--). Par exemple, la clé pour --image-id est image-id. Vous pouvez spécifier des clés pour des valeurs uniques, des valeurs multiples et des indicateurs.

  • Clés pour valeurs uniques. L'exemple suivant montre comment spécifier des valeurs de clé à différents niveaux, 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 valeurs multiples. Des options, telles que --include et --exclude, peuvent être spécifiées plusieurs fois dans la commande oci os object bulk-upload. 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 entrer 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 indiquée pour chaque ligne, et chaque ligne doit être indentée au-dessous de sa clé. Vous pouvez utiliser des tabulations ou des espaces, car l'espace de l'indentation n'est pas important. Vous pouvez également placer une valeur sur la même ligne que la clé, ajouter des valeurs sur les lignes suivantes et utiliser un énoncé de chemin pour une valeur. Par exemple :

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

    os.object.delete.force=true

Spécification des alias de commande

Spécifiez des interrogations nommées dans la section OCI_CLI_COMMAND_ALIASES du fichier de configuration de l'interface de ligne de commande. Il existe deux types d'alias, soit les alias globaux et les alias de séquence de commande. L'exemple suivant affiche 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 du fichier de configuration de l'interface de ligne de commande, vous pouvez utiliser les noms d'alias que vous avez définis. Par exemple, si vous disposez de -ls comme alias pour --list, vous pouvez définir une valeur par défaut pour un domaine de disponibilité lors de la création d'une liste d'instances à l'aide de la commande suivante.

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

Spécification des alias d'option

Spécifiez les alias d'option dans la section OCI_CLI_PARAM_ALIASES du fichier de configuration de l'interface de ligne de commande. Les alias d'option sont appliqués de façon globale. L'exemple ci-après montre certains 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 du fichier de configuration de l'interface de ligne de commande, vous pouvez utiliser les noms d'alias que vous avez définis. Par exemple, si vous disposez de -ad comme alias pour --availability-domain, vous pouvez définir une valeur par défaut pour un domaine de disponibilité lors de la création d'une liste d'instances à l'aide de la commande suivante.

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

Spécification des interrogations nommées

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

Spécifiez les interrogations nommées dans la section OCI_CLI_CANNED_QUERIES du fichier de configuration de l'interface de ligne de commande.

Exemples d'interrogations nommées
[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 une de ces interrogations au moyen de la syntaxe suivante : query://<query name>.

Par exemple, pour obtenir un ID et un 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 du remplissage automatique

Si vous avez utilisé le programme d'installation de l'interface de ligne de commande, vous n'avez pas à configurer le remplissage automatique car il est activé automatiquement.

Pour activer le remplissage automatique (remplissage à l'aide de la touche de tabulation) pour une installation d'interface de ligne de commande manuelle, exécutez la commande suivante.

oci setup autocomplete

Pour activer le remplissage automatique sur une base session par session, exécutez la commande suivante.

eval "$(_OCI_COMPLETE=source oci)"
Note

Prise en charge du remplissage automatique sous Windows

Le remplissage automatique sous Windows n'est pris en charge que si vous utilisez PowerShell. Un script est exécuté pour activer cette fonction. Toutefois, vous devez modifier la politique d'exécution PowerShell pour RemoteSigned. Pour configurer cette politique, exécutez la commande suivante depuis la ligne de commande PowerShell.

Set-ExecutionPolicy RemoteSigned

Définition d'un serveur mandataire

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

Pour configurer un serveur mandataire, réglez les variables d'environnement http_proxy, https_proxy, HTTP_PROXY et HTTPS_PROXY au serveur mandataire approprié pour votre environnement.

Par exemple, dans un environnement d'interpréteur de commandes Linux ou Unix :

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

Utilisation des bibliothèques validées pour FIPS

L'interface de ligne de commande peut être configurée pour utiliser les bibliothèques validées pour FIPS sous Linux. L'interface de ligne de commande s'appuie sur la trousse SDK Oracle Cloud Infrastructure pour Python et utilise les bibliothèques cryptographiques de niveau système d'exploitation.

Configuration de l'environnement

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

    Si "fips" ne fait pas partie du nom de la version, 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 de libcrypto conforme à FIPS :
    ls -l /usr/lib64/libcrypto*
  3. Réglez la variable d'environnement OCI_CLI_FIPS_LIBCRYPTO_FILE à l'emplacement de libcrypto :
    export OCI_CLI_FIPS_LIBCRYPTO_FILE=</path/to/libcrypto.x.x.x>

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

    Vous pouvez confirmer que la variable d'environnement est définie correctement avec la commande suivante :

    set | grep OCI_CLI_FIPS_LIBCRYPTO_FILE

Vous pouvez maintenant passer au processus d'installation standard décrit sous 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 command, exécutez les commandes suivantes dans Python. Veillez à le faire dans le même environnement que celui utilisé par l'interface de ligne de commande.

import ssl
ssl.FIPS_mode()

La commande doit retourner 1, qui indique que SSL utilise la bibliothèque spécifiée par la variable d'environnement OCI_CLI_FIPS_LIBCRYPTO_FILE.