# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#
msgid ""
msgstr ""
"Project-Id-Version: Apache CloudStack Administration Documentation 4.8\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-22 13:55+0200\n"
"PO-Revision-Date: 2016-09-13 23:55+0200\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.3.4\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: fr\n"
"X-Generator: Poedit 1.8.8\n"

#: ../../templates/_password.rst:20
msgid "Adding Password Management to Your Templates"
msgstr "Ajouter un mot de passe de gestion à votre modèle"

#: ../../templates/_password.rst:22
msgid ""
"CloudStack provides an optional password reset feature that allows users to "
"set a temporary admin or root password as well as reset the existing admin or "
"root password from the CloudStack UI."
msgstr ""
"CloudStack fourni une fonctionnalité optionnelle de réinitialisation de mot "
"de passe qui permet aux utilisateurs de fournir un mot de passe root ou admin "
"temporaire ou de réinitialiser un mot de passe root ou admin existant depuis "
"l'interface CloudStack."

#: ../../templates/_password.rst:26
msgid ""
"To enable the Reset Password feature, you will need to download an additional "
"script to patch your template. When you later upload the template into "
"CloudStack, you can specify whether reset admin/root password feature should "
"be enabled for this template."
msgstr ""
"Pour activer la fonctionnalité de Réinitialisation de Mot de passe, vous "
"aurez besoin de télécharger un script additionnel pour patcher votre modèle. "
"Lorsque plus tard vous téléchargerez votre modèle dans CloudStack, vous "
"pourrez spécifier si la fonctionnalité de réinitailisation de mot de passe "
"admin/root doit être activée pour ce modèle."

#: ../../templates/_password.rst:31
msgid ""
"The password management feature works always resets the account password on "
"instance boot. The script does an HTTP call to the virtual router to retrieve "
"the account password that should be set. As long as the virtual router is "
"accessible the guest will have access to the account password that should be "
"used. When the user requests a password reset the management server generates "
"and sends a new password to the virtual router for the account. Thus an "
"instance reboot is necessary to effect any password changes."
msgstr ""
"La fonctionnalité de mot de passe de gestion fonctionne toujours par "
"réinitialisation du mot de passe du compte lors du démarrage de l'instance. "
"Le script effectue un appel HTTP au routeur virtuel pour recupérer le mot de "
"passe du compte qui doit être changé. Aussi longtemps que le routeur virtuel "
"est accessible l'invité aura accès au mot de passe du compte qui doit être "
"utilisé. Quand l'utilisateur demande une réinitialisation du mot de passe, le "
"serveur de gestion génère et envoie un nouveau mot de passe au routeur "
"virtuel pour ce compte. Ainsi un redémarrage de l'instance est nécessaire "
"pour effectuer un changement de mot de passe."

#: ../../templates/_password.rst:40
msgid ""
"If the script is unable to contact the virtual router during instance boot it "
"will not set the password but boot will continue normally."
msgstr ""
"Si le script n'est pas capable de contacter le routeur virtuel durant le "
"démarrage de l'instance le mot de passe ne sera pas réinitialisé mais le "
"démarrage va continuer normalement."

#: ../../templates/_password.rst:45
msgid "Linux OS Installation"
msgstr "Installation d'un OS Linux"

#: ../../templates/_password.rst:47
msgid "Use the following steps to begin the Linux OS installation:"
msgstr ""
"Utiliser les étapes suivantes pour commencer l'installation d'un OS Linux :"

#: ../../templates/_password.rst:49
msgid "Download the script file cloud-set-guest-password:"
msgstr "Télécharger le fichier du script cloud-set-guest-password :"

#: ../../templates/_password.rst:51
msgid ""
"`https://download.cloudstack.org/templates/4.2/bindir/cloud-set-guest-password.in "
"<https://download.cloudstack.org/templates/4.2/bindir/cloud-set-guest-password.in>`_"
msgstr ""
"`https://download.cloudstack.org/templates/4.2/bindir/cloud-set-guest-password.in "
"<https://download.cloudstack.org/templates/4.2/bindir/cloud-set-guest-password.in>`_"

#: ../../templates/_password.rst:54
msgid "Rename the file:"
msgstr "Renommer le fichier :"

#: ../../templates/_password.rst:60
msgid "Copy this file to /etc/init.d."
msgstr "Copier ce fichier sous /etc/init.d."

#: ../../templates/_password.rst:62
msgid "On some Linux distributions, copy the file to ``/etc/rc.d/init.d``."
msgstr ""
"Sur certaines distributions Linux, copier le fichier sous ``/etc/rc.d/init."
"d``."

#: ../../templates/_password.rst:64
msgid "Run the following command to make the script executable:"
msgstr "Lancer la commande suivante pour rendre le script exécutable :"

#: ../../templates/_password.rst:70
msgid "Depending on the Linux distribution, continue with the appropriate step."
msgstr ""
"En fonction de la distribution Linux, continuer avec l'étape appropriée."

#: ../../templates/_password.rst:73
msgid "On Fedora, CentOS/RHEL, and Debian, run:"
msgstr "Sous Fedora, CentOS/RHEL et Debian, lancer :"

#: ../../templates/_password.rst:81
msgid "Windows OS Installation"
msgstr "Installation d'un OS Windows"

#: ../../templates/_password.rst:83
msgid ""
"Download the installer, CloudInstanceManager.msi, from the `Download page "
"<http://sourceforge.net/projects/cloudstack/files/Password%20Management"
"%20Scripts/CloudInstanceManager.msi/download>`_ and run the installer in the "
"newly created Windows VM."
msgstr ""
"Télécharger l'installateur, CloudInstanceManager.msi depuis la `page de "
"Téléchargement <http://sourceforge.net/projects/cloudstack/files/Password"
"%20Management%20Scripts/CloudInstanceManager.msi/download>`_ et lancer "
"l'installateur dans la VM windows nouvellement créée."
