[{"content":"Notes sur :\nExercice : Activités physiques, routines de fitness et participation aux sports. Sommeil : Habitudes de sommeil, hygiène du sommeil et routines de repos. Rituels d\u0026rsquo;auto-soins : Traitements de spa, soins de la peau et toilettage personnel. Exercice Auto-quantification :\nNombre de pas quotidiens Distance parcourue à pied ou en courant Calories brûlées Durée et intensité de l\u0026rsquo;exercice Fréquence cardiaque Pression artérielle Niveaux de sucre dans le sang Poids corporel Pourcentage de graisse corporelle Masse musculaire Niveaux d\u0026rsquo;hydratation Durée du sommeil Qualité du sommeil (mesurée par les cycles de sommeil) Interruptions du sommeil Fréquence cardiaque au repos Minutes actives par jour Type d\u0026rsquo;exercice (par exemple, cardio, entraînement en force, yoga) Fréquence des entraînements Flexibilité (mesurée par les routines d\u0026rsquo;étirement) Temps de récupération après les entraînements Nombre d\u0026rsquo;entraînements par semaine Poids maximum levé (pour l\u0026rsquo;entraînement en force) Records personnels dans divers exercices Progrès des objectifs de fitness (par exemple, atteindre un certain poids ou pourcentage de graisse corporelle) Temps passé debout par rapport à assis Niveaux de saturation en oxygène sanguin (SpO2) Fréquence respiratoire Tour de taille Tour de hanche Indice de masse corporelle (IMC) Apport en eau Consommation d\u0026rsquo;alcool Apport en caféine Vitamines et suppléments consommés Mouvements intestinaux (fréquence et consistance) Routines d\u0026rsquo;exercice suivies Entraînements complétés Progrès physiques suivis Apport nutritionnel surveillé Poids géré Schémas de sommeil observés Santé mentale vérifiée Niveaux de stress gérés Niveaux d\u0026rsquo;hydratation maintenus Flexibilité améliorée Gains de force réalisés Endurance construite Récupération optimisée Stratégies de prévention des blessures mises en œuvre Habitudes de bien-être établies Examens de santé suivis Rendez-vous médicaux respectés Médicaments pris Suppléments consommés Pratiques d\u0026rsquo;auto-soins adoptées Cardiovasculaire Course à pied Entraînement par intervalles Entraînement par intervalles de haute intensité (HIIT) Entraînement Fartlek Course d\u0026rsquo;endurance Entraînement de marathon Ultra-marathon Cyclisme Cyclisme sur route Course Touring VTT Tout-terrain Descente Natation Nage libre Natation compétitive Natation en eau libre Brasse Natation synchronisée Hockey subaquatique Entraînement en force Haltérophilie Powerlifting Squat Développé couché Soulevé de terre Haltérophilie olympique Épaulé Arraché Exercices au poids du corps Callisthénie Pompes Tractions Dips Pliométrie Sauts en boîte Sauts en profondeur Entraînement en résistance Bandes Bandes de résistance Tubes de résistance Machines Machines à câbles Machines Smith Flexibilité Yoga Yoga Hatha Yoga Iyengar Yoga Kundalini Yoga Vinyasa Yoga de puissance Yoga chaud Yoga Ashtanga Série primaire Série intermédiaire Yoga restaurateur Yoga Yin Yoga Nidra Étirement Étirement statique Étirement passif Étirement actif Étirement dynamique Balançoires de jambes Rotations des bras Pilates Pilates sur tapis Pilates classique Pilates contemporain Pilates sur reformer Reformer Jumpboard Reformer Tower Pilates clinique Pilates de réadaptation Pilates prénatal Nutrition Auto-quantification :\nApport calorique quotidien Répartition des macronutriments (glucides, protéines, graisses) Apport en micronutriments (vitamines et minéraux) Apport en fibres Apport en sucre Apport en sodium Timing des repas (petit-déjeuner, déjeuner, dîner) Portions Nombre de repas/collations par jour Allergies alimentaires ou sensibilités Planification hebdomadaire des repas Dépenses d\u0026rsquo;épicerie Fréquence des sorties au restaurant Repas faits maison par rapport aux aliments transformés Envies de nourriture Temps de cuisson ou de préparation des repas Recettes essayées ou testées Tenue de journal alimentaire (enregistrement des repas et collations) Changements d\u0026rsquo;humeur liés à la nourriture Pratiques de manger consciemment Faites de l\u0026rsquo;exercice au moins 30 minutes par jour.\nMangez plus de fruits et légumes.\nBuvez plus d\u0026rsquo;eau.\nRéduisez votre consommation de sucre.\nDormez suffisamment chaque nuit.\nPratiquez le contrôle des portions pendant les repas.\nPrenez les escaliers au lieu de l\u0026rsquo;ascenseur.\nIntégrez l\u0026rsquo;entraînement en force à votre routine d\u0026rsquo;exercice.\nEssayez une nouvelle forme d\u0026rsquo;exercice (yoga, pilates, natation, etc.).\nLimitez votre consommation de caféine.\nConsultez régulièrement votre médecin.\nPratiquez la pleine conscience ou la méditation quotidiennement.\nPratiquez de bonnes habitudes d\u0026rsquo;hygiène.\nNettoyez vos dents avec du fil dentaire quotidiennement.\nPortez régulièrement de la crème solaire.\nAlimentation équilibrée Macronutriments Glucides Glucides simples Glucides complexes Protéines Protéines animales Protéines à base de plantes Graisses Graisses saturées Graisses insaturées Micronutriments Vitamines Vitamine A Rétinol Bêta-carotène Vitamine C Vitamine D Vitamine E Vitamine K Minéraux Calcium Fer Magnésium Potassium Phytonutriments Antioxydants Bêta-carotène Vitamine C Polyphénols Flavonoïdes Resvératrol Hydratation Eau Eau du robinet Eau en bouteille Tisanes Tisane à la menthe poivrée Tisane au gingembre Tisane à la camomille Jus de fruits (avec modération) Jus fraîchement pressé Jus naturels Jus dilués Vitamines et minéraux Vitamine A Foie Carottes Patates douces Vitamine C Agrumes Baies Brocoli Vitamine D Lumière du soleil Poissons gras Aliments enrichis Fer Viande rouge Épinards Lentilles Sommeil Qualité Environnement de sommeil Qualité du matelas Mousse à mémoire Latex Température de la pièce Plage idéale Niveau de bruit Bruit blanc Bouchons d\u0026rsquo;oreille Quantité Heures recommandées Directives spécifiques à l\u0026rsquo;âge Siestes Siestes éclair Durée Timing des siestes Mi-après-midi Début de soirée ","permalink":"https://www.shafiq.in/fr/docs/projects/writing/fitness/","summary":"\u003cp\u003eNotes sur :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eExercice : Activités physiques, routines de fitness et participation aux sports.\u003c/li\u003e\n\u003cli\u003eSommeil : Habitudes de sommeil, hygiène du sommeil et routines de repos.\u003c/li\u003e\n\u003cli\u003eRituels d\u0026rsquo;auto-soins : Traitements de spa, soins de la peau et toilettage personnel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"exercice\"\u003eExercice\u003c/h2\u003e\n\u003cp\u003eAuto-quantification :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eNombre de pas quotidiens\u003c/li\u003e\n\u003cli\u003eDistance parcourue à pied ou en courant\u003c/li\u003e\n\u003cli\u003eCalories brûlées\u003c/li\u003e\n\u003cli\u003eDurée et intensité de l\u0026rsquo;exercice\u003c/li\u003e\n\u003cli\u003eFréquence cardiaque\u003c/li\u003e\n\u003cli\u003ePression artérielle\u003c/li\u003e\n\u003cli\u003eNiveaux de sucre dans le sang\u003c/li\u003e\n\u003cli\u003ePoids corporel\u003c/li\u003e\n\u003cli\u003ePourcentage de graisse corporelle\u003c/li\u003e\n\u003cli\u003eMasse musculaire\u003c/li\u003e\n\u003cli\u003eNiveaux d\u0026rsquo;hydratation\u003c/li\u003e\n\u003cli\u003eDurée du sommeil\u003c/li\u003e\n\u003cli\u003eQualité du sommeil (mesurée par les cycles de sommeil)\u003c/li\u003e\n\u003cli\u003eInterruptions du sommeil\u003c/li\u003e\n\u003cli\u003eFréquence cardiaque au repos\u003c/li\u003e\n\u003cli\u003eMinutes actives par jour\u003c/li\u003e\n\u003cli\u003eType d\u0026rsquo;exercice (par exemple, cardio, entraînement en force, yoga)\u003c/li\u003e\n\u003cli\u003eFréquence des entraînements\u003c/li\u003e\n\u003cli\u003eFlexibilité (mesurée par les routines d\u0026rsquo;étirement)\u003c/li\u003e\n\u003cli\u003eTemps de récupération après les entraînements\u003c/li\u003e\n\u003cli\u003eNombre d\u0026rsquo;entraînements par semaine\u003c/li\u003e\n\u003cli\u003ePoids maximum levé (pour l\u0026rsquo;entraînement en force)\u003c/li\u003e\n\u003cli\u003eRecords personnels dans divers exercices\u003c/li\u003e\n\u003cli\u003eProgrès des objectifs de fitness (par exemple, atteindre un certain poids ou pourcentage de graisse corporelle)\u003c/li\u003e\n\u003cli\u003eTemps passé debout par rapport à assis\u003c/li\u003e\n\u003cli\u003eNiveaux de saturation en oxygène sanguin (SpO2)\u003c/li\u003e\n\u003cli\u003eFréquence respiratoire\u003c/li\u003e\n\u003cli\u003eTour de taille\u003c/li\u003e\n\u003cli\u003eTour de hanche\u003c/li\u003e\n\u003cli\u003eIndice de masse corporelle (IMC)\u003c/li\u003e\n\u003cli\u003eApport en eau\u003c/li\u003e\n\u003cli\u003eConsommation d\u0026rsquo;alcool\u003c/li\u003e\n\u003cli\u003eApport en caféine\u003c/li\u003e\n\u003cli\u003eVitamines et suppléments consommés\u003c/li\u003e\n\u003cli\u003eMouvements intestinaux (fréquence et consistance)\u003c/li\u003e\n\u003cli\u003eRoutines d\u0026rsquo;exercice suivies\u003c/li\u003e\n\u003cli\u003eEntraînements complétés\u003c/li\u003e\n\u003cli\u003eProgrès physiques suivis\u003c/li\u003e\n\u003cli\u003eApport nutritionnel surveillé\u003c/li\u003e\n\u003cli\u003ePoids géré\u003c/li\u003e\n\u003cli\u003eSchémas de sommeil observés\u003c/li\u003e\n\u003cli\u003eSanté mentale vérifiée\u003c/li\u003e\n\u003cli\u003eNiveaux de stress gérés\u003c/li\u003e\n\u003cli\u003eNiveaux d\u0026rsquo;hydratation maintenus\u003c/li\u003e\n\u003cli\u003eFlexibilité améliorée\u003c/li\u003e\n\u003cli\u003eGains de force réalisés\u003c/li\u003e\n\u003cli\u003eEndurance construite\u003c/li\u003e\n\u003cli\u003eRécupération optimisée\u003c/li\u003e\n\u003cli\u003eStratégies de prévention des blessures mises en œuvre\u003c/li\u003e\n\u003cli\u003eHabitudes de bien-être établies\u003c/li\u003e\n\u003cli\u003eExamens de santé suivis\u003c/li\u003e\n\u003cli\u003eRendez-vous médicaux respectés\u003c/li\u003e\n\u003cli\u003eMédicaments pris\u003c/li\u003e\n\u003cli\u003eSuppléments consommés\u003c/li\u003e\n\u003cli\u003ePratiques d\u0026rsquo;auto-soins adoptées\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"cardiovasculaire\"\u003eCardiovasculaire\u003c/h2\u003e\n\u003ch3 id=\"course-à-pied\"\u003eCourse à pied\u003c/h3\u003e\n\u003ch3 id=\"entraînement-par-intervalles\"\u003eEntraînement par intervalles\u003c/h3\u003e\n\u003ch4 id=\"entraînement-par-intervalles-de-haute-intensité-hiit\"\u003eEntraînement par intervalles de haute intensité (HIIT)\u003c/h4\u003e\n\u003ch4 id=\"entraînement-fartlek\"\u003eEntraînement Fartlek\u003c/h4\u003e\n\u003ch3 id=\"course-dendurance\"\u003eCourse d\u0026rsquo;endurance\u003c/h3\u003e\n\u003ch4 id=\"entraînement-de-marathon\"\u003eEntraînement de marathon\u003c/h4\u003e\n\u003ch4 id=\"ultra-marathon\"\u003eUltra-marathon\u003c/h4\u003e\n\u003ch3 id=\"cyclisme\"\u003eCyclisme\u003c/h3\u003e\n\u003ch3 id=\"cyclisme-sur-route\"\u003eCyclisme sur route\u003c/h3\u003e\n\u003ch4 id=\"course\"\u003eCourse\u003c/h4\u003e\n\u003ch4 id=\"touring\"\u003eTouring\u003c/h4\u003e\n\u003ch3 id=\"vtt\"\u003eVTT\u003c/h3\u003e\n\u003ch4 id=\"tout-terrain\"\u003eTout-terrain\u003c/h4\u003e\n\u003ch4 id=\"descente\"\u003eDescente\u003c/h4\u003e\n\u003ch3 id=\"natation\"\u003eNatation\u003c/h3\u003e\n\u003ch3 id=\"nage-libre\"\u003eNage libre\u003c/h3\u003e\n\u003ch4 id=\"natation-compétitive\"\u003eNatation compétitive\u003c/h4\u003e\n\u003ch4 id=\"natation-en-eau-libre\"\u003eNatation en eau libre\u003c/h4\u003e\n\u003ch3 id=\"brasse\"\u003eBrasse\u003c/h3\u003e\n\u003ch4 id=\"natation-synchronisée\"\u003eNatation synchronisée\u003c/h4\u003e\n\u003ch4 id=\"hockey-subaquatique\"\u003eHockey subaquatique\u003c/h4\u003e\n\u003ch2 id=\"entraînement-en-force\"\u003eEntraînement en force\u003c/h2\u003e\n\u003ch3 id=\"haltérophilie\"\u003eHaltérophilie\u003c/h3\u003e\n\u003ch3 id=\"powerlifting\"\u003ePowerlifting\u003c/h3\u003e\n\u003ch4 id=\"squat\"\u003eSquat\u003c/h4\u003e\n\u003ch4 id=\"développé-couché\"\u003eDéveloppé couché\u003c/h4\u003e\n\u003ch4 id=\"soulevé-de-terre\"\u003eSoulevé de terre\u003c/h4\u003e\n\u003ch3 id=\"haltérophilie-olympique\"\u003eHaltérophilie olympique\u003c/h3\u003e\n\u003ch4 id=\"épaulé\"\u003eÉpaulé\u003c/h4\u003e\n\u003ch4 id=\"arraché\"\u003eArraché\u003c/h4\u003e\n\u003ch3 id=\"exercices-au-poids-du-corps\"\u003eExercices au poids du corps\u003c/h3\u003e\n\u003ch3 id=\"callisthénie\"\u003eCallisthénie\u003c/h3\u003e\n\u003ch4 id=\"pompes\"\u003ePompes\u003c/h4\u003e\n\u003ch4 id=\"tractions\"\u003eTractions\u003c/h4\u003e\n\u003ch4 id=\"dips\"\u003eDips\u003c/h4\u003e\n\u003ch3 id=\"pliométrie\"\u003ePliométrie\u003c/h3\u003e\n\u003ch4 id=\"sauts-en-boîte\"\u003eSauts en boîte\u003c/h4\u003e\n\u003ch4 id=\"sauts-en-profondeur\"\u003eSauts en profondeur\u003c/h4\u003e\n\u003ch3 id=\"entraînement-en-résistance\"\u003eEntraînement en résistance\u003c/h3\u003e\n\u003ch3 id=\"bandes\"\u003eBandes\u003c/h3\u003e\n\u003ch4 id=\"bandes-de-résistance\"\u003eBandes de résistance\u003c/h4\u003e\n\u003ch4 id=\"tubes-de-résistance\"\u003eTubes de résistance\u003c/h4\u003e\n\u003ch3 id=\"machines\"\u003eMachines\u003c/h3\u003e\n\u003ch4 id=\"machines-à-câbles\"\u003eMachines à câbles\u003c/h4\u003e\n\u003ch4 id=\"machines-smith\"\u003eMachines Smith\u003c/h4\u003e\n\u003ch2 id=\"flexibilité\"\u003eFlexibilité\u003c/h2\u003e\n\u003ch3 id=\"yoga\"\u003eYoga\u003c/h3\u003e\n\u003ch3 id=\"yoga-hatha\"\u003eYoga Hatha\u003c/h3\u003e\n\u003ch4 id=\"yoga-iyengar\"\u003eYoga Iyengar\u003c/h4\u003e\n\u003ch4 id=\"yoga-kundalini\"\u003eYoga Kundalini\u003c/h4\u003e\n\u003ch3 id=\"yoga-vinyasa\"\u003eYoga Vinyasa\u003c/h3\u003e\n\u003ch4 id=\"yoga-de-puissance\"\u003eYoga de puissance\u003c/h4\u003e\n\u003ch4 id=\"yoga-chaud\"\u003eYoga chaud\u003c/h4\u003e\n\u003ch3 id=\"yoga-ashtanga\"\u003eYoga Ashtanga\u003c/h3\u003e\n\u003ch4 id=\"série-primaire\"\u003eSérie primaire\u003c/h4\u003e\n\u003ch4 id=\"série-intermédiaire\"\u003eSérie intermédiaire\u003c/h4\u003e\n\u003ch3 id=\"yoga-restaurateur\"\u003eYoga restaurateur\u003c/h3\u003e\n\u003ch4 id=\"yoga-yin\"\u003eYoga Yin\u003c/h4\u003e\n\u003ch4 id=\"yoga-nidra\"\u003eYoga Nidra\u003c/h4\u003e\n\u003ch3 id=\"étirement\"\u003eÉtirement\u003c/h3\u003e\n\u003ch3 id=\"étirement-statique\"\u003eÉtirement statique\u003c/h3\u003e\n\u003ch4 id=\"étirement-passif\"\u003eÉtirement passif\u003c/h4\u003e\n\u003ch4 id=\"étirement-actif\"\u003eÉtirement actif\u003c/h4\u003e\n\u003ch3 id=\"étirement-dynamique\"\u003eÉtirement dynamique\u003c/h3\u003e\n\u003ch4 id=\"balançoires-de-jambes\"\u003eBalançoires de jambes\u003c/h4\u003e\n\u003ch4 id=\"rotations-des-bras\"\u003eRotations des bras\u003c/h4\u003e\n\u003ch3 id=\"pilates\"\u003ePilates\u003c/h3\u003e\n\u003ch3 id=\"pilates-sur-tapis\"\u003ePilates sur tapis\u003c/h3\u003e\n\u003ch4 id=\"pilates-classique\"\u003ePilates classique\u003c/h4\u003e\n\u003ch4 id=\"pilates-contemporain\"\u003ePilates contemporain\u003c/h4\u003e\n\u003ch3 id=\"pilates-sur-reformer\"\u003ePilates sur reformer\u003c/h3\u003e\n\u003ch4 id=\"reformer-jumpboard\"\u003eReformer Jumpboard\u003c/h4\u003e\n\u003ch4 id=\"reformer-tower\"\u003eReformer Tower\u003c/h4\u003e\n\u003ch3 id=\"pilates-clinique\"\u003ePilates clinique\u003c/h3\u003e\n\u003ch4 id=\"pilates-de-réadaptation\"\u003ePilates de réadaptation\u003c/h4\u003e\n\u003ch4 id=\"pilates-prénatal\"\u003ePilates prénatal\u003c/h4\u003e\n\u003ch2 id=\"nutrition\"\u003eNutrition\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAuto-quantification :\u003c/p\u003e","title":"Fitness"},{"content":"Notes sur :\nCommunication : Stratégies de communication efficaces avec les partenaires, la famille et les amis.\nRésolution des conflits : Techniques pour gérer les désaccords et renforcer les relations.\nSystèmes de soutien : Identifier et cultiver les relations de soutien et les réseaux sociaux.\nAuto-quantification :\nTemps passé avec les membres de la famille\nTemps de qualité avec le conjoint ou le partenaire\nRendez-vous ou sorties avec des amis\nÉvénements sociaux auxquels assister\nAppels téléphoniques passés ou reçus\nMessages texte envoyés ou reçus\nAppels vidéo passés ou reçus\nCadeaux donnés ou reçus\nActes de gentillesse effectués\nInteractions sur les réseaux sociaux (j\u0026rsquo;aime, commentaires, partages)\nNouvelles amitiés formées\nConflits relationnels ou désaccords\nConflits résolus avec les proches\nTraditions familiales respectées\nProgrès des objectifs relationnels\nLangages de l\u0026rsquo;amour identifiés et pratiqués\nLimites personnelles maintenues\nSoutien émotionnel fourni à autrui\nCompétences sociales pratiquées ou améliorées\nNiveaux de solitude évalués\nFamille et parentalité :\nTemps de qualité avec les enfants/conjoint/parents/frères et sœurs Sorties familiales ou activités planifiées Réunions familiales tenues Traditions familiales maintenues Défis parentaux surmontés Victoires parentales célébrées Progrès des objectifs parentaux Communication familiale améliorée Activités de liaison parent-enfant Étapes du développement de l\u0026rsquo;enfant suivies Ressources parentales consommées (livres, podcasts, ateliers) Philosophies parentales explorées Repas en famille appréciés ensemble Responsabilités ménagères partagées Réseaux de soutien parentaux engagés Souvenirs familiaux capturés ou enregistrés Passez du temps de qualité avec la famille et les amis.\nPlanifiez des soirées régulières avec votre partenaire.\nÉcoutez activement.\nMontrez votre appréciation aux proches régulièrement.\nPlanifiez des vacances avec les proches.\nPlanifiez des points de contrôle réguliers avec les amis ou la famille.\nSoyez de soutien pour les objectifs et les aspirations des proches.\nFaites de nouveaux amis et élargissez votre cercle social.\nPratiquez l\u0026rsquo;empathie.\nSurprenez les proches avec des gestes réfléchis.\nRéservez du temps pour les réunions ou les discussions familiales.\nCélébrez les jalons et les réalisations ensemble.\nExprimez l\u0026rsquo;amour et l\u0026rsquo;affection régulièrement.\nPratiquez les compétences d\u0026rsquo;écoute active.\nFamille Parentalité Discipline positive Conséquences naturelles Mise en retrait Activités de liaison Repas en famille Soirées cinéma Compétences en communication Sujets de conversation légère Films ou séries télévisées récents que vous avez regardés et appréciés. Livres que vous avez lus récemment ou vos auteurs préférés. Passe-temps ou intérêts que vous partagez tous les deux, comme la cuisine, la randonnée ou la peinture. Événements actuels ou histoires d\u0026rsquo;actualité qui ont attiré votre attention. Expériences de voyage ou destinations de rêve que vous aimeriez visiter. Objectifs personnels ou aspirations sur lesquels vous travaillez. Anecdotes amusantes ou expériences mémorables de votre passé. Musique que vous écoutez dernièrement ou concerts auxquels vous avez assisté. Préférences alimentaires ou nouvelles recettes que vous avez essayées. Tendances technologiques ou gadgets que vous trouvez intéressants. Écoute active Empathie Résolution des conflits Règles de combat équitable Compromis Dynamique des frères et sœurs Résolution des conflits Partage des responsabilités Compromis Liaison fraternelle Passe-temps partagés Retraites fraternelles Soutien mutuel Soutien émotionnel Soutien pratique Amis Soutien social Soutien émotionnel Empathie Validation Soutien pratique Aider avec des tâches Offrir des conseils Activités récréatives Jeux sportifs Soirées jeux de société Communication Écoute active Écoute réflexive Clarification Affirmation de soi Établissement de limites Exprimer les besoins Résolution des conflits Négociation Résolution de problèmes Excuses et pardon Romantique Intimité Intimité émotionnelle Partage des sentiments Vulnérabilité Intimité physique Toucher sensuel Activité sexuelle Communication Communication ouverte Transparence Vulnérabilité Renforcement de la confiance Cohérence Fiabilité Résolution des conflits Écoute active Compromis ","permalink":"https://www.shafiq.in/fr/docs/projects/writing/social/","summary":"\u003cp\u003eNotes sur :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eCommunication : Stratégies de communication efficaces avec les partenaires, la famille et les amis.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRésolution des conflits : Techniques pour gérer les désaccords et renforcer les relations.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSystèmes de soutien : Identifier et cultiver les relations de soutien et les réseaux sociaux.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAuto-quantification :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eTemps passé avec les membres de la famille\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eTemps de qualité avec le conjoint ou le partenaire\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRendez-vous ou sorties avec des amis\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eÉvénements sociaux auxquels assister\u003c/p\u003e","title":"Social"},{"content":"Notes sur :\nConscience de soi : Comprendre vos forces, vos faiblesses et vos limites personnelles.\nDéveloppement personnel : Définir des objectifs d\u0026rsquo;auto-amélioration et suivre les progrès.\nMentalité : Cultiver une attitude positive, la résilience et une mentalité de croissance.\nPratiques d\u0026rsquo;auto-soins : Établir des routines pour le bien-être physique, mental et émotionnel.\ndéfinir et atteindre des objectifs personnels, des plans de développement des compétences, des exercices d\u0026rsquo;auto-réflexion et quelques citations d\u0026rsquo;inspiration pour rester motivé.\nAuto-quantification :\nProductivité et gestion du temps :\nÉléments quotidiens de la liste à faire complétés Temps passé sur des tâches ou des projets spécifiques Épisodes de procrastination Sessions Pomodoro ou time-blocking complétées Distractions rencontrées lors du travail/études Fréquence et durée des pauses Heures de productivité maximale identifiées Cas de multitâche Réunions auxquelles avoir assisté ou planifiées E-mails envoyés et reçus Inbox zéro atteint Objectifs fixés pour la journée/semaine/mois Progrès de l\u0026rsquo;objectif suivis (pourcentage complété) Temps passé à se déplacer Activités liées aux déplacements (par exemple, écouter des podcasts, lire) Activités d\u0026rsquo;apprentissage entreprises (par exemple, cours, lecture) Compétences acquises ou améliorées Progrès des objectifs de développement personnel Livres lus ou audiobooks écoutés Temps d\u0026rsquo;écran (sur des appareils tels que les smartphones, ordinateurs, tablettes) Utilisation des médias sociaux (temps passé, fréquence des visites) Applications ou sites Web visités (productivité vs. loisirs) Temps sans écran alloué Émissions TV ou films regardés Consommation d\u0026rsquo;actualités (sources, fréquence) Carrière et développement professionnel :\nHeures de travail enregistrées Tâches accomplies au travail Réunions auxquelles avoir assisté ou conduites Projets sur lesquels avoir travaillé Délais respectés ou manqués Commentaires reçus des collègues ou des superviseurs Compétences professionnelles développées ou améliorées Cours de formation ou de développement professionnel suivis Événements de mise en réseau auxquels avoir assisté Demandes d\u0026rsquo;emploi soumises Entretiens prévus ou complétés Progrès des objectifs de carrière Évaluations de rendement ou évaluations Négociations de salaire Niveaux de satisfaction au travail Réalisations professionnelles célébrées Jalons de carrière atteints (par exemple, promotions, certifications) Évaluation de l\u0026rsquo;équilibre travail-vie Projets parallèles ou travaux indépendants entrepris Séances de mentorat ou de coaching auxquelles avoir assisté Développement personnel et apprentissage :\nNouvelles compétences acquises ou perfectionnées Cours complétés (en ligne ou hors ligne) Certifications obtenues Livres lus (fiction et non-fiction) Podcasts écoutés Documentaires regardés Ateliers pédagogiques auxquels avoir assisté Conférences ou séminaires auxquels avoir participé Connaissances acquises dans des domaines d\u0026rsquo;intérêt spécifiques Progrès de l\u0026rsquo;apprentissage continu Défis d\u0026rsquo;apprentissage ou obstacles surmontés Habitudes d\u0026rsquo;étude développées ou améliorées Curiosité intellectuelle nurtified Compétences en pensée critique pratiquées Ressources d\u0026rsquo;apprentissage curées ou organisées Autoréflexion et croissance personnelle :\nSessions d\u0026rsquo;auto-réflexion menées Forces personnelles identifiées et célébrées Domaines d\u0026rsquo;amélioration reconnus Valeurs personnelles clarifiées Croyances fondamentales examinées Croyances auto-limitantes remises en question Affirmations positives pratiquées Auto-compassion cultivée Niveaux d\u0026rsquo;estime de soi évalués Auto-dialogue surveillé (positif vs. négatif) Limites personnelles renforcées Objectifs de croissance personnelle fixés Jalons de croissance personnelle célébrés Ressources de développement personnel consommées (livres, podcasts, cours) Commentaires reçus d\u0026rsquo;autrui (et réfléchis) Mentalité de croissance nurtified Activités de renforcement de la résilience entreprises Leçons apprises des erreurs passées Évolution personnelle documentée au fil du temps Considérations d\u0026rsquo;héritage personnel Lisez un livre chaque mois.\nApprenez le français et améliorez votre anglais.\nAdopter un nouveau passe-temps (peinture, tricot, jardinage, etc.).\nFaire du bénévolat régulièrement.\nCommencez un journal de gratitude.\nPratiquez la prise de parole en public.\nApprenez à jouer d\u0026rsquo;un instrument de musique.\nDéveloppez une routine matinale.\nRédigez un plan d\u0026rsquo;affaires pour un projet parallèle.\nSuivez un cours ou un atelier dans un sujet qui vous intéresse.\nAméliorez vos compétences en gestion du temps.\nPratiquez l\u0026rsquo;auto-réflexion.\nLancez une chaîne YouTube.\nApprenez les compétences culinaires de base.\nDésencombrez et organisez votre espace de vie.\nPratiquez les affirmations positives.\nDéveloppez vos compétences en réseautage.\nÉtablissez des limites dans les relations personnelles et professionnelles.\nAdoptez une mentalité de croissance.\nPratiquez les exercices de respiration profonde.\nApprenez à gérer le stress efficacement.\nAssistez à des événements de mise en réseau ou à des conférences.\nAméliorez vos compétences en communication.\nMettez à jour vos compétences grâce à des cours en ligne ou à des ateliers.\nCherchez du mentorat ou du coaching.\nDémarrez une entreprise.\nApprenez les compétences en négociation.\nRecherchez et investissez dans l\u0026rsquo;immobilier.\nDéveloppez vos compétences en leadership.\nTechnologie et productivité :\nLimitez le temps d\u0026rsquo;écran. Organisez les fichiers et dossiers numériques. Mettre en œuvre une détoxication numérique. Apprenez les raccourcis clavier pour les logiciels de productivité. Configurez les paiements de factures automatiques. Nettoyez régulièrement votre boîte de réception. Utilisez des applications de productivité pour suivre les tâches et les objectifs. Apprenez à taper sans regarder. Sauvegardez les fichiers numériques importants. Créez un calendrier numérique pour la planification. Éducation et apprentissage :\nS\u0026rsquo;inscrire à un programme de diplôme. Assister à des ateliers ou à des séminaires. Obtenir une certification professionnelle. Apprenez les langages de codage ou de programmation. Poursuivre les possibilités d\u0026rsquo;études supérieures. Assister à des conférences ou conventions du secteur. Rejoignez un club de livre. Participer à un groupe de discussion. Suivre un atelier d\u0026rsquo;écriture. Éducation Éducation formelle Scolarité Éducation primaire Éducation secondaire Université Études de premier cycle Études de troisième cycle Formation professionnelle Apprentissages Cours professionnels Apprentissage autodirigé Lecture Fiction Littérature classique Fiction contemporaine Non-fiction Biographie Développement personnel Développement des compétences Développement professionnel Réseautage Prise de parole en public Croissance personnelle Exercices de conscience de soi Ateliers de définition d\u0026rsquo;objectifs Apprentissage continu Amélioration continue Projets autodirigés Mentorat Carrière Satisfaction professionnelle Environnement de travail Culture d\u0026rsquo;entreprise Politiques de travail à distance Accomplissement professionnel Autonomie Maîtrise Opportunités d\u0026rsquo;avancement Promotion Développement du leadership Formation aux compétences Équilibre travail-vie Horaires flexibles Options de travail à distance Congés Jours de vacances Sabbatiques Jours personnels Loisirs Poursuites créatives Peinture Peinture acrylique Peinture à l\u0026rsquo;aquarelle Écriture Écriture de fiction Poésie Artisanat Tricot Poterie Activités en plein air Randonnée Sentiers naturels Randonnées en montagne Jardinage Jardinage de légumes Jardinage de fleurs Camping Camping sauvage Glamping Stimulation intellectuelle Résolution de problèmes Mots croisés Sudoku Débat Débats formels Discussions informelles Apprentissage de nouveaux instruments Guitare Piano Violon ","permalink":"https://www.shafiq.in/fr/docs/projects/writing/personal-development/","summary":"\u003cp\u003eNotes sur :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eConscience de soi : Comprendre vos forces, vos faiblesses et vos limites personnelles.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDéveloppement personnel : Définir des objectifs d\u0026rsquo;auto-amélioration et suivre les progrès.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMentalité : Cultiver une attitude positive, la résilience et une mentalité de croissance.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePratiques d\u0026rsquo;auto-soins : Établir des routines pour le bien-être physique, mental et émotionnel.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edéfinir et atteindre des objectifs personnels, des plans de développement des compétences, des exercices d\u0026rsquo;auto-réflexion et quelques citations d\u0026rsquo;inspiration pour rester motivé.\u003c/p\u003e","title":"Personal Development"},{"content":"Notes sur :\nSpiritualité : Pratiques religieuses ou spirituelles, méditation, prière\nPleine conscience : Pratiques de pleine conscience, présence, sensibilisation\nObjectif et sens : Objectif de la vie, mission personnelle, héritage\nPhilosophie.\nAuto-quantification :\nSpiritualité et pleine conscience :\nTemps passé à la prière ou la méditation Textes spirituels lus ou étudiés Rituels religieux ou spirituels observés Actes de gentillesse envers autrui Gratitude exprimée Moments d\u0026rsquo;émerveillement ou de wonder expérimentés Travail bénévole effectué pour des causes caritatives Actions compassionnelles entreprises Pratiques de pardon Jalons de croissance spirituelle réalisés Connexion à la nature nurtified Implication dans la communauté spirituelle (église, temple, mosquée) Exercices de pleine conscience pratiqués tout au long de la journée Moments de réflexion sur l\u0026rsquo;objectif de la vie ou son sens Connexion avec son soi intérieur explorée Croyances Religion Islam chiite Musulman chiite imamite ismaéli Ginans Quasidahs Nandi Awal Sufro Festivals Miraj Yawm e ali Waez Khidma Mois de rajab Shukravari beej Laylat al-Qadr Salgirah Pourquoi les Ismaéliens célèbrent-ils l\u0026rsquo;anniversaire de leur Imam ? Les anniversaires sont généralement considérés comme un moment pour célébrer et être reconnaissant envers ceux que nous aimons. Dans cet esprit, les Ismaéliens célèbrent l\u0026rsquo;anniversaire de l\u0026rsquo;Imam vivant du Temps comme une façon d\u0026rsquo;exprimer leur amour, leur dévouement, leur obéissance et leur gratitude envers lui.\nPhilosophie Stoïcisme Épictète Sénèque Existentialisme Jean-Paul Sartre Simone de Beauvoir Humanisme Humanisme de la Renaissance Humanisme séculier Méditation Méditation transcendantale (TM) Méditation des mantras Vol yogique Méditation de la bienveillance Metta Bhavana Tonglen Méditation Zen Zazen Pratique des koans Connexion Nature Retraites en plein air Bain de forêt Survie en nature sauvage Écotourisme Voyage durable Conservation de la faune Promenades dans la nature Tours d\u0026rsquo;observation des oiseaux Promenades photographiques Communauté Communautés religieuses Communautés monastiques Retraites spirituelles Groupes sociaux Clubs basés sur les intérêts Organisations bénévoles Groupes de soutien Groupes de rétablissement Groupes de soutien au deuil Soi intérieur Autoréflexion Retraites de méditation Voyage en solo Retraites spirituelles Retraites silencieuses Quêtes de vision Pratiques de pleine conscience Méditation en marchant Méditation de la consommation consciente Méditation du balayage corporel Pratiques Prière Prières quotidiennes Prières du matin Prières du soir Retraites de méditation Retraites silencieuses Retraites Vipassana Rituels Cérémonies religieuses Baptême Confirmation Célébrations Festivals Rites de passage Pleine conscience Pratiques quotidiennes de pleine conscience Respiration consciente Consommation consciente Mouvement conscient Tai Chi Qigong Postures de yoga ","permalink":"https://www.shafiq.in/fr/docs/projects/writing/spirituality/","summary":"\u003cp\u003eNotes sur :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSpiritualité : Pratiques religieuses ou spirituelles, méditation, prière\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePleine conscience : Pratiques de pleine conscience, présence, sensibilisation\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eObjectif et sens : Objectif de la vie, mission personnelle, héritage\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePhilosophie.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAuto-quantification :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSpiritualité et pleine conscience :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTemps passé à la prière ou la méditation\u003c/li\u003e\n\u003cli\u003eTextes spirituels lus ou étudiés\u003c/li\u003e\n\u003cli\u003eRituels religieux ou spirituels observés\u003c/li\u003e\n\u003cli\u003eActes de gentillesse envers autrui\u003c/li\u003e\n\u003cli\u003eGratitude exprimée\u003c/li\u003e\n\u003cli\u003eMoments d\u0026rsquo;émerveillement ou de wonder expérimentés\u003c/li\u003e\n\u003cli\u003eTravail bénévole effectué pour des causes caritatives\u003c/li\u003e\n\u003cli\u003eActions compassionnelles entreprises\u003c/li\u003e\n\u003cli\u003ePratiques de pardon\u003c/li\u003e\n\u003cli\u003eJalons de croissance spirituelle réalisés\u003c/li\u003e\n\u003cli\u003eConnexion à la nature nurtified\u003c/li\u003e\n\u003cli\u003eImplication dans la communauté spirituelle (église, temple, mosquée)\u003c/li\u003e\n\u003cli\u003eExercices de pleine conscience pratiqués tout au long de la journée\u003c/li\u003e\n\u003cli\u003eMoments de réflexion sur l\u0026rsquo;objectif de la vie ou son sens\u003c/li\u003e\n\u003cli\u003eConnexion avec son soi intérieur explorée\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"croyances\"\u003eCroyances\u003c/h2\u003e\n\u003ch2 id=\"religion\"\u003eReligion\u003c/h2\u003e\n\u003ch3 id=\"islam-chiite\"\u003eIslam chiite\u003c/h3\u003e\n\u003ch4 id=\"musulman-chiite-imamite-ismaéli\"\u003eMusulman chiite imamite ismaéli\u003c/h4\u003e\n\u003ch4 id=\"ginans\"\u003eGinans\u003c/h4\u003e\n\u003ch4 id=\"quasidahs\"\u003eQuasidahs\u003c/h4\u003e\n\u003ch4 id=\"nandi\"\u003eNandi\u003c/h4\u003e\n\u003ch4 id=\"awal-sufro\"\u003eAwal Sufro\u003c/h4\u003e\n\u003ch4 id=\"festivals\"\u003eFestivals\u003c/h4\u003e\n\u003ch4 id=\"miraj\"\u003eMiraj\u003c/h4\u003e\n\u003ch4 id=\"yawm-e-ali\"\u003eYawm e ali\u003c/h4\u003e\n\u003ch4 id=\"waez\"\u003eWaez\u003c/h4\u003e\n\u003ch4 id=\"khidma\"\u003eKhidma\u003c/h4\u003e\n\u003ch4 id=\"mois-de-rajab\"\u003eMois de rajab\u003c/h4\u003e\n\u003ch4 id=\"shukravari-beej\"\u003eShukravari beej\u003c/h4\u003e\n\u003ch4 id=\"laylat-al-qadr\"\u003eLaylat al-Qadr\u003c/h4\u003e\n\u003ch4 id=\"salgirah\"\u003eSalgirah\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePourquoi les Ismaéliens célèbrent-ils l\u0026rsquo;anniversaire de leur Imam ?\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eLes anniversaires sont généralement considérés comme un moment pour célébrer et être reconnaissant envers ceux que nous aimons. Dans cet esprit, les Ismaéliens célèbrent l\u0026rsquo;anniversaire de l\u0026rsquo;Imam vivant du Temps comme une façon d\u0026rsquo;exprimer leur amour, leur dévouement, leur obéissance et leur gratitude envers lui.\u003c/p\u003e","title":"Spirituality"},{"content":"Loisirs et divertissements Notes sur :\nVoyage : Planification des vacances, exploration de nouveaux endroits, expériences culturelles.\nDivertissement : Films, séries télévisées, musique, lecture, loisirs, sports, podcasts.\nRelaxation : Méditation, promenades dans la nature, temps libre.\nÉcriture créative : Exploration de la poésie, tenue de journal, blogging.\nArts visuels : Peinture, dessin, photographie, sculpture.\nArts du spectacle : Danse, musique, prise de parole en public.\nPoursuites créatives : Art, musique, écriture, artisanat et autres débouchés créatifs.\nActivités en plein air : Randonnée, camping, sports.\nApprentissage : Cours en ligne, ateliers.\net autres choses qui m\u0026rsquo;apportent de la joie et de la détente.\nAuto-quantification :\nLoisirs et intérêts personnels :\nTemps consacré aux loisirs (par exemple, peinture, jardinage, pratique d\u0026rsquo;un instrument) Projets créatifs réalisés Nouvelles compétences apprises ou loisirs explorés Progrès des projets à long terme (par exemple, écrire un livre, apprendre une langue) Collections organisées ou élargies Projets de bricolage ou d\u0026rsquo;amélioration de la maison réalisés Heures de bénévolat effectuées Promenades dans la nature ou activités en plein air appréciées Progrès des objectifs personnels liés aux loisirs Prix ou reconnaissance reçus pour les loisirs ou les intérêts Événements culturels auxquels avoir assisté (par exemple, concerts, expositions d\u0026rsquo;art) Expériences de cuisson ou de pâtisserie Sorties photographiques Listes de lecture musicale organisées Critiques de films ou de livres écrites Projets créatifs poursuivis Compétences artistiques perfectionnées Projets de bricolage réalisés Aventures en plein air appréciées Sports pratiqués Jeux auxquels avoir participé Musique pratiquée Projets d\u0026rsquo;écriture entrepris Habitudes de lecture développées Compétences culinaires développées Efforts de jardinage effectués Expériences de voyage chéries Activités culturelles explorées Événements sociaux auxquels avoir assisté Croissance personnelle poursuivie Nouveaux intérêts découverts Anciens loisirs revisités Implication communautaire adoptée Techniques de relaxation pratiquées Moments amusants célébrés L\u0026rsquo;auto-expression nurtified Expériences joyeuses chéries Passions personnelles poursuivies L\u0026rsquo;apprentissage continu poursuivi L\u0026rsquo;accomplissement réalisé Voyage et aventure :\nVoyages effectués (nationaux et internationaux) Dépenses de voyage (transport, hébergement, activités) Compagnons de voyage Destinations visitées Articles de la liste de seau de voyage cochés Souvenirs de voyage capturés (photos, vidéos, tenue de journal) Expériences culturelles appréciées Activités d\u0026rsquo;aventure essayées (par exemple, randonnée, plongée sous-marine, parachutisme) Attractions locales explorées Progrès des objectifs liés aux voyages Souvenirs collectés Langues pratiquées ou apprises pendant le voyage Mésaventures de voyage ou défis surmontés Pratiques de voyage durable suivies Itinéraires de voyage planifiés Destinations visitées Attractions explorées Modes de transport utilisés Hébergements utilisés Budget dépensé en voyages Photos de voyage prises Cuisine locale dégustée Expériences culturelles appréciées Activités d\u0026rsquo;aventure entreprises Mésaventures de voyage rencontrées Nouvelles amitiés formées Moments de sérendipité expérimentés Perspectives culturelles acquises Articles de la liste de seau cochés Souvenirs collectés Blogs ou journaux de voyage écrits Impact sur les communautés locales considéré Efforts de durabilité environnementale effectués Sensibilité culturelle pratiquée Technologie et gadgets :\nNouveaux gadgets acquis Gadgets utilisés quotidiennement Logiciels ou applications installés ou supprimés Désencombrement numérique (nettoyage des fichiers, dossiers, bureau) Mots de passe mis à jour Sauvegardes de données effectuées Gadgets réparés ou entretenus Compétences liées à la technologie apprises ou améliorées Actualités technologiques ou mises à jour suivies Mesures de sécurité en ligne prises Budgétisation des achats technologiques Liste de souhaits des gadgets maintenue Habitudes d\u0026rsquo;utilisation de la technologie évaluées Périodes de détoxication numérique entreprises Limites de temps d\u0026rsquo;écran appliquées Aventure et exploration :\nNouvelles expériences essayées (nourriture, activités, lieux) Articles de la liste de seau cochés Progrès des objectifs d\u0026rsquo;aventure Exploration des attractions locales Défis d\u0026rsquo;aventure entrepris Aventures dans la nature (randonnée, camping, observation de la faune) Sorties d\u0026rsquo;exploration urbaine Sports extrêmes ou activités induisant l\u0026rsquo;adrénaline Expériences d\u0026rsquo;immersion culturelle Aventures de voyage planifiées ou anticipées Sites historiques visités Merveilles naturelles expérimentées Road trips effectués Aventures spontanées adoptées Aventures en solo entreprises Histoires d\u0026rsquo;aventure documentées ou partagées Culture et société :\nÉvénements culturels auxquels avoir assisté (concerts, théâtre, expositions d\u0026rsquo;art) Clubs de lecture ou discussions littéraires auxquels avoir participé Projections ou discussions de films auxquelles avoir assisté Visites de musées ou de galeries Festivals culturels célébrés Progrès de l\u0026rsquo;apprentissage des langues Expériences d\u0026rsquo;immersion culturelle Efforts d\u0026rsquo;appréciation de la diversité culturelle Expériences de communication interculturelle Connaissances ou traditions autochtones explorées Sites historiques visités Efforts de préservation du patrimoine soutenus Programmes d\u0026rsquo;échange culturel auxquels avoir participé Actions de justice sociale entreprises Initiatives de diversité et d\u0026rsquo;inclusion soutenues Pratiques de consommation éthique adoptées Technologie et innovation :\nÉvénements technologiques ou conférences auxquels avoir assisté Projets technologiques initiés ou réalisés Compétences de codage ou de programmation pratiquées Gadgets technologiques testés ou examinés Tendances technologiques suivies Blogs ou forums technologiques auxquels s\u0026rsquo;engager Hackathons technologiques auxquels avoir participé Prototypes technologiques développés Startups technologiques soutenues ou investies Mentorat technologique reçu ou fourni Solutions technologiques pour l\u0026rsquo;impact social explorées Aspirations de carrière technologique clarifiées Événements de mise en réseau technologique auxquels avoir assisté Défis technologiques ou compétitions auxquels s\u0026rsquo;engager Ateliers de compétences technologiques auxquels avoir assisté Certifications technologiques obtenues Retours d\u0026rsquo;expérience utilisateur technologique fournis Innovations technologiques admirées ou étudiées Voyage :\nVisitez un nouveau pays. Explorez une nouvelle ville ou un nouveau village. Faites un road trip. Allez en camping ou en randonnée. Planifiez des vacances à la plage. Voyagez en solo. Visitez un parc national. Allez faire une croisière. Participez à un festival de musique ou à un événement culturel. Essayez des aliments exotiques en voyageant. Allez en safari. Montez en montgolfière. Assistez à un événement sportif dans une autre ville. Allez skier ou faire de la planche à neige. Visitez des monuments célèbres. Faites du bénévolat à l\u0026rsquo;étranger. Suivez un cours de cuisine dans un autre pays. Allez faire de la plongée sous-marine ou du snorkeling. Apprenez à connaître différentes cultures et coutumes. Créativité :\nCommencez une pratique quotidienne du carnet de croquis. Écrivez un poème ou une nouvelle. Apprenez la photographie. Créez un tableau de vision. Suivez un cours de peinture ou de dessin. Lancez un podcast. Essayez le stand-up comédie. Divertissement Films Cinéma Films de blockbuster Films indépendants Services de diffusion en continu Netflix Hulu Festivals de cinéma Festival de Cannes Festival de Sundance Musique Concerts Concerts classiques Concerts pop Festivals de musique Festival de Glastonbury Coachella Cours de musique Cours de guitare Cours de chant Livres Fictions Romans policiers Romans d\u0026rsquo;amour Non-fiction Livres de développement personnel Biographies Audiobooks Audiobooks de fiction Audiobooks de développement personnel Voyage Exploration Voyage culturel Sites du patrimoine mondial de l\u0026rsquo;UNESCO Expériences autochtones Voyage d\u0026rsquo;aventure Trekking Escalade Sac à dos Sac à dos en solo Sac à dos en groupe Immersion culturelle Séjours chez l\u0026rsquo;habitant Immersion dans la culture locale Échange linguistique Programmes d\u0026rsquo;immersion linguistique Immersion complète Immersion partielle Visites guidées culturelles Visites guidées d\u0026rsquo;art Visites guidées historiques Relaxation Retraites spa Traitements de bien-être Ateliers de pleine conscience Vacances à la plage Plages tropicales Plages isolées Centres de bien-être Bien-être holistique Programmes de détoxication Récréation Sports Sports d\u0026rsquo;équipe Football Basketball Sports individuels Golf Tennis Ligues récréatives Ligues de softball Ligues de soccer Jeux Jeux de société Jeux de stratégie Jeux de société Jeux vidéo Jeux de console Jeux PC Jeux de cartes Poker Bridge Activités en plein air Pique-niques Pique-niques dans les parcs Pique-niques à la plage Journées à la plage Bronzage Volleyball de plage Promenades dans la nature Observation des oiseaux Promenades parmi les fleurs sauvages ","permalink":"https://www.shafiq.in/fr/docs/projects/writing/hobbies-and-leisure/","summary":"\u003ch1 id=\"loisirs-et-divertissements\"\u003eLoisirs et divertissements\u003c/h1\u003e\n\u003cp\u003eNotes sur :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eVoyage : Planification des vacances, exploration de nouveaux endroits, expériences culturelles.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDivertissement : Films, séries télévisées, musique, lecture, loisirs, sports, podcasts.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRelaxation : Méditation, promenades dans la nature, temps libre.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eÉcriture créative : Exploration de la poésie, tenue de journal, blogging.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eArts visuels : Peinture, dessin, photographie, sculpture.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eArts du spectacle : Danse, musique, prise de parole en public.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePoursuites créatives : Art, musique, écriture, artisanat et autres débouchés créatifs.\u003c/p\u003e","title":"Hobbies and Leisure"},{"content":"Comment configurer une base de données PostgreSQL avec Docker Dans ce tutoriel, nous allons apprendre à configurer une base de données PostgreSQL à l’aide de Docker. Docker permet de créer des environnements isolés et reproductibles, ce qui est idéal pour le développement et le déploiement.\nAvant de commencer Assurez-vous d’avoir les éléments suivants installés sur votre machine :\nDocker Un éditeur de texte ou un IDE (comme VS Code) Étape 1 : Créer un fichier docker-compose.yml Créez un fichier nommé docker-compose.yml dans votre projet. Ajoutez le contenu suivant :\nversion: \u0026#39;3.8\u0026#39; services: db: image: postgres:15 container_name: postgres_db environment: POSTGRES_DB: myapp POSTGRES_USER: myuser POSTGRES_PASSWORD: mypassword ports: - \u0026#34;5432:5432\u0026#34; volumes: - postgres_data:/var/lib/postgresql/data restart: unless-stopped volumes: postgres_data: Étape 2 : Lancer le conteneur PostgreSQL Ouvrez un terminal dans le répertoire contenant le fichier docker-compose.yml et exécutez la commande suivante :\ndocker-compose up -d Cette commande lance PostgreSQL en arrière-plan. Vous pouvez vérifier que le conteneur est en cours d’exécution avec :\ndocker-compose ps Étape 3 : Se connecter à la base de données Vous pouvez vous connecter à la base de données PostgreSQL à l’aide de l’outil psql ou d’un client graphique comme DBeaver.\nUtilisation de psql Exécutez la commande suivante dans votre terminal :\ndocker exec -it postgres_db psql -U myuser -d myapp Vous devriez voir un prompt myapp=\u0026gt;, indiquant que vous êtes connecté.\nUtilisation d’un client graphique Ouvrez DBeaver. Cliquez sur New Database Connection. Sélectionnez PostgreSQL comme type de base de données. Remplissez les champs : Host: localhost Port: 5432 Database: myapp Username: myuser Password: mypassword Cliquez sur Test Connection pour vérifier que la connexion fonctionne. Cliquez sur Finish pour enregistrer la connexion. Étape 4 : Créer une table de test Une fois connecté, exécutez la commande SQL suivante pour créer une table de test :\nCREATE TABLE test_table ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); Ajoutez quelques données :\nINSERT INTO test_table (name) VALUES (\u0026#39;Alice\u0026#39;), (\u0026#39;Bob\u0026#39;); Vérifiez que les données ont été insérées :\nSELECT * FROM test_table; Nettoyage Pour arrêter le conteneur PostgreSQL, exécutez :\ndocker-compose down Pour supprimer les volumes persistants (attention, cela supprime toutes les données), utilisez :\ndocker-compose down -v Conclusion Vous avez maintenant configuré une base de données PostgreSQL avec Docker. Cette méthode est rapide, reproductible et idéale pour les projets de développement. Vous pouvez facilement partager ce fichier docker-compose.yml avec votre équipe pour garantir une configuration identique sur tous les environnements.\nPour en savoir plus, consultez la documentation officielle de PostgreSQL.\nPublié le 15 mai 2024\n","permalink":"https://www.shafiq.in/fr/blog/2025-09-30-090041/","summary":"\u003ch1 id=\"comment-configurer-une-base-de-données-postgresql-avec-docker\"\u003eComment configurer une base de données PostgreSQL avec Docker\u003c/h1\u003e\n\u003cp\u003eDans ce tutoriel, nous allons apprendre à configurer une base de données PostgreSQL à l’aide de Docker. Docker permet de créer des environnements isolés et reproductibles, ce qui est idéal pour le développement et le déploiement.\u003c/p\u003e\n\u003ch2 id=\"avant-de-commencer\"\u003eAvant de commencer\u003c/h2\u003e\n\u003cp\u003eAssurez-vous d’avoir les éléments suivants installés sur votre machine :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://www.docker.com/get-started\"\u003eDocker\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUn éditeur de texte ou un IDE (comme VS Code)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"étape-1--créer-un-fichier-docker-composeyml\"\u003eÉtape 1 : Créer un fichier \u003ccode\u003edocker-compose.yml\u003c/code\u003e\u003c/h2\u003e\n\u003cp\u003eCréez un fichier nommé \u003ccode\u003edocker-compose.yml\u003c/code\u003e dans votre projet. Ajoutez le contenu suivant :\u003c/p\u003e","title":"2025 09 30 090041"},{"content":"Comment utiliser l\u0026rsquo;outil de recherche dans votre application Dans ce didacticiel, vous allez apprendre à ajouter une fonctionnalité de recherche à votre application web. Cette fonctionnalité permettra aux utilisateurs de rechercher des éléments dans une liste en temps réel.\nÉtapes pour implémenter la recherche Créer un champ de recherche dans le fichier index.html. Ajouter du code JavaScript pour écouter les entrées de l\u0026rsquo;utilisateur. Filtrer les éléments de la liste en fonction de la recherche. Mettre à jour l\u0026rsquo;affichage en temps réel. Exemple de code Voici un exemple de code pour implémenter la recherche :\n\u0026lt;!DOCTYPE html\u0026gt; \u0026lt;html lang=\u0026#34;fr\u0026#34;\u0026gt; \u0026lt;head\u0026gt; \u0026lt;meta charset=\u0026#34;UTF-8\u0026#34; /\u0026gt; \u0026lt;title\u0026gt;Recherche en temps réel\u0026lt;/title\u0026gt; \u0026lt;/head\u0026gt; \u0026lt;body\u0026gt; \u0026lt;input type=\u0026#34;text\u0026#34; id=\u0026#34;searchInput\u0026#34; placeholder=\u0026#34;Rechercher...\u0026#34; /\u0026gt; \u0026lt;ul id=\u0026#34;list\u0026#34;\u0026gt; \u0026lt;li\u0026gt;Chien\u0026lt;/li\u0026gt; \u0026lt;li\u0026gt;Gato\u0026lt;/li\u0026gt; \u0026lt;li\u0026gt;Oiseau\u0026lt;/li\u0026gt; \u0026lt;li\u0026gt;Chameau\u0026lt;/li\u0026gt; \u0026lt;/ul\u0026gt; \u0026lt;script\u0026gt; const searchInput = document.getElementById(\u0026#34;searchInput\u0026#34;); const list = document.getElementById(\u0026#34;list\u0026#34;); const items = list.querySelectorAll(\u0026#34;li\u0026#34;); searchInput.addEventListener(\u0026#34;input\u0026#34;, function () { const query = this.value.toLowerCase(); items.forEach((item) =\u0026gt; { const text = item.textContent.toLowerCase(); if (text.includes(query)) { item.style.display = \u0026#34;block\u0026#34;; } else { item.style.display = \u0026#34;none\u0026#34;; } }); }); \u0026lt;/script\u0026gt; \u0026lt;/body\u0026gt; \u0026lt;/html\u0026gt; Conseils pour une meilleure expérience utilisateur Utilisez debounce pour réduire les appels de recherche trop fréquents. Ajoutez un indicateur de chargement pendant la recherche. Fournissez des suggestions de recherche en temps réel. Pour en savoir plus, consultez la documentation officielle : MDN Web Docs - Recherche en temps réel.\nSi vous avez des questions, n\u0026rsquo;hésitez pas à contacter l\u0026rsquo;équipe d\u0026rsquo;assistance : support@exemple.com.\n","permalink":"https://www.shafiq.in/fr/blog/2025-09-30-085857/","summary":"\u003ch1 id=\"comment-utiliser-loutil-de-recherche-dans-votre-application\"\u003eComment utiliser l\u0026rsquo;outil de recherche dans votre application\u003c/h1\u003e\n\u003cp\u003eDans ce didacticiel, vous allez apprendre à ajouter une fonctionnalité de recherche à votre application web. Cette fonctionnalité permettra aux utilisateurs de rechercher des éléments dans une liste en temps réel.\u003c/p\u003e\n\u003ch2 id=\"étapes-pour-implémenter-la-recherche\"\u003eÉtapes pour implémenter la recherche\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eCréer un champ de recherche dans le fichier \u003ccode\u003eindex.html\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAjouter du code JavaScript pour écouter les entrées de l\u0026rsquo;utilisateur.\u003c/li\u003e\n\u003cli\u003eFiltrer les éléments de la liste en fonction de la recherche.\u003c/li\u003e\n\u003cli\u003eMettre à jour l\u0026rsquo;affichage en temps réel.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"exemple-de-code\"\u003eExemple de code\u003c/h3\u003e\n\u003cp\u003eVoici un exemple de code pour implémenter la recherche :\u003c/p\u003e","title":"2025 09 30 085857"},{"content":"Introduction Le 21 octobre 2023, le projet Mistral a été lancé par Mistral AI, une entreprise française spécialisée dans le développement d\u0026rsquo;IA. Ce projet a rapidement suscité un grand intérêt dans la communauté des développeurs, notamment grâce à sa disponibilité en tant que modèle open source.\nQu\u0026rsquo;est-ce que Mistral ? Mistral est un modèle de langage à grande échelle, conçu pour être efficace et accessible. Il est disponible en plusieurs versions, dont Mistral 7B, qui est un modèle de 7 milliards de paramètres. Ce modèle est particulièrement adapté pour les applications nécessitant une faible consommation de ressources matérielles, comme les applications embarquées ou les applications mobiles.\nPourquoi Mistral est-il si populaire ? La popularité de Mistral s\u0026rsquo;explique par plusieurs facteurs :\nOpen source : Mistral est disponible sous une licence open source, ce qui permet à tout le monde de l\u0026rsquo;utiliser, de le modifier et de le redistribuer. Performance élevée : Malgré sa taille modeste, Mistral 7B offre des performances comparables à celles de modèles bien plus grands. Accessibilité : Grâce à sa faible consommation de ressources, Mistral peut être exécuté sur des appareils standards, même sans GPU. Comment l\u0026rsquo;utiliser ? Utiliser Mistral est simple. Voici un exemple de code pour charger le modèle avec Hugging Face :\nfrom transformers import AutoTokenizer, AutoModelForCausalLM # Téléchargez le modèle et le tokenizer model_name = \u0026#34;mistralai/Mistral-7B-v0.1\u0026#34; tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained(model_name) # Générez du texte prompt = \u0026#34;Quelle est la capitale de la France ?\u0026#34; inputs = tokenizer(prompt, return_tensors=\u0026#34;pt\u0026#34;) outputs = model.generate(**inputs, max_new_tokens=50) print(tokenizer.decode(outputs[0], skip_special_tokens=True)) Conclusion Mistral représente une avancée significative dans le domaine de l\u0026rsquo;IA, offrant un équilibre parfait entre performance, accessibilité et transparence. Grâce à son modèle open source, il ouvre de nouvelles perspectives pour les développeurs, les chercheurs et les entreprises.\nPour en savoir plus, rendez-vous sur le dépôt GitHub de Mistral ou contactez-nous à contact@mistral.ai.\n","permalink":"https://www.shafiq.in/fr/blog/2025-09-29-145028/","summary":"\u003ch2 id=\"introduction\"\u003eIntroduction\u003c/h2\u003e\n\u003cp\u003eLe 21 octobre 2023, le projet \u003ca href=\"https://github.com/mistralai/mistral-src\"\u003eMistral\u003c/a\u003e a été lancé par \u003ca href=\"https://www.mistral.ai/\"\u003eMistral AI\u003c/a\u003e, une entreprise française spécialisée dans le développement d\u0026rsquo;IA. Ce projet a rapidement suscité un grand intérêt dans la communauté des développeurs, notamment grâce à sa disponibilité en tant que modèle open source.\u003c/p\u003e\n\u003ch3 id=\"quest-ce-que-mistral-\"\u003eQu\u0026rsquo;est-ce que Mistral ?\u003c/h3\u003e\n\u003cp\u003eMistral est un modèle de langage à grande échelle, conçu pour être efficace et accessible. Il est disponible en plusieurs versions, dont Mistral 7B, qui est un modèle de 7 milliards de paramètres. Ce modèle est particulièrement adapté pour les applications nécessitant une faible consommation de ressources matérielles, comme les applications embarquées ou les applications mobiles.\u003c/p\u003e","title":"2025 09 29 145028"},{"content":"Prérequis Docker et Docker Compose installés Un nom de domaine pointant vers votre serveur 1. Créer le répertoire du projet mkdir mastodon cd mastodon 2. Créer le fichier Docker Compose Créez un fichier docker-compose.yml :\nversion: \u0026#39;3\u0026#39; services: db: restart: always image: postgres:14-alpine shm_size: 256mb networks: - internal_network healthcheck: test: [\u0026#39;CMD\u0026#39;, \u0026#39;pg_isready\u0026#39;, \u0026#39;-U\u0026#39;, \u0026#39;postgres\u0026#39;] volumes: - postgres_data:/var/lib/postgresql/data environment: - POSTGRES_HOST_AUTH_METHOD=trust redis: restart: always image: redis:7-alpine networks: - internal_network healthcheck: test: [\u0026#39;CMD\u0026#39;, \u0026#39;redis-cli\u0026#39;, \u0026#39;ping\u0026#39;] volumes: - redis_data:/data web: restart: always image: tootsuite/mastodon:latest networks: - external_network - internal_network healthcheck: test: [\u0026#39;CMD-SHELL\u0026#39;, \u0026#39;wget -q --spider http://localhost:3000/health || exit 1\u0026#39;] timeout: 10s depends_on: - db - redis environment: - DB_HOST=db - DB_USER=postgres - DB_NAME=postgres - DB_PASS= - REDIS_HOST=redis - LOCAL_DOMAIN=your-domain.com - SINGLE_USER_MODE=false - SMTP_SERVER=smtp.mailgun.org - SMTP_PORT=587 - SMTP_LOGIN=your-smtp-login - SMTP_PASSWORD=your-smtp-password - SMTP_FROM_ADDRESS=notifications@your-domain.com volumes: - ./public/system:/mastodon/public/system ports: - \u0026#34;3000:3000\u0026#34; command: bash -c \u0026#34;rm -f /mastodon/tmp/pids/server.pid \u0026amp;\u0026amp; bundle exec rails s -p 3000\u0026#34; streaming: restart: always image: tootsuite/mastodon:latest networks: - external_network - internal_network depends_on: - db - redis environment: - DB_HOST=db - DB_USER=postgres - DB_NAME=postgres - DB_PASS= - REDIS_HOST=redis - LOCAL_DOMAIN=your-domain.com volumes: - ./public/system:/mastodon/public/system ports: - \u0026#34;4000:4000\u0026#34; command: node ./streaming sidekiq: restart: always image: tootsuite/mastodon:latest networks: - internal_network depends_on: - db - redis environment: - DB_HOST=db - DB_USER=postgres - DB_NAME=postgres - DB_PASS= - REDIS_HOST=redis - LOCAL_DOMAIN=your-domain.com volumes: - ./public/system:/mastodon/public/system command: bundle exec sidekiq networks: external_network: internal_network: internal: true volumes: postgres_data: redis_data: 3. Créer le fichier d\u0026rsquo;environnement Créez un fichier .env.production avec vos paramètres :\n# Base de données DB_HOST=db DB_PORT=5432 DB_NAME=postgres DB_USER=postgres DB_PASS= # Redis REDIS_HOST=redis REDIS_PORT=6379 REDIS_PASSWORD= # Mastodon LOCAL_DOMAIN=your-domain.com SECRET_KEY_BASE=generate-a-secret-key OTP_SECRET=generate-an-otp-secret # Web Push VAPID_PRIVATE_KEY=generate-vapid-private-key VAPID_PUBLIC_KEY=generate-vapid-public-key # SMTP (Courrier électronique) SMTP_SERVER=smtp.mailgun.org SMTP_PORT=587 SMTP_LOGIN=your-email-login SMTP_PASSWORD=your-email-password SMTP_AUTH_METHOD=plain SMTP_OPENSSL_VERIFY_MODE=none SMTP_FROM_ADDRESS=notifications@your-domain.com # Optionnel : stockage S3 S3_ENABLED=false # S3_BUCKET=your-bucket-name # AWS_ACCESS_KEY_ID=your-access-key # AWS_SECRET_ACCESS_KEY=your-secret-key # S3_REGION=us-east-1 # S3_PROTOCOL=https # S3_HOSTNAME=s3.amazonaws.com 4. Générer les secrets Exécutez les commandes suivantes pour générer les secrets requis :\n# Générer la clé secrète de base docker run --rm tootsuite/mastodon:latest bundle exec rake secret # Générer la clé OTP docker run --rm tootsuite/mastodon:latest bundle exec rake secret # Générer les clés VAPID docker run --rm tootsuite/mastodon:latest bundle exec rake mastodon:webpush:generate_vapid_key Mettez à jour votre fichier .env.production avec ces valeurs générées.\n5. Démarrer Mastodon # Télécharger les images docker-compose pull # Démarrer les services docker-compose up -d # Exécuter la configuration de la base de données docker-compose run --rm web bundle exec rake db:migrate # Compiler les ressources docker-compose run --rm web bundle exec rake assets:precompile 6. Créer un utilisateur administrateur docker-compose run --rm web bundle exec rake mastodon:setup Suivez les invites interactives pour créer votre compte administrateur.\n7. Configuration du proxy inverse (Nginx) Créez un fichier de configuration Nginx :\nmap $http_upgrade $connection_upgrade { default upgrade; \u0026#39;\u0026#39; close; } server { listen 80; listen [::]:80; server_name your-domain.com; # Décommenter pour SSL # listen 443 ssl http2; # listen [::]:443 ssl http2; # ssl_certificate /path/to/certificate.crt; # ssl_certificate_key /path/to/private.key; root /home/mastodon/live/public; location / { try_files $uri @proxy; } location ~ ^/(emoji|packs|system/accounts/avatars|system/media_attachments/files) { add_header Cache-Control \u0026#34;public, max-age=31536000, immutable\u0026#34;; try_files $uri @proxy; } location /sw.js { add_header Cache-Control \u0026#34;public, max-age=0\u0026#34;; try_files $uri @proxy; } location @proxy { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Proxy \u0026#34;\u0026#34;; proxy_pass_header Server; proxy_pass http://127.0.0.1:3000; proxy_buffering off; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; add_header Strict-Transport-Security \u0026#34;max-age=31536000\u0026#34;; } location /api/v1/streaming { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Proxy \u0026#34;\u0026#34;; proxy_pass http://127.0.0.1:4000; proxy_buffering off; proxy_redirect off; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } error_page 500 501 502 503 504 /500.html; } 8. Commandes utiles # Voir les journaux docker-compose logs -f docker-compose logs -f web docker-compose logs -f sidekiq # Arrêter les services docker-compose down # Sauvegardz la base de données docker-compose exec db pg_dump -U postgres postgres \u0026gt; backup.sql # Mettre à jour Mastodon docker-compose pull docker-compose run --rm web bundle exec rake db:migrate docker-compose run --rm web bundle exec rake assets:precompile docker-compose restart Notes importantes Remplacer les espaces réservés : Mettez à jour your-domain.com avec votre domaine réel Configuration de l\u0026rsquo;email : Configurez les paramètres SMTP appropriés pour les notifications par courrier électronique Sauvegardez régulièrement : Mettez en place une stratégie de sauvegarde pour votre base de données Sécurité : Utilisez des certificats SSL/TLS et maintenez votre système à jour Ressources : Mastodon peut être gourmand en ressources ; assurez-vous que votre serveur dispose de RAM et d\u0026rsquo;UC suffisants Cette configuration fournit une instance Mastodon basique. Vous pouvez la personnaliser davantage selon vos besoins, par exemple en ajoutant un stockage d\u0026rsquo;objets pour les fichiers multim médias ou en configurant des mesures de sécurité supplémentaires.\n","permalink":"https://www.shafiq.in/fr/blog/how-to-set-up-mastodon-using-docker-compose/","summary":"\u003ch2 id=\"prérequis\"\u003ePrérequis\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDocker et Docker Compose installés\u003c/li\u003e\n\u003cli\u003eUn nom de domaine pointant vers votre serveur\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"1-créer-le-répertoire-du-projet\"\u003e1. Créer le répertoire du projet\u003c/h2\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003emkdir mastodon\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003ecd\u003c/span\u003e mastodon\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"2-créer-le-fichier-docker-compose\"\u003e2. Créer le fichier Docker Compose\u003c/h2\u003e\n\u003cp\u003eCréez un fichier \u003ccode\u003edocker-compose.yml\u003c/code\u003e :\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eversion\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;3\u0026#39;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eservices\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e  \u003c/span\u003e\u003cspan class=\"nt\"\u003edb\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003erestart\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ealways\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003eimage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003epostgres:14-alpine\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003eshm_size\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e256mb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003enetworks\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003einternal_network\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003ehealthcheck\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e\u003cspan class=\"nt\"\u003etest\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;CMD\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;pg_isready\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;-U\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;postgres\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003evolumes\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003epostgres_data:/var/lib/postgresql/data\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003eenvironment\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003ePOSTGRES_HOST_AUTH_METHOD=trust\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e  \u003c/span\u003e\u003cspan class=\"nt\"\u003eredis\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003erestart\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ealways\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003eimage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003eredis:7-alpine\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003enetworks\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003einternal_network\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003ehealthcheck\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e\u003cspan class=\"nt\"\u003etest\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;CMD\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;redis-cli\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;ping\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003evolumes\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eredis_data:/data\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e  \u003c/span\u003e\u003cspan class=\"nt\"\u003eweb\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003erestart\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ealways\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003eimage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003etootsuite/mastodon:latest\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003enetworks\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eexternal_network\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003einternal_network\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003ehealthcheck\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e\u003cspan class=\"nt\"\u003etest\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e[\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;CMD-SHELL\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;wget -q --spider http://localhost:3000/health || exit 1\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e]\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e\u003cspan class=\"nt\"\u003etimeout\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003e10s\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003edepends_on\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003edb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eredis\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003eenvironment\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eDB_HOST=db\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eDB_USER=postgres\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eDB_NAME=postgres\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eDB_PASS=\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eREDIS_HOST=redis\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eLOCAL_DOMAIN=your-domain.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eSINGLE_USER_MODE=false\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eSMTP_SERVER=smtp.mailgun.org\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eSMTP_PORT=587\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eSMTP_LOGIN=your-smtp-login\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eSMTP_PASSWORD=your-smtp-password\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eSMTP_FROM_ADDRESS=notifications@your-domain.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003evolumes\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003e./public/system:/mastodon/public/system\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003eports\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"s2\"\u003e\u0026#34;3000:3000\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003ecommand\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ebash -c \u0026#34;rm -f /mastodon/tmp/pids/server.pid \u0026amp;\u0026amp; bundle exec rails s -p 3000\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e  \u003c/span\u003e\u003cspan class=\"nt\"\u003estreaming\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003erestart\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ealways\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003eimage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003etootsuite/mastodon:latest\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003enetworks\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eexternal_network\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003einternal_network\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003edepends_on\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003edb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eredis\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003eenvironment\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eDB_HOST=db\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eDB_USER=postgres\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eDB_NAME=postgres\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eDB_PASS=\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eREDIS_HOST=redis\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eLOCAL_DOMAIN=your-domain.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003evolumes\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003e./public/system:/mastodon/public/system\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003eports\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"s2\"\u003e\u0026#34;4000:4000\u0026#34;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003ecommand\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003enode ./streaming\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e  \u003c/span\u003e\u003cspan class=\"nt\"\u003esidekiq\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003erestart\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ealways\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003eimage\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003etootsuite/mastodon:latest\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003enetworks\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003einternal_network\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003edepends_on\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003edb\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eredis\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003eenvironment\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eDB_HOST=db\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eDB_USER=postgres\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eDB_NAME=postgres\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eDB_PASS=\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eREDIS_HOST=redis\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003eLOCAL_DOMAIN=your-domain.com\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003evolumes\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e      \u003c/span\u003e- \u003cspan class=\"l\"\u003e./public/system:/mastodon/public/system\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003ecommand\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"l\"\u003ebundle exec sidekiq\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003enetworks\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e  \u003c/span\u003e\u003cspan class=\"nt\"\u003eexternal_network\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e  \u003c/span\u003e\u003cspan class=\"nt\"\u003einternal_network\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e    \u003c/span\u003e\u003cspan class=\"nt\"\u003einternal\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"kc\"\u003etrue\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003evolumes\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e  \u003c/span\u003e\u003cspan class=\"nt\"\u003epostgres_data\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"w\"\u003e  \u003c/span\u003e\u003cspan class=\"nt\"\u003eredis_data\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch2 id=\"3-créer-le-fichier-denvironnement\"\u003e3. Créer le fichier d\u0026rsquo;environnement\u003c/h2\u003e\n\u003cp\u003eCréez un fichier \u003ccode\u003e.env.production\u003c/code\u003e avec vos paramètres :\u003c/p\u003e","title":"How to set up Mastodon using Docker Compose"},{"content":"Conseils essentiels sur la vie de personnes dans la quarantaine à celles dans la vingtaine Santé physique \u0026amp; soins personnels Prenez soin de vos dents – c’est la seule paire que vous aurez jamais Prenez soin de vos genoux et de votre dos Étirez-vous chaque jour, ou du moins plus que jamais – restez souple, car une fois la souplesse perdue, il est presque impossible de la retrouver N’attendez pas d’être en forme – commencez à vous exercer maintenant, de la manière qui vous plaît Utilisez une crème solaire et buvez beaucoup d’eau Santé mentale \u0026amp; perception de soi Arrêtez de vous soucier de ce que pensent les autres – c’était l’un des points les plus soulignés Vous n’êtes pas spécial, personne ne s’intéresse à ce que vous faites, et plus tôt vous l’accepterez, plus tôt vous pourrez être en paix avec vous-même Ne vous prenez pas trop au sérieux – vous allez probablement regarder en arrière dix ans plus tard, légèrement honteux de la profondeur que vous pensiez avoir Il est normal et sain de rester en silence – posez votre téléphone et simplement être Temps \u0026amp; perspective sur la vie Le temps passe très vite – ne perdez pas une journée Pourchassez vos rêves ! Vous ne voulez pas avoir 80 ans et regretter de ne pas avoir voyagé ou poursuivi votre passion Vous n’avez pas autant de temps que vous le pensez – faites quelque chose chaque jour, même si c’est juste pour vous-même Comparaisons sociales \u0026amp; calendriers de vie Ne tombez pas dans le piège de croire que tout le monde de votre âge a quelque chose que vous n’avez pas Une fois sorti de l’école, il n’y a plus de calendriers – vous n’êtes pas censé faire quoi que ce soit à un moment précis de votre vie Ne vous inquiétez pas de l’école secondaire – une fois terminée, personne ne s’en soucie, sauf pour obtenir votre diplôme Relations \u0026amp; vie sociale Choisissez vos amis avec sagesse – ne gardez pas des amis qui vous abattent, qui ne vous appellent que quand ils ont besoin de quelque chose, ou qui freinent votre évolution Demandez-le – que ce soit la personne qui fait battre votre cœur ou la augmentation de salaire que vous méritez, les choses ne viendront pas toutes seules Sagesse financière Épargnez de l’argent et investissez – les investissements doublent environ tous les dix ans Faire quelque chose qui vous plaît comme métier est plus gratifiant que faire quelque chose qui rapporte énormément Croissance personnelle Échouez davantage – l’échec n’est pas une catastrophe, mais une partie du processus d’amélioration Désintoxiquez-vous des mensonges sociétaux et examinez vos croyances en profondeur Apprenez à vivre dans le présent – le passé n’est que mémoire et le futur, une imagination Source : commentaires Reddit\n","permalink":"https://www.shafiq.in/fr/blog/key-life-advice-from-people-in-their-40s-to-those-in-their-20s/","summary":"\u003ch2 id=\"conseils-essentiels-sur-la-vie-de-personnes-dans-la-quarantaine-à-celles-dans-la-vingtaine\"\u003eConseils essentiels sur la vie de personnes dans la quarantaine à celles dans la vingtaine\u003c/h2\u003e\n\u003ch3 id=\"santé-physique--soins-personnels\"\u003e\u003cstrong\u003eSanté physique \u0026amp; soins personnels\u003c/strong\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrenez soin de vos dents – c’est la seule paire que vous aurez jamais\u003c/li\u003e\n\u003cli\u003ePrenez soin de vos genoux et de votre dos\u003c/li\u003e\n\u003cli\u003eÉtirez-vous chaque jour, ou du moins plus que jamais – restez souple, car une fois la souplesse perdue, il est presque impossible de la retrouver\u003c/li\u003e\n\u003cli\u003eN’attendez pas d’être en forme – commencez à vous exercer maintenant, de la manière qui vous plaît\u003c/li\u003e\n\u003cli\u003eUtilisez une crème solaire et buvez beaucoup d’eau\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"santé-mentale--perception-de-soi\"\u003e\u003cstrong\u003eSanté mentale \u0026amp; perception de soi\u003c/strong\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eArrêtez de vous soucier de ce que pensent les autres – c’était l’un des points les plus soulignés\u003c/li\u003e\n\u003cli\u003eVous n’êtes pas spécial, personne ne s’intéresse à ce que vous faites, et plus tôt vous l’accepterez, plus tôt vous pourrez être en paix avec vous-même\u003c/li\u003e\n\u003cli\u003eNe vous prenez pas trop au sérieux – vous allez probablement regarder en arrière dix ans plus tard, légèrement honteux de la profondeur que vous pensiez avoir\u003c/li\u003e\n\u003cli\u003eIl est normal et sain de rester en silence – posez votre téléphone et simplement être\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"temps--perspective-sur-la-vie\"\u003e\u003cstrong\u003eTemps \u0026amp; perspective sur la vie\u003c/strong\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLe temps passe très vite – ne perdez pas une journée\u003c/li\u003e\n\u003cli\u003ePourchassez vos rêves ! Vous ne voulez pas avoir 80 ans et regretter de ne pas avoir voyagé ou poursuivi votre passion\u003c/li\u003e\n\u003cli\u003eVous n’avez pas autant de temps que vous le pensez – faites quelque chose chaque jour, même si c’est juste pour vous-même\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"comparaisons-sociales--calendriers-de-vie\"\u003e\u003cstrong\u003eComparaisons sociales \u0026amp; calendriers de vie\u003c/strong\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNe tombez pas dans le piège de croire que tout le monde de votre âge a quelque chose que vous n’avez pas\u003c/li\u003e\n\u003cli\u003eUne fois sorti de l’école, il n’y a plus de calendriers – vous n’êtes pas censé faire quoi que ce soit à un moment précis de votre vie\u003c/li\u003e\n\u003cli\u003eNe vous inquiétez pas de l’école secondaire – une fois terminée, personne ne s’en soucie, sauf pour obtenir votre diplôme\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"relations--vie-sociale\"\u003e\u003cstrong\u003eRelations \u0026amp; vie sociale\u003c/strong\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eChoisissez vos amis avec sagesse – ne gardez pas des amis qui vous abattent, qui ne vous appellent que quand ils ont besoin de quelque chose, ou qui freinent votre évolution\u003c/li\u003e\n\u003cli\u003eDemandez-le – que ce soit la personne qui fait battre votre cœur ou la augmentation de salaire que vous méritez, les choses ne viendront pas toutes seules\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"sagesse-financière\"\u003e\u003cstrong\u003eSagesse financière\u003c/strong\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eÉpargnez de l’argent et investissez – les investissements doublent environ tous les dix ans\u003c/li\u003e\n\u003cli\u003eFaire quelque chose qui vous plaît comme métier est plus gratifiant que faire quelque chose qui rapporte énormément\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"croissance-personnelle\"\u003e\u003cstrong\u003eCroissance personnelle\u003c/strong\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eÉchouez davantage – l’échec n’est pas une catastrophe, mais une partie du processus d’amélioration\u003c/li\u003e\n\u003cli\u003eDésintoxiquez-vous des mensonges sociétaux et examinez vos croyances en profondeur\u003c/li\u003e\n\u003cli\u003eApprenez à vivre dans le présent – le passé n’est que mémoire et le futur, une imagination\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSource : commentaires Reddit\u003c/p\u003e","title":"Key Life Advice from People in Their 40s to Those in Their 20s"},{"content":"WHPH (Work Hard Play Hard) Fonctionnalités principales :\nGestion des tâches : organisez et suivez efficacement vos tâches quotidiennes Suivi des habitudes : développez et maintenez de bonnes habitudes avec un suivi de progression Suivi de l\u0026rsquo;utilisation des applications : surveillez le temps passé sur différentes applications Optimisation du temps : analysez vos habitudes d\u0026rsquo;utilisation du temps et améliorez votre productivité Synchronisation optionnelle des données entre vos appareils desktop et mobiles via votre réseau local Disponible pour Android, Windows et Linux Confidentialité et synchronisation :\nToute synchronisation se fait localement, garantissant que vos données de productivité restent privées Aucun service cloud nécessaire pour la synchronisation Super Productivity Fonctionnalités principales :\nApplication todo list avancée avec intégration du Timeboxing et du suivi du temps Intégrations pour Jira, GitLab, GitHub et Open Project Chronomètre Pomodoro pour combattre la procrastination Suivi et rapports de temps sans effort : suivez vos heures de travail sans tracas. Générez facilement des feuilles de temps détaillées et des synthèses Intégrations fluides : connectez-vous à vos calendriers, Jira, Github et Gitlab 100 % privé, fonctionne hors ligne Réception des utilisateurs :\nLes utilisateurs apprécient Super Productivity pour sa simplicité, sa richesse fonctionnelle et sa nature open-source Très bien noté pour ses capacités complètes de gestion des tâches et de suivi du temps Différences principales Public cible :\nWHPH : orienté vers la productivité générale avec un accent sur le suivi des habitudes et la surveillance de l\u0026rsquo;utilisation des applications Super Productivity : spécialement conçu pour les développeurs et les designers, avec des intégrations d\u0026rsquo;outils de développement Capacités d\u0026rsquo;intégration :\nWHPH : intégrations limitées, se concentre sur la synchronisation locale Super Productivity : intégrations étendues avec des plateformes de développement (GitHub, GitLab, Jira) et des systèmes de calendrier Suivi des habitudes :\nWHPH : fort accent sur la construction et le suivi des habitudes Super Productivity : principalement orienté gestion des tâches et suivi du temps Surveillance des applications :\nWHPH : inclut le suivi de l\u0026rsquo;utilisation des applications comme fonctionnalité centrale Super Productivity : aucune surveillance spécifique des applications mentionnée Les deux applications sont open-source et privilégient la confidentialité, mais WHPH semble mieux adapté à la productivité générale et à la formation d\u0026rsquo;habitudes, tandis que Super Productivity excelle pour les développeurs et les équipes ayant besoin d\u0026rsquo;intégrations de gestion de projets.\n","permalink":"https://www.shafiq.in/fr/blog/comparison-of-whph-and-super-productivity-apps/","summary":"\u003ch2 id=\"whph-work-hard-play-hard\"\u003eWHPH (Work Hard Play Hard)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFonctionnalités principales :\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGestion des tâches : organisez et suivez efficacement vos tâches quotidiennes\u003c/li\u003e\n\u003cli\u003eSuivi des habitudes : développez et maintenez de bonnes habitudes avec un suivi de progression\u003c/li\u003e\n\u003cli\u003eSuivi de l\u0026rsquo;utilisation des applications : surveillez le temps passé sur différentes applications\u003c/li\u003e\n\u003cli\u003eOptimisation du temps : analysez vos habitudes d\u0026rsquo;utilisation du temps et améliorez votre productivité\u003c/li\u003e\n\u003cli\u003eSynchronisation optionnelle des données entre vos appareils desktop et mobiles via votre réseau local\u003c/li\u003e\n\u003cli\u003eDisponible pour Android, Windows et Linux\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eConfidentialité et synchronisation :\u003c/strong\u003e\u003c/p\u003e","title":"Comparison of WHPH and Super Productivity Apps"},{"content":" Tournez le sélecteur sur un réglage de tension plus élevé - Essayez le réglage \u0026ldquo;200\u0026rdquo; dans la section tension continue (V⎓). Cela permet de mesurer des tensions allant jusqu\u0026rsquo;à 200 V.\nVérifiez vos connexions - Assurez-vous que :\nLa sonde noire est fermement insérée dans le port \u0026ldquo;COM\u0026rdquo; La sonde rouge est fermement insérée dans le port \u0026ldquo;VΩmA\u0026rdquo; Vous avez un bon contact avec les bornes de la batterie Vérifiez l’orientation de la batterie - Assurez-vous de toucher :\nLa sonde noire à l’extrémité négative (-) de la batterie La sonde rouge à l’extrémité positive (+) de la batterie ","permalink":"https://www.shafiq.in/fr/blog/how-to-test-aa-and-aaa-batteries-using-a-multimeter/","summary":"\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eTournez le sélecteur sur un réglage de tension plus élevé\u003c/strong\u003e - Essayez le réglage \u0026ldquo;200\u0026rdquo; dans la section tension continue (V⎓). Cela permet de mesurer des tensions allant jusqu\u0026rsquo;à 200 V.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eVérifiez vos connexions\u003c/strong\u003e - Assurez-vous que :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eLa sonde noire est fermement insérée dans le port \u0026ldquo;COM\u0026rdquo;\u003c/li\u003e\n\u003cli\u003eLa sonde rouge est fermement insérée dans le port \u0026ldquo;VΩmA\u0026rdquo;\u003c/li\u003e\n\u003cli\u003eVous avez un bon contact avec les bornes de la batterie\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eVérifiez l’orientation de la batterie\u003c/strong\u003e - Assurez-vous de toucher :\u003c/p\u003e","title":"How to test AA and AAA batteries using a multimeter"},{"content":"Iceraven et IronFox sont deux navigateurs open source pour Android, offrant chacun des fonctionnalités de confidentialité et de personnalisation, mais avec des points d\u0026rsquo;accentuation et des publics cibles différents.\nFonctionnalités principales Fonctionnalité Iceraven IronFox Confidentialité \u0026amp; Télématique Télématique réduit, personnalisable123 Renforcée pour la confidentialité, tout télématique supprimé456 Compléments/Extensions Prise en charge étendue, plus de choix que Firefox standard178 Prise en charge des extensions Firefox Android6 Personnalisation about:config, plus d\u0026rsquo;options proches de celles du bureau127 Confidentialité avancée par défaut, interface simplifiée456 Vitesse \u0026amp; Performance Comparable à Brave/Chrome ; optimisé en ressources89 Léger, légèrement plus rapide que Firefox standard6 Objectif principal Personnalisation, extensions et fonctionnalités pour utilisateurs avancés12 Confidentialité, déblocage et anti-surveillance465 Mises à jour Pilotées par la communauté, plus lentes mais constantes210 Actives, réactives aux problèmes signalés par les utilisateurs54 Canaux officiels Versions APK sur Github, non disponibles sur Play Store128 F-Droid/Accrescent, Github, non disponible sur Play Store46 Navigateur Iceraven Basé sur Firefox stable pour Android, avec un accent sur une plus grande disponibilité de compléments et des options de configuration comme about:config1112. Attire les utilisateurs souhaitant reproduire l\u0026rsquo;expérience de personnalisation et les plugins de Firefox bureau sur mobile111. Les versions et mises à jour sont gérées via Github et non distribuées via la Play Store128. Certains commentaires soulignent l\u0026rsquo;absence de garanties de sécurité ; à utiliser principalement par des utilisateurs avancés familiers avec l\u0026rsquo;intérieur du navigateur12. Navigateur IronFox Dérivé de Mull (lui-même une version Firefox axée sur la confidentialité), avec suppression agressive du suivi et de la télématique456. Priorise la confidentialité de l\u0026rsquo;utilisateur, bloque la télématique par défaut, et inclut des paramètres stricts de protection contre le suivi46. Garde des fonctionnalités comme Firefox Sync ; désactive ou restreint les fonctionnalités pouvant révéler des données (comme WebGL, sauf activation manuelle)46. Distribué via des magasins d\u0026rsquo;applications alternatifs comme F-Droid, Accrescent, et Github ; non disponible sur Play Store46. Certaines fonctionnalités avancées de confidentialité peuvent entraîner des incompatibilités avec certains sites web, notamment ceux qui dépendent de fonctionnalités désactivées par défaut par IronFox4. Résumé Iceraven convient idéalement aux utilisateurs souhaitant un navigateur \u0026ldquo;puissance\u0026rdquo; avec une personnalisation approfondie et une large bibliothèque d\u0026rsquo;extensions, rappelant ainsi l\u0026rsquo;esprit de Firefox bureau1117. IronFox est le meilleur choix pour les utilisateurs qui placent la confidentialité au premier plan, cherchant un navigateur basé sur Firefox qui supprime automatiquement la télématique et les fonctionnalités inutiles pour une expérience légère et sécurisée54612. Les deux offrent plus de contrôle et de confidentialité que Firefox standard pour Android, mais Iceraven se concentre sur la flexibilité tandis qu\u0026rsquo;IronFox met l\u0026rsquo;accent sur le renforcement de la confidentialité. 1314151617181920\nhttps://github.com/fork-maintainers/iceraven-browser\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nhttps://avoidthehack.com/best-privacy-browsers-android\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nhttps://news.ycombinator.com/item?id=34832512\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nhttps://hyperborea.org/reviews/apps/ironfox/\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nhttps://www.reddit.com/r/browsers/comments/1jwx045/whats_your_opinion_on_ironfox/\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nhttps://www.youtube.com/watch?v=WfV5bG0ZxOk\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nhttps://github.com/fork-maintainers/iceraven-browser/issues/756\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nhttps://iceraven-browser.en.uptodown.com/android\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nhttps://www.reddit.com/r/browsers/comments/1irci61/i_changed_my_mind_about_firefox_on_android_after/\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nhttps://forum.f-droid.org/t/what-is-a-good-option-as-firefox-alternative/17437\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nhttps://www.ghacks.net/2021/08/05/is-iceraven-the-better-firefox-for-android-mobile-browser/\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nhttps://discuss.privacyguides.net/t/ironfox-a-new-mull-fork/23638\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nhttps://www.wilderssecurity.com/threads/iceraven-browser-an-open-source-fork-of-the-new-firefox-web-browser-for-android.439448/\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nhttps://github.com/fork-maintainers/iceraven-browser/issues/691\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nhttps://www.reddit.com/r/androidapps/comments/w8b23d/whats_the_difference_between_firefox_fennec/\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nhttps://www.libhunt.com/compare-iceraven-browser-vs-bromite\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nhttps://www.libhunt.com/compare-Waterfox-vs-iceraven-browser\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nhttps://www.youtube.com/watch?v=pVmG3ZjCouw\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nhttps://www.libhunt.com/compare-iceraven-browser-vs-Mull-Fenix\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nhttps://discuss.privacyguides.net/t/ironfox-a-new-mull-fork/23638?page=5\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","permalink":"https://www.shafiq.in/fr/blog/iceraven-and-ironfox-browser-comparison/","summary":"\u003cp\u003eIceraven et IronFox sont deux navigateurs open source pour Android, offrant chacun des fonctionnalités de confidentialité et de personnalisation, mais avec des points d\u0026rsquo;accentuation et des publics cibles différents.\u003c/p\u003e\n\u003ch3 id=\"fonctionnalités-principales\"\u003eFonctionnalités principales\u003c/h3\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth style=\"text-align: left\"\u003eFonctionnalité\u003c/th\u003e\n          \u003cth style=\"text-align: left\"\u003eIceraven\u003c/th\u003e\n          \u003cth style=\"text-align: left\"\u003eIronFox\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd style=\"text-align: left\"\u003eConfidentialité \u0026amp; Télématique\u003c/td\u003e\n          \u003ctd style=\"text-align: left\"\u003eTélématique réduit, personnalisable\u003csup id=\"fnref:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref:3\"\u003e\u003ca href=\"#fn:3\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e3\u003c/a\u003e\u003c/sup\u003e\u003c/td\u003e\n          \u003ctd style=\"text-align: left\"\u003eRenforcée pour la confidentialité, tout télématique supprimé\u003csup id=\"fnref:4\"\u003e\u003ca href=\"#fn:4\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e4\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref:5\"\u003e\u003ca href=\"#fn:5\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e5\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref:6\"\u003e\u003ca href=\"#fn:6\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e6\u003c/a\u003e\u003c/sup\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd style=\"text-align: left\"\u003eCompléments/Extensions\u003c/td\u003e\n          \u003ctd style=\"text-align: left\"\u003ePrise en charge étendue, plus de choix que Firefox standard\u003csup id=\"fnref1:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref:7\"\u003e\u003ca href=\"#fn:7\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e7\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref:8\"\u003e\u003ca href=\"#fn:8\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e8\u003c/a\u003e\u003c/sup\u003e\u003c/td\u003e\n          \u003ctd style=\"text-align: left\"\u003ePrise en charge des extensions Firefox Android\u003csup id=\"fnref1:6\"\u003e\u003ca href=\"#fn:6\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e6\u003c/a\u003e\u003c/sup\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd style=\"text-align: left\"\u003ePersonnalisation\u003c/td\u003e\n          \u003ctd style=\"text-align: left\"\u003eabout:config, plus d\u0026rsquo;options proches de celles du bureau\u003csup id=\"fnref2:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref1:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref1:7\"\u003e\u003ca href=\"#fn:7\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e7\u003c/a\u003e\u003c/sup\u003e\u003c/td\u003e\n          \u003ctd style=\"text-align: left\"\u003eConfidentialité avancée par défaut, interface simplifiée\u003csup id=\"fnref1:4\"\u003e\u003ca href=\"#fn:4\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e4\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref1:5\"\u003e\u003ca href=\"#fn:5\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e5\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref2:6\"\u003e\u003ca href=\"#fn:6\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e6\u003c/a\u003e\u003c/sup\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd style=\"text-align: left\"\u003eVitesse \u0026amp; Performance\u003c/td\u003e\n          \u003ctd style=\"text-align: left\"\u003eComparable à Brave/Chrome ; optimisé en ressources\u003csup id=\"fnref1:8\"\u003e\u003ca href=\"#fn:8\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e8\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref:9\"\u003e\u003ca href=\"#fn:9\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e9\u003c/a\u003e\u003c/sup\u003e\u003c/td\u003e\n          \u003ctd style=\"text-align: left\"\u003eLéger, légèrement plus rapide que Firefox standard\u003csup id=\"fnref3:6\"\u003e\u003ca href=\"#fn:6\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e6\u003c/a\u003e\u003c/sup\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd style=\"text-align: left\"\u003eObjectif principal\u003c/td\u003e\n          \u003ctd style=\"text-align: left\"\u003ePersonnalisation, extensions et fonctionnalités pour utilisateurs avancés\u003csup id=\"fnref3:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref2:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e\u003c/td\u003e\n          \u003ctd style=\"text-align: left\"\u003eConfidentialité, déblocage et anti-surveillance\u003csup id=\"fnref2:4\"\u003e\u003ca href=\"#fn:4\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e4\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref4:6\"\u003e\u003ca href=\"#fn:6\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e6\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref2:5\"\u003e\u003ca href=\"#fn:5\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e5\u003c/a\u003e\u003c/sup\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd style=\"text-align: left\"\u003eMises à jour\u003c/td\u003e\n          \u003ctd style=\"text-align: left\"\u003ePilotées par la communauté, plus lentes mais constantes\u003csup id=\"fnref3:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref:10\"\u003e\u003ca href=\"#fn:10\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e10\u003c/a\u003e\u003c/sup\u003e\u003c/td\u003e\n          \u003ctd style=\"text-align: left\"\u003eActives, réactives aux problèmes signalés par les utilisateurs\u003csup id=\"fnref3:5\"\u003e\u003ca href=\"#fn:5\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e5\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref3:4\"\u003e\u003ca href=\"#fn:4\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e4\u003c/a\u003e\u003c/sup\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd style=\"text-align: left\"\u003eCanaux officiels\u003c/td\u003e\n          \u003ctd style=\"text-align: left\"\u003eVersions APK sur Github, non disponibles sur Play Store\u003csup id=\"fnref4:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref4:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref2:8\"\u003e\u003ca href=\"#fn:8\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e8\u003c/a\u003e\u003c/sup\u003e\u003c/td\u003e\n          \u003ctd style=\"text-align: left\"\u003eF-Droid/Accrescent, Github, non disponible sur Play Store\u003csup id=\"fnref4:4\"\u003e\u003ca href=\"#fn:4\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e4\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref5:6\"\u003e\u003ca href=\"#fn:6\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e6\u003c/a\u003e\u003c/sup\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch3 id=\"navigateur-iceraven\"\u003eNavigateur Iceraven\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBasé sur Firefox stable pour Android, avec un accent sur une plus grande disponibilité de compléments et des options de configuration comme about:config\u003csup id=\"fnref5:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref:11\"\u003e\u003ca href=\"#fn:11\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e11\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref5:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e.\u003c/li\u003e\n\u003cli\u003eAttire les utilisateurs souhaitant reproduire l\u0026rsquo;expérience de personnalisation et les plugins de Firefox bureau sur mobile\u003csup id=\"fnref1:11\"\u003e\u003ca href=\"#fn:11\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e11\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref6:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e.\u003c/li\u003e\n\u003cli\u003eLes versions et mises à jour sont gérées via Github et non distribuées via la Play Store\u003csup id=\"fnref7:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref6:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref3:8\"\u003e\u003ca href=\"#fn:8\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e8\u003c/a\u003e\u003c/sup\u003e.\u003c/li\u003e\n\u003cli\u003eCertains commentaires soulignent l\u0026rsquo;absence de garanties de sécurité ; à utiliser principalement par des utilisateurs avancés familiers avec l\u0026rsquo;intérieur du navigateur\u003csup id=\"fnref8:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref7:2\"\u003e\u003ca href=\"#fn:2\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e2\u003c/a\u003e\u003c/sup\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"navigateur-ironfox\"\u003eNavigateur IronFox\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDérivé de Mull (lui-même une version Firefox axée sur la confidentialité), avec suppression agressive du suivi et de la télématique\u003csup id=\"fnref5:4\"\u003e\u003ca href=\"#fn:4\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e4\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref4:5\"\u003e\u003ca href=\"#fn:5\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e5\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref6:6\"\u003e\u003ca href=\"#fn:6\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e6\u003c/a\u003e\u003c/sup\u003e.\u003c/li\u003e\n\u003cli\u003ePriorise la confidentialité de l\u0026rsquo;utilisateur, bloque la télématique par défaut, et inclut des paramètres stricts de protection contre le suivi\u003csup id=\"fnref6:4\"\u003e\u003ca href=\"#fn:4\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e4\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref7:6\"\u003e\u003ca href=\"#fn:6\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e6\u003c/a\u003e\u003c/sup\u003e.\u003c/li\u003e\n\u003cli\u003eGarde des fonctionnalités comme Firefox Sync ; désactive ou restreint les fonctionnalités pouvant révéler des données (comme WebGL, sauf activation manuelle)\u003csup id=\"fnref7:4\"\u003e\u003ca href=\"#fn:4\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e4\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref8:6\"\u003e\u003ca href=\"#fn:6\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e6\u003c/a\u003e\u003c/sup\u003e.\u003c/li\u003e\n\u003cli\u003eDistribué via des magasins d\u0026rsquo;applications alternatifs comme F-Droid, Accrescent, et Github ; non disponible sur Play Store\u003csup id=\"fnref8:4\"\u003e\u003ca href=\"#fn:4\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e4\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref9:6\"\u003e\u003ca href=\"#fn:6\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e6\u003c/a\u003e\u003c/sup\u003e.\u003c/li\u003e\n\u003cli\u003eCertaines fonctionnalités avancées de confidentialité peuvent entraîner des incompatibilités avec certains sites web, notamment ceux qui dépendent de fonctionnalités désactivées par défaut par IronFox\u003csup id=\"fnref9:4\"\u003e\u003ca href=\"#fn:4\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e4\u003c/a\u003e\u003c/sup\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"résumé\"\u003eRésumé\u003c/h3\u003e\n\u003cp\u003eIceraven convient idéalement aux utilisateurs souhaitant un navigateur \u0026ldquo;puissance\u0026rdquo; avec une personnalisation approfondie et une large bibliothèque d\u0026rsquo;extensions, rappelant ainsi l\u0026rsquo;esprit de Firefox bureau\u003csup id=\"fnref2:11\"\u003e\u003ca href=\"#fn:11\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e11\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref9:1\"\u003e\u003ca href=\"#fn:1\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e1\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref2:7\"\u003e\u003ca href=\"#fn:7\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e7\u003c/a\u003e\u003c/sup\u003e. IronFox est le meilleur choix pour les utilisateurs qui placent la confidentialité au premier plan, cherchant un navigateur basé sur Firefox qui supprime automatiquement la télématique et les fonctionnalités inutiles pour une expérience légère et sécurisée\u003csup id=\"fnref5:5\"\u003e\u003ca href=\"#fn:5\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e5\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref10:4\"\u003e\u003ca href=\"#fn:4\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e4\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref10:6\"\u003e\u003ca href=\"#fn:6\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e6\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref:12\"\u003e\u003ca href=\"#fn:12\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e12\u003c/a\u003e\u003c/sup\u003e. Les deux offrent plus de contrôle et de confidentialité que Firefox standard pour Android, mais Iceraven se concentre sur la flexibilité tandis qu\u0026rsquo;IronFox met l\u0026rsquo;accent sur le renforcement de la confidentialité.\n\u003cspan style=\"display:none\"\u003e\u003csup id=\"fnref:13\"\u003e\u003ca href=\"#fn:13\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e13\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref:14\"\u003e\u003ca href=\"#fn:14\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e14\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref:15\"\u003e\u003ca href=\"#fn:15\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e15\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref:16\"\u003e\u003ca href=\"#fn:16\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e16\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref:17\"\u003e\u003ca href=\"#fn:17\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e17\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref:18\"\u003e\u003ca href=\"#fn:18\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e18\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref:19\"\u003e\u003ca href=\"#fn:19\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e19\u003c/a\u003e\u003c/sup\u003e\u003csup id=\"fnref:20\"\u003e\u003ca href=\"#fn:20\" class=\"footnote-ref\" role=\"doc-noteref\"\u003e20\u003c/a\u003e\u003c/sup\u003e\u003c/span\u003e\u003c/p\u003e","title":"Iceraven and Ironfox browser comparison"},{"content":"Mise en œuvre de TOGAF en utilisant la méthodologie SCRUM Mettre en œuvre TOGAF (The Open Group Architecture Framework) à l’aide de Scrum consiste à combiner l’approche structurée et globale de TOGAF avec le modèle d’élaboration itérative et agile de Scrum. Voici un guide étape par étape pour y parvenir :\n1. Comprendre la synergie entre TOGAF et Scrum TOGAF offre un cadre de haut niveau pour l’architecture d’entreprise (EA), avec des phases telles que ADM (Architecture Development Method). Scrum est une méthodologie agile pour le développement logiciel ou produit itératif, basée sur des Sprints, des backlogs et des équipes pluridisciplinaires. Objectif : Utiliser Scrum pour exécuter les phases de TOGAF de manière incrémentale tout en maintenant une agilité. 2. Mapper les phases ADM de TOGAF aux Sprints Scrum Au lieu d’exécuter TOGAF de façon linéaire, diviser les phases en cycles itératifs (Sprints) :\nPhase TOGAF Mise en œuvre Scrum Phase Préliminaire Sprint 0 (Configuration de la gouvernance, rôles, outils) Phase A : Vision Backlog Produit (Épics pour la vision EA) Phase B-D : Architecture Métier, Données, Application, Technologie Diviser en incréments de taille Sprint (par exemple, un domaine par Sprint) Phase E : Opportunités et Solutions Révision du backlog pour l’implémentation Phase F : Planification de la Migration Tâches de Sprint pour la priorisation du roadmap Phase G : Implémentation Sprints Scrum (livraison d’incréments d’architecture) Phase H : Gestion des Changements Amélioration continue (Rétrospectives de Sprint) 3. Adapter les artefacts TOGAF à Scrum Backlog d’architecture : Remplacer les livrables TOGAF par un backlog priorisé (par exemple, « Définir l’Architecture Données » comme objectif de Sprint). Planification de Sprint : Sélectionner des tâches d’architecture (par exemple, « Développer le modèle d’Architecture Application ») pour un Sprint. Livraison incrémentale : Publier les artefacts d’architecture itérativement (par exemple, une partie de l’Architecture Technologique par Sprint). 4. Rôles et responsabilités Rôle TOGAF Rôle Scrum Responsabilités Architecte d’Entreprise Product Owner (ou Architecte de l’Équipe Scrum) Priorisation du backlog d’architecture Conseil d’Architecture Parties prenantes (dans les Revues de Sprint) Revue des incréments EA Maître Scrum Facilite le processus TOGAF Agile Élimination des blocages 5. Étapes concrètes de mise en œuvre Sprint 0 (Phase Préliminaire) :\nDéfinir la gouvernance EA, les outils et la structure de l’équipe Scrum. Créer une Vision d’Architecture de haut niveau (Épic). Sprints d’Architecture (Phases A-D) :\nChaque Sprint livre une partie de l’architecture (par exemple, des Modèles de Processus Métier au Sprint 1, Paysage Application au Sprint 2). Utiliser les Revue de Sprint pour recueillir les retours des parties prenantes. Planification de Migration (Phases E-F) :\nPrioriser les architectures de transition dans le backlog. Utiliser Scrum pour planifier les étapes d’implémentation (par exemple, « Migrer le Système X » comme objectif de Sprint). Implémentation (Phase G) :\nLivrer des solutions guidées par l’architecture durant les Sprints de développement. Valider contre les principes EA dans le Definition of Done. Amélioration continue (Phase H) :\nRéfléchir à l’adoption de l’architecture lors des Rétrospectives. Mettre à jour le backlog EA selon les retours. 6. Outils et techniques Gestion du backlog : Jira, Azure DevOps (étiqueter les éléments liés à TOGAF). Outils de modélisation : ArchiMate, Lucidchart (intégrés au travail de Sprint). Gouvernance : Intégrer des contrôles EA dans les Revues de Sprint et les Rétrospectives. 7. Défis et solutions Défi Solution TOGAF très axé sur la documentation Se concentrer sur « assez d’architecture » par Sprint. Alignement des parties prenantes Revues de Sprint régulières avec le Conseil d’Architecture. Équilibre entre agilité et gouvernance Définir des garde-fous EA légers. 8. Exemple de cycle de Sprint Objectif de Sprint : « Définir la carte des capacités métiers essentielles ». Tâches : Modéliser les processus métiers (BPMN). Valider avec les parties prenantes. Mettre à jour le Référentiel d’Architecture. Résultat : Un artefact d’Architecture Métier en version brouillon (affiné au Sprint suivant). ","permalink":"https://www.shafiq.in/fr/blog/implementing-togaf-using-scrum-methodology/","summary":"\u003ch1 id=\"mise-en-œuvre-de-togaf-en-utilisant-la-méthodologie-scrum\"\u003eMise en œuvre de TOGAF en utilisant la méthodologie SCRUM\u003c/h1\u003e\n\u003cp\u003eMettre en œuvre \u003cstrong\u003eTOGAF (The Open Group Architecture Framework)\u003c/strong\u003e à l’aide de \u003cstrong\u003eScrum\u003c/strong\u003e consiste à combiner l’approche structurée et globale de TOGAF avec le modèle d’élaboration itérative et agile de Scrum. Voici un guide étape par étape pour y parvenir :\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"1-comprendre-la-synergie-entre-togaf-et-scrum\"\u003e1. Comprendre la synergie entre TOGAF et Scrum\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eTOGAF\u003c/strong\u003e offre un cadre de haut niveau pour l’architecture d’entreprise (EA), avec des phases telles que \u003cstrong\u003eADM (Architecture Development Method)\u003c/strong\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eScrum\u003c/strong\u003e est une méthodologie agile pour le développement logiciel ou produit itératif, basée sur des Sprints, des backlogs et des équipes pluridisciplinaires.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eObjectif\u003c/strong\u003e : Utiliser Scrum pour exécuter les phases de TOGAF de manière incrémentale tout en maintenant une agilité.\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch2 id=\"2-mapper-les-phases-adm-de-togaf-aux-sprints-scrum\"\u003e2. Mapper les phases ADM de TOGAF aux Sprints Scrum\u003c/h2\u003e\n\u003cp\u003eAu lieu d’exécuter TOGAF de façon linéaire, diviser les phases en cycles itératifs (Sprints) :\u003c/p\u003e","title":"Implementing TOGAF using SCRUM methodology"},{"content":"Avant de commencer un contrat, prenez en compte les éléments suivants :\nUn contrôle BPSS est-il nécessaire ? Un contrôle DBS est-il nécessaire ? La date de début dépend-elle de la fourniture d’un ordinateur portable par le client et de sa configuration ? Signes d\u0026rsquo;alerte et leçons apprises\nSoyez vigilant lorsque : Les revues de code sont effectuées par une personne qui ne travaille pas activement avec vous ou qui ne travaille qu’en partie avec vous. L\u0026rsquo;organisation utilise ServiceNow pour les demandes de projet au lieu de tickets de support ou de changement. Aucune tâche opérationnelle n’est réalisée au sein de la squad ou de l’équipe. Le chef ingénieur n’est pas impliqué sur votre projet. Meilleures pratiques : Découvrez tous les projets en cours avant de vous concentrer sur l’un d’eux. Créez une tâche Jira d’onboarding si possible. Organisez des réunions 1 à 1 avec tous les membres de l’équipe. Concentrez-vous sur l’impact positif et la construction de relations au travail plutôt que sur la simple performance. Questions à poser au client\nLe chef ingénieur travaille-t-il sur AWS, Azure, etc. ? ServiceNow est-il utilisé, et est-il utilisé pour la livraison de projets ? Y a-t-il des tâches opérationnelles effectuées par l’équipe une fois que l’histoire utilisateur a été délivrée dans l’environnement de production ? Existe-t-il un processus de revue de code, et la revue est-elle effectuée par un autre membre de la même équipe qui travaillera avec moi sur le même projet ? Des réunions quotidiennes (standups) sont-elles prévues ? ","permalink":"https://www.shafiq.in/fr/blog/things-to-do-and-questions-to-ask-when-starting-a-new-contract/","summary":"\u003cp\u003eAvant de commencer un contrat, prenez en compte les éléments suivants :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUn \u003cstrong\u003econtrôle BPSS\u003c/strong\u003e est-il nécessaire ?\u003c/li\u003e\n\u003cli\u003eUn \u003cstrong\u003econtrôle DBS\u003c/strong\u003e est-il nécessaire ?\u003c/li\u003e\n\u003cli\u003eLa date de début dépend-elle de la fourniture d’un ordinateur portable par le client et de sa configuration ?\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSignes d\u0026rsquo;alerte et leçons apprises\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSoyez vigilant lorsque :\n\u003cul\u003e\n\u003cli\u003eLes revues de code sont effectuées par une personne qui ne travaille pas activement avec vous ou qui ne travaille qu’en partie avec vous.\u003c/li\u003e\n\u003cli\u003eL\u0026rsquo;organisation utilise ServiceNow pour les demandes de projet au lieu de tickets de support ou de changement.\u003c/li\u003e\n\u003cli\u003eAucune tâche opérationnelle n’est réalisée au sein de la squad ou de l’équipe.\u003c/li\u003e\n\u003cli\u003eLe chef ingénieur n’est pas impliqué sur votre projet.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eMeilleures pratiques :\n\u003cul\u003e\n\u003cli\u003eDécouvrez tous les projets en cours avant de vous concentrer sur l’un d’eux.\u003c/li\u003e\n\u003cli\u003eCréez une tâche Jira d’onboarding si possible.\u003c/li\u003e\n\u003cli\u003eOrganisez des réunions 1 à 1 avec tous les membres de l’équipe.\u003c/li\u003e\n\u003cli\u003eConcentrez-vous sur l’impact positif et la construction de relations au travail plutôt que sur la simple performance.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eQuestions à poser au client\u003c/strong\u003e\u003c/p\u003e","title":"Things to do and questions to ask when starting a new contract"},{"content":"Pour déterminer la viabilité d\u0026rsquo;un projet de conseil, prenez en compte les facteurs suivants :\nLe client peut-il facilement trouver une solution en ligne ? Idéalement, la réponse devrait être « non », ce qui indique que le problème nécessite une expertise spécialisée. Quels sont les conséquences d\u0026rsquo;une solution infructueuse ? Le coût de l\u0026rsquo;échec doit être important, mais pas catastrophique. Cela peut inclure des pertes financières, des dommages à la réputation ou des perturbations opérationnelles. En combien de temps pouvez-vous livrer une solution ? Plus vous pouvez livrer rapidement une solution fonctionnelle, mieux c\u0026rsquo;est. Cela démontre votre valeur pour le client et aide à instaurer la confiance. Avez-vous confiance en votre capacité à livrer une excellente solution ? Vous devez être absolument certain de votre capacité à livrer une solution de haute qualité. Tout doute pourrait remettre en question la confiance du client et rendre la conclusion de l\u0026rsquo;accord plus difficile. ","permalink":"https://www.shafiq.in/fr/blog/consulting-framework/","summary":"\u003cp\u003ePour déterminer la viabilité d\u0026rsquo;un projet de conseil, prenez en compte les facteurs suivants :\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eLe client peut-il facilement trouver une solution en ligne ?\u003c/strong\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cul\u003e\n\u003cli\u003eIdéalement, la réponse devrait être « non », ce qui indique que le problème nécessite une expertise spécialisée.\u003c/li\u003e\n\u003c/ul\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e\u003cstrong\u003eQuels sont les conséquences d\u0026rsquo;une solution infructueuse ?\u003c/strong\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cul\u003e\n\u003cli\u003eLe coût de l\u0026rsquo;échec doit être important, mais pas catastrophique. Cela peut inclure des pertes financières, des dommages à la réputation ou des perturbations opérationnelles.\u003c/li\u003e\n\u003c/ul\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003e\u003cstrong\u003eEn combien de temps pouvez-vous livrer une solution ?\u003c/strong\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cul\u003e\n\u003cli\u003ePlus vous pouvez livrer rapidement une solution fonctionnelle, mieux c\u0026rsquo;est. Cela démontre votre valeur pour le client et aide à instaurer la confiance.\u003c/li\u003e\n\u003c/ul\u003e\n\u003col start=\"4\"\u003e\n\u003cli\u003e\u003cstrong\u003eAvez-vous confiance en votre capacité à livrer une excellente solution ?\u003c/strong\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003cul\u003e\n\u003cli\u003eVous devez être absolument certain de votre capacité à livrer une solution de haute qualité. Tout doute pourrait remettre en question la confiance du client et rendre la conclusion de l\u0026rsquo;accord plus difficile.\u003c/li\u003e\n\u003c/ul\u003e","title":"Consulting Framework"},{"content":"La reliure est une excellente activité à adopter ! Voici certains avantages :\nVous pouvez créer des cadeaux personnalisés pour vos amis et votre famille. C’est une activité saine qui peut améliorer votre santé mentale. La reliure vous permet de rester en lien avec les autres, que ce soit en fabriquant des cadeaux ou en rejoignant une communauté de reliereurs. Matériel et fournitures que j\u0026rsquo;utilise 50Pcs Bandes de colle chaude 285mm Faites à la carte Collante thermique pour la reliure | eBay\nDétails techniques | Fabricant | SM SunniMix | | Numéro de pièce | 00230005300012582654 | | Référence fabricant | 00230005300012582654 | | Quantité dans le paquet | 1 | Autres mentions : \u0026lt;https://www.aliexpress.com/item/32912816173.html\u0026gt; \u0026lt;https://www.aliexpress.com/item/32834423518.html?spm=a2g0o.productlist.main.33.186e35a8A8l95O\u0026amp;algo_pvid=e2ef4917-21ba-484a-b1fa-e57d71ec21b5\u0026amp;algo_exp_id=e2ef4917-21ba-484a-b1fa-e57d71ec21b5-16\u0026amp;pdp_npi=3%40dis%21GBP%214.94%214.44%21%21%21%21%21%402100b18f16837280878272765d078a%2165035366945%21sea%21UK%210\u0026amp;curPageLogUid=lvptJGFOLVCM\u0026gt; \u0026lt;https://www.aliexpress.com/item/33042461699.html?spm=a2g0o.productlist.main.5.186e35a8A8l95O\u0026amp;algo_pvid=e2ef4917-21ba-484a-b1fa-e57d71ec21b5\u0026amp;algo_exp_id=e2ef4917-21ba-484a-b1fa-e57d71ec21b5-2\u0026amp;pdp_npi=3%40dis%21GBP%210.07%210.07%21%21%21%21%21%402100b18f16837280878272765d078a%2167369346133%21sea%21UK%210\u0026amp;curPageLogUid=Qadiz7lxtRtN\u0026gt; \u0026lt;https://www.aliexpress.com/item/32834423518.html?spm=a2g0o.productlist.main.15.73ab73a94aswDw\u0026amp;algo_pvid=265cc693-e736-4091-b450-199829f931ff\u0026amp;algo_exp_id=265cc693-e736-4091-b450-199829f931ff-7\u0026amp;pdp_npi=3%40dis%21GBP%214.94%214.44%21%21%21%21%21%402100b18f16837996571315347d078a%2165035366945%21sea%21UK%210\u0026amp;curPageLogUid=eHuHeLKMkKUE\u0026gt; \u0026lt;https://www.aliexpress.com/item/1005005421841978.html?spm=a2g0o.productlist.main.7.73ab73a94aswDw\u0026amp;algo_pvid=265cc693-e736-4091-b450-199829f931ff\u0026amp;algo_exp_id=265cc693-e736-4091-b450-199829f931ff-3\u0026amp;pdp_npi=3%40dis%21GBP%2147.29%2135.47%21%21%21%21%21%402100b18f16837996571315347d078a%2112000032999667187%21sea%21UK%210\u0026amp;curPageLogUid=L7I0cISbhRWv\u0026gt; \u0026lt;https://www.aliexpress.com/item/1005002327147381.html?spm=a2g0o.productlist.main.5.73ab73a94aswDw\u0026amp;algo_pvid=265cc693-e736-4091-b450-199829f931ff\u0026amp;algo_exp_id=265cc693-e736-4091-b450-199829f931ff-2\u0026amp;pdp_npi=3%40dis%21GBP%2121.69%2113.01%21%21%21%21%21%402100b18f16837996571315347d078a%2112000020186243120%21sea%21UK%210\u0026amp;curPageLogUid=yviPvGTashf2\u0026gt; \u0026lt;https://www.aliexpress.com/item/32912816173.html?spm=a2g0o.productlist.main.3.73ab73a94aswDw\u0026amp;algo_pvid=265cc693-e736-4091-b450-199829f931ff\u0026amp;algo_exp_id=265cc693-e736-4091-b450-199829f931ff-1\u0026amp;pdp_npi=3%40dis%21GBP%214.7%214.22%21%21%21%21%21%4022100b18f168300b18f16837996571315347d078a%21659471785544%21sea%21UK%210\u0026amp;curPageLogUid=GyWjnENo8zlM\u0026gt; Artway Colle PVA Forte - 1 Litre, Blanc : Amazon.co.uk : Maison \u0026amp; Cuisine\nSpécifications de cet article | Nom de la marque | Artway | | Couleur | Blanc | | Matériau compatible | Tissu, Plastique | | EAN | 0660989637583 , 5060669631033 | | Volume de l'article | 1 litre | | Numéro de modèle | 1 Litre | | Numéro de pièce | 2302686 | | UPC | 660989637583 | HFS (R) Coupe-papier lourd industriel base métallique (A3-17\u0026rsquo;\u0026rsquo;-Noir) : Amazon.co.uk : Papeterie \u0026amp; fournitures de bureau\nDétails techniques | Fabricant | HFS | | Marque | HFS | | Numéro de modèle | 16167 | | Dimensions du produit | 76,2 x 53,34 x 30,48 cm ; 20 kilogrammes | | Type de matériau | Acier allié | | Nombre d'articles | 1 | | Taille | A3-17'' | | Numéro de pièce du fabricant | 16167 | | Poids de l'article | 20 kg | Rexel Laminateur de style A3 Blanc : Amazon.co.uk\nDétails techniques | Fabricant | Rexel | | Marque | Rexel | | Numéro de modèle | 2104512 | | Dimensions du produit | 14 x 44,5 x 6 cm ; 1,82 kilogramme | | Couleur | Blanc | | Taille | A3 | | Numéro de pièce du fabricant | 2104512 | | Poids de l'article | 1,82 kg | ","permalink":"https://www.shafiq.in/fr/blog/book-binding/","summary":"\u003cp\u003eLa reliure est une excellente activité à adopter ! Voici certains avantages :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVous pouvez créer des cadeaux personnalisés pour vos amis et votre famille.\u003c/li\u003e\n\u003cli\u003eC’est une activité saine qui peut améliorer votre santé mentale.\u003c/li\u003e\n\u003cli\u003eLa reliure vous permet de rester en lien avec les autres, que ce soit en fabriquant des cadeaux ou en rejoignant une communauté de reliereurs.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"matériel-et-fournitures-que-jutilise\"\u003eMatériel et fournitures que j\u0026rsquo;utilise\u003c/h2\u003e\n\u003cp\u003e50Pcs Bandes de colle chaude 285mm Faites à la carte Collante thermique pour la reliure | eBay\u003c/p\u003e","title":"Book Binding"},{"content":"Notes sur les stratégies budgétaires, les objectifs d\u0026rsquo;épargne, les investissements : actions, obligations, immobilier, planification de la retraite, etc., et la littératie financière : gestion personnelle, impôts, assurance, planification financière.\nQuantified Self :\nSources de revenus (salaire, travail indépendant, investissements) Dépenses (fixes et variables) Affectation budgétaire (alimentation, services publics, loisirs, etc.) Taux d\u0026rsquo;épargne Paiements d\u0026rsquo;endettement (cartes de crédit, prêts, hypothèques) Notation de crédit Calcul du patrimoine net Valeur du portefeuille d\u0026rsquo;investissement Apports aux investissements Rendements ou pertes d\u0026rsquo;investissement Progrès des économies de retraite Solde du fonds d\u0026rsquo;urgence Primes d\u0026rsquo;assurance payées Activités liées aux impôts (dates limites de déclaration, documents requis) Progrès vers les objectifs financiers Stratégies d\u0026rsquo;économie d\u0026rsquo;argent mises en œuvre Gestion du flux de trésorerie Donations ou charité effectuées Services d\u0026rsquo;abonnement (coût, fréquence d\u0026rsquo;utilisation) Mesures de réduction des coûts prises (ex. négociation des factures, annulation d\u0026rsquo;abonnements inutilisés) Revenus générés Dépenses suivies Budget respecté Économies accumulées Investissements réalisés Endettement remboursé Notation de crédit suivie Objectifs financiers définis Progrès vers l\u0026rsquo;indépendance financière Planification de retraite entreprise Fonds d\u0026rsquo;urgence maintenu Couverture d\u0026rsquo;assurance évaluée Impôts déclarés Planification successorale envisagée Efforts pour améliorer la littératie financière Don ou charité pratiqués Difficultés financières surmontées Jours marquants financiers célébrés Investir dans des actions, des fonds communs ou d\u0026rsquo;autres actifs.\nLancer une activité secondaire ou un travail indépendant.\nRevenu Emploi Salaire Salaire de base Prime Investissements Actions Actions de grandes entreprises Actions à croissance Immobilier Propriétés résidentielles Propriétés commerciales Fonds communs Fonds indexés Fonds obligataires Revenu passif Revenu locatif Locations immobilières Airbnb Dividendes Actions versant des dividendes ETFs de dividendes Droits d\u0026rsquo;auteur Droits d\u0026rsquo;auteur de livres Droits d\u0026rsquo;auteur musicaux Droits d\u0026rsquo;auteur de brevets Budgétisation Dépenses Dépenses fixes Loyer ou hypothèque Services publics Dépenses variables Alimentation Transport Dépenses discrétionnaires Sortir manger Loisirs Épargne Fonds d\u0026rsquo;urgence Réserves en espèces Actifs liquides Épargne retraite 401(k) IRA Roth Épargne orientée vers un objectif Fonds de voyage Fonds pour l\u0026rsquo;achat d\u0026rsquo;une maison Fonds éducatif Gestion de la dette Remboursement de la dette Méthode du « snowball » (boule de neige) Méthode de l’« avalanche » (avalanche) Gestion des intérêts Négociation de taux plus bas Consolidation de la dette Prêts de consolidation Cartes de transfert de solde Objectifs financiers À court terme Épargner pour des vacances Budgétisation des dépenses de voyage Constitution d’un fonds d’urgence Réserver un pourcentage du revenu À moyen terme Épargner pour une maison Plan d’épargne pour un acompte Fonds d’éducation pour les enfants Plan d’épargne 529 Remboursement de la dette de carte de crédit Stratégie de remboursement de la dette À long terme Planification de la retraite Stratégie d’épargne pour la retraite Planification du revenu à la retraite Accumulation de richesse Croissance du portefeuille d’investissement Flux de revenu passif Inspiration Dave Ramsey, le spécialiste des finances et animateur radio qui enseigne comment sortir de la dette et construire de la richesse Suze Orman, l’expert en finances personnelles et auteur à succès qui conseille sur la prise de décisions intelligentes en matière d’argent Robert Kiyosaki, l’entrepreneur et auteur de Rich Dad Poor Dad qui éduque sur l’augmentation de la littératie financière Warren Buffett, l’investisseur légendaire et philanthrope qui partage ses connaissances sur l’investissement à valeur et l’intérêt composé Mr. Money Mustache, le blogueur qui s’est retiré à l’âge de 30 ans en épargnant et investissant de manière agressive Citations « La dette, c’est bête. L’argent, c’est roi. » - Dave Ramsey « Les gens d’abord, ensuite l’argent, puis les choses. » - Suze Orman « Le bien le plus puissant que nous ayons tous, c’est notre esprit. Si on l’entraîne bien, il peut créer une richesse énorme en ce qui semble être un instant. » - Robert Kiyosaki « Règle numéro un : ne jamais perdre d’argent. Règle numéro deux : n’oublie jamais la règle numéro un. » - Warren Buffett « La clé de la liberté financière et de la grande richesse est la capacité ou la compétence d’une personne à transformer son revenu gagné en revenu passif et/ou en revenu de portefeuille. » - Robert Kiyosaki ","permalink":"https://www.shafiq.in/fr/blog/incomplete-notes-on-personal-finance/","summary":"\u003cp\u003eNotes sur les stratégies budgétaires, les objectifs d\u0026rsquo;épargne, les investissements : actions, obligations, immobilier, planification de la retraite, etc., et la littératie financière : gestion personnelle, impôts, assurance, planification financière.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eQuantified Self :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSources de revenus (salaire, travail indépendant, investissements)\u003c/li\u003e\n\u003cli\u003eDépenses (fixes et variables)\u003c/li\u003e\n\u003cli\u003eAffectation budgétaire (alimentation, services publics, loisirs, etc.)\u003c/li\u003e\n\u003cli\u003eTaux d\u0026rsquo;épargne\u003c/li\u003e\n\u003cli\u003ePaiements d\u0026rsquo;endettement (cartes de crédit, prêts, hypothèques)\u003c/li\u003e\n\u003cli\u003eNotation de crédit\u003c/li\u003e\n\u003cli\u003eCalcul du patrimoine net\u003c/li\u003e\n\u003cli\u003eValeur du portefeuille d\u0026rsquo;investissement\u003c/li\u003e\n\u003cli\u003eApports aux investissements\u003c/li\u003e\n\u003cli\u003eRendements ou pertes d\u0026rsquo;investissement\u003c/li\u003e\n\u003cli\u003eProgrès des économies de retraite\u003c/li\u003e\n\u003cli\u003eSolde du fonds d\u0026rsquo;urgence\u003c/li\u003e\n\u003cli\u003ePrimes d\u0026rsquo;assurance payées\u003c/li\u003e\n\u003cli\u003eActivités liées aux impôts (dates limites de déclaration, documents requis)\u003c/li\u003e\n\u003cli\u003eProgrès vers les objectifs financiers\u003c/li\u003e\n\u003cli\u003eStratégies d\u0026rsquo;économie d\u0026rsquo;argent mises en œuvre\u003c/li\u003e\n\u003cli\u003eGestion du flux de trésorerie\u003c/li\u003e\n\u003cli\u003eDonations ou charité effectuées\u003c/li\u003e\n\u003cli\u003eServices d\u0026rsquo;abonnement (coût, fréquence d\u0026rsquo;utilisation)\u003c/li\u003e\n\u003cli\u003eMesures de réduction des coûts prises (ex. négociation des factures, annulation d\u0026rsquo;abonnements inutilisés)\u003c/li\u003e\n\u003cli\u003eRevenus générés\u003c/li\u003e\n\u003cli\u003eDépenses suivies\u003c/li\u003e\n\u003cli\u003eBudget respecté\u003c/li\u003e\n\u003cli\u003eÉconomies accumulées\u003c/li\u003e\n\u003cli\u003eInvestissements réalisés\u003c/li\u003e\n\u003cli\u003eEndettement remboursé\u003c/li\u003e\n\u003cli\u003eNotation de crédit suivie\u003c/li\u003e\n\u003cli\u003eObjectifs financiers définis\u003c/li\u003e\n\u003cli\u003eProgrès vers l\u0026rsquo;indépendance financière\u003c/li\u003e\n\u003cli\u003ePlanification de retraite entreprise\u003c/li\u003e\n\u003cli\u003eFonds d\u0026rsquo;urgence maintenu\u003c/li\u003e\n\u003cli\u003eCouverture d\u0026rsquo;assurance évaluée\u003c/li\u003e\n\u003cli\u003eImpôts déclarés\u003c/li\u003e\n\u003cli\u003ePlanification successorale envisagée\u003c/li\u003e\n\u003cli\u003eEfforts pour améliorer la littératie financière\u003c/li\u003e\n\u003cli\u003eDon ou charité pratiqués\u003c/li\u003e\n\u003cli\u003eDifficultés financières surmontées\u003c/li\u003e\n\u003cli\u003eJours marquants financiers célébrés\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eInvestir dans des actions, des fonds communs ou d\u0026rsquo;autres actifs.\u003c/p\u003e","title":"Incomplete notes on Personal Finance"},{"content":"https://falsum.typeform.com/to/TuNPRxd5?typeform-source=www.thinksandwell.com\nhttps://www.chambercustoms.co.uk/#\nhttps://www.blackcountrychamber.co.uk/training-courses/international-trade/\nhttps://www.blackcountrychamber.co.uk/international-trade/\nhttps://www.youtube.com/watch?v=yLyBHQIKzI0\u0026list=PLcJN_NYPGILyK3bjY_rleg_aMz0-vDhmx\nhttps://www.gov.uk/guidance/hmrc-email-alerts-videos-and-webinars-about-importing-and-exporting\n","permalink":"https://www.shafiq.in/fr/blog/some-links-for-international-trade-in-the-uk/","summary":"\u003cp\u003e\u003ca href=\"https://falsum.typeform.com/to/TuNPRxd5?typeform-source=www.thinksandwell.com\"\u003ehttps://falsum.typeform.com/to/TuNPRxd5?typeform-source=www.thinksandwell.com\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.chambercustoms.co.uk/\"\u003ehttps://www.chambercustoms.co.uk/#\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.blackcountrychamber.co.uk/training-courses/international-trade/\"\u003ehttps://www.blackcountrychamber.co.uk/training-courses/international-trade/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.blackcountrychamber.co.uk/international-trade/\"\u003ehttps://www.blackcountrychamber.co.uk/international-trade/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.youtube.com/watch?v=yLyBHQIKzI0\u0026amp;list=PLcJN_NYPGILyK3bjY_rleg_aMz0-vDhmx\"\u003ehttps://www.youtube.com/watch?v=yLyBHQIKzI0\u0026list=PLcJN_NYPGILyK3bjY_rleg_aMz0-vDhmx\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.gov.uk/guidance/hmrc-email-alerts-videos-and-webinars-about-importing-and-exporting\"\u003ehttps://www.gov.uk/guidance/hmrc-email-alerts-videos-and-webinars-about-importing-and-exporting\u003c/a\u003e\u003c/p\u003e","title":"Some Links for International Trade in the UK"},{"content":"1 : Introduction\nLa promotion de soi est l\u0026rsquo;un des ingrédients clés du succès au travail. Ce guide vous fournira des conseils et astuces pour vous vendre efficacement et progresser dans votre carrière.\n2 : Pronoms et communication\nUtiliser les bons pronoms dans la conversation peut être une manière subtile mais efficace de se promouvoir. Prendre la responsabilité de son travail et éviter l’usage de « nous » lorsqu’on évoque des réalisations individuelles peut vous aider à obtenir la reconnaissance qui vous est due.\n3 : Managers et opportunités professionnelles\nAvoir un supérieur hiérarchique qui vous soutient et qui est prêt à vous créditer pour votre travail est essentiel pour la promotion de soi. Changer régulièrement d’emploi peut également vous offrir de nouvelles opportunités de vous promouvoir, notamment lors d’entretiens d’embauche.\n4 : Définir le succès\nDéfinir votre propre notion de succès et vous concentrer sur votre croissance personnelle, indépendamment de la reconnaissance extérieure, peut vous aider à vous sentir en progression et à avancer dans la bonne direction.\n5 : Évaluations de performance\nSi votre entreprise organise des évaluations annuelles de performance, c’est l’occasion idéale pour lister vos principales réalisations et capter toute l’attention de votre supérieur. La préparation est essentielle : assurez-vous de dresser une liste de vos réussites à l’avance.\n6 : Parlez et engagez-vous\nÊtre actif lors des réunions d’équipe, exprimer votre avis avec respect et interagir avec les personnes importantes de l’organisation peut vous faire remarquer et favoriser votre promotion.\n7 : Faire paraître votre patron sous son meilleur jour\nFaire paraître votre patron sous son meilleur jour peut aller très loin dans la sécurisation de votre avenir. Assurez-vous de lui montrer les résultats de votre travail et de l’aider à réussir dans son rôle.\n8 : Alliances et réunions 1 contre 1\nAlliez-vous à des personnes importantes au sein de l’organisation et organisez des réunions régulières 1 contre 1 avec elles pour établir une relation positive et vous faire remarquer.\n9 : Éviter les erreurs courantes\nÉvitez de mettre mal à l’aise vos collègues en public, exprimez vos opinions avec respect et soyez globalement compétent pour éviter les erreurs fréquentes qui peuvent entraver vos efforts de promotion de soi.\n10 : Conclusion\nLa promotion de soi au travail peut être un processus difficile mais gratifiant. En suivant les conseils et astuces présentés dans ce guide, vous pouvez augmenter vos chances de réussite et progresser dans votre carrière.\n","permalink":"https://www.shafiq.in/fr/blog/self-promotion-at-work/","summary":"\u003cp\u003e1 : Introduction\u003c/p\u003e\n\u003cp\u003eLa promotion de soi est l\u0026rsquo;un des ingrédients clés du succès au travail. Ce guide vous fournira des conseils et astuces pour vous vendre efficacement et progresser dans votre carrière.\u003c/p\u003e\n\u003cp\u003e2 : Pronoms et communication\u003c/p\u003e\n\u003cp\u003eUtiliser les bons pronoms dans la conversation peut être une manière subtile mais efficace de se promouvoir. Prendre la responsabilité de son travail et éviter l’usage de « nous » lorsqu’on évoque des réalisations individuelles peut vous aider à obtenir la reconnaissance qui vous est due.\u003c/p\u003e","title":"Self-Promotion at Work"},{"content":"Processus de publication d’un livre La publication d’un livre est un processus qui implique plusieurs étapes, chacune essentielle à un lancement réussi d’une œuvre littéraire. Il commence par la conception d’une idée, qui passe ensuite par plusieurs phases : écriture, édition, relecture, conception graphique, production, marketing et enfin distribution. Comprendre chaque étape de ce processus peut aider les auteurs et les éditeurs à mieux naviguer dans les complexités.\nLa première étape est l’écriture, où un auteur développe son idée initiale en un manuscrit cohérent. Cela implique des recherches approfondies, la rédaction d’un plan, des brouillons, des révisions et des ajustements jusqu’à ce que l’histoire ou l’argument soit bien articulé et captivant. Une fois le manuscrit terminé, il passe à la phase d’édition, qui vise à améliorer la clarté, la cohérence et la qualité globale du contenu. Les éditeurs jouent un rôle central à cette étape en corrigeant les erreurs grammaticales, en éliminant les incohérences et en proposant des suggestions pour améliorer le rythme narratif.\nAprès l’édition, la phase de relecture garantit que le texte est exempt d’erreurs typographiques et de problèmes de mise en page. Les relecteurs examinent minutieusement le manuscrit pour repérer les erreurs éventuelles que les éditeurs auraient pu manquer. Cette étape est essentielle pour maintenir l’apparence professionnelle du livre et assurer son exactitude.\nUne fois le texte affiné, l’attention se tourne vers la conception. Cette phase inclut la création d’une couverture attirante pour les lecteurs potentiels, ainsi que la mise en page de l’intérieur pour faciliter la lecture. Cela comprend des décisions sur les polices, les marges, la disposition des pages, les images et d’autres éléments visuels qui renforcent l’aspect esthétique global du livre.\nUne fois la conception finalisée, le livre entre dans la phase de production. Cette étape consiste à convertir le manuscrit en un produit physique ou numérique par impression ou format numérique. Ici, une attention méticuleuse est portée aux détails tels que la qualité du papier, les méthodes de reliure, la reproduction des couleurs et les spécifications du fichier pour les publications numériques.\nAprès la phase de production, l’accent se déplace vers le marketing. Cela inclut la création de matériaux promotionnels, la planification de campagnes publicitaires, la sécurisation de couvertures médiatiques et l’utilisation des réseaux sociaux pour atteindre les lecteurs potentiels. L’objectif est de créer de l’engouement autour du livre et de construire un public impatient d’acheter l’œuvre.\nEnfin, la phase de distribution assure que le livre atteigne son marché cible. Cela implique de choisir les canaux de distribution appropriés — que ce soit par des éditeurs traditionnels, des voies d’autopublication, des détaillants en ligne comme Amazon, ou des ventes directes aux consommateurs. Des stratégies de distribution efficaces sont cruciales pour maximiser la disponibilité et l’accessibilité du livre aux lecteurs.\nChaque étape de ce processus est interconnectée et nécessite une coordination soigneuse pour garantir un déroulement fluide. Comprendre l’intégralité du workflow, du début à la fin, peut aider les auteurs et les éditeurs à mieux naviguer dans les complexités et les défis qui peuvent survenir à tout moment du parcours.\nLe processus d’écriture Le processus d’écriture est souvent considéré comme le pilier de la publication d’un livre, car c’est durant cette phase que la vision de l’auteur prend forme. Cette étape initiale implique plusieurs étapes cruciales, chacune nécessitant une attention particulière pour assurer une base solide pour le manuscrit. Voici quelques éléments clés du processus d’écriture :\n1. Conceptualisation : Le parcours commence par la naissance d’une idée. Que ce soit inspirée par des expériences personnelles, une fascination pour un sujet particulier ou une étincelle imaginaire, cette idée initiale sert de germe à toute l’histoire. À cette phase, les auteurs échangent et affinent leurs idées, explorant différentes perspectives et thèmes qu’ils souhaitent explorer.\n2. Recherche : Une fois l’idée solidifiée, une recherche approfondie devient nécessaire pour assurer que le manuscrit soit bien informé et crédible. Cela peut impliquer la collecte d’informations provenant de livres, d’articles universitaires, de ressources en ligne ou encore l’organisation d’entretiens avec des experts dans des domaines pertinents. Une bonne recherche renforce non seulement l’histoire, mais lui donne aussi de la profondeur et de l’authenticité.\n3. Planification : Après avoir terminé la recherche, les auteurs passent généralement à la création d’un plan. Un plan sert de carte routière pour le manuscrit, en détaillant les thèmes principaux, les personnages, les points clés de l’intrigue et les chapitres. Cela aide à organiser les pensées et à garantir que le récit s’écoule logiquement du début à la fin. Différents auteurs adoptent des approches variées, certains préférant des plans détaillés chapitre par chapitre, tandis que d’autres travaillent plus de manière organique.\n4. Rédaction : La phase de rédaction est là où les auteurs commencent à écrire la première version de leur manuscrit. Cela implique de traduire leurs idées et recherches en forme écrite, souvent en faisant plusieurs brouillons au fur et à mesure qu’ils affinent l’histoire et le développement des personnages. À cette étape, les auteurs se concentrent à mettre l’intrigue essentielle en place sans trop s’inquiéter de la perfection. Il est courant que les premiers brouillons soient bruts, nécessitant de nombreuses révisions avant que l’histoire ne prenne sa forme définitive.\n5. Révision : Une fois le premier brouillon terminé, le processus de révision commence. C’est une étape cruciale qui implique l’évaluation et l’amélioration de divers aspects du manuscrit. Les auteurs examinent le développement des personnages, la structure de l’intrigue, les dialogues, le rythme et la cohérence générale. Ils peuvent aussi solliciter des retours de lecteurs bêta ou de groupes de critique pour obtenir des perspectives extérieures sur leur travail. La révision nécessite souvent plusieurs itérations, les auteurs affinant leur écriture pour atteindre clarté, engagement émotionnel et impact.\n6. Édition : Après plusieurs tours de révision, le manuscrit entre dans la phase d’édition. Les éditeurs professionnels jouent un rôle central à cette étape en se concentrant sur des problèmes structurels plus importants tels que les incohérences de l’intrigue, la motivation des personnages ou le flux narratif. Ils corrigent aussi les erreurs grammaticales, les fautes de frappe et les formulations maladroites afin d’améliorer la lisibilité du manuscrit.\n7. Derniers ajustements : Avant la soumission ou la publication, les auteurs effectuent généralement une dernière revue de leur travail. Cette étape implique de lire le manuscrit avec une attention minutieuse, corrigeant les dernières erreurs et s’assurant que le livre est parfaitement poli et prêt pour son public cible. Cette phase inclut souvent un contrôle orthographique rigoureux et des ajustements de mise en page pour respecter les normes de l’industrie.\n8. Relecture : La dernière étape du processus d’écriture est la relecture. Cette phase minutieuse consiste à vérifier le manuscrit pour des erreurs typographiques, des incohérences de mise en page ou des erreurs de dernière minute qui auraient pu être passées inaperçues lors des étapes précédentes. Une paire d’yeux frais sur le manuscrit à ce stade peut aider à identifier des problèmes auxquels l’auteur aurait pu devenir aveugle après un travail intense sur le projet.\nEn suivant ces étapes, les auteurs peuvent transformer leurs idées initiales en manuscrits pleinement réalisés prêts à être publiés. Chaque étape demande dévouement et patience, mais le résultat est une œuvre soignée qui peut engager les lecteurs et transmettre efficacement le message de l’auteur.\nLe processus d’édition Durant la phase d’édition, les éditeurs examinent et affinent minutieusement le texte pour améliorer sa qualité, sa cohérence et son impact global. Cela implique plusieurs étapes clés cruciales pour produire un manuscrit poli et professionnel.\n1. Édition de contenu (édition développementale) : La première étape du processus d’édition est l’édition de contenu ou développementale. Ce type d’édition se concentre sur l’amélioration des aspects à grande échelle du manuscrit, tels que la structure de l’intrigue, le développement des personnages, le rythme et le flux narratif général. Les éditeurs peuvent suggérer des réécritures importantes pour améliorer ces éléments, assurant que l’histoire soit captivante, cohérente et convaincante. Ils cherchent des incohérences dans les chronologies, la logique ou le comportement des personnages qui pourraient perturber l’expérience du lecteur. Cette étape d’édition implique souvent plusieurs cycles d’échanges entre l’auteur et l’éditeur afin de traiter ces questions plus importantes.\n2. Édition de ligne : Une fois les aspects structurels traités, le manuscrit entre dans la phase d’édition de ligne. Ici, les éditeurs se concentrent à affiner des phrases et paragraphes individuels pour améliorer la clarté et le style. Ils corrigent les erreurs grammaticales, suggèrent des améliorations dans le choix des mots et polissent les dialogues pour qu’ils soient plus naturels et percutants. Cette étape implique souvent un fin ajustement du langage pour s’assurer que chaque phrase s’écoule aisément tout en maintenant la voix et le ton de l’auteur.\n3. Édition copie : L’édition copie est une autre étape cruciale où les éditeurs examinent le manuscrit pour la cohérence, la précision et le style. Ils corrigent les erreurs d’orthographe, de ponctuation et de grammaire, s’assurent de l’usage correct des signes de ponctuation, et standardisent la mise en page dans le document. Les copistes vérifient aussi les faits et les références pour s’assurer que toute information présentée dans le livre est exacte et crédible. Cette étape vise à rendre le texte soigné et uniforme, le préparant à la publication.\n4. Relecture : Après l’édition copie, la relecture est la dernière étape de contrôle qualité. Pendant cette phase, un relecteur parcourt le manuscrit avec une attention minutieuse, cherchant les dernières fautes de frappe, erreurs grammaticales ou problèmes de mise en page qui auraient pu être manqués lors des étapes précédentes. Cette revue rigoureuse garantit que le livre est exempt de distractions pouvant nuire à l’expérience de lecture.\n5. Processus collaboratif : L’édition n’est pas un processus solitaire mais plutôt une entreprise collaborative entre l’auteur et l’éditeur. Une communication efficace est essentielle à cette collaboration. Les éditeurs fournissent des retours constructifs et des suggestions, tandis que les auteurs y réfléchissent et effectuent les modifications nécessaires. Ce processus itératif implique souvent plusieurs cycles de révisions, avec les deux parties travaillant vers un objectif commun : produire le meilleur manuscrit possible.\n6. Retours et révision : Durant le processus d’édition, recevoir et intégrer des retours est essentiel. Les auteurs doivent être ouverts à la critique constructive et prêts à réviser leur travail en conséquence. Les éditeurs peuvent fournir des notes détaillées ou des commentaires directement dans le manuscrit, soulignant les zones à améliorer. Il est important que les auteurs prennent ces retours de manière constructive et effectuent les modifications nécessaires pour améliorer la qualité de leur écriture.\nEn passant par ces étapes d’édition complètes, un manuscrit peut se transformer d’un brouillon initial en une œuvre soignée, professionnelle, prête à être publiée. Une édition efficace améliore non seulement la lisibilité et la cohérence du livre, mais renforce aussi son attrait commercial en s’assurant qu’il répond aux normes de l’industrie et aux attentes des lecteurs. Ce processus de revue approfondie contribue finalement au succès et à l’impact de l’œuvre publiée.\nLe processus de relecture La phase de relecture est une étape cruciale finale dans le processus de publication qui garantit que le manuscrit est exempt d’erreurs typographiques, d’incohérences de mise en page et d’autres erreurs persistantes. Cette phase implique plusieurs étapes et techniques conçues pour améliorer la qualité globale du livre avant sa publication imprimée ou numérique.\n1. L’importance de la relecture : La relecture sert de dernière ligne de défense contre les erreurs restantes qui pourraient compromettre la professionnalisme et la lisibilité du manuscrit. Alors que l’édition traite des questions plus larges comme la structure de l’intrigue ou le développement des personnages, la relecture se concentre sur les détails qui peuvent faire une grande différence dans l’expérience du lecteur. Ces éléments incluent les fautes d’orthographe, les erreurs grammaticales, les ponctuations mal placées, les erreurs de mise en page et les incohérences de style ou de ton.\n2. Revue initiale : La première étape du processus de relecture est une revue approfondie de l’ensemble du manuscrit. Cela implique de lire le document du début à la fin en cherchant des problèmes évidents. Les relecteurs doivent être attentifs aux mots répétés, aux constructions de phrases maladroites ou à d’autres anomalies qui pourraient indiquer des problèmes. Ce premier examen aide à identifier des erreurs de grande ampleur nécessitant une attention immédiate.\n3. Présence des détails : La phase suivante implique une examination minutieuse de chaque page. Les relecteurs parcourent le manuscrit mot par mot et ligne par ligne, vérifiant les erreurs typographiques telles que les mots mal orthographiés ou les ponctuations incorrectes. Ils s’assurent aussi que les titres, sous-titres et légendes sont cohérents tout au long du document. Cette phase nécessite un œil attentif aux détails et une compréhension de la typographie pour repérer des erreurs subtiles qui pourraient autrement passer inaperçues.\n4. Vérification de mise en page : La mise en page est un autre aspect crucial de la relecture. Les relecteurs vérifient que tous les éléments de la mise en page du livre — comme les marges, les polices, l’espacement et l’alignement — sont cohérents tout au long du manuscrit. Ils vérifient qu’il n’y a pas d’incohérences dans la taille ou le style des polices au sein des chapitres ou entre les différentes sections du livre. Une mise en page correcte non seulement améliore l’aspect visuel, mais contribue aussi à une expérience de lecture plus cohérente.\n5. Vérification croisée : En plus du texte et de la mise en page, les relecteurs doivent croiser les informations pour s’assurer de leur exactitude. Cela inclut la vérification des données telles que les dates, les faits, les statistiques et les citations pour confirmer leur exactitude. Ils vérifient aussi que les références sont cohérentes avec les sources indiquées par l’auteur et que toutes les citations suivent les directives de style requises.\n6. Utilisation d’outils : Bien qu’un toucher humain soit précieux dans la relecture, l’utilisation d’outils spécialisés peut aussi être bénéfique. Des logiciels conçus pour la vérification grammaticale et la correction orthographique, comme Grammarly ou les outils intégrés de Microsoft Word, peuvent aider à identifier automatiquement certaines erreurs. Cependant, ces outils ne doivent pas remplacer la lecture humaine, mais plutôt compléter celle-ci en signalant des problèmes potentiels que les relecteurs humains pourraient manquer.\n7. Processus itératif : La relecture n’est pas une tâche ponctuelle, mais souvent un processus itératif. Après le premier passage, le relecteur peut effectuer des corrections et demander à l’éditeur ou à l’auteur de vérifier ces changements avant de faire un autre cycle de vérifications. Ce processus itératif aide à s’assurer que toutes les erreurs sont repérées et corrigées, menant à un produit final de haute qualité.\n8. Des yeux frais : Une technique efficace dans la relecture est de prendre une pause avant de revoir le manuscrit à nouveau. Cela permet aux relecteurs d’aborder le texte avec des « yeux frais », réduisant ainsi la probabilité de manquer des erreurs auxquelles ils auraient pu s’habituer après avoir travaillé sur les brouillons précédents.\nEn suivant ces étapes et techniques, les relecteurs peuvent s’assurer que la version finale du livre est soignée, professionnelle et exempte d’erreurs distractrices. Ce processus de revue approfondie contribue significativement à la qualité globale et à la lisibilité de l’œuvre publiée, renforçant ses chances de succès sur le marché concurrentiel.\nLe processus de conception Concevoir la couverture d’un livre est un aspect fondamental de la publication qui va au-delà de l’esthétique ; elle constitue la première impression pour les lecteurs potentiels et joue un rôle crucial dans la détermination du succès du livre. Une couverture bien conçue peut efficacement transmettre l’essence de l’histoire, attirer l’attention et inciter les lecteurs à prendre le livre en main. Voici les étapes essentielles impliquées dans la conception d’une couverture de livre :\n1. Conceptualisation : Le processus commence par la conceptualisation du thème général et du message du livre. Cela implique des discussions avec l’auteur ou l’éditeur pour comprendre les éléments centraux à représenter sur la couverture. Des aspects clés tels que le genre, le ton, les personnages principaux, le cadre et les thèmes généraux sont pris en compte à cette phase.\n2. Recherche : Ensuite vient la recherche, où les concepteurs explorent des livres similaires dans le même genre pour identifier les tendances, les styles populaires et les conceptions réussies. Cela aide à gagner des idées sur ce qui fonctionne bien sur le marché et permet de créer une couverture qui se démarque tout en restant pertinente.\n3. Croquis et prototypes : Avec une vision claire, les concepteurs commencent par esquisser des idées brutes sur papier ou numériquement. Ils expérimentent différentes polices, couleurs, images et compositions. Plusieurs prototypes sont développés durant cette étape, chacun représentant différentes directions de conception à discuter avec le client. L’objectif est de trouver un concept qui résonne à la fois avec la vision de l’auteur et avec les tendances du marché.\n4. Création du maquette : Une fois un concept choisi, les concepteurs passent à la création de maquettes haute-fidélité en utilisant des logiciels de conception graphique comme Adobe Photoshop ou Illustrator. Ces maquettes sont des représentations détaillées de l’apparence finale de la couverture. Elles peuvent inclure des illustrations numériques, des photographies ou une combinaison des deux, ainsi que des éléments textuels comme le titre du livre, le nom de l’auteur et d’autres informations pertinentes.\n5. Collecte de retours : Le concepteur partage la maquette avec le client pour recueillir des retours. Ce processus itératif implique souvent plusieurs cycles de révisions pour affiner la conception selon les suggestions et préférences du client. Le concepteur peut devoir ajuster les couleurs, les polices ou la disposition pour mieux s’aligner avec la vision du client et garantir que la couverture est visuellement attrayante et cohérente.\n6. Finalisation de la conception : Une fois toutes les révisions terminées et que les deux parties sont satisfaites de la conception, celle-ci est finalisée. Cette version définitive sera utilisée pour l’impression et peut aussi être utilisée dans des matériaux marketing numériques comme les sites web, les réseaux sociaux ou des campagnes publicitaires. Le concepteur prépare des fichiers prêts à imprimer, en s’assurant que tous les éléments sont correctement formatés et optimisés pour une impression de haute qualité.\n7. Attention aux détails : Concevoir la couverture d’un livre demande une attention minutieuse aux détails. Cela inclut la vérification de la précision des couleurs des images, l’assurance que le texte est lisible à différentes tailles (car il peut être réduit pour les plateformes numériques) et la vérification que tous les éléments de conception sont conformes aux normes et aux meilleures pratiques de l’industrie.\n8. Utilisation d’images et de typographie : Une utilisation efficace des images et de la typographie est essentielle dans la conception de couverture. Une image appropriée peut susciter des émotions et fixer le ton, tandis que des polices soigneusement choisies peuvent transmettre le style et le genre de l’histoire. Il est important pour les concepteurs de trouver un équilibre entre ces éléments pour créer une couverture harmonieuse qui attire les lecteurs.\nLe processus de conception d’une couverture de livre est une entreprise collaborative qui combine une vision créative avec une réflexion stratégique. Une couverture bien conçue non seulement capte l’essence du livre, mais a aussi le pouvoir d’influencer les acheteurs potentiels, en faisant une partie intégrante du parcours de publication.\nConception intérieure du livre Concevoir les pages intérieures d’un livre est tout aussi crucial que la création d’une couverture attrayante, car elle impacte directement l’expérience de lecture. La conception intérieure inclut des éléments tels que le choix de la police, la mise en page, les marges et la typographie qui déterminent collectivement la lisibilité et l’engagement du texte. Voici quelques aspects clés à considérer lors de la conception des pages intérieures :\n1. Sélection de police : Choisir la bonne police est fondamental pour la lisibilité et l’esthétique de l’intérieur du livre. La police doit refléter le ton et le genre du livre tout en assurant qu’elle soit claire et facile à lire sur de longues périodes. Pour la fiction, des choix populaires pourraient être des polices serif comme Times New Roman ou Baskerville pour un effet traditionnel, ou des polices sans-serif comme Helvetica ou Arial pour une apparence plus moderne. Les livres non fictionnels utilisent souvent des polices serif pour leur élégance et leur lisibilité dans les textes détaillés.\n2. Typographie : La typographie concerne l’agencement du texte dans un livre. Cela inclut non seulement le choix de la police, mais aussi la taille, le style (gras, italique), l’espacement des lignes, l’espacement des lettres et les retraits de paragraphes. Une typographie cohérente et appropriée améliore l’expérience de lecture globale. Par exemple, utiliser une taille de police plus grande pour les titres et sous-titres peut aider à guider le lecteur à travers le texte, tandis qu’un retrait de paragraphe uniforme donne une apparence propre et organisée.\n3. Mise en page de la page : La mise en page de chaque page est un autre aspect critique. Cela inclut les marges, les interlignes (l’espace entre les pages opposées) et le placement des blocs de texte, des images et d’autres éléments visuels. Une mise en page bien conçue assure que le texte n’est pas encombré ou envahissant, rendant la lecture plus confortable. Les marges doivent être suffisamment larges pour éviter que le texte ne semble étouffé, mais pas trop larges pour que l’espace blanc soit excessif.\n4. Retraits de paragraphes et espacement des lignes : Les retraits de paragraphes aident à distinguer un paragraphe d’un autre, créant des pauses visuelles qui aident à la compréhension. Un espacement de ligne cohérent assure que les lignes de texte sont séparées de manière adéquate sans être trop espacées ou trop denses. Par exemple, un espacement de 1,5 à 2 fois la taille de la police est généralement recommandé pour une lecture confortable.\n5. Titres et sous-titres : Des titres et sous-titres clairs et attrayants peuvent grandement améliorer la lisibilité en divisant le contenu complexe en sections digestes. Il est important d’utiliser des polices différentes ou des styles de police pour distinguer les titres principaux, les sous-titres et les titres de section. La cohérence dans la hiérarchie des titres est essentielle pour maintenir une structure cohérente.\n6. Utilisation d’images et d’illustrations : Dans les livres qui incluent des images ou des illustrations, leur placement dans le texte doit être stratégique. Les légendes doivent être claires et concises, fournissant un contexte pertinent aux visuels. Les images peuvent aider à rompre des blocs longs de texte, rendant l’expérience de lecture plus engageante et visuellement attrayante. Assurer un équilibre entre texte et images est essentiel pour créer une mise en page efficace.\n7. Cohérence à travers les chapitres : La cohérence des éléments de conception intérieure à travers les différents chapitres est vitale. Cela inclut le maintien de polices, marges, espacement des lignes et conventions de mise en page uniformes tout au long du livre. Les incohérences peuvent distraire les lecteurs et perturber leur lecture.\nEn se concentrant sur ces éléments clés de conception intérieure — sélection de police, typographie, mise en page, retraits de paragraphes, titres, images et cohérence — le concepteur peut créer une expérience de lecture soignée et engageante qui améliore la qualité globale et l’attractivité du livre.\nProcessus de production La phase de production inclut plusieurs étapes critiques, y compris la préparation avant impression, l’impression, la reliure et enfin le processus d’emballage. Chaque étape exige une attention méticuleuse pour garantir que le produit final répond aux normes de qualité et aux attentes du marché.\n1. Préparation avant impression : La préparation avant impression est la phase où tous les fichiers numériques sont préparés pour l’impression. Cela implique de vérifier l’exactitude des profils de couleur, de s’assurer que les polices sont intégrées ou tracées correctement, et de vérifier que toutes les images atteignent la résolution requise pour une reproduction de haute qualité. Pendant cette phase, les concepteurs effectuent une dernière relecture du texte pour repérer toute erreur persistante. Des problèmes courants à cette étape incluent des bords de découpe incorrects, des éléments mal placés et des fichiers mal formatés.\n2. Impression : L’impression est un processus complexe qui implique le transfert des fichiers avant impression sur du papier. Il existe plusieurs méthodes d’impression disponibles, notamment l’impression offset, l’impression numérique et l’impression par sérigraphie. L’impression offset est couramment utilisée pour les grandes tirages en raison de sa qualité élevée et de son efficacité économique, tandis que l’impression numérique offre un délai plus rapide et une plus grande flexibilité pour les tirages courts ou les commandes personnalisées.\n3. Reliure : Une fois les pages imprimées, elles doivent être reliées en un format de livre cohérent. Il existe plusieurs techniques de reliure, chacune adaptée à différents types de livres :\nReliure par collage (perfect bound) : C’est l’une des méthodes les plus courantes, où les pages sont pliées et collées le long du dos pour former un livre solidement relié. Elle est économique et convient bien aux livres à couverture souple avec un nombre réduit de pages.\nReliure par couverture rigide (case bound) : Dans cette méthode, le bloc de texte est enfermé dans une couverture protectrice rigide fabriquée à partir de matériaux tels que le tissu ou les planches. Ce type de reliure offre durabilité et élégance, idéal pour les livres de haute qualité.\nReliure par couture (saddle stitched) : Les pages sont pliées et fixées le long du dos par des agrafes, ce qui en fait une option économique pour les magazines et les livres plus courts.\nReliure par spirale (spiral bound) : Les pages sont reliées ensemble avec une spirale métallique ou plastique qui passe par les trous percés sur le côté de chaque page. C’est idéal pour les documents de référence et les cahiers où une flexibilité est requise.\n4. Contrôle qualité : Le contrôle qualité est une partie essentielle du processus de production pour s’assurer que chaque livre répond aux normes souhaitées. Cela implique plusieurs vérifications, notamment la vérification de l’alignement du texte, l’inspection de la qualité d’impression et le contrôle de l’intégrité de la reliure. Les livres endommagés ou défectueux sont identifiés et retirés de la chaîne de production pour maintenir la qualité globale.\n5. Inspection finale : Après la reliure, chaque livre passe par une inspection finale. Cela inclut un examen visuel de toute imperfection telle que des taches, des déchirures ou des pages mal alignées. Les couvertures sont également examinées pour uniformité de couleur et finition. Les livres qui réussissent cette inspection passent à l’étape suivante, tandis que ceux qui ne réussissent pas sont renvoyés pour correction.\n6. Emballage : La dernière étape est l’emballage, où les livres finis sont préparés pour la distribution. Cela peut impliquer le placement des livres individuels dans des emballages en plastique ou des expéditions en vrac dans des cartons. L’étiquetage et l’adressage corrects garantissent que les colis atteignent leurs destinations cibles sans problèmes.\nEn gérant soigneusement chaque étape du processus de production, des préparatifs avant impression à l’emballage, les éditeurs peuvent garantir les normes de qualité les plus élevées et une livraison ponctuelle de leurs produits imprimés. Cette attention méticuleuse aux détails est cruciale pour créer un livre final qui non seulement répond aux attentes, mais les dépasse souvent.\nLe processus de marketing Un marketing efficace est fondamental au succès de tout livre, car il aide à créer de la conscience, à générer de l’intérêt et à stimuler les ventes. Le processus de marketing implique diverses stratégies et tactiques visant à atteindre le public cible et à construire une base de lecteurs. Voici quelques éléments clés du plan marketing pour la publication d’un livre :\n1. Définir votre public cible : Comprendre votre public cible est la base de toute campagne marketing réussie. Cela implique d’identifier les caractéristiques démographiques et psychographiques des lecteurs potentiels, y compris leurs intérêts, leurs habitudes de lecture et leurs préférences. Effectuer des recherches de marché à travers des sondages, des groupes de discussion ou une analyse des réseaux sociaux peut fournir des informations précieuses sur ceux qui sont les plus susceptibles d’être intéressés par votre livre.\n2. Créer une présence en ligne : À l’ère numérique, établir une forte présence en ligne est crucial pour tout auteur ou éditeur. Cela commence par la création d’un site web professionnel qui présente le livre et fournit des informations sur l’auteur, des critiques et des liens vers les options d’achat. Les plateformes sociales comme Facebook, Twitter, Instagram, LinkedIn et BookBub sont également des outils puissants pour atteindre les lecteurs et construire une communauté autour de votre livre.\n3. Développer un calendrier promotionnel : Un calendrier promotionnel bien structuré décrit les activités marketing clés menant à la sortie du livre et au-delà. Cela inclut l’identification des dates de lancement, des événements promotionnels (par exemple, des interviews d’auteurs, des tournées d’auteurs, des lectures) et des campagnes publicitaires. Avoir un calendrier clair aide à assurer que toutes les initiatives marketing sont coordonnées et soutiennent les objectifs globaux de créer de l’anticipation et de stimuler les ventes.\n4. Événements de lancement : Organiser une série d’événements de lancement peut générer de l’excitation et de l’attention médiatique pour votre livre. Ceux-ci peuvent inclure des signatures de livres virtuelles ou en personne, des interviews d’auteurs sur des podcasts ou des émissions de radio, des articles invités sur des sites web populaires, et la participation à des festivals littéraires locaux. Un événement de lancement bien planifié non seulement présente le livre aux lecteurs potentiels, mais crée aussi des opportunités d’engagement direct avec le public.\n5. Relations avec les médias : Construire des relations avec les médias peut aider à amplifier vos efforts marketing. Cela implique l’envoi de communiqués de presse à des journaux, magazines, blogs et publications en ligne qui ciblent votre public cible. Une couverture médiatique par des articles, des interviews ou des critiques de livres ajoute non seulement de la visibilité, mais renforce aussi la crédibilité de votre travail. Engager des critiques de livres et obtenir des critiques favorables sur des plateformes comme Goodreads peut considérablement augmenter l’intérêt pour le livre.\n6. Publicité numérique : La publicité numérique permet une portée ciblée et un contrôle précis du budget. Des plateformes comme Google Ads, Facebook Ads, Instagram Ads et Amazon Marketing Services offrent diverses options pour promouvoir efficacement votre livre. Ces annonces peuvent être personnalisées selon des détails démographiques, des intérêts ou des comportements, garantissant qu’elles atteignent le public le plus pertinent. En outre, tirer parti de programmes de marketing d’affiliation comme BookBub ou NetGalley peut aider à élargir votre portée en connectant avec des critiques de livres influentes et des lecteurs.\n7. Marketing par courriel : Les campagnes par courriel sont un outil puissant pour entretenir des relations avec les lecteurs existants et potentiels. Construire une liste de courriel via des inscriptions sur le site web, les réseaux sociaux et des événements d’auteurs permet d’envoyer des newsletters, des mises à jour et des matériaux promotionnels directement aux personnes intéressées. Des courriels personnalisés et ciblés peuvent stimuler le trafic vers votre site web ou votre page Amazon, augmentant ainsi les ventes et renforçant l’engagement des lecteurs.\n8. Publicité et témoignages : Obtenir des témoignages d’auteurs bien connus ou d’influenceurs du secteur peut ajouter de la crédibilité à votre livre et attirer un public plus large. Ces témoignages peuvent être inclus sur la couverture, la page arrière ou des matériaux promotionnels et sont souvent recherchés par une approche personnalisée et des propositions ciblées.\nEn mettant en œuvre efficacement ces stratégies marketing, les auteurs et les éditeurs peuvent créer une campagne complète qui atteint les lecteurs potentiels, construit l’intérêt et stimule les ventes. Une approche équilibrée combinant présence en ligne, événements de lancement, relations avec les médias, publicité numérique, marketing par courriel et témoignages peut aider à maximiser la visibilité et le succès du livre sur le marché.\nCanaux de distribution Les canaux de distribution sont essentiels pour assurer que les livres atteignent efficacement leur public cible. Il existe diverses voies qu’un auteur ou un éditeur peut emprunter pour distribuer un livre, chacune avec ses avantages et considérations. Voici quelques-uns des canaux de distribution les plus courants :\n1. Éditeurs traditionnels : Beaucoup d’auteurs choisissent de travailler avec des éditeurs traditionnels qui gèrent tous les aspects de la publication — de l’édition et de la conception à la promotion et à la distribution. Ces éditeurs ont souvent des relations établies avec des libraires et des distributeurs, ce qui peut simplifier le processus d’obtention d’un livre sur les étagères. Toutefois, les auteurs peuvent devoir renoncer à une partie du contrôle sur les décisions créatives et aux droits d’auteur en échange de ces services.\n2. Plateformes d’autopublication : Les plateformes d’autopublication comme Amazon Kindle Direct Publishing (KDP), Smashwords et Apple Books permettent aux auteurs de publier leurs livres indépendamment. Ces plateformes offrent des outils pour la mise en page, la conception de couverture, la distribution et la promotion. Elles offrent aussi un accès à un vaste marché numérique où les auteurs peuvent atteindre un public mondial sans l’intermédiaire d’un éditeur. Bien que l’autopublication offre un contrôle plus grand sur les droits d’auteur et les décisions créatives, elle exige plus d’efforts en matière de marketing et de promotion.\n3. Détaillants en ligne : Les grands détaillants en ligne comme Amazon, Barnes \u0026amp; Noble et Book Depository sont des canaux de distribution cruciaux qui offrent une large portée et une commodité pour les clients. Les auteurs peuvent télécharger directement leurs livres sur ces plateformes, profitant de fonctionnalités comme les pré-commandes, les critiques des clients et des options publicitaires. Ces détaillants ont souvent des algorithmes avancés qui peuvent aider à augmenter la visibilité du livre grâce à des efforts de marketing ciblés.\n4. Librairies indépendantes : Les librairies indépendantes sont des canaux précieux pour atteindre des publics niches et construire une base de lecteurs locaux. Les auteurs peuvent contacter directement les librairies indépendantes ou utiliser des services comme Bookshop.org, qui soutient les petites librairies en facilitant les commandes en ligne et l’expédition. Ces librairies offrent souvent des recommandations personnalisées et favorisent l’engagement communautaire à travers des événements d’auteurs et des lectures.\n5. Distributeurs en gros : Les distributeurs en gros comme Ingram Content Group et Baker \u0026amp; Taylor gèrent les achats en gros de livres auprès des éditeurs et les distribuent à divers détaillants, y compris les grandes chaînes, les bibliothèques et les marchés internationaux. Cela peut être un processus complexe impliquant des contrats, des quantités minimales de commande et une logistique avancée, mais il est souvent nécessaire pour une pénétration de marché plus large.\n6. Ventes directes : Les ventes directes impliquent la vente de livres directement aux consommateurs à travers des événements d’auteurs (comme des signatures ou des lectures), des conférences ou même des sites web personnels. Bien que cette approche puisse limiter la portée par rapport aux canaux de vente traditionnels, elle permet aux auteurs de construire des relations directes avec les lecteurs et de maintenir des marges bénéficiaires plus élevées en évitant les intermédiaires.\n7. Bibliothèques et institutions éducatives : La vente de livres aux bibliothèques et aux institutions éducatives peut offrir un flux constant de ventes, en particulier pour les ouvrages académiques ou de référence. Les auteurs peuvent soumettre leurs livres à des distributeurs de bibliothèques ou s’adresser directement à des bibliothèques individuelles. Ce marché exige souvent des commandes en gros, mais peut mener à un revenu significatif sur le long terme en raison de la longue durée de vie des collections des bibliothèques.\nEn tirant parti stratégiquement de multiples canaux de distribution — éditeurs traditionnels, plateformes d’autopublication, détaillants en ligne, librairies indépendantes, distributeurs en gros, ventes directes et bibliothèques — un auteur peut maximiser sa portée et s’assurer que ses livres sont accessibles à un large public. Il est important d’évaluer le public cible et les contraintes budgétaires lors du choix des canaux à privilégier.\nActivités pré-publication et post-publication Le parcours de publication d’un livre ne s’arrête pas une fois que le manuscrit final est affiné et la conception approuvée. Les activités pré-publication et post-publication sont cruciales pour assurer le succès et la longévité d’un livre sur le marché. Approfondissons ces étapes pour comprendre leur importance.\nActivités pré-publication :\nRevue finale et assurance qualité : Avant de passer à l’impression ou à la publication numérique, il est essentiel de faire une dernière revue approfondie. Cela inclut la vérification que toutes les éditions ont été intégrées, que les preuves sont correctes et que la mise en page est exempte d’erreurs. Cela peut impliquer plusieurs cycles de vérification avec différents membres de l’équipe pour assurer l’exactitude.\nPlan marketing et stratégie de lancement : Développer un plan marketing complet bien avant la date de publication est essentiel. Cela implique de définir des activités promotionnelles clés telles que des campagnes sur les réseaux sociaux, des tournées d’auteurs, des pré-commandes, des interviews d’auteurs et des apparitions publiques. Créer un calendrier stratégique aide à aligner toutes les initiatives et à assurer un impact maximal au lancement.\nMise en place des canaux de vente : S’assurer que votre livre est correctement listé sur tous les principaux détaillants en ligne comme Amazon, Barnes \u0026amp; Noble, Apple Books et Google Play est crucial. Cela inclut la création de pages produits avec des descriptions précises, des stratégies de prix et des métadonnées (comme des mots-clés et des catégories) pour améliorer sa découverte.\nSécurisation des pré-commandes : Offrir des pré-commandes peut créer de l’anticipation et générer de l’engouement autour du livre avant qu’il ne soit disponible. De nombreuses plateformes permettent cette fonctionnalité, permettant aux clients de réserver des exemplaires à un tarif réduit. Les pré-commandes peuvent aussi aider à mesurer l’intérêt initial et les projections de ventes.\nUtilisation des premières critiques : Avant la sortie du livre, sécuriser des critiques précoces de blogueurs influents, d’experts du secteur et de clubs de lecture peut grandement augmenter sa crédibilité et sa visibilité. Des plateformes comme NetGalley permettent aux auteurs de partager des versions numériques avec ces influenceurs pour critique.\nPréparation des matériaux de presse : Développer des matériaux de presse tels que des biographies d’auteur, des résumés du livre et des images de haute qualité est vital pour les relations avec les médias. Ces matériaux sont utilisés dans les communiqués de presse, les interviews et les campagnes promotionnelles. S’assurer qu’ils sont professionnels et percutants peut aider à attirer l’attention des médias et à renforcer vos efforts marketing.\nActivités post-publication :\nSurveillance des ventes et des retours : Après la publication du livre, surveiller les données de ventes et les commentaires des lecteurs est crucial pour comprendre sa performance et prendre des décisions éclairées pour l’avenir. Suivre des métriques telles que les ventes quotidiennes, les critiques et les classements peut aider à identifier des tendances et des domaines d’amélioration.\nEngagement avec les lecteurs : Engager les lecteurs via les réseaux sociaux, le site web de l’auteur, les signatures de livres et des événements virtuels aide à construire une communauté fidèle. Répondre aux commentaires et critiques des lecteurs montre de la reconnaissance et favorise une communauté autour de votre travail.\nEfforts marketing et promotionnels : Même après le lancement initial, des efforts marketing continus sont essentiels pour maintenir l’intérêt autour de votre livre. Cela peut inclure des newsletters par courriel, des campagnes sur les réseaux sociaux, des annonces sur des plateformes comme Amazon Advertising ou BookBub, et des événements virtuels ou des interviews.\nApparitions d’auteur et événements : Continuer à participer à des événements d’auteur, des lectures, des conférences et des congrès aide à garder le livre en vue du public. Ces événements offrent aussi des opportunités de réseau avec les lecteurs, les professionnels du secteur et des collaborateurs potentiels.\nMise à jour et sortie de nouvelles éditions : Tenir votre livre à jour est important, surtout si des erreurs sont découvertes ou de nouveaux développements liés au sujet sont publiés. Sortir de nouvelles éditions peut raviver l’intérêt des lecteurs existants et en attirer de nouveaux.\nUtilisation des données pour de nouveaux projets : Analyser les données provenant des ventes, des retours et des efforts marketing fournit des informations précieuses qui peuvent informer de futurs projets. Comprendre ce qui a bien fonctionné et où il y a de la place à améliorer aide à développer des stratégies plus efficaces pour les livres à venir.\nLes activités pré-publication et post-publication sont vitales au succès d’un livre. Elles assurent que votre œuvre non seulement atteint son public cible, mais aussi maintient sa pertinence et son intérêt au fil du temps. En accordant une attention à ces étapes, les auteurs peuvent maximiser leurs chances de créer une carrière littéraire réussie et durable. En comprenant l’intégralité du processus de publication et en restant flexible face aux retours et aux tendances, les auteurs peuvent naviguer dans les complexités avec confiance et atteindre leurs objectifs.\nConseils pour les auteurs Comme auteur s’engageant dans le parcours complexe de la publication d’un livre, il est essentiel d’être bien préparé et équipé de stratégies pour surmonter les défis courants. Voici quelques conseils précieux et suggestions pour vous aider à réussir à chaque étape du processus de publication :\n1. Élaborer un plan d’écriture solide : Commencez par créer un plan d’écriture détaillé qui précise vos objectifs, les exigences de recherche, votre emploi du temps d’écriture et votre calendrier de révision. Cette carte routière vous aidera à rester concentré et motivé tout au long du processus créatif.\n2. Construire un réseau de soutien fort : Entourez-vous de collègues, de mentors et de groupes de critique qui peuvent vous offrir des retours précieux sur votre travail. Ces réseaux ne vous offrent pas seulement de l’encouragement, mais aident aussi à identifier des domaines d’amélioration que vous pourriez manquer.\n3. Maintenir une communication ouverte avec les éditeurs : Une communication efficace avec les éditeurs est cruciale pendant la phase d’édition. Soyez ouvert à la critique constructive et collaborez activement pour affiner votre manuscrit. De bonnes relations de travail peuvent mener à de meilleurs résultats et à un produit final plus soigné.\n4. Prioriser la relecture : Ne sous-estimez pas l’importance de la relecture. Prévoyez suffisamment de temps pour cette étape minutieuse, ou envisagez de faire appel à un relecteur professionnel si nécessaire. Un livre bien relu améliore la professionnalisme et la lisibilité.\n5. Élaborer un plan marketing complet : Commencez à planifier vos efforts de marketing tôt. Définissez des activités spécifiques telles que des campagnes sur les réseaux sociaux, des événements d’auteur et des promotions pour créer de l’engouement autour de votre livre avant et après sa publication.\n6. Utiliser des ressources et outils en ligne : Profitez des ressources en ligne comme des logiciels d’écriture, des plateformes d’autopublication et des outils marketing qui peuvent simplifier divers aspects du processus de publication. Ces outils peuvent économiser du temps et vous aider à obtenir de meilleurs résultats avec moins d’effort.\n7. Rester informé des tendances de l’industrie : Restez informé des tendances actuelles dans l’industrie du livre pour vous assurer que vos stratégies restent pertinentes. Suivez des publications, participez à des événements de l’industrie et connectez-vous avec d’autres auteurs pour rester à jour sur les nouveautés.\n8. Être prêt aux révisions : Soyez prêt à des révisions multiples tout au long des phases d’édition et de relecture. Prévoyez que votre manuscrit évoluera considérablement à mesure que vous le perfectionnez. Acceptez ce processus itératif comme une étape essentielle à la création d’un livre de haute qualité.\n9. Utiliser les retours de manière constructive : Que ce soit des lecteurs bêta, des éditeurs ou des critiques précoces, les retours sont précieux. Abordez la critique constructive avec une ouverture d’esprit et soyez disposé à apporter des changements qui peuvent améliorer votre travail.\n10. Maintenir la persévérance et la patience : Le processus de publication peut être difficile et long. Restez persévérant malgré les revers et maintenez une attitude positive. La patience est essentielle ; les auteurs réussis rencontrent souvent de nombreuses difficultés avant d’atteindre le succès.\nÉtudes de cas Étude de cas 1 : E.L. James et « Cinquante nuances de Grey »\nE.L. James est un exemple typique d’auteur dont le succès inattendu dans le monde littéraire sert à la fois d’inspiration et d’enseignement. En commençant par une autopublication initiale, James a publié « Cinquante nuances de Grey » en tant qu’e-book sur Amazon en 2011. Son contenu explicite et son récit captivant ont rapidement attiré l’attention, menant à une campagne promotionnelle basée sur les réseaux sociaux, menée par des fans passionnés.\nDéfis rencontrés : Au départ, le principal défi pour James était de surmonter le scepticisme des éditeurs traditionnels qui hésitaient à soutenir un auteur inconnu écrivant sur des thèmes adultes. Elle a choisi de s’autopublier pour garder le contrôle sur la direction de son œuvre et éviter le rejet.\nApproche et stratégies : James a utilisé des plateformes sociales comme Twitter et Facebook pour construire une communauté autour de son livre, interagissant directement avec les lecteurs et générant de l’engouement. Elle a aussi utilisé efficacement la publicité en ligne et les promotions d’e-books, ce qui a aidé à faire grimper les ventes de manière constante.\nFacteurs de succès : Le facteur clé du succès de « Cinquante nuances de Grey » était la capacité de l’auteur à établir un lien authentique avec son public à travers les réseaux sociaux et l’interaction avec les fans. À mesure que les recommandations de bouche à oreille se propageaient, l’intérêt pour la série a augmenté exponentiellement, menant à un accord d’impression avec Vintage Books, qui s’est traduit par un succès commercial massif.\nRésultat : Le livre est devenu un best-seller international, inspirant des suites et une adaptation cinématographique qui ont encore accru son profil. Cette étude souligne la puissance de l’utilisation des plateformes numériques et de l’engagement communautaire pour obtenir une traction initiale avant de passer aux canaux de publication traditionnels.\nÉtude de cas 2 : J.K. Rowling et la série « Harry Potter »\nLe parcours de J.K. Rowling avec la série « Harry Potter » est un autre exemple convaincant d’un processus de publication réussie, bien que par des voies plus conventionnelles.\nDéfis rencontrés : Quand Rowling a initialement présenté son manuscrit aux éditeurs, elle a fait face à de nombreuses rejets en raison de ce que certains considéraient comme une idée peu originale et un thème inapproprié pour les enfants. Sa persévérance a payé quand Bloomsbury Publishing a finalement pris un risque sur son œuvre.\nApproche et stratégies : La stratégie de Rowling impliquait la création d’un récit détaillé et captivant qui captivait les jeunes lecteurs tout en touchant les adultes. Elle s’est appuyée fortement sur les recommandations de bouche à oreille et les premières critiques pour susciter de l’intérêt pour la série. La singularité du livre, combinée à son récit immersif, a attiré un public large.\nFacteurs de succès : La série « Harry Potter » a bénéficié d’une qualité constante à travers ses livres, créant une base de lecteurs fidèles qui attendaient chaque nouveau livre avec impatience. La capacité de Rowling à maintenir une cohérence narrative et à développer des mondes riches et détaillés a joué un rôle fondamental dans le succès de la série.\nRésultat : La série est devenue l’une des séries de livres les plus vendues de tous les temps, avec plus de 500 millions d’exemplaires vendus dans le monde. Son adaptation en films a encore élargi sa portée, créant un phénomène culturel emblématique qui a influencé des générations.\nÉtude de cas 3 : Tim Ferriss et « Le 4 heures par jour »\nLe livre de Tim Ferriss, « Le 4 heures par jour », est un exemple moderne d’auteur qui a efficacement utilisé l’autopublication pour atteindre un succès significatif.\nDéfis rencontrés : Ferriss a eu des difficultés à trouver un éditeur pour son livre en raison de son approche inhabituelle et de la méfiance suscitée par ses affirmations. Il a décidé de prendre le contrôle du processus de publication lui-même.\nApproche et stratégies : Ferriss a utilisé son expertise en autopromotion, en exploitant les réseaux sociaux, les articles de blog et la publicité en ligne pour créer de l’engouement autour de son travail. Sa méthode consistait à offrir gratuitement des extraits de son livre, ce qui a généré de l’intérêt et stimulé les ventes.\nFacteurs de succès : Le succès de Ferriss peut être attribué à sa forte présence en ligne et à sa capacité à interagir directement avec les lecteurs via les réseaux sociaux. Les conseils pratiques et la perspective unique proposés dans « Le 4 heures par jour » ont résonné auprès d’un large public cherchant des solutions concrètes aux défis modernes du travail.\nRésultat : « Le 4 heures par jour » est devenu un best-seller, menant à des livres ultérieurs et à l’établissement de Ferriss comme figure influente dans les domaines de l’autopromotion et des affaires. Le succès de ce livre met en lumière le potentiel du marketing numérique et des stratégies d’autopublication pour atteindre et engager efficacement les publics.\nCes études de cas illustrent des approches diverses de publication de livres qui ont mené à des succès remarquables. De l’auteur indépendant autopublié comme E.L. James à l’icône littéraire établie comme J.K. Rowling, chaque parcours souligne l’importance de la persévérance, de la planification stratégique et de la connexion avec les lecteurs. En étudiant ces exemples, les auteurs en herbe peuvent tirer des enseignements précieux et des stratégies pour naviguer dans leur propre parcours vers la publication.\nLa publication d’un livre est un processus complexe mais gratifiant lorsqu’il est abordé avec diligence et une vision stratégique. En mettant l’accent sur une planification méticuleuse, une collaboration efficace, une innovation continue et une flexibilité, les auteurs et les éditeurs peuvent réussir à naviguer dans ce parcours complexe, produisant des livres de haute qualité qui résonnent avec les lecteurs et atteignent un succès commercial. L’objectif ultime est de créer une œuvre littéraire qui non seulement répond aux attentes, mais les dépasse, laissant une empreinte durable sur le public.\n","permalink":"https://www.shafiq.in/fr/blog/book-publishing-process/","summary":"\u003ch3 id=\"processus-de-publication-dun-livre\"\u003eProcessus de publication d’un livre\u003c/h3\u003e\n\u003cp\u003eLa publication d’un livre est un processus qui implique plusieurs étapes, chacune essentielle à un lancement réussi d’une œuvre littéraire. Il commence par la conception d’une idée, qui passe ensuite par plusieurs phases : écriture, édition, relecture, conception graphique, production, marketing et enfin distribution. Comprendre chaque étape de ce processus peut aider les auteurs et les éditeurs à mieux naviguer dans les complexités.\u003c/p\u003e\n\u003cp\u003eLa première étape est l’\u003cstrong\u003eécriture\u003c/strong\u003e, où un auteur développe son idée initiale en un manuscrit cohérent. Cela implique des recherches approfondies, la rédaction d’un plan, des brouillons, des révisions et des ajustements jusqu’à ce que l’histoire ou l’argument soit bien articulé et captivant. Une fois le manuscrit terminé, il passe à la phase d’édition, qui vise à améliorer la clarté, la cohérence et la qualité globale du contenu. Les éditeurs jouent un rôle central à cette étape en corrigeant les erreurs grammaticales, en éliminant les incohérences et en proposant des suggestions pour améliorer le rythme narratif.\u003c/p\u003e","title":"Book Publishing Process"},{"content":"Numéros de série du BIOS Le BIOS, qui signifie Basic Input/Output System (Système d\u0026rsquo;entrée/sortie de base), est un firmware fondamental qui initialise les composants matériels lors du processus de démarrage d\u0026rsquo;un ordinateur. Il joue un rôle indispensable dans le fonctionnement des ordinateurs personnels en assurant un contrôle au niveau le plus bas des ressources système avant que le système d\u0026rsquo;exploitation ne prenne le relais. Une information souvent négligée mais utile contenue dans le BIOS est le numéro de série. Cet identifiant unique sert à diverses fins, qu\u0026rsquo;il s\u0026rsquo;agisse de sécurité ou de gestion des stocks, et comprendre son importance peut aider les utilisateurs à tirer pleinement parti de leurs systèmes.\nUn numéro de série du BIOS, également appelé numéro de série du système ou numéro d\u0026rsquo;identification matérielle, est généré lors de la fabrication d\u0026rsquo;un ordinateur et est généralement codé en dur dans le firmware par le fabricant. Il est conçu comme un identifiant unique pour chaque machine individuelle, similaire à une empreinte digitale qui distingue un appareil d\u0026rsquo;un autre au sein d\u0026rsquo;une flotte importante d\u0026rsquo;ordinateurs. Cela garantit que même si deux machines ont des configurations similaires, leurs numéros de série du BIOS seront différents.\nL\u0026rsquo;importance principale des numéros de série du BIOS peut être mise en évidence à travers plusieurs applications clés :\nAuthentification de sécurité : Dans les environnements corporatifs ou dans des scénarios de cloud computing, les numéros de série du BIOS sont souvent utilisés pour l\u0026rsquo;authentification de sécurité. Les systèmes peuvent être configurés pour ne démarrer que lorsque le bon numéro de série est fourni, ajoutant ainsi une couche supplémentaire de protection contre l\u0026rsquo;accès non autorisé.\nGestion des actifs : Pour les professionnels de l\u0026rsquo;informatique chargés de gérer une grande flotte d\u0026rsquo;ordinateurs, connaître le numéro de série de chaque machine simplifie le suivi des actifs et la gestion des stocks. Cela permet un déploiement, une maintenance et un dépannage plus efficaces.\nLicences logicielles : Les entreprises logicielles peuvent utiliser les numéros de série du BIOS pour vérifier l\u0026rsquo;authenticité des produits licenciés installés sur les machines des utilisateurs. En s\u0026rsquo;assurant que seules les copies authentiques de logiciels sont utilisées, cela aide à lutter contre la piraterie logicielle.\nPersonnalisation du système : Certains fabricants de matériel ou intégrateurs système utilisent les numéros de série du BIOS pour appliquer des configurations spécifiques ou des mises à jour adaptées à des systèmes individuels, améliorant ainsi l\u0026rsquo;expérience utilisateur et l\u0026rsquo;optimisation des performances.\nDépannage et assistance : Lors du dépannage de problèmes liés au matériel ou au firmware, disposer du bon numéro de série du BIOS peut grandement faciliter le diagnostic en fournissant des informations précises sur la configuration du système et tout changement antérieur effectué.\nBien que le numéro de série du BIOS puisse sembler au premier abord une donnée banale, il revêt une valeur substantielle dans divers contextes techniques et administratifs. Sa nature unique garantit qu\u0026rsquo;un ordinateur puisse être identifié avec précision, facilitant ainsi des tâches allant de la sécurité à la gestion des actifs et au dépannage. Comprendre le contexte et l\u0026rsquo;importance de ces numéros est essentiel pour toute personne travaillant sur les systèmes informatiques à un niveau professionnel.\nObtenir les numéros de série du BIOS sous Linux Il existe plusieurs méthodes pour récupérer le numéro de série du BIOS, chacune adaptée à différentes situations et configurations système. La méthode la plus simple consiste à utiliser des outils de ligne de commande basiques comme dmidecode, sudo lshw et /proc/cpuinfo. Ces commandes offrent des niveaux de détail et d\u0026rsquo;accessibilité variés, permettant aux utilisateurs de choisir la méthode qui convient le mieux à leurs besoins.\nUtilisation de dmidecode dmidecode est un outil largement utilisé sous Linux pour interroger les informations matérielles via la norme DMI (Desktop Management Interface). Pour récupérer le numéro de série du BIOS en utilisant dmidecode, suivez ces étapes :\nOuvrir le terminal : Lancez une fenêtre de terminal.\nExécuter la commande :\nsudo dmidecode --type 0 Vérifier la sortie : La commande affichera des informations détaillées sur le système d\u0026rsquo;entrée/sortie (BIOS), y compris le numéro de série.\nVoici un exemple de ce que la sortie pourrait ressembler :\nInformations système ------------------- Type : Aperçu du système Segment : 0x0000 Taille : 65 octets Handle : 0x0016 Adresse : 0xd808 Portée : DMI Type : 0 Niveau : 0 Fabricant : BIOS Version : 1.15 Date de mise à jour du BIOS : 18/06/2019 Caractéristiques : Caractéristiques du BIOS Fonctionnalités prises en charge Mode de programmation PIC standard MCA Mode de programmation CTC standard Prise en charge USB Statut de démarrage Le système a démarré correctement. Paramètres d\u0026#39;exécution La mémoire non volatile est présente. ... La section Informations système contient une ligne intitulée \u0026ldquo;Numéro de série\u0026rdquo; qui contient le numéro de série du BIOS. Dans l\u0026rsquo;exemple ci-dessus, le numéro de série pourrait être \u0026ldquo;1234567890123456\u0026rdquo;.\nUtilisation de sudo lshw lshw est un autre outil en ligne de commande qui fournit des informations détaillées sur les composants matériels d\u0026rsquo;un ordinateur, y compris les détails du BIOS. Voici comment l\u0026rsquo;utiliser :\nOuvrir le terminal : Lancez une fenêtre de terminal.\nExécuter la commande :\nsudo lshw -C bios Vérifier la sortie : La commande affichera divers attributs du BIOS, dont l\u0026rsquo;un est le numéro de série.\nUn exemple de sortie pourrait être :\n*-bios description : BIOS produit : 1.15 fournisseur : American Megatrends Inc. identifiant physique : 0 version : 640K numéro de série : 1234567890123456 capacités : pci, pcix, mca, vldt, cmos, greenmode, acpi, apm, pci-express, biosrom Dans ce cas, le numéro de série du BIOS est indiqué comme \u0026ldquo;1234567890123456\u0026rdquo; sous l\u0026rsquo;attribut \u0026ldquo;numéro de série\u0026rdquo;.\nUtilisation de /proc/cpuinfo Bien que /proc/cpuinfo fournit principalement des informations sur l\u0026rsquo;architecture et la configuration du processeur, il peut également inclure certaines données liées au BIOS du système. Pour accéder à ces informations :\nOuvrir le terminal : Lancez une fenêtre de terminal.\nExécuter la commande :\nsudo cat /proc/cpuinfo | grep \u0026#34;BIOS\u0026#34; Vérifier la sortie : La commande recherche les lignes contenant la chaîne \u0026ldquo;BIOS\u0026rdquo; et affiche les informations pertinentes.\nLa sortie exemple pourrait inclure :\nbios_boot_status: 0x03 bios_date: 18/06/2019 Bien que cela ne montre pas directement le numéro de série du BIOS, certains systèmes peuvent le mentionner dans d\u0026rsquo;autres champs. Par exemple, certains noyaux Linux plus anciens ou des configurations personnalisées peuvent stocker le numéro de série du BIOS dans /proc/cpuinfo sous le champ \u0026ldquo;serial\u0026rdquo;.\nLe choix de la méthode dépend du niveau de détail requis et du contexte spécifique de votre tâche. Pour la plupart des cas standards, l\u0026rsquo;utilisation de dmidecode ou lshw serait fortement recommandée en raison de leur fiabilité et de leur couverture complète.\nCommandes avancées sous Linux pour extraire les numéros de série du BIOS Alors que les commandes basiques comme dmidecode et lshw peuvent récupérer efficacement le numéro de série du BIOS dans de nombreuses situations, elles ne fournissent pas toujours le niveau de précision ou de fonctionnalité souhaité. Dans ces cas, des commandes et outils plus avancés comme acpi, smbios ou des scripts personnalisés peuvent être utilisés pour extraire le numéro de série du BIOS. Ces méthodes offrent une flexibilité supplémentaire et un accès plus profond aux informations du système, les rendant adaptées aux tâches complexes et aux exigences spécifiques.\nUtilisation de acpi L\u0026rsquo;Advanced Configuration and Power Interface (ACPI) fournit une interface standardisée pour la configuration et la gestion de l\u0026rsquo;alimentation dans les systèmes d\u0026rsquo;exploitation modernes. Pour utiliser acpi afin d\u0026rsquo;extraire le numéro de série du BIOS :\nOuvrir le terminal : Lancez une fenêtre de terminal.\nExécuter la commande :\nsudo acpi -V Vérifier la sortie : Cette commande affiche des informations détaillées sur l\u0026rsquo;ACPI du système, qui peuvent inclure le numéro de série du BIOS.\nUne sortie exemple pourrait être :\nADLOMS BIOS Release (SMBIOS 2.7) BIOS Release : 06/01/2021 BIOS Version : 04.02.00 Fournisseur : F7 Adresse de départ : 0x000e0000 Taille de la mémoire : 0x00180000 Ici, vous pourriez trouver le numéro de série du BIOS dans le champ \u0026ldquo;Fournisseur\u0026rdquo; (\u0026ldquo;F7\u0026rdquo;) ou éventuellement sous une autre étiquette comme \u0026ldquo;ID\u0026rdquo;. Cela peut varier selon la configuration du système et l\u0026rsquo;implémentation ACPI.\nUtilisation de smbios La norme SMBIOS (System Management BIOS) fournit une interface pour accéder aux informations de gestion d\u0026rsquo;un système informatique. Pour utiliser smbios afin de récupérer le numéro de série du BIOS :\nOuvrir le terminal : Lancez une fenêtre de terminal.\nExécuter la commande :\nsudo smbios -r 0x02 Vérifier la sortie : Cette commande récupère et affiche des données SMBIOS détaillées, qui incluent les informations du BIOS du système.\nUne sortie exemple pourrait être :\nTableau SMBios : Version du BIOS : 0402 Fournisseur : F7 ... Dans ce cas, le champ \u0026ldquo;Fournisseur\u0026rdquo; peut contenir le numéro de série du BIOS ou un identifiant connexe. Selon le système et l\u0026rsquo;implémentation SMBIOS, vous devrez peut-être analyser davantage la sortie pour extraire l\u0026rsquo;information spécifique que vous recherchez.\nScripts personnalisés Pour des scénarios plus complexes ou lorsque les systèmes ne révèlent pas facilement le numéro de série du BIOS via des commandes standards, des scripts personnalisés peuvent être développés. Ces scripts impliquent souvent l\u0026rsquo;analyse de la sortie d\u0026rsquo;autres outils comme dmidecode, lshw ou l\u0026rsquo;interaction directe avec des fichiers système tels que /sys.\nVoici un exemple de script Bash simple qui tente d\u0026rsquo;extraire le numéro de série du BIOS :\n#!/bin/bash # Vérifier la disponibilité de dmidecode if ! command -v dmidecode \u0026amp;\u0026gt; /dev/null; then echo \u0026#34;dmidecode n\u0026#39;a pas été trouvé. Veuillez l\u0026#39;installer.\u0026#34; exit 1 fi # Récupérer les informations système avec dmidecode serial_number=$(sudo dmidecode --type 0 | grep \u0026#39;Numéro de série\u0026#39; | cut -d \u0026#39;:\u0026#39; -f2) if [ -z \u0026#34;$serial_number\u0026#34; ]; then echo \u0026#34;Le numéro de série du BIOS n\u0026#39;a pas pu être trouvé.\u0026#34; else echo \u0026#34;Numéro de série du BIOS : $serial_number\u0026#34; fi Ce script vérifie tout d\u0026rsquo;abord la disponibilité de dmidecode, puis l\u0026rsquo;exécute pour extraire les informations système, en ciblant spécifiquement le champ \u0026ldquo;Numéro de série\u0026rdquo;. Il extrait ensuite et affiche cette valeur.\nCombinaison des méthodes Souvent, l\u0026rsquo;approche la plus efficace est une combinaison de ces méthodes. Par exemple, vous pourriez utiliser acpi ou smbios pour vérifier que le numéro de série est cohérent entre différents outils. Vous pourriez également combiner l\u0026rsquo;analyse des résultats de plusieurs commandes dans un script personnalisé pour garantir une précision et une complétude maximales.\nRécupération des numéros de série du BIOS sur différentes distributions Linux Les distributions Linux varient considérablement en termes de systèmes de gestion des paquets, de configurations par défaut et de prise en charge matérielle disponible. Cette variabilité affecte les méthodes et les outils à disposition pour récupérer un numéro de série du BIOS. Voici une exploration de la manière d\u0026rsquo;extraire le numéro de série du BIOS sur des distributions Linux populaires : Ubuntu, CentOS et Fedora.\nUbuntu Pour récupérer le numéro de série du BIOS sous Ubuntu :\nInstaller dmidecode (si ce n\u0026rsquo;est pas déjà fait) :\nsudo apt-get update sudo apt-get install dmidecode Exécuter la commande :\nsudo dmidecode --type 0 | grep \u0026#39;Numéro de série\u0026#39; Si Ubuntu utilise un système de fichiers personnalisé comme ZFS, vous devrez peut-être monter les partitions nécessaires avant d\u0026rsquo;exécuter la commande dmidecode.\nCentOS Voici comment obtenir le numéro de série du BIOS sous CentOS :\nInstaller dmidecode (si ce n\u0026rsquo;est pas déjà fait) :\nsudo yum install dmidecode Exécuter la commande :\nsudo /usr/bin/dmidecode --type 0 | grep \u0026#39;Numéro de série\u0026#39; CentOS inclut également lshw par défaut, ce qui permet de l\u0026rsquo;utiliser directement sans installation.\nFedora Le processus pour récupérer le numéro de série du BIOS sous Fedora ressemble étroitement à celui d\u0026rsquo;Ubuntu :\nInstaller dmidecode (si ce n\u0026rsquo;est pas déjà fait) :\nsudo dnf install dmidecode Exécuter la commande :\nsudo dmidecode --type 0 | grep \u0026#39;Numéro de série\u0026#39; En plus de dmidecode, Fedora fournit lshw par défaut, et vous pouvez l\u0026rsquo;utiliser de manière similaire à Ubuntu.\nProblèmes courants et solutions Erreurs de permission : Les utilisateurs peuvent rencontrer des erreurs de permission lors de l\u0026rsquo;exécution de commandes avec des privilèges élevés (par exemple, en utilisant sudo). Assurez-vous que l\u0026rsquo;utilisateur dispose des permissions nécessaires pour accéder aux informations matérielles ou mettre à jour les listes de paquets.\nSolution : Si vous rencontrez constamment des problèmes de permission, essayez d\u0026rsquo;utiliser la commande sudo pour basculer d\u0026rsquo;utilisateur ou assurez-vous d\u0026rsquo;appartenir aux groupes appropriés comme wheel pour les tâches administratives. Dépendances manquantes : Certains outils peuvent nécessiter des dépendances supplémentaires pour fonctionner correctement.\nSolution : Vérifiez les dépendances manquantes et installez-les en utilisant le gestionnaire de paquets spécifique à votre distribution (par exemple, apt-get, yum ou dnf). Matériel non pris en charge : Dans certains cas, notamment avec du matériel plus récent, les commandes standards peuvent ne pas fonctionner en raison du manque de prise en charge dans le noyau Linux.\nSolution : Mettez à jour votre noyau et vos pilotes vers les dernières versions disponibles pour votre distribution. Consultez également la documentation pour tout problème connu de compatibilité matérielle ou recherchez des forums de soutien communautaire. Configurations personnalisées : Les systèmes avec un firmware personnalisé peuvent stocker le numéro de série du BIOS dans des emplacements non standards ou utiliser des étiquettes différentes.\nSolution : Examinez les fichiers système comme /sys et utilisez des scripts personnalisés pour accéder et analyser ces informations. Consultez également la documentation du fabricant pour des instructions spécifiques sur la récupération des données du BIOS. Extraction du numéro de série du BIOS à partir de fabricants matériels spécifiques Les différents fabricants de matériel peuvent implémenter leurs propres méthodes pour stocker et récupérer les numéros de série du BIOS en raison des variations dans la conception du firmware et des architectures système. Par conséquent, l\u0026rsquo;extraction du numéro de série du BIOS peut varier considérablement entre des marques comme Dell, Lenovo et HP. Voici un guide détaillé sur la manière de récupérer le numéro de série du BIOS de ces fabricants populaires en utilisant des commandes Windows et Linux.\nDell Les systèmes Dell utilisent généralement leurs propres outils en ligne de commande et utilitaires pour gérer les informations système. Un tel outil est le Dell Command Suite, qui inclut divers modules pour différentes tâches de gestion système.\nMéthode Windows :\nInstaller Dell Command Suite (si ce n\u0026rsquo;est pas déjà fait) :\nTéléchargez et installez Dell Command Suite depuis le site de support Dell. Exécuter la commande :\ndellsysmgmt /getbios /s Cette commande affichera les informations système, y compris le numéro de série du BIOS.\nMéthode Linux :\nUtiliser dmidecode :\nsudo dmidecode --type 0 | grep \u0026#39;Numéro de série\u0026#39; Lenovo Lenovo propose plusieurs façons d\u0026rsquo;extraire le numéro de série du BIOS sur ses systèmes, en utilisant à la fois des commandes Windows et Linux.\nMéthode Windows :\nExécuter l\u0026rsquo;information système : Cliquez sur le menu Démarrer, tapez Information système, puis ouvrez-le. Accédez à la section \u0026ldquo;Résumé du système\u0026rdquo;, où vous pouvez trouver le numéro de modèle du système, qui inclut souvent le numéro de série du BIOS. Méthode Linux :\nUtiliser dmidecode :\nsudo dmidecode --type 0 | grep \u0026#39;Numéro de série\u0026#39; Alternativement, les systèmes Lenovo peuvent utiliser lshw ou des scripts personnalisés fournis dans la documentation de support Lenovo pour extraire les informations système, y compris le numéro de série du BIOS.\nHP HP propose différentes méthodes pour accéder aux détails du système, qui peuvent varier selon l\u0026rsquo;âge de la machine et la version du BIOS utilisée.\nMéthode Windows :\nAccéder aux paramètres BIOS : Redémarrez votre ordinateur et entrez dans le setup BIOS en appuyant sur la touche appropriée (généralement F10). Naviguez jusqu\u0026rsquo;à la section \u0026ldquo;Système\u0026rdquo; ou \u0026ldquo;Configurer\u0026rdquo;, où vous pouvez voir des détails tels que le numéro de série du système, qui correspond souvent au numéro de série du BIOS. Méthode Linux :\nUtiliser dmidecode :\nsudo dmidecode --type 0 | grep \u0026#39;Numéro de série\u0026#39; HP fournit également l\u0026rsquo;utilitaire hp-smc pour certains systèmes, qui peut afficher des informations système, y compris la version du BIOS et d\u0026rsquo;autres détails, bien qu\u0026rsquo;il ne fournisse pas toujours directement le numéro de série.\nBien que chaque fabricant de matériel ait ses propres outils et commandes spécifiques pour accéder aux numéros de série du BIOS, l\u0026rsquo;outil dmidecode reste une base commune dans les environnements Linux. Pour les utilisateurs de Windows, les utilitaires spécifiques au fabricant comme Dell Command Suite ou des outils d\u0026rsquo;information système intégrés peuvent être plus pratiques et souvent fournir des détails plus riches. Il est crucial de consulter la documentation de votre fabricant de matériel pour des instructions détaillées adaptées à votre modèle spécifique et à la version de votre BIOS.\n","permalink":"https://www.shafiq.in/fr/blog/how-to-get-bios-serial-numbers-on-linux/","summary":"\u003ch3 id=\"numéros-de-série-du-bios\"\u003eNuméros de série du BIOS\u003c/h3\u003e\n\u003cp\u003eLe BIOS, qui signifie Basic Input/Output System (Système d\u0026rsquo;entrée/sortie de base), est un firmware fondamental qui initialise les composants matériels lors du processus de démarrage d\u0026rsquo;un ordinateur. Il joue un rôle indispensable dans le fonctionnement des ordinateurs personnels en assurant un contrôle au niveau le plus bas des ressources système avant que le système d\u0026rsquo;exploitation ne prenne le relais. Une information souvent négligée mais utile contenue dans le BIOS est le numéro de série. Cet identifiant unique sert à diverses fins, qu\u0026rsquo;il s\u0026rsquo;agisse de sécurité ou de gestion des stocks, et comprendre son importance peut aider les utilisateurs à tirer pleinement parti de leurs systèmes.\u003c/p\u003e","title":"How To Get BIOS Serial Numbers On Linux"},{"content":"Introduction à Bathukamma Bathukamma est une fête traditionnelle célébrée dans la région du Telangana en Inde, particulièrement à Hyderabad et dans ses environs. Ce festif vibrant et coloré revêt une importance culturelle immense et est profondément ancré dans l\u0026rsquo;histoire et les traditions du peuple telougou. Le mot \u0026ldquo;Bathukamma\u0026rdquo; signifie littéralement \u0026ldquo;le pot de fleurs\u0026rdquo; en langue telougou, symbole de la beauté et de la pureté de la nature.\nArrière-plan historique Les origines de Bathukamma remontent à l\u0026rsquo;antiquité, où elle était célébrée comme une fête des récoltes. Au fil des siècles, cette célébration s\u0026rsquo;est transformée en un grand événement culturel qui rassemble des personnes de tous horizons pour célébrer leur riche héritage et renforcer leur lien avec la nature. La fête est principalement associée à la déesse hindoue Gauri, censée bénir ses fidèles durant cette période.\nImportance Bathukamma revêt une grande importance dans la vie des habitants du Telangana, car elle remplit plusieurs fonctions. Premièrement, elle exprime la gratitude envers la nature pour ses dons abondants, particulièrement à l\u0026rsquo;occasion de la saison des récoltes. Deuxièmement, elle favorise un sentiment d\u0026rsquo;unité et de communauté entre les gens, indépendamment de leur statut social ou économique. Enfin, elle offre aux individus une occasion de mettre en valeur leurs talents artistiques à travers des arrangements floraux complexes et des décorations vibrantes.\nCélébrations La fête commence par la préparation du pot Bathukamma, fabriqué à partir de fleurs colorées telles que le souci, le jasmin et la rose. Les fleurs sont disposées selon un motif précis, symbolisant divers aspects de la vie, comme la beauté, la prospérité et le bonheur. Le pot est ensuite placé sur un piédestal décoré, souvent orné de guirlandes, de clochettes et d\u0026rsquo;autres éléments décoratifs.\nLe jour de la fête, les gens se rassemblent dans des lieux publics ou des temples pour célébrer Bathukamma. L\u0026rsquo;événement débute par une cérémonie de prière, durant laquelle les fidèles offrent des fleurs et sollicitent les bénédictions de la déesse Gauri. Suit une série de performances musicales et chorégraphiques traditionnelles, mettant en valeur l\u0026rsquo;herbe culturelle riche du Telangana. Les gens échangent également des cadeaux et partagent des repas, renforçant ainsi leurs liens les uns avec les autres.\nRituels L\u0026rsquo;un des rituels les plus importants durant Bathukamma est le \u0026ldquo;Bathukamma Pooja\u0026rdquo;, où le pot de fleurs est vénéré par les fidèles. Le pot est décoré d’un tissu rouge, symbole de pureté et de prospérité. Les fidèles versent ensuite de l’eau sur les fleurs, symbolisant leur gratitude envers la nature pour ses dons abondants. Ce rituel est suivi par la distribution de prasadam (nourriture sacrée) parmi les participants.\nImportance culturelle Bathukamma revêt une importance immense dans la vie des habitants du Telangana. Elle sert de rappel de leur riche héritage et de l\u0026rsquo;importance de préserver les valeurs traditionnelles. La fête favorise également la prise de conscience environnementale, en encourageant les gens à utiliser les ressources naturelles de manière responsable et à apprécier la beauté de la nature.\nEn outre, Bathukamma suscite un sentiment de fierté chez les personnes du peuple telougou, car elle met en lumière leur culture et leurs traditions uniques. C’est une occasion de se rassembler, de célébrer leur identité et de renforcer leurs liens les uns avec les autres.\nBathukamma est une fête vivante et significative, qui revêt une importance culturelle immense dans la vie des habitants du Telangana. Grâce à son histoire riche, à ses rituels diversifiés et à ses célébrations colorées, elle rappelle l’herbe unique de la région et l’importance de préserver les valeurs traditionnelles. Alors que cette fête gagne en popularité, elle reste un élément essentiel de la trame culturelle du Telangana et de l’Inde dans son ensemble.\nLes origines et l’arrière-plan historique de Bathukamma Bathukamma trouve ses racines profondément ancrées dans la riche tapisserie de la culture et de l’histoire indienne. Cette fête vibrante remonte à l’antiquité, où elle était principalement célébrée comme une fête des récoltes. La région du Telangana, particulièrement Hyderabad et ses environs, est le cœur de cette célébration depuis des siècles.\nFête des récoltes anciennes En Inde ancienne, diverses régions célébraient leurs propres fêtes des récoltes, profondément ancrées dans leurs croyances et traditions culturelles. Bathukamma est censée être l’une de ces fêtes qui s’est développée au fil du temps. À l’époque des récoltes, les gens se rassemblaient pour remercier les dieux pour une récolte abondante et prier pour une prospérité future. L’offrande de fleurs aux dieux était une pratique courante lors de ces festivités.\nÉvolution vers une célébration culturelle Au fil des siècles, Bathukamma s’est transformée d’une simple fête des récoltes en une grande célébration culturelle. Cette évolution s’explique par plusieurs facteurs, notamment le riche patrimoine culturel de la région et sa population diversifiée. Le Telangana a toujours été un mélange de cultures, de religions et de traditions diverses. Au fil du temps, ces influences variées ont contribué à la croissance et à la popularité de Bathukamma.\nAssociation avec la déesse hindoue Gauri L’un des facteurs clés qui ont façonné l’importance de Bathukamma est son association avec la déesse hindoue Gauri. Gauri est considérée comme l’incarnation de la beauté, de la pureté et de la sagesse dans la mythologie hindoue. La fête est censée être un moyen pour les fidèles de solliciter ses bénédictions et d’exprimer leur reconnaissance. Ce lien a renforcé davantage l’importance culturelle de Bathukamma dans la vie des habitants du Telangana.\nInfluence des traditions locales Les traditions et coutumes locales du Telangana ont également joué un rôle important dans la formation de la fête. Au fil du temps, les gens ont intégré divers éléments de leur vie quotidienne dans la célébration, la rendant plus significative et pertinente. Par exemple, l’utilisation de fleurs dans le pot Bathukamma symbolise la beauté et la pureté de la nature, élément essentiel de la culture du Telangana.\nLes origines et l’arrière-plan historique de Bathukamma témoignent du riche patrimoine culturel de la région du Telangana. De ses racines anciennes comme fête des récoltes à sa forme actuelle de célébration culturelle vibrante, Bathukamma s’est développée au fil du temps, influencée par des facteurs tels que les traditions locales et l’association avec la déesse hindoue Gauri. Cette fête continue de revêtir une importance immense dans la vie des habitants du Telangana, servant de rappel de leur riche héritage et de l’importance de préserver les valeurs traditionnelles.\nL’importance de Bathukamma dans la société moderne Bathukamma revêt une importance profonde dans la société moderne, particulièrement pour les habitants du Telangana. Cette fête vibrante sert de multiples objectifs allant au-delà d’une simple célébration culturelle. Elle favorise la gratitude envers la nature, promeut la prise de conscience environnementale et renforce les liens sociaux au sein de la communauté.\nGratitude envers la nature L’une des principales raisons pour lesquelles Bathukamma est célébrée avec tant d’enthousiasme est son lien avec l’expression de gratitude envers la nature. La fête coïncide avec la saison des récoltes, lorsque les agriculteurs récoltent les fruits de leur labeur. En disposant des pots colorés de fleurs et en les offrant à la déesse Gauri, les gens expriment leur reconnaissance pour les dons abondants de la nature.\nCette action de gratitude rappelle que la vie dépend de la terre, et incite les individus à respecter et protéger les ressources naturelles. L’utilisation de fleurs dans le pot Bathukamma est symbolique de cette vénération, car elles sont une ressource naturelle et durable représentant beauté, pureté et prospérité.\nPrise de conscience environnementale Bathukamma favorise également la prise de conscience environnementale. Dans le cadre des préparatifs de la fête, les gens collectent des fleurs dans leur environnement et les disposent en motifs complexes pour créer les pots. Cette pratique encourage les individus à apprécier la beauté de la nature et son importance dans leur vie. Elle soulève également la conscience du besoin de préserver les ressources naturelles et de réduire les déchets.\nLa fête insiste sur l’utilisation de matériaux biodégradables et encourage les gens à minimiser leur empreinte écologique. En promouvant des pratiques durables, Bathukamma contribue au bien-être global de l’environnement et favorise un sentiment de responsabilité envers la nature.\nRenforcement des liens sociaux Un autre aspect important de Bathukamma est sa capacité à rassembler les gens et à renforcer les liens sociaux au sein de la communauté. La fête est célébrée avec enthousiasme et implique diverses activités qui encouragent l’interaction entre les membres de la communauté. Les gens se réunissent dans des lieux publics ou des temples pour participer à des cérémonies de prière, à des performances musicales et chorégraphiques, ainsi qu’à d’autres événements culturels.\nCes rassemblements offrent une occasion aux individus de se rapprocher de leurs voisins, de leurs amis et de leurs familles, favorisant ainsi un sentiment d’unité et d’appartenance. L’échange de cadeaux et le partage de repas renforcent davantage ces liens, car les gens se rassemblent pour célébrer leur héritage commun et leurs traditions.\nBathukamma revêt une importance immense dans la société moderne, particulièrement pour les habitants du Telangana. En exprimant sa gratitude envers la nature, en promouvant la prise de conscience environnementale et en renforçant les liens sociaux, cette fête vibrante sert de multiples objectifs allant au-delà d’une simple célébration culturelle. Alors qu’elle continue d’évoluer, Bathukamma reste un élément essentiel de la trame culturelle du Telangana et de l’Inde dans son ensemble.\nLes rituels et traditions de Bathukamma Bathukamma n’est pas seulement une fête colorée, mais aussi un tissu riche de rituels et de traditions qui ont une signification culturelle profonde. Ces pratiques, transmises de génération en génération, préservent l’essence du patrimoine du Telangana et favorisent un sentiment d’unité parmi son peuple.\nLa préparation du pot Bathukamma La préparation du pot Bathukamma est un processus complexe qui exige une attention méticuleuse. Elle commence par le choix des fleurs, considérées comme sacrées durant cette fête. Les fleurs les plus couramment utilisées sont le souci (Genda), le jasmin (Chittam) et la rose (Kumkum). Chaque fleur a une signification symbolique, ajoutant ainsi des couches de sens à l’arrangement.\nLes fleurs sont soigneusement disposées selon un motif précis sur un piédestal ou une surface plane, créant un design élaboré et complexe. Le pot est généralement en forme d’horloge à sable ou de demi-lune, symbole du cycle de la vie et de la mort. L’arrangement comprend généralement des cercles concentriques, chacun représentant différents aspects de la vie tels que la beauté, la prospérité et le bonheur.\nLe Bathukamma Pooja Le rituel le plus important durant Bathukamma est le \u0026ldquo;Bathukamma Pooja\u0026rdquo;, où le pot de fleurs est vénéré par les fidèles. Cette cérémonie a lieu généralement le matin ou en début d’après-midi, lorsque les fleurs sont à leur plus fraîche. Les fidèles se rassemblent autour du pot et effectuent une série de rituels pour solliciter les bénédictions de la déesse Gauri.\nLa première étape du Bathukamma Pooja est de décorer le pot avec un tissu rouge, symbole de pureté et de prospérité. Les fidèles versent ensuite de l’eau sur les fleurs, symbolisant leur gratitude envers la nature pour ses dons abondants. Cette action d’offrande d’eau est censée purifier les fleurs et renforcer leur signification spirituelle.\nEnsuite, les fidèles offrent divers objets tels que des bâtonnets d’encens, des fleurs et des fruits à la déesse Gauri. Ils récitent des prières et des mantras, demandant ses bénédictions pour la santé, le bonheur et la prospérité. La cérémonie se termine par la distribution de prasadam (nourriture sacrée) parmi les participants, considérée comme une bénédiction de la déesse.\nConcours d’arrangements floraux En plus du Bathukamma Pooja, une autre tradition populaire durant Bathukamma est le concours d’arrangements floraux. Cet événement rassemble des artistes et des passionnés qui mettent en valeur leur créativité et leur talent dans l’arrangement de fleurs. Les participants sont jugés selon plusieurs critères tels que la complexité du design, l’utilisation de différentes variétés de fleurs et l’aspect esthétique global.\nCes concours ne servent pas seulement de plateforme pour les individus à exposer leurs talents artistiques, mais favorisent également une compétition saine et un esprit de camaraderie entre les participants. Ils rappellent l’importance de préserver les formes artistiques traditionnelles et de les transmettre aux générations futures.\nBathukamma est bien plus qu’une simple fête ; c’est une célébration vivante imprégnée de rituels et de traditions riches. La préparation du pot Bathukamma, le Bathukamma Pooja et les concours d’arrangements floraux sont tous des éléments essentiels de cette fête, qui ont une signification culturelle profonde. Ces pratiques ne servent pas seulement à préserver l’essence du patrimoine du Telangana, mais favorisent également un sentiment d’unité et de fierté parmi son peuple.\nL’expression artistique dans Bathukamma Bathukamma est une forme artistique qui met en lumière le riche patrimoine culturel du Telangana. Les arrangements floraux complexes, les décorations vibrantes et les performances musicales et chorégraphiques traditionnelles sont tous des éléments qui contribuent à l’expression artistique de cette fête. Dans cette section, nous explorerons ces aspects en détail.\nArrangements floraux complexes L’un des aspects les plus frappants de Bathukamma est l’élaboration des arrangements floraux qui ornent les pots de fleurs. Ces arrangements exigent une grande habileté et une créativité, car ils doivent être à la fois visuellement attrayants et symboliquement significatifs. Les fleurs utilisées dans ces arrangements sont choisies avec soin pour leurs couleurs, leurs formes et leurs parfums.\nLes artistes et les passionnés passent des heures à disposer les fleurs en motifs complexes, créant des dessins qui représentent divers aspects de la vie tels que la beauté, la prospérité et le bonheur. Le pot de fleurs lui-même est souvent décoré d’éléments supplémentaires comme des guirlandes, des clochettes et d’autres objets ornementaux pour renforcer son attrait visuel.\nDécorations vibrantes Les célébrations de Bathukamma ne sont pas complètes sans des décorations vibrantes qui ajoutent à l’atmosphère festive. Ces décorations incluent des bannières colorées, des drapeaux et des murales qui représentent des scènes de la mythologie hindoue et du patrimoine culturel du Telangana. L’utilisation de couleurs vives et de dessins complexes reflète l’amour de la région pour l’art et son appréciation de la beauté.\nEn plus de ces décorations permanentes, les gens créent également des arrangements temporaires à l’aide de fleurs, de feuilles et d’autres matériaux naturels. Ces décorations temporaires sont souvent utilisées lors de divers événements et cérémonies tout au long de la fête, ajoutant à l’ambiance festive générale.\nPerformances musicales et chorégraphiques traditionnelles La musique et la danse jouent un rôle crucial dans la célébration de Bathukamma. Les performances musicales traditionnelles mettent en scène des instruments tels que le violon, le flûte et les tambours, créant une mélodie envoûtante qui captive le public. Les chansons interprétées lors de ces performances sont souvent basées sur la mythologie hindoue et célèbrent la déesse Gauri.\nLes performances chorégraphiques sont tout aussi captivantes, avec des danseurs vêtus de costumes colorés et qui exécutent des danses traditionnelles du Telangana comme le Bogani Poojari et le Gollapudi. Ces danses ne mettent pas seulement en valeur le patrimoine culturel de la région, mais servent aussi à transmettre les formes chorégraphiques traditionnelles d’une génération à l’autre.\nBathukamma est une fête qui célèbre l’expression artistique du riche patrimoine culturel du Telangana. Les arrangements floraux complexes, les décorations vibrantes et les performances musicales et chorégraphiques traditionnelles sont tous des éléments qui contribuent au charme unique de cette fête. Ces expressions artistiques ne servent pas seulement à préserver l’identité culturelle de la région, mais favorisent également un sentiment de fierté et d’unité parmi son peuple.\nL’impact social de Bathukamma Bathukamma est bien plus qu’une simple fête colorée ; elle a un impact profond sur la tissu social du Telangana, favorisant la cohésion communautaire, promouvant l’égalité des sexes et encourageant les liens intergénérationnels. Cette célébration vibrante sert de catalyseur pour le changement social, réunissant des personnes de milieux divers pour partager une expérience culturelle commune.\nCohésion communautaire L’un des impacts sociaux les plus significatifs de Bathukamma est sa capacité à favoriser la cohésion communautaire. La fête rassemble des gens de différents quartiers, villages et même villes pour célébrer leur héritage partagé. Ce sentiment d’unité est particulièrement visible lors de la préparation et de la célébration des pots de fleurs, où les individus s’associent pour travailler ensemble, partager des ressources et s’entraider.\nL’aspect communautaire de Bathukamma s’étend également aux divers rituels et cérémonies liés à la fête. Les gens se rassemblent dans des lieux publics ou des temples pour participer à des cérémonies de prière, à des performances musicales et à des concours chorégraphiques, créant ainsi un sentiment d’appartenance et un but partagé. Cette expérience collective renforce les liens sociaux et promeut un sentiment de fierté communautaire.\nÉgalité des sexes Bathukamma a également joué un rôle crucial dans la promotion de l’égalité des sexes dans la région du Telangana. Traditionnellement, les femmes ont été au premier plan de l’organisation et de la célébration de cette fête, assumant des rôles importants tels que l’arrangement floral, la décoration et la cuisine. Cela a aidé à briser les rôles traditionnels et à renforcer le pouvoir des femmes dans leurs communautés.\nLa participation des femmes à la célébration de Bathukamma sert également de plateforme pour qu’elles puissent mettre en valeur leurs talents artistiques et leurs compétences en leadership. Cela non seulement renforce leur confiance en elles-mêmes, mais encourage également d’autres femmes à assumer des rôles actifs dans les événements communautaires et les initiatives sociales.\nLiens intergénérationnels Un autre impact social important de Bathukamma est sa capacité à favoriser les liens intergénérationnels. La fête offre une occasion unique aux enfants, adolescents, adultes et personnes âgées de se réunir et d’échanger leurs expériences et connaissances. Cette interaction intergénérationnelle aide à préserver les valeurs traditionnelles et les pratiques culturelles tout en favorisant un respect mutuel et une compréhension réciproque.\nLes enfants apprennent souvent l’importance de Bathukamma de leurs parents et grands-parents, qui transmettent des histoires et des traditions associées à la fête. À leur tour, ils vivent la joie et l’excitation de participer à ces célébrations, créant des souvenirs durables qui renforcent les liens familiaux.\nBathukamma a un impact social significatif sur la région du Telangana, favorisant la cohésion communautaire, promouvant l’égalité des sexes et encourageant les liens intergénérationnels. Cette fête vibrante sert d’outil puissant pour le changement social, réunissant les gens pour célébrer leur héritage commun et travailler vers une société plus inclusive et unie.\nL’impact économique de Bathukamma Bathukamma n’a pas seulement une importance culturelle, mais aussi un impact économique notable sur la région du Telangana. Cette fête vibrante crée de nombreuses opportunités pour les entreprises locales, les artisans et les agriculteurs, contribuant significativement à l’économie locale. Dans cette section, nous explorerons les diverses façons dont Bathukamma stimule la croissance économique.\nDéveloppement des entreprises locales Bathukamma génère une quantité significative de revenus pour les entreprises locales, en particulier celles impliquées dans la vente de fleurs, de décorations et d’autres fournitures pour la fête. À mesure que les gens préparent la fête, ils achètent des fleurs, des guirlandes et des articles décoratifs pour orner leurs maisons et espaces publics. Cette augmentation de la demande crée une opportunité lucrative pour les vendeurs locaux et les commerçants.\nLes vendeurs de fleurs, en particulier ceux spécialisés dans le souci (Genda) et le jasmin (Chittam), connaissent une augmentation de leurs ventes pendant la saison de la fête. La demande accrue pour les fleurs profite non seulement aux cultivateurs de fleurs, mais soutient également toute la chaîne d’approvisionnement, y compris les grossistes, les détaillants et les services de livraison. De plus, les entreprises qui vendent d’autres articles essentiels comme des bâtonnets d’encens, des clochettes et des bannières décoratives bénéficient également de l’intérêt accru des consommateurs.\nArts et métiers traditionnels Bathukamma offre également une plateforme aux artisans pour mettre en valeur leurs métiers traditionnels et leurs compétences. La création d’arrangements floraux complexes et d’objets décoratifs nécessite une grande dose de savoir-faire et de créativité. Les artisans locaux, y compris les fleuristes, les tisserands et les menuisiers, jouent un rôle crucial dans le succès de la fête en produisant des produits de haute qualité qui ajoutent à l’atmosphère festive.\nLes artisans créent souvent des décorations uniques et personnalisées pour les pots Bathukamma, très recherchées par les participants souhaitant faire ressortir leurs arrangements. La vente de ces produits artisanaux génère des revenus pour les artisans et aide à préserver les formes d’art traditionnelles et le patrimoine culturel.\nSecteur agricole Le secteur agricole bénéficie également de la fête de Bathukamma, car elle coïncide avec la saison des récoltes. Les agriculteurs vendent leurs produits, tels que les fruits, les légumes et les céréales, pendant la période de la fête, lorsque les gens sont plus enclins à acheter des produits frais et locaux. Cela aide non seulement les agriculteurs à obtenir un meilleur prix pour leurs récoltes, mais soutient également l’agriculture locale en favorisant la consommation de produits de saison.\nEn outre, la demande accrue pour les fleurs et autres éléments décoratifs pendant Bathukamma crée des opportunités de revenus supplémentaires pour les petits agriculteurs qui cultivent ces plantes. L’industrie florale du Telangana a considérablement grandi au fil des ans, avec de nombreux agriculteurs se spécialisant dans la culture du souci et du jasmin, les fleurs les plus populaires utilisées dans les arrangements de Bathukamma.\nBathukamma a un impact économique significatif sur la région du Telangana en stimulant les entreprises locales, en offrant des opportunités aux artisans et en soutenant le secteur agricole. Cette fête vibrante contribue non seulement à l’économie locale, mais favorise également le développement communautaire et la préservation culturelle. Alors que Bathukamma gagne en popularité, ses bénéfices économiques sont susceptibles de s’étendre, renforçant davantage la prospérité de la région.\nLa signification mondiale de Bathukamma La signification de Bathukamma dépasse les frontières du Telangana et de l’Inde, car elle a gagné une reconnaissance à l’échelle mondiale. Cette fête vibrante a attiré l’attention de personnes issues de cultures et de milieux divers, qui apprécient son riche patrimoine culturel et ses expressions artistiques uniques. Dans cette section, nous explorerons la signification mondiale de Bathukamma et son impact sur les relations internationales et l’échange culturel.\nÉchange culturel Bathukamma sert de pont à l’échange culturel entre l’Inde et d’autres pays, favorisant une compréhension mutuelle et une appréciation de leurs traditions respectives. La fête a été présentée lors de divers événements et festivals internationaux, permettant aux personnes de différentes régions du monde de découvrir la beauté et la profondeur de la culture indienne.\nPar exemple, Bathukamma a été mise en avant lors du Indian Festival of Arts and Culture (IFAC) organisé dans des pays comme les États-Unis, le Royaume-Uni et l’Australie. Ces événements offrent une plateforme aux artistes et aux interprètes indiens pour présenter leurs talents et partager leur héritage culturel avec des publics internationaux. À leur tour, ces interactions favorisent l’échange culturel et promeuvent un respect mutuel entre les nations.\nFestivals internationaux Bathukamma a également été incluse dans des festivals internationaux qui célèbrent la multiculturalité et la diversité. Par exemple, le World Festival of Sacred Music, organisé en Californie, a présenté des performances inspirées de la musique et de la danse indiennes, incluant des éléments des célébrations de Bathukamma. Ces événements rassemblent des artistes et des publics de diverses cultures, créant une expérience partagée qui met en lumière l’attrait universel des traditions culturelles.\nRelations diplomatiques La signification mondiale de Bathukamma a également contribué à renforcer les relations diplomatiques entre l’Inde et d’autres pays. La fête sert de symbole du riche patrimoine culturel de l’Inde et de son engagement à préserver les valeurs traditionnelles tout en embrassant la modernité. Cela a aidé à renforcer la bonne volonté et la coopération entre les nations, en particulier celles avec lesquelles l’Inde partage des liens culturels forts.\nPar exemple, l’ambassade indienne dans divers pays organise souvent des célébrations de Bathukamma lors de festivals ou d’événements spéciaux, invitant des dignitaires locaux et des membres de la communauté indienne à participer. Ces événements ne servent pas seulement à promouvoir l’échange culturel, mais aussi à offrir une plateforme pour des échanges diplomatiques et des dialogues entre nations.\nLa signification mondiale de Bathukamma s’étend au-delà de son rôle de fête traditionnelle au Telangana. Elle sert d’outil puissant pour l’échange culturel, les festivals internationaux et les relations diplomatiques, favorisant une compréhension mutuelle et une appréciation de cultures diverses. Alors que Bathukamma gagne en reconnaissance sur la scène mondiale, elle jouera certainement un rôle de plus en plus important dans la promotion de la diversité culturelle et de l’unité à travers le monde.\nBathukamma est appelé à continuer sa croissance et son évolution tout en s’adaptant aux temps qui changent. Cette fête vibrante a déjà eu un impact significatif à la fois au niveau local et mondial, et elle jouera certainement un rôle encore plus important dans la définition du patrimoine culturel et de la cohésion communautaire.\nPréservation des valeurs traditionnelles L’un des aspects clés de l’avenir de Bathukamma est la préservation de ses valeurs traditionnelles. Alors que la modernisation et la mondialisation continuent de remodeler les sociétés, il existe une préoccupation croissante concernant la perte de l’identité culturelle et des pratiques traditionnelles. Cependant, Bathukamma sert de puissant rappel de l’importance de préserver ces valeurs.\nPour assurer la préservation continue des traditions de Bathukamma, il est essentiel d’impliquer les jeunes générations dans la fête. Cela peut être réalisé grâce à des programmes éducatifs qui enseignent l’histoire, les rituels et l’importance de Bathukamma. En impliquant les jeunes dans la célébration et en les encourageant à apprendre des générations aînées, nous pouvons garantir que ces valeurs traditionnelles seront transmises aux générations futures.\nExpansion des échanges culturels Alors que Bathukamma gagne en reconnaissance sur la scène mondiale, il existe une opportunité d’élargir les initiatives d’échange culturel. Cette fête peut servir de plateforme pour une collaboration internationale, rassemblant des artistes, des interprètes et des amateurs de culture de milieux divers pour célébrer leur héritage commun.\nDes partenariats avec des festivals internationaux et des organisations culturelles peuvent aider à créer des opportunités d’échanges interculturels qui favorisent une compréhension mutuelle et une appréciation. Ces collaborations peuvent également contribuer à la croissance du tourisme au Telangana, attirant des visiteurs du monde entier désireux d’expérimenter cette fête unique en personne.\nEn préservant les valeurs traditionnelles, en adoptant les avancées technologiques et en élargissant les initiatives d’échange culturel, cette fête vibrante peut continuer à prospérer et à avoir un impact durable, tant au niveau local qu’au niveau mondial. En regardant vers l’avenir, il est essentiel de nourrir et de soutenir Bathukamma afin qu’elle puisse rester un élément essentiel du riche patrimoine culturel de l’Inde pour les générations à venir.\nBathukamma se tient comme un témoignage du riche patrimoine culturel et des traditions vibrantes du Telangana. Cette fête, avec ses arrangements floraux complexes, ses rituels sincères et ses célébrations joyeuses, est devenue une partie essentielle de l’identité de la région. Elle sert non seulement à célébrer la nature et la gratitude, mais aussi comme un puissant outil pour favoriser la cohésion communautaire, promouvoir l’égalité des sexes et encourager les liens intergénérationnels.\nIl est crucial de continuer à nourrir et à soutenir Bathukamma. En impliquant les jeunes générations, en adoptant les avancées technologiques et en favorisant les collaborations internationales, nous pouvons garantir que cette fête vibrante reste un élément essentiel du tissu culturel de l’Inde pour les générations à venir. Célébrons Bathukamma avec passion et fierté, honorons son riche passé tout en embrassant les opportunités qu’elle offre pour la croissance et l’innovation.\n","permalink":"https://www.shafiq.in/fr/blog/bathukamma/","summary":"\u003ch2 id=\"introduction-à-bathukamma\"\u003eIntroduction à Bathukamma\u003c/h2\u003e\n\u003cp\u003eBathukamma est une fête traditionnelle célébrée dans la région du Telangana en Inde, particulièrement à Hyderabad et dans ses environs. Ce festif vibrant et coloré revêt une importance culturelle immense et est profondément ancré dans l\u0026rsquo;histoire et les traditions du peuple telougou. Le mot \u0026ldquo;Bathukamma\u0026rdquo; signifie littéralement \u0026ldquo;le pot de fleurs\u0026rdquo; en langue telougou, symbole de la beauté et de la pureté de la nature.\u003c/p\u003e\n\u003ch3 id=\"arrière-plan-historique\"\u003eArrière-plan historique\u003c/h3\u003e\n\u003cp\u003eLes origines de Bathukamma remontent à l\u0026rsquo;antiquité, où elle était célébrée comme une fête des récoltes. Au fil des siècles, cette célébration s\u0026rsquo;est transformée en un grand événement culturel qui rassemble des personnes de tous horizons pour célébrer leur riche héritage et renforcer leur lien avec la nature. La fête est principalement associée à la déesse hindoue Gauri, censée bénir ses fidèles durant cette période.\u003c/p\u003e","title":"Bathukamma"},{"content":"Introduction to Maison Horta Maison Horta, a name synonymous with architectural innovation and artistic elegance, stands as a testament to the genius of Victor Horta, one of Belgium\u0026rsquo;s most influential architects of the late 19th and early 20th centuries. Born in Ghent on July 5, 1861, Horta emerged during a period of profound transformation in European architecture, marking the transition from the rigid Victorian styles to the more fluid and expressive Art Nouveau movement.\nArt Nouveau, which roughly translates to \u0026ldquo;new art,\u0026rdquo; was an international style that flourished between 1880 and 1910. It was characterized by its intricate, organic designs inspired by nature, a break from the traditional symmetries and straight lines of previous architectural styles. Horta\u0026rsquo;s work epitomized this movement, as he skillfully integrated flowing lines, curved forms, and rich materials into his designs.\nMaison Horta, often referred to simply as \u0026ldquo;Horta House,\u0026rdquo; is one of the most iconic examples of Art Nouveau architecture in Belgium. Located at 50 Rue des Alexiens in Brussels, this remarkable building was completed in 1893 and serves as a prime example of Horta\u0026rsquo;s innovative approach to design. The house not only showcases his architectural prowess but also reflects his deep appreciation for the natural world and the human form.\nThe significance of Maison Horta extends beyond its aesthetic appeal; it represents a pivotal moment in the history of modern architecture. By breaking away from traditional forms and embracing new artistic expressions, Horta paved the way for future generations of architects to explore and expand the boundaries of design. Today, Maison Horta stands as an enduring symbol of creativity and innovation, inviting visitors to experience firsthand the visionary ideas that shaped a groundbreaking era in architectural history.\nThe Life and Career of Victor Horta Victor Horta\u0026rsquo;s journey from a modest upbringing to becoming one of Belgium\u0026rsquo;s most celebrated architects is a story filled with passion, perseverance, and artistic brilliance. Born into a middle-class family in Ghent on July 5, 1861, Horta was exposed to the world of art and architecture from an early age. His father, Charles Horta, was a successful architect who worked primarily in the Neo-Gothic style, while his mother, Caroline De Wulf, came from a wealthy family with strong ties to the arts.\nAs a young boy, Victor often accompanied his father on architectural projects, which sparked his interest in design and construction. He attended the Ghent Academy of Fine Arts, where he studied under some of the most influential artists of his time, including Jean Delvin and Charles Verlat. It was during this period that Horta began to develop his unique artistic style, blending Neo-Gothic elements with more modern influences.\nHorta\u0026rsquo;s professional career took off in 1881 when he opened his own architectural practice in Brussels. His early works were primarily influenced by the Neo-Gothic style, but as he continued to explore new artistic expressions, he gradually moved towards the Art Nouveau movement. One of his earliest significant projects was the Hôtel Tassel (1882-1885), a building that would later become the headquarters of the Belgian Academy in Rome.\nHorta\u0026rsquo;s breakthrough project came with the completion of Maison Horta in 1893. This house, located at 50 Rue des Alexiens in Brussels, is considered one of the finest examples of Art Nouveau architecture and showcases Horta\u0026rsquo;s mastery of organic forms and flowing lines. The design of Maison Horta was heavily influenced by nature, with elements such as vines, leaves, and flowers seamlessly integrated into the structure.\nThroughout his career, Horta continued to push the boundaries of architectural design. He was known for his innovative use of materials and techniques, often combining steel and glass in ways that were revolutionary at the time. His work also reflected a deep appreciation for the human form, as seen in the intricate ironwork and decorative elements that adorned many of his buildings.\nHorta\u0026rsquo;s most notable projects include the Hôtel van Eetvelde (1892-1895), which is considered one of the purest examples of Art Nouveau architecture, and the Tivoli Theatre (1907-1910), a stunning example of his later work that blends Art Nouveau with other architectural styles. Despite facing criticism from traditionalists, Horta\u0026rsquo;s innovative approach to design earned him numerous accolades and international recognition.\nVictor Horta passed away on September 8, 1947, in Brussels at the age of 86. His legacy as a pioneering architect endures through his remarkable body of work, which continues to inspire architects and designers around the world. Through his bold experimentation and unwavering commitment to artistic expression, Horta left an indelible mark on the history of modern architecture.\nThe Design Philosophy of Maison Horta Maison Horta is a masterpiece that embodies Victor Horta\u0026rsquo;s profound design philosophy, which was deeply rooted in the principles of Art Nouveau. At its core, this architectural style sought to break away from traditional forms and embrace a more organic, naturalistic approach to design. Horta\u0026rsquo;s work at Maison Horta exemplifies these principles through several key aspects: the use of flowing lines, the integration of nature into the structure, and the innovative use of materials.\nOne of the most striking features of Maison Horta is its use of flowing lines. These sinuous forms are evident in both the exterior and interior design of the building. The façade of the house is adorned with intricate ironwork that mimics the curves of a plant\u0026rsquo;s vines or the sinuous branches of a tree. This organic motif extends into the interior, where the staircase is an elegant example of Horta\u0026rsquo;s use of curved lines. The spiral staircase, made from cast iron and glass, winds gracefully upwards, creating a sense of movement and fluidity that is characteristic of Art Nouveau.\nThe integration of nature into the design of Maison Horta is another hallmark of Horta\u0026rsquo;s philosophy. This can be seen in the extensive use of natural motifs throughout the building. For example, the ironwork on the balcony railings resembles leaves and branches, while the stained glass windows depict floral patterns. These elements not only enhance the aesthetic appeal of the house but also create a sense of harmony with the surrounding environment.\nHorta\u0026rsquo;s innovative use of materials is another key aspect of his design philosophy at Maison Horta. He was one of the first architects to experiment with new building techniques and materials, such as steel and glass. These materials allowed him to create structures that were both lightweight and visually striking. For instance, the façade of Maison Horta features large windows made of stained glass, which not only let in natural light but also add a vibrant, colorful element to the design.\nIn addition to these materials, Horta was known for his use of ironwork, which he employed in both structural and decorative capacities. The iron columns that support the roof of Maison Horta are an example of this, as they not only provide stability but also serve as a striking visual feature. The intricate patterns of the ironwork are reminiscent of natural forms, such as leaves and flowers, further emphasizing Horta\u0026rsquo;s connection to nature.\nAnother notable aspect of Horta\u0026rsquo;s design philosophy at Maison Horta is his attention to detail. Every element of the building, from the smallest decorative piece to the overall structure, has been carefully considered and crafted to create a cohesive and harmonious design. This level of craftsmanship is evident in the intricate ironwork, the stained glass windows, and even the furniture within the house.\nMaison Horta is a testament to Victor Horta\u0026rsquo;s design philosophy, which was characterized by an embrace of organic forms, a deep connection to nature, and innovative use of materials. Through his masterful integration of these elements, Horta created a building that not only stands as a landmark of Art Nouveau architecture but also serves as a lasting tribute to his visionary approach to design.\nThe Exterior Design of Maison Horta The exterior design of Maison Horta is a captivating blend of organic forms and intricate details, showcasing Victor Horta\u0026rsquo;s masterful use of materials and architectural techniques. As one approaches the building from the street, the first thing that catches the eye is the façade, which is adorned with elaborate ironwork that mimics the curves of plants and vines. This ironwork not only serves as a decorative element but also plays a structural role in supporting the building\u0026rsquo;s roof.\nThe main entrance to Maison Horta is framed by two large, arched windows flanked by intricate iron grilles. These grilles are crafted with such precision that they resemble delicate leaves or branches, further emphasizing Horta\u0026rsquo;s connection to nature. The door itself is made of dark wood and features a decorative pediment above it, which is adorned with a relief sculpture depicting a floral motif.\nAbove the entrance, the façade continues with a series of large, arched windows that extend across the building\u0026rsquo;s upper level. These windows are framed by iron mullions that follow the natural curves of the arches, creating a seamless transition between the structure and the surrounding environment. The use of stained glass in these windows adds a vibrant, colorful element to the façade, allowing natural light to filter through in a beautiful, diffused pattern.\nOne of the most striking features of Maison Horta\u0026rsquo;s exterior is its roofline, which is supported by a series of iron columns that extend from the ground up to the top of the building. These columns are not only functional but also serve as an opportunity for Horta to showcase his artistic flair. The surfaces of these columns are adorned with intricate ironwork that resembles foliage and flowers, creating a sense of movement and vitality.\nThe balcony railings on the upper level are another example of Horta\u0026rsquo;s innovative use of materials and design principles. These railings are made of cast iron and feature delicate, curved patterns that mimic the branches of a tree or the tendrils of a vine. This organic motif is continued in the balustrade, which features small, decorative finials shaped like leaves.\nThe exterior walls of Maison Horta are constructed using a combination of brick and stone, with the stone used primarily around the windows and entrance. This careful selection of materials not only adds to the building\u0026rsquo;s visual appeal but also contributes to its structural integrity. The overall effect is one of harmony and balance, as the various elements work together to create a cohesive design.\nIn addition to these architectural features, Maison Horta\u0026rsquo;s exterior is complemented by a series of garden spaces that extend from the rear of the building. These gardens are designed with the same attention to detail and naturalistic motifs as the house itself, featuring plants, flowers, and pathways that flow seamlessly into the surrounding landscape.\nOverall, the exterior design of Maison Horta is a testament to Victor Horta\u0026rsquo;s genius as an architect. Through his innovative use of materials, organic forms, and meticulous attention to detail, he created a building that not only stands as a landmark of Art Nouveau architecture but also serves as a lasting tribute to his visionary approach to design.\nThe Interior Design of Maison Horta The interior design of Maison Horta is as captivating as its exterior, with each room meticulously crafted to showcase Victor Horta\u0026rsquo;s innovative style and attention to detail. As visitors step inside the house, they are immediately struck by the use of flowing lines and natural motifs that continue from the façade into the interior spaces. The main entrance leads into a spacious hallway, which serves as a transition between the public and private areas of the house.\nOne of the most striking features of the interior is the grand staircase, which stands as a central element in the hallway. This spiral staircase is made of cast iron and glass, with each step adorned with intricate ironwork that resembles leaves and vines. The glass balustrade allows natural light to filter through, creating a sense of transparency and openness. The staircase not only serves a functional purpose but also acts as a dramatic centerpiece that draws the eye upwards.\nThe living room is another highlight of Maison Horta\u0026rsquo;s interior design. This room is characterized by its large windows, which are framed by iron mullions that follow the natural curves of the arches. These windows allow abundant natural light to flood the space, creating a bright and airy atmosphere. The walls are adorned with decorative panels made of wood and glass, featuring intricate patterns inspired by nature.\nThe living room also features a fireplace, which is an elegant example of Horta\u0026rsquo;s use of materials. The hearth is made of marble, while the surround is crafted from iron, showcasing the organic motifs that are a hallmark of his design style. Above the fireplace, a decorative cornice runs along the ceiling, continuing the theme of natural forms with intricate carvings that resemble leaves and flowers.\nThe dining room in Maison Horta is another space that showcases Horta\u0026rsquo;s attention to detail. The walls are adorned with decorative panels made of wood and glass, similar to those in the living room. The furniture is designed with a sense of fluidity and elegance, featuring curved lines and organic forms that complement the overall design of the house. The dining table is set against one wall, flanked by chairs that have been crafted to match the style of the room.\nThe kitchen in Maison Horta is a functional yet stylish space, designed with practicality in mind while still adhering to Horta\u0026rsquo;s artistic principles. The walls are finished with decorative tiles featuring floral motifs, and the cabinets are made of dark wood with intricate ironwork details. The kitchen island is an elegant piece of furniture that serves as both a countertop and a seating area, further emphasizing Horta\u0026rsquo;s ability to blend functionality with aesthetic appeal.\nThe bedrooms in Maison Horta are designed with a sense of tranquility and privacy. Each room features large windows that provide natural light and views of the surrounding garden. The walls are adorned with decorative panels and wallpaper, featuring delicate patterns inspired by nature. The furniture is simple yet elegant, with beds that have been crafted to match the overall style of the house.\nOne of the most unique aspects of Maison Horta\u0026rsquo;s interior design is the use of stained glass windows throughout the house. These windows not only add a vibrant, colorful element to the spaces but also serve as a means of filtering natural light. The patterns in the stained glass often depict floral and botanical motifs, further emphasizing Horta\u0026rsquo;s connection to nature.\nThe interior design of Maison Horta is a testament to Victor Horta\u0026rsquo;s genius as an architect. Through his innovative use of materials, organic forms, and meticulous attention to detail, he created a space that is both functional and visually stunning. Each room in the house showcases his unique style, blending functionality with artistic expression to create a truly remarkable living environment.\nThe Impact of Maison Horta on Art Nouveau Architecture Maison Horta stands as a monumental landmark in the history of Art Nouveau architecture, exerting a profound influence on both contemporary and subsequent architectural movements. Victor Horta\u0026rsquo;s innovative approach to design not only defined the essence of Art Nouveau but also laid the groundwork for future architectural developments.\nOne of the most significant impacts of Maison Horta is its role as a pioneering example of the Art Nouveau style. The building\u0026rsquo;s use of flowing lines, organic forms, and intricate ironwork set a new standard for architectural expression during the late 19th century. By breaking away from the rigid symmetries and straight lines of previous styles, Horta created a more dynamic and expressive form of architecture that celebrated natural elements and human emotions.\nMaison Horta\u0026rsquo;s influence extended beyond Belgium, inspiring architects across Europe to embrace the principles of Art Nouveau in their own designs. The style quickly gained popularity, leading to the construction of numerous buildings characterized by similar aesthetic features. Cities like Paris, Budapest, and Barcelona saw the rise of iconic Art Nouveau structures that drew inspiration from Horta\u0026rsquo;s work.\nHorta\u0026rsquo;s innovative use of materials also had a lasting impact on architectural design. His integration of steel and glass in structural elements was revolutionary at the time, paving the way for future architects to explore new building techniques and materials. This emphasis on functionality and aesthetic appeal became a defining characteristic of modern architecture, influencing the development of styles such as Art Deco and Brutalism.\nMoreover, Maison Horta\u0026rsquo;s focus on integrating nature into architectural design set a precedent for future generations of architects. The seamless blend of natural motifs with structural elements not only enhanced the visual appeal of buildings but also created spaces that felt harmonious with their surroundings. This approach to design has continued to inspire architects who seek to create sustainable and environmentally friendly structures.\nIn addition to its influence on architectural styles, Maison Horta has had a significant impact on the preservation of Art Nouveau architecture. The building\u0026rsquo;s status as a historic landmark has ensured its protection and restoration over the years, allowing future generations to appreciate its beauty and significance. This attention to preservation has helped to safeguard other Art Nouveau buildings around the world, ensuring that this important architectural movement is preserved for posterity.\nMaison Horta\u0026rsquo;s impact on Art Nouveau architecture cannot be overstated. As a pioneering example of the style, it set new standards for architectural expression and inspired countless architects across Europe. Its innovative use of materials and integration of natural elements have left a lasting legacy that continues to influence contemporary design. By preserving this remarkable building, we not only celebrate Victor Horta\u0026rsquo;s genius but also honour the enduring significance of Art Nouveau in the history of architecture.\nThe Preservation and Restoration Efforts of Maison Horta Maison Horta has been a focal point for preservation and restoration efforts since its completion in 1893. Recognizing the architectural and historical importance of this landmark, Belgian authorities have undertaken numerous initiatives to ensure its protection and continued accessibility for future generations.\nOne of the primary goals of these preservation efforts is to maintain the building\u0026rsquo;s original design and materials. This involves regular maintenance of the ironwork, stained glass windows, and other intricate decorative elements that are characteristic of Art Nouveau architecture. The ironwork on the façade and balcony railings, in particular, requires careful attention due to its susceptibility to corrosion over time. Restoration projects have focused on cleaning and repairing these elements, ensuring they remain in pristine condition.\nThe restoration efforts also extend to the interior spaces of Maison Horta. This includes the meticulous repair of decorative panels, wallpaper, and furniture that were originally designed by Victor Horta. The stained glass windows within the house are particularly delicate and require specialized care to prevent damage from UV radiation and other environmental factors. Restoration projects have involved cleaning and repairing these windows, as well as replacing any damaged or missing pieces.\nIn addition to maintaining the building\u0026rsquo;s physical integrity, preservation efforts also aim to ensure that Maison Horta remains accessible to the public. This involves regular maintenance of the facilities, including the lighting, heating, and ventilation systems, to provide a comfortable environment for visitors. Accessibility improvements have been made to accommodate people with disabilities, ensuring that everyone can experience the beauty and significance of this architectural masterpiece.\nOne notable restoration project was completed in 2013, which involved the comprehensive cleaning and repair of the façade and roof. This project not only addressed immediate structural issues but also ensured the long-term stability of the building. The use of advanced materials and techniques in this restoration helped to preserve the original aesthetic while addressing contemporary concerns related to durability and sustainability.\nAnother important aspect of preservation efforts is the ongoing research and documentation of Maison Horta. Scholars and historians have conducted extensive studies on the building, its design, and the life of Victor Horta. This research has contributed to a deeper understanding of the architectural style and its significance in the context of European art and architecture. The findings from these studies are often shared through exhibitions, publications, and educational programs, helping to raise awareness about Maison Horta\u0026rsquo;s importance.\nThe preservation and restoration efforts of Maison Horta reflect a commitment to protecting this architectural landmark for future generations. Through careful maintenance, accessibility improvements, and ongoing research, Belgian authorities have ensured that this remarkable building remains a testament to Victor Horta\u0026rsquo;s genius and the enduring legacy of Art Nouveau architecture.\nThe Legacy of Maison Horta Maison Horta stands as an enduring symbol of architectural innovation and artistic elegance, leaving an indelible mark on the history of modern architecture. Its significance extends beyond its role as a landmark of Art Nouveau; it serves as a testament to Victor Horta\u0026rsquo;s visionary approach to design and his ability to blend functionality with aesthetic appeal.\nOne of the most significant contributions of Maison Horta is its influence on subsequent architectural styles and movements. The innovative use of materials, organic forms, and natural motifs that characterize this building have inspired countless architects and designers around the world. The integration of steel and glass in structural elements, a hallmark of Horta\u0026rsquo;s work, has become a defining feature of modern architecture. This emphasis on functionality and aesthetic appeal has influenced styles such as Art Deco and Brutalism, demonstrating the lasting impact of Horta\u0026rsquo;s design philosophy.\nMoreover, Maison Horta\u0026rsquo;s focus on integrating nature into architectural design has had a profound influence on contemporary approaches to sustainability in architecture. The seamless blend of natural elements with structural forms not only enhances the visual appeal of buildings but also creates spaces that are harmonious with their surroundings. This approach to design has become increasingly relevant as architects and designers seek to create environmentally friendly structures that minimize their impact on the environment.\nIn addition to its influence on architectural styles, Maison Horta has played a crucial role in the preservation of Art Nouveau architecture. Its status as a historic landmark has ensured its protection and restoration over the years, allowing future generations to appreciate its beauty and significance. This attention to preservation has also helped to safeguard other Art Nouveau buildings around the world, ensuring that this important architectural movement is preserved for posterity.\nThe legacy of Maison Horta is also reflected in its ongoing impact on architecture and design education. The building serves as a living example of Art Nouveau principles, providing students and scholars with a tangible understanding of the style\u0026rsquo;s characteristics and innovations. This hands-on experience not only deepens their appreciation of architectural history but also inspires them to explore new approaches to design.\nMaison Horta\u0026rsquo;s legacy is a testament to Victor Horta\u0026rsquo;s genius as an architect and his enduring influence on modern architecture. Through its innovative design principles, emphasis on sustainability, and role in preserving Art Nouveau architecture, it continues to inspire architects and designers around the world. As a landmark of architectural history, Maison Horta stands as a lasting tribute to the visionary ideas that shaped a groundbreaking era in design.\nMaison Horta is more than just an architectural marvel; it is a testament to Victor Horta\u0026rsquo;s innovative spirit and his ability to blend functionality with aesthetic appeal. Through his masterful use of organic forms, natural motifs, and innovative materials, Horta created a building that not only defines the essence of Art Nouveau but also sets a precedent for future architectural developments.\nThe significance of Maison Horta extends beyond its role as an iconic example of Art Nouveau architecture. It has inspired countless architects and designers, influencing styles such as Art Deco and Brutalism, and promoting a sustainable approach to design that continues to resonate today. The building\u0026rsquo;s status as a historic landmark ensures its protection and accessibility for future generations, allowing them to appreciate the genius of Victor Horta and the enduring legacy of Art Nouveau.\nMaison Horta stands as an enduring symbol of architectural innovation and artistic elegance. Its influence on modern architecture and design is undeniable, and its role in preserving the history of Art Nouveau is invaluable. As we continue to explore new approaches to design, Maison Horta remains a source of inspiration and a lasting tribute to Victor Horta\u0026rsquo;s visionary ideas.\n","permalink":"https://www.shafiq.in/fr/blog/maison-horta/","summary":"\u003ch2 id=\"introduction-to-maison-horta\"\u003eIntroduction to Maison Horta\u003c/h2\u003e\n\u003cp\u003eMaison Horta, a name synonymous with architectural innovation and artistic elegance, stands as a testament to the genius of Victor Horta, one of Belgium\u0026rsquo;s most influential architects of the late 19th and early 20th centuries. Born in Ghent on July 5, 1861, Horta emerged during a period of profound transformation in European architecture, marking the transition from the rigid Victorian styles to the more fluid and expressive Art Nouveau movement.\u003c/p\u003e","title":"Maison Horta"},{"content":"Aperçu\nCadre PARA (Projets, Zones, Ressources, Archives) Le PKM (Gestion personnelle des connaissances) finit tôt ou tard par devenir un livre Cadre CODE : Capturer, Organiser, Distiller, Exprimer Concepts clés\nOrganiser selon des projets actionnables Distiller l\u0026rsquo;information pour la partager avec autrui Exprimer des idées afin de créer quelque chose de nouveau, plutôt que de simplement consommer Utiliser le dossier Obsidian pour « À lire plus tard » ou « Inbox » Capturer des mémos vocaux via des applications de transcription Les projets comportent des vérifications pour finalisation Modèle Hollywood pour la gestion de projet Suggestions de Zones PARA\nCatégories de tableau de vision : Carrière Relations Santé Croissance personnelle Voyages Loisirs Aspects importants de la vie : Stabilité financière Bien-être mental Santé physique Connexions sociales Archives\nProjets terminés Informations non pertinentes Projets abandonnés Guide concis sur le PKM\nUtiliser les tableaux de vision pour la gestion de livraison Intégrer des concepts DevOps de GitLab Organisation basée sur les balises Idée de service\nCréer des tableaux de vision personnalisés à partir d’un simple formulaire d’abonnement à une newsletter PDF généré à l’aide de Pandoc Points du livre\nOù vous voyez-vous dans 5 à 10 ans ? (Question d’entretien) Utiliser les tableaux de vision pour atteindre des objectifs à long terme Prendre soin de son soi futur en se préparer aux défis Utiliser les tableaux de vision pour surmonter la dépendance aux réseaux sociaux Garder les prochaines étapes à l’esprit Checklists de tâches pour chaque tableau de vision Revues hebdomadaires et mensuelles des objectifs Boucle de retour pour les mises à jour Objectifs SMART Jatte/de tableau de gratitude Célébrer les succès Reprioriser les objectifs rétrospectivement ","permalink":"https://www.shafiq.in/fr/blog/notes-on-second-brain/","summary":"\u003cp\u003e\u003cstrong\u003eAperçu\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCadre PARA (Projets, Zones, Ressources, Archives)\u003c/li\u003e\n\u003cli\u003eLe PKM (Gestion personnelle des connaissances) finit tôt ou tard par devenir un livre\u003c/li\u003e\n\u003cli\u003eCadre CODE : Capturer, Organiser, Distiller, Exprimer\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eConcepts clés\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOrganiser selon des projets actionnables\u003c/li\u003e\n\u003cli\u003eDistiller l\u0026rsquo;information pour la partager avec autrui\u003c/li\u003e\n\u003cli\u003eExprimer des idées afin de créer quelque chose de nouveau, plutôt que de simplement consommer\u003c/li\u003e\n\u003cli\u003eUtiliser le dossier Obsidian pour « À lire plus tard » ou « Inbox »\u003c/li\u003e\n\u003cli\u003eCapturer des mémos vocaux via des applications de transcription\u003c/li\u003e\n\u003cli\u003eLes projets comportent des vérifications pour finalisation\u003c/li\u003e\n\u003cli\u003eModèle Hollywood pour la gestion de projet\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eSuggestions de Zones PARA\u003c/strong\u003e\u003c/p\u003e","title":"Notes on Second Brain"},{"content":" ","permalink":"https://www.shafiq.in/fr/blog/colouring-book-pictures-for-toddlers/","summary":"\u003cp\u003e\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2024/colouring-book-toddler/fish_hu_889d6ed0fcba6abd.webp\" alt=\"Photo d\u0026#39;un dessin de poisson heureux nageant dans un étang avec quelques nénuphars. Les traits sont épais et distincts, ce qui le rend facile à colorier pour les tout-petits\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2024/colouring-book-toddler/duckling_hu_ca6561307cfd68b4.webp\" alt=\"Photo d\u0026#39;un dessin de caneton joyeux qui fait des éclaboussures dans une flaque, entouré de gouttes de pluie. Les contours épais sont parfaits pour les jeunes enfants\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2024/colouring-book-toddler/lion_hu_cdbb9027b0dbab3.webp\" alt=\"Photo d\u0026#39;un dessin de lion joyeux avec une crinière fluffy, assis sur une plaine herbeuse entourée de quelques fleurs. Les traits épais et forts sont parfaits\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2024/colouring-book-toddler/elephant_hu_69e21c81b7a36e35.webp\" alt=\"Photo d\u0026#39;une illustration de dessin animé d\u0026#39;un éléphant joyeux qui arrose l\u0026#39;eau avec son trompe, entouré d\u0026#39;oiseaux. Le dessin possède des traits épais adaptés aux jeunes\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2024/colouring-book-toddler/teddy-bear_hu_1a5c213aa00aa57.webp\" alt=\"Photo d\u0026#39;une illustration de dessin animé d\u0026#39;un doudou mignon tenant un ballon, debout dans un champ herbeux. Le dessin possède des contours épais adaptés aux jeunes\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2024/colouring-book-toddler/kitten_hu_1fccf7c20b08f8ef.webp\" alt=\"Photo d\u0026#39;un dessin joueur de chaton poursuivant un papillon dans un jardin, entouré de fleurs. Les traits sont clairs et larges, idéaux pour les tout-petits qui veulent ajouter\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2024/colouring-book-toddler/giraffe_hu_26a1a704acacdfaa.webp\" alt=\"Photo d\u0026#39;un dessin simple de girafe mangeant des feuilles d\u0026#39;arbre, avec un ciel bleu en arrière-plan. Les contours clairs et épais le rendent idéal\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2024/colouring-book-toddler/sun-cloud-tree_hu_22304c1ed1a8cf6e.webp\" alt=\"Photo d\u0026#39;une illustration simple de dessin animé d\u0026#39;un soleil souriant dans le ciel, un nuage moelleux et un arbre aux feuilles arrondies. Les contours sont épais et clairs\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2024/colouring-book-toddler/bunny_hu_8d89f323aab523aa.webp\" alt=\"Photo d\u0026#39;une illustration simple de dessin animé d\u0026#39;un lapin joyeux mangeant une carotte, assis dans un pré fleuri. Les traits épais et nets le rendent adapté\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2024/colouring-book-toddler/puppy_hu_7a125a982a521ade.webp\" alt=\"Photo d\u0026#39;une illustration simple de dessin animé d\u0026#39;un chiot joueur poursuivant sa queue dans un jardin arrière, avec une clôture et un arbre en arrière-plan. Les traits sont clairs\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\u003c/p\u003e","title":"Colouring book pictures for toddlers"},{"content":" Rightmove Zoopla Auction House UK Savills Auctions Allsop Pugh Auctions SDL Auctions Lambert Smith Hampton Barnard Marcus Clive Emson iamsold BidX1 Essential Information Group John Pye Property Network Auctions Harman Healy Strettons Landwood Property Auctions Acuitus McHugh \u0026amp; Co Bond Wolfe Auctions Andrews \u0026amp; Robertson Bagshaws Residential Romans William H Brown Cheffins Phillip Arnold Auctions Cottons Countrywide Property Auctions Dedman Grey Drivers \u0026amp; Norris Graham Penny Auctions Jones Lang LaSalle Knight Frank Maggs \u0026amp; Allen Martel Maides Auctions Parsons Son \u0026amp; Basley Paul Fosh Auctions Roger Hannah \u0026amp; Co Sutton Kersh Auctions Symonds \u0026amp; Sampson Walker Singleton Webbers Wilsons Auctions Clough \u0026amp; Co Cumbrian Properties Future Property Auctions Nock Deighton Osborne King Scargill Mann \u0026amp; Co ","permalink":"https://www.shafiq.in/fr/blog/list-of-some-real-estate-properties-related-companies-in-the-uk/","summary":"\u003col\u003e\n\u003cli\u003eRightmove\u003c/li\u003e\n\u003cli\u003eZoopla\u003c/li\u003e\n\u003cli\u003eAuction House UK\u003c/li\u003e\n\u003cli\u003eSavills Auctions\u003c/li\u003e\n\u003cli\u003eAllsop\u003c/li\u003e\n\u003cli\u003ePugh Auctions\u003c/li\u003e\n\u003cli\u003eSDL Auctions\u003c/li\u003e\n\u003cli\u003eLambert Smith Hampton\u003c/li\u003e\n\u003cli\u003eBarnard Marcus\u003c/li\u003e\n\u003cli\u003eClive Emson\u003c/li\u003e\n\u003cli\u003eiamsold\u003c/li\u003e\n\u003cli\u003eBidX1\u003c/li\u003e\n\u003cli\u003eEssential Information Group\u003c/li\u003e\n\u003cli\u003eJohn Pye Property\u003c/li\u003e\n\u003cli\u003eNetwork Auctions\u003c/li\u003e\n\u003cli\u003eHarman Healy\u003c/li\u003e\n\u003cli\u003eStrettons\u003c/li\u003e\n\u003cli\u003eLandwood Property Auctions\u003c/li\u003e\n\u003cli\u003eAcuitus\u003c/li\u003e\n\u003cli\u003eMcHugh \u0026amp; Co\u003c/li\u003e\n\u003cli\u003eBond Wolfe Auctions\u003c/li\u003e\n\u003cli\u003eAndrews \u0026amp; Robertson\u003c/li\u003e\n\u003cli\u003eBagshaws Residential\u003c/li\u003e\n\u003cli\u003eRomans\u003c/li\u003e\n\u003cli\u003eWilliam H Brown\u003c/li\u003e\n\u003cli\u003eCheffins\u003c/li\u003e\n\u003cli\u003ePhillip Arnold Auctions\u003c/li\u003e\n\u003cli\u003eCottons\u003c/li\u003e\n\u003cli\u003eCountrywide Property Auctions\u003c/li\u003e\n\u003cli\u003eDedman Grey\u003c/li\u003e\n\u003cli\u003eDrivers \u0026amp; Norris\u003c/li\u003e\n\u003cli\u003eGraham Penny Auctions\u003c/li\u003e\n\u003cli\u003eJones Lang LaSalle\u003c/li\u003e\n\u003cli\u003eKnight Frank\u003c/li\u003e\n\u003cli\u003eMaggs \u0026amp; Allen\u003c/li\u003e\n\u003cli\u003eMartel Maides Auctions\u003c/li\u003e\n\u003cli\u003eParsons Son \u0026amp; Basley\u003c/li\u003e\n\u003cli\u003ePaul Fosh Auctions\u003c/li\u003e\n\u003cli\u003eRoger Hannah \u0026amp; Co\u003c/li\u003e\n\u003cli\u003eSutton Kersh Auctions\u003c/li\u003e\n\u003cli\u003eSymonds \u0026amp; Sampson\u003c/li\u003e\n\u003cli\u003eWalker Singleton\u003c/li\u003e\n\u003cli\u003eWebbers\u003c/li\u003e\n\u003cli\u003eWilsons Auctions\u003c/li\u003e\n\u003cli\u003eClough \u0026amp; Co\u003c/li\u003e\n\u003cli\u003eCumbrian Properties\u003c/li\u003e\n\u003cli\u003eFuture Property Auctions\u003c/li\u003e\n\u003cli\u003eNock Deighton\u003c/li\u003e\n\u003cli\u003eOsborne King\u003c/li\u003e\n\u003cli\u003eScargill Mann \u0026amp; Co\u003c/li\u003e\n\u003c/ol\u003e","title":"List of some real estate properties related companies in the UK"},{"content":"BATNA signifie « Meilleure Alternative à un Accord Négocié ». Il s\u0026rsquo;agit d\u0026rsquo;un concept de la théorie de la négociation qui représente l\u0026rsquo;option la plus avantageuse qu\u0026rsquo;une partie peut choisir si les négociations échouent et qu\u0026rsquo;un accord ne peut être conclu. Comprendre votre BATNA est essentiel, car cela vous fournit une base de référence pour évaluer tout accord proposé. Voici un guide étape par étape pour déterminer votre BATNA :\nIdentifiez vos options : Commencez par établir la liste de toutes les alternatives possibles que vous pouvez poursuivre si les négociations actuelles ne mènent pas à un accord. Pensez largement et de manière créative à toutes les options disponibles.\nÉvaluez chaque alternative : Pour chaque alternative sur votre liste, évaluez sa faisabilité et les résultats qu\u0026rsquo;elle pourrait entraîner. Tenez compte des avantages et inconvénients, des ressources nécessaires et de la probabilité de succès.\nEstimez la valeur de chaque alternative : Attribuez une valeur à chaque alternative. Cette valeur peut être monétaire ou basée sur d\u0026rsquo;autres facteurs tels que le temps, l\u0026rsquo;effort, le coût d\u0026rsquo;opportunité ou la satisfaction personnelle.\nComparez les alternatives : Comparez ces alternatives entre elles. Cette étape permet de comprendre laquelle est préférable et pourquoi. Il peut être utile de les classer par ordre de préférence ou de désirabilité.\nDéterminez votre BATNA : Votre BATNA est l\u0026rsquo;option la meilleure de cette liste. C\u0026rsquo;est l\u0026rsquo;alternative que vous choisiriez si les négociations actuelles échouaient. Rappelez-vous que votre BATNA ne concerne pas ce que vous espérez obtenir, mais ce que vous feriez réellement si les négociations échouaient.\nGardez votre BATNA confidentiel : En général, il est préférable de ne pas révéler votre BATNA lors d\u0026rsquo;une négociation. Connaître votre position de repli pourrait affaiblir votre position négociatrice.\nRéfléchissez à la BATNA de l\u0026rsquo;autre partie : Si possible, essayez de comprendre la BATNA de l\u0026rsquo;autre partie. Cela peut fournir des informations précieuses sur leurs motivations et leurs contraintes, ce qui peut être utile pendant les négociations.\nSoyez prêt à partir : Si l\u0026rsquo;offre sur la table est pire que votre BATNA, soyez prêt à quitter les négociations. Cela peut être une position puissante, car cela montre que vous n\u0026rsquo;êtes pas dépendant de conclure un accord.\nRéexaminez et adaptez : Les situations peuvent évoluer, il est donc important de revoir périodiquement votre BATNA. De nouvelles informations ou des changements dans les circonstances pourraient entraîner une évaluation différente.\n","permalink":"https://www.shafiq.in/fr/blog/understanding-your-batna/","summary":"\u003cp\u003eBATNA signifie « Meilleure Alternative à un Accord Négocié ». Il s\u0026rsquo;agit d\u0026rsquo;un concept de la théorie de la négociation qui représente l\u0026rsquo;option la plus avantageuse qu\u0026rsquo;une partie peut choisir si les négociations échouent et qu\u0026rsquo;un accord ne peut être conclu. Comprendre votre BATNA est essentiel, car cela vous fournit une base de référence pour évaluer tout accord proposé. Voici un guide étape par étape pour déterminer votre BATNA :\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eIdentifiez vos options :\u003c/strong\u003e Commencez par établir la liste de toutes les alternatives possibles que vous pouvez poursuivre si les négociations actuelles ne mènent pas à un accord. Pensez largement et de manière créative à toutes les options disponibles.\u003c/p\u003e","title":"Understanding your BATNA"},{"content":"Communication \u0026amp; Collaboration Matrix.org - Une plateforme de messagerie décentralisée. Zulip - Une application de chat en groupe open source. Nextcloud - Une suite de stockage en cloud et de collaboration. ownCloud - Un serveur de synchronisation et de partage de fichiers auto-hébergé. Mattermost - Une plateforme centralisée de collaboration d\u0026rsquo;équipe open source. Freenode - Un réseau Internet Relay Chat (IRC) dédié aux projets open source. GitLab - Un gestionnaire de dépôts Git basé sur le web avec des fonctionnalités CI/CD. GitPod - Un environnement de développement IDE qui se lance avec un seul clic. Réseaux sociaux et forums Mastodon - Un réseau social décentralisé basé sur le logiciel de microblogging GNU social/G+/Twitter. Friendica - Une plateforme open source de communication distribuée et de réseaux sociaux. Flarum - Un logiciel de forum axé sur la simplicité, la vitesse, l’élégance et l’ergonomie. Discourse - Une plateforme moderne, open source et polyvalente pour les discussions. phpBB - Un logiciel populaire de forum open source. Fluentd - Un outil de collecte de données pour récupérer des événements provenant de diverses sources vers diverses destinations. Logstash - Une pipeline open source de traitement de données qui peut collecter des données provenant de sources diverses et les canaliser vers un format unifié. Kibana - Un outil open source de visualisation et d’exploration de données basé sur Elasticsearch. Outils de développement Docker - Une plateforme pour développer, distribuer et exécuter des applications. Jenkins - Un serveur d’intégration continue extensible. GitLab CI/CD - Intégration continue / déploiement continu. Travis CI - Un service cloud d’intégration continue pour les projets GitHub et Bitbucket. JIRA - Un logiciel de gestion de projet incluant la méthode Scrum, la planification de sprints, la priorisation du backlog et le suivi des versions. Redmine - Une application web open source de gestion de projet gratuite. Tuleap - Un outil intégré de gestion de projet combinant les meilleures pratiques de gestion informatique aux outils modernes et open source. Courrier électronique et calendrier Roundcube - Un client de messagerie web. Horde Groupware Web Application Framework - Un ensemble de logiciels de groupe. Zimbra - Un système de messagerie, de calendrier et de collaboration. Sogo - Une combinaison d’un composant serveur web pour l’accès iCalendar, vCard et SMTP, ainsi que des bibliothèques clientes pour divers clients IMAP et CalDAV. DuckDuckGo Privacy Browser - Un navigateur orienté vie privée basé sur Firefox. Gestion des données Elasticsearch - Un moteur de recherche et d’analyse distribué, RESTful. Kibana - Pour visualiser les données Elasticsearch en temps réel. PostgreSQL - Un système de base de données relationnelle open source puissant. MongoDB - Une base de données document orientée open source. Redis - Un magasin clé-valeur en mémoire utilisé comme base de données, cache et broker de messages. Memcached - Un système de mise en cache distribué généraliste. Neo4j - Une base de données graphique permettant des requêtes flexibles via le langage Cypher. InfluxDB - Une base de données open source pour les séries temporelles. Bureau et productivité LibreOffice - Une suite bureautique open source. OnlyOffice - Une plateforme combinant des éditeurs de texte en ligne, une gestion de documents et de projets, et un stockage de fichiers dans une solution unique. Apache OpenOffice - Une autre suite bureautique gratuite et open source. Zimbra Collaboration Suite - Un serveur de messagerie et de calendrier avec un client bureau optionnel. Infrastructure et surveillance Nagios - Un système de surveillance des systèmes, réseaux et infrastructures. Zabbix - Une solution open source distribuée de surveillance de classe entreprise. Prometheus - Un système de surveillance et une base de données de séries temporelles. InfluxDB - Pour stocker et analyser des métriques. Kubernetes - Un système open source d’orchestration de conteneurs pour automatiser le déploiement, la mise à l’échelle et la gestion des conteneurs. OpenVPN - Une solution VPN robuste et hautement configurable. NGINX - Un serveur web haute performance et un serveur proxy inverse. Traefik - Un proxy inverse HTTP moderne et un chargeur réparti. HAProxy - Une solution fiable, efficace et flexible de répartition de charge. Multimédia et divertissement Plex - Une plateforme de gestion et de diffusion de médias client-serveur. Emby - Un serveur multimédia extensible et joueur avec des capacités riches de métadonnées. Radarr - Une application complémentaire à Sonarr pour télécharger de nouvelles épisodes de séries télévisées. Sonarr - Un téléchargeur de séries télévisées basé sur un index utilisant des fichiers NZB. Jackett - Un moteur d’indexation qui recherche sur de nombreux sites web. Deluge - Un client BitTorrent léger et riche en fonctionnalités. Rutorrent - Un client BitTorrent facile à utiliser avec de nombreuses fonctionnalités. Lidarr - Un indexeur automatique de musique capable de télécharger automatiquement vos albums préférés. E-commerce Magento Open Source - Une plateforme e-commerce flexible pour des entreprises de toutes tailles. PrestaShop - Une solution e-commerce open source. OpenCart - Un système de panier gratuit et open source. WooCommerce - Un plugin WordPress qui transforme votre site en un magasin en ligne complet. Sécurité fail2ban - Un outil de sécurité réseau qui analyse les fichiers journaux pour détecter les tentatives d’authentification infructueuses, puis interdit les adresses IP de ceux qui réussissent à plusieurs tentatives infructueuses. Cryptography - Des outils et bibliothèques pour le chiffrement et le déchiffrement. OSSEC - Un système d’analyse d’intrusion basé sur l’hôte puissant open source. Pulse Secure Virtual Desktop - Une plateforme de sécurité de bord d’accès sécurisé (SASE) qui permet aux organisations de fournir une sécurité intégrée pour l’accès aux applications et au réseau, en mode cloud. ClamAV - Un moteur antivirus open source pour détecter les chevaux de Troie, les virus, les logiciels malveillants et d’autres menaces malveillantes. Cloud et stockage OpenStack - Un système d’exploitation cloud pour fournir divers services cloud. Cloudflare - Une entreprise de performance et de sécurité internet qui fournit un réseau de serveurs distribués pour protéger les sites web contre les cyberattaques. Nextcloud - Déjà mentionné plus haut, mais mérite d’être rappelé car il s’agit également d’un service cloud complet. OpenVPN - Pour créer un accès sécurisé à votre laboratoire à distance. Serveurs web Apache HTTP Server - Le serveur web le plus utilisé au monde. NGINX - Un serveur HTTP haute performance et un serveur proxy inverse. Caddy - Un serveur web automatisé avec HTTPS automatique. Outils de développement et IDEs Visual Studio Code - Un éditeur de code repensé et optimisé pour la création et le débogage d’applications web et cloud modernes. Eclipse - Un environnement de développement intégré (IDE) open source. IntelliJ IDEA - Un IDE puissant pour les langages basés sur JVM comme Java, Kotlin, Scala et Android. Ressources d\u0026rsquo;apprentissage et éducation Khan Academy - Offre une éducation en ligne gratuite pour diverses matières. Moodle - Un système de gestion de cours open source pouvant être utilisé pour créer un environnement d’apprentissage en ligne. Canvas - Un système de gestion de l’appernissage basé sur le cloud (LMS). edX - Une plateforme d’apprentissage en ligne fondée par l’Université Harvard et l’Institut de technologie du Massachusetts. Serveurs de jeux Minecraft Server - Pour exécuter votre propre serveur Minecraft. SteamCMD - Outil de livraison de contenu de Steam pour aider à gérer les mises à jour de jeux sur des serveurs dédiqués. ARK: Survival Evolved Server - Pour héberger un serveur de jeu multijoueur de survie pour ARK. Stockage et sauvegarde de fichiers BorgBackup - Un programme de sauvegarde dédoublonnante qui prend en charge le stockage de fichiers et de blocs. Bacula - Un système open source de protection, de restauration et de récupération de données de niveau entreprise. Rclone - Un outil pour synchroniser des répertoires entre des fournisseurs de stockage cloud. Diffusion multimédia et DVR Emby - Pour une diffusion centralisée de médias dans votre réseau. MediaPortal - Un logiciel open source de centre multimédia gratuit pour Microsoft Windows. DVR-PC - Une solution complète de enregistrement télévisé, de diffusion et de visualisation en direct qui fonctionne sur des PC Linux (et Windows). Autres outils Mattermost - Un outil de communication d’équipe, qui inclut également un composant de suite de collaboration. GitPod - Un serveur de code basé sur le web avec des outils préconfigurés pour des environnements de développement full-stack. GitBucket - Un serveur Git compatible GitHub, facile à installer, écrit en Scala. Zabbix - Pour surveiller votre infrastructure et vos applications. ","permalink":"https://www.shafiq.in/fr/blog/list-of-some-self-hosted-services-you-can-setup-on-your-homelab/","summary":"\u003ch3 id=\"communication--collaboration\"\u003eCommunication \u0026amp; Collaboration\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eMatrix.org\u003c/strong\u003e - Une plateforme de messagerie décentralisée.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eZulip\u003c/strong\u003e - Une application de chat en groupe open source.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNextcloud\u003c/strong\u003e - Une suite de stockage en cloud et de collaboration.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eownCloud\u003c/strong\u003e - Un serveur de synchronisation et de partage de fichiers auto-hébergé.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eMattermost\u003c/strong\u003e - Une plateforme centralisée de collaboration d\u0026rsquo;équipe open source.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFreenode\u003c/strong\u003e - Un réseau Internet Relay Chat (IRC) dédié aux projets open source.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGitLab\u003c/strong\u003e - Un gestionnaire de dépôts Git basé sur le web avec des fonctionnalités CI/CD.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGitPod\u003c/strong\u003e - Un environnement de développement IDE qui se lance avec un seul clic.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"réseaux-sociaux-et-forums\"\u003eRéseaux sociaux et forums\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eMastodon\u003c/strong\u003e - Un réseau social décentralisé basé sur le logiciel de microblogging GNU social/G+/Twitter.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFriendica\u003c/strong\u003e - Une plateforme open source de communication distribuée et de réseaux sociaux.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFlarum\u003c/strong\u003e - Un logiciel de forum axé sur la simplicité, la vitesse, l’élégance et l’ergonomie.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDiscourse\u003c/strong\u003e - Une plateforme moderne, open source et polyvalente pour les discussions.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ephpBB\u003c/strong\u003e - Un logiciel populaire de forum open source.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFluentd\u003c/strong\u003e - Un outil de collecte de données pour récupérer des événements provenant de diverses sources vers diverses destinations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eLogstash\u003c/strong\u003e - Une pipeline open source de traitement de données qui peut collecter des données provenant de sources diverses et les canaliser vers un format unifié.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKibana\u003c/strong\u003e - Un outil open source de visualisation et d’exploration de données basé sur Elasticsearch.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"outils-de-développement\"\u003eOutils de développement\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eDocker\u003c/strong\u003e - Une plateforme pour développer, distribuer et exécuter des applications.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eJenkins\u003c/strong\u003e - Un serveur d’intégration continue extensible.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGitLab CI/CD\u003c/strong\u003e - Intégration continue / déploiement continu.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTravis CI\u003c/strong\u003e - Un service cloud d’intégration continue pour les projets GitHub et Bitbucket.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eJIRA\u003c/strong\u003e - Un logiciel de gestion de projet incluant la méthode Scrum, la planification de sprints, la priorisation du backlog et le suivi des versions.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRedmine\u003c/strong\u003e - Une application web open source de gestion de projet gratuite.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTuleap\u003c/strong\u003e - Un outil intégré de gestion de projet combinant les meilleures pratiques de gestion informatique aux outils modernes et open source.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"courrier-électronique-et-calendrier\"\u003eCourrier électronique et calendrier\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eRoundcube\u003c/strong\u003e - Un client de messagerie web.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHorde Groupware Web Application Framework\u003c/strong\u003e - Un ensemble de logiciels de groupe.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eZimbra\u003c/strong\u003e - Un système de messagerie, de calendrier et de collaboration.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSogo\u003c/strong\u003e - Une combinaison d’un composant serveur web pour l’accès iCalendar, vCard et SMTP, ainsi que des bibliothèques clientes pour divers clients IMAP et CalDAV.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDuckDuckGo Privacy Browser\u003c/strong\u003e - Un navigateur orienté vie privée basé sur Firefox.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"gestion-des-données\"\u003eGestion des données\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eElasticsearch\u003c/strong\u003e - Un moteur de recherche et d’analyse distribué, RESTful.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKibana\u003c/strong\u003e - Pour visualiser les données Elasticsearch en temps réel.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePostgreSQL\u003c/strong\u003e - Un système de base de données relationnelle open source puissant.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eMongoDB\u003c/strong\u003e - Une base de données document orientée open source.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRedis\u003c/strong\u003e - Un magasin clé-valeur en mémoire utilisé comme base de données, cache et broker de messages.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eMemcached\u003c/strong\u003e - Un système de mise en cache distribué généraliste.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNeo4j\u003c/strong\u003e - Une base de données graphique permettant des requêtes flexibles via le langage Cypher.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eInfluxDB\u003c/strong\u003e - Une base de données open source pour les séries temporelles.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"bureau-et-productivité\"\u003eBureau et productivité\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eLibreOffice\u003c/strong\u003e - Une suite bureautique open source.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eOnlyOffice\u003c/strong\u003e - Une plateforme combinant des éditeurs de texte en ligne, une gestion de documents et de projets, et un stockage de fichiers dans une solution unique.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eApache OpenOffice\u003c/strong\u003e - Une autre suite bureautique gratuite et open source.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eZimbra Collaboration Suite\u003c/strong\u003e - Un serveur de messagerie et de calendrier avec un client bureau optionnel.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"infrastructure-et-surveillance\"\u003eInfrastructure et surveillance\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eNagios\u003c/strong\u003e - Un système de surveillance des systèmes, réseaux et infrastructures.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eZabbix\u003c/strong\u003e - Une solution open source distribuée de surveillance de classe entreprise.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePrometheus\u003c/strong\u003e - Un système de surveillance et une base de données de séries temporelles.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eInfluxDB\u003c/strong\u003e - Pour stocker et analyser des métriques.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKubernetes\u003c/strong\u003e - Un système open source d’orchestration de conteneurs pour automatiser le déploiement, la mise à l’échelle et la gestion des conteneurs.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eOpenVPN\u003c/strong\u003e - Une solution VPN robuste et hautement configurable.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNGINX\u003c/strong\u003e - Un serveur web haute performance et un serveur proxy inverse.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTraefik\u003c/strong\u003e - Un proxy inverse HTTP moderne et un chargeur réparti.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHAProxy\u003c/strong\u003e - Une solution fiable, efficace et flexible de répartition de charge.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"multimédia-et-divertissement\"\u003eMultimédia et divertissement\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003ePlex\u003c/strong\u003e - Une plateforme de gestion et de diffusion de médias client-serveur.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEmby\u003c/strong\u003e - Un serveur multimédia extensible et joueur avec des capacités riches de métadonnées.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRadarr\u003c/strong\u003e - Une application complémentaire à Sonarr pour télécharger de nouvelles épisodes de séries télévisées.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSonarr\u003c/strong\u003e - Un téléchargeur de séries télévisées basé sur un index utilisant des fichiers NZB.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eJackett\u003c/strong\u003e - Un moteur d’indexation qui recherche sur de nombreux sites web.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDeluge\u003c/strong\u003e - Un client BitTorrent léger et riche en fonctionnalités.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRutorrent\u003c/strong\u003e - Un client BitTorrent facile à utiliser avec de nombreuses fonctionnalités.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eLidarr\u003c/strong\u003e - Un indexeur automatique de musique capable de télécharger automatiquement vos albums préférés.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"e-commerce\"\u003eE-commerce\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eMagento Open Source\u003c/strong\u003e - Une plateforme e-commerce flexible pour des entreprises de toutes tailles.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePrestaShop\u003c/strong\u003e - Une solution e-commerce open source.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eOpenCart\u003c/strong\u003e - Un système de panier gratuit et open source.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eWooCommerce\u003c/strong\u003e - Un plugin WordPress qui transforme votre site en un magasin en ligne complet.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"sécurité\"\u003eSécurité\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003efail2ban\u003c/strong\u003e - Un outil de sécurité réseau qui analyse les fichiers journaux pour détecter les tentatives d’authentification infructueuses, puis interdit les adresses IP de ceux qui réussissent à plusieurs tentatives infructueuses.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCryptography\u003c/strong\u003e - Des outils et bibliothèques pour le chiffrement et le déchiffrement.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eOSSEC\u003c/strong\u003e - Un système d’analyse d’intrusion basé sur l’hôte puissant open source.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePulse Secure Virtual Desktop\u003c/strong\u003e - Une plateforme de sécurité de bord d’accès sécurisé (SASE) qui permet aux organisations de fournir une sécurité intégrée pour l’accès aux applications et au réseau, en mode cloud.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eClamAV\u003c/strong\u003e - Un moteur antivirus open source pour détecter les chevaux de Troie, les virus, les logiciels malveillants et d’autres menaces malveillantes.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"cloud-et-stockage\"\u003eCloud et stockage\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eOpenStack\u003c/strong\u003e - Un système d’exploitation cloud pour fournir divers services cloud.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCloudflare\u003c/strong\u003e - Une entreprise de performance et de sécurité internet qui fournit un réseau de serveurs distribués pour protéger les sites web contre les cyberattaques.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNextcloud\u003c/strong\u003e - Déjà mentionné plus haut, mais mérite d’être rappelé car il s’agit également d’un service cloud complet.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eOpenVPN\u003c/strong\u003e - Pour créer un accès sécurisé à votre laboratoire à distance.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"serveurs-web\"\u003eServeurs web\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eApache HTTP Server\u003c/strong\u003e - Le serveur web le plus utilisé au monde.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNGINX\u003c/strong\u003e - Un serveur HTTP haute performance et un serveur proxy inverse.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCaddy\u003c/strong\u003e - Un serveur web automatisé avec HTTPS automatique.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"outils-de-développement-et-ides\"\u003eOutils de développement et IDEs\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eVisual Studio Code\u003c/strong\u003e - Un éditeur de code repensé et optimisé pour la création et le débogage d’applications web et cloud modernes.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEclipse\u003c/strong\u003e - Un environnement de développement intégré (IDE) open source.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIntelliJ IDEA\u003c/strong\u003e - Un IDE puissant pour les langages basés sur JVM comme Java, Kotlin, Scala et Android.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"ressources-dapprentissage-et-éducation\"\u003eRessources d\u0026rsquo;apprentissage et éducation\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eKhan Academy\u003c/strong\u003e - Offre une éducation en ligne gratuite pour diverses matières.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eMoodle\u003c/strong\u003e - Un système de gestion de cours open source pouvant être utilisé pour créer un environnement d’apprentissage en ligne.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCanvas\u003c/strong\u003e - Un système de gestion de l’appernissage basé sur le cloud (LMS).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eedX\u003c/strong\u003e - Une plateforme d’apprentissage en ligne fondée par l’Université Harvard et l’Institut de technologie du Massachusetts.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"serveurs-de-jeux\"\u003eServeurs de jeux\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eMinecraft Server\u003c/strong\u003e - Pour exécuter votre propre serveur Minecraft.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSteamCMD\u003c/strong\u003e - Outil de livraison de contenu de Steam pour aider à gérer les mises à jour de jeux sur des serveurs dédiqués.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eARK: Survival Evolved Server\u003c/strong\u003e - Pour héberger un serveur de jeu multijoueur de survie pour ARK.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"stockage-et-sauvegarde-de-fichiers\"\u003eStockage et sauvegarde de fichiers\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eBorgBackup\u003c/strong\u003e - Un programme de sauvegarde dédoublonnante qui prend en charge le stockage de fichiers et de blocs.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eBacula\u003c/strong\u003e - Un système open source de protection, de restauration et de récupération de données de niveau entreprise.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRclone\u003c/strong\u003e - Un outil pour synchroniser des répertoires entre des fournisseurs de stockage cloud.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"diffusion-multimédia-et-dvr\"\u003eDiffusion multimédia et DVR\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eEmby\u003c/strong\u003e - Pour une diffusion centralisée de médias dans votre réseau.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eMediaPortal\u003c/strong\u003e - Un logiciel open source de centre multimédia gratuit pour Microsoft Windows.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDVR-PC\u003c/strong\u003e - Une solution complète de enregistrement télévisé, de diffusion et de visualisation en direct qui fonctionne sur des PC Linux (et Windows).\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"autres-outils\"\u003eAutres outils\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eMattermost\u003c/strong\u003e - Un outil de communication d’équipe, qui inclut également un composant de suite de collaboration.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGitPod\u003c/strong\u003e - Un serveur de code basé sur le web avec des outils préconfigurés pour des environnements de développement full-stack.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGitBucket\u003c/strong\u003e - Un serveur Git compatible GitHub, facile à installer, écrit en Scala.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eZabbix\u003c/strong\u003e - Pour surveiller votre infrastructure et vos applications.\u003c/li\u003e\n\u003c/ol\u003e","title":"List of some self hosted services you can setup on your homelab"},{"content":" Installer Ghostscript : Si ce n\u0026rsquo;est pas déjà fait, vous pouvez installer Ghostscript à l\u0026rsquo;aide du gestionnaire de paquets de votre distribution. Pour les systèmes basés sur Debian comme Ubuntu, utilisez :\nsudo apt-get update sudo apt-get install ghostscript Pour les systèmes basés sur Red Hat comme Fedora, utilisez :\nsudo dnf install ghostscript Compresser le PDF : Une fois Ghostscript installé, vous pouvez compresser votre fichier PDF en utilisant la commande suivante :\ngs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf Dans cette commande :\ninput.pdf est le nom de votre fichier PDF d\u0026rsquo;origine. output.pdf est le nom du fichier PDF compressé qui sera créé. -dPDFSETTINGS=/screen définit la qualité du PDF. Ce paramètre correspond à la qualité la plus basse et à la taille de fichier la plus petite, ce qui convient pour visualiser sur écran. D\u0026rsquo;autres options sont /ebook pour une qualité moyenne, /printer pour une haute qualité, et /prepress pour une haute qualité avec une taille de fichier importante. Pour réduire le niveau de compression dans Ghostscript lors de la conversion ou du traitement d\u0026rsquo;un fichier PDF, vous pouvez ajuster l\u0026rsquo;option -dPDFSETTINGS. La commande que vous avez fournie utilise le paramètre /screen, qui applique une forte compression et une sortie à faible résolution, adaptée à la visualisation à l\u0026rsquo;écran mais non idéale pour l\u0026rsquo;impression ou l\u0026rsquo;archivage.\nLes paramètres disponibles pour -dPDFSETTINGS sont les suivants :\n/screen – qualité la plus faible, compression maximale. /ebook – meilleure qualité, mais toujours une compression significative. /printer – haute qualité, adaptée à l\u0026rsquo;impression des documents. /prepress – haute qualité, similaire à /printer mais avec une résolution plus élevée, adaptée à l\u0026rsquo;impression selon les normes prépresse. /default – un point de départ utile, équilibrant qualité et compression. Pour réduire le niveau de compression (c’est-à-dire améliorer la qualité du PDF de sortie), vous pouvez passer de /screen à un paramètre de qualité plus élevé comme /ebook, /printer ou /prepress. Par exemple, si vous souhaitez un équilibre entre qualité et taille de fichier, vous pouvez choisir /ebook :\ngs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=patient-record-oldbury-health-centre-1.pdf patient-record-oldbury-health-centre.pdf Ou, pour une qualité plus élevée adaptée à l\u0026rsquo;impression, utilisez /printer :\ngs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile=patient-record-oldbury-health-centre-1.pdf patient-record-oldbury-health-centre.pdf ","permalink":"https://www.shafiq.in/fr/blog/how-to-reduce-the-file-size-of-a-pdf-file-in-linux-cli/","summary":"\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eInstaller Ghostscript\u003c/strong\u003e : Si ce n\u0026rsquo;est pas déjà fait, vous pouvez installer Ghostscript à l\u0026rsquo;aide du gestionnaire de paquets de votre distribution. Pour les systèmes basés sur Debian comme Ubuntu, utilisez :\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo apt-get update\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo apt-get install ghostscript\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003ePour les systèmes basés sur Red Hat comme Fedora, utilisez :\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo dnf install ghostscript\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eCompresser le PDF\u003c/strong\u003e : Une fois Ghostscript installé, vous pouvez compresser votre fichier PDF en utilisant la commande suivante :\u003c/p\u003e","title":"How to reduce the file size of a pdf file in linux cli"},{"content":" Acceptation de soi : « J’accepte moi-même sans condition et reconnais ma valeur. »\nRésilience : « Je suis résilient, fort et capable de faire face aux défis de la vie. »\nEsprit de croissance : « Je suis en constante évolution et j’apprends de mes expériences. »\nConfiance en soi : « Je crois en mes capacités et fais confiance à mon jugement. »\nOptimisme : « Je choisis de voir le bon côté de chaque situation. »\nGratitude : « Je suis reconnaissant des bénédictions de ma vie. »\nPositivité : « Je dégage de la positivité et attire des expériences positives. »\nSanté et bien-être : « Je m’engage à prendre soin de mon corps et de mon esprit. »\nSuccès : « Je mérite le succès et suis prêt à saisir les opportunités. »\nPaix intérieure : « Je suis en paix avec moi-même et avec le monde qui m’entoure. »\nAmour et compassion : « Je suis rempli d’amour et de bienveillance envers moi-même et les autres. »\nBonheur : « Le bonheur coule en abondance à travers moi. »\nCourage : « J’ai le courage de prendre des décisions difficiles et de faire face à mes peurs. »\nÉquilibre : « Je maintiens un équilibre sain entre travail, repos et loisirs. »\nBut : « Je suis guidé par un sentiment de but et de direction. »\nUtiliser ces affirmations de façon régulière peut aider à cultiver un état d’esprit plus positif et améliorer le bien-être global.\n","permalink":"https://www.shafiq.in/fr/blog/some-affirmations-for-positive-self-talk/","summary":"\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eAcceptation de soi :\u003c/strong\u003e « J’accepte moi-même sans condition et reconnais ma valeur. »\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eRésilience :\u003c/strong\u003e « Je suis résilient, fort et capable de faire face aux défis de la vie. »\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eEsprit de croissance :\u003c/strong\u003e « Je suis en constante évolution et j’apprends de mes expériences. »\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eConfiance en soi :\u003c/strong\u003e « Je crois en mes capacités et fais confiance à mon jugement. »\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eOptimisme :\u003c/strong\u003e « Je choisis de voir le bon côté de chaque situation. »\u003c/p\u003e","title":"Some affirmations for positive self talk"},{"content":" Immobilier : Propriétés locatives ou investissements immobiliers. Actions : Actions versant des dividendes ou actions à croissance. Obligations : Obligations gouvernementales ou corporatives offrant un intérêt fixe. Fonds de dividendes : Fonds commun de placement ou ETF axés sur des actions versant des dividendes. Prêts entre pairs : Investir dans des prêts via des plateformes en ligne. Propriété d\u0026rsquo;entreprise : Équité dans une entreprise rentable. Droits d\u0026rsquo;auteur : Revenu provenant de propriété intellectuelle, tels que des livres, de la musique ou des brevets. REITs : Trusts d\u0026rsquo;investissement immobilier offrant des dividendes provenant de placements immobiliers. Certificat de dépôt (CD) : Dépôt à intérêt fixe à faible risque avec un terme déterminé. Annuités : Contrats d\u0026rsquo;assurance offrant un flux régulier de revenus. Cryptomonnaies : Actifs numériques comme Bitcoin ou Ethereum avec un potentiel d\u0026rsquo;appréciation. Matières premières : Investir dans des biens physiques comme l\u0026rsquo;or, l\u0026rsquo;argent ou des produits agricoles. Propriété intellectuelle : Sous-louer des brevets, marques ou droits d\u0026rsquo;auteur pour des redevances. Terres agricoles : Propriété directe ou investissement dans des terres agricoles. Art et objets de collection : Pièces précieuses pouvant augmenter de valeur avec le temps. Propriété de franchise : Posséder une franchise d\u0026rsquo;une entreprise réussie. Influenceur sur les réseaux sociaux : Générer des revenus grâce à du contenu commandité et des partenariats. Marketing d\u0026rsquo;affiliation : Gagner des commissions en promouvant des produits d\u0026rsquo;autres entreprises. Revenu locatif provenant d\u0026rsquo;équipements : Loyer de machines ou équipements. Cours en ligne : Créer et vendre du contenu éducatif ou des cours. Investissements pétroliers et gaziers : Investissement direct ou partenariats dans l\u0026rsquo;exploration énergétique. Fonds spéculatifs : Investir dans des fonds gérés par des professionnels avec diverses stratégies. Capital-risque : Investir dans des startups à potentiel de croissance. Négociation d\u0026rsquo;options : Engager des contrats d\u0026rsquo;options pour un profit potentiel. Équité privée : Investir dans des entreprises non cotées pour une propriété d\u0026rsquo;équité. Terres forestières : Posséder ou investir dans des forêts pour la production de bois. Droits d\u0026rsquo;auteur musicaux : Revenu provenant de la composition, de l\u0026rsquo;écriture ou de la production musicale. Biens hérités : Revenu généré à partir de biens transmis de génération en génération. Parcs de mobile homes : Posséder ou investir dans des communautés de mobile homes. ETFs de propriété intellectuelle : Fonds négociés en bourse axés sur des actifs IP. Dettes en difficulté : Investir dans la dette d\u0026rsquo;entreprises en difficulté financière. Units de stockage : Posséder ou investir dans des installations de stockage auto-gérées. Numéros d\u0026rsquo;immatriculation : Certaines juridictions autorisent la vente de numéros d\u0026rsquo;immatriculation uniques. Espaces de stationnement : Investir dans des places de stationnement dans des zones à forte demande. Panneaux solaires : Générer des revenus grâce à la production d\u0026rsquo;énergie solaire. NFT (Tokens non fongibles) : Actifs numériques représentant la propriété d\u0026rsquo;objets uniques. Staking de cryptomonnaies : Gagner des récompenses en participant à la validation des blockchains. Élevage : Élever et vendre du bétail pour un profit. Flipping de sites web : Acheter, améliorer et vendre des sites web pour un profit. Micro-investissement : Petits investissements dans divers actifs via des applications ou plateformes. REITs agricoles : Trusts d\u0026rsquo;investissement immobilier spécialisés dans les terres agricoles. Projets d\u0026rsquo;énergie renouvelable : Investir dans la production d\u0026rsquo;électricité éolienne, solaire ou hydroélectrique. Droits d\u0026rsquo;eau : Propriété ou investissement dans des droits d\u0026rsquo;eau pour des usages agricoles ou commerciaux. Édition indépendante : Générer des revenus en publiant soi-même des livres ou du contenu numérique. Services d\u0026rsquo;abonnement : Créer et monétiser des produits ou services basés sur un abonnement. Location de stockage : Louer de l\u0026rsquo;espace de stockage pour un usage personnel ou professionnel. Location de bétail : Louer du bétail à des fins agricoles. Héritage : Revenu généré à partir d\u0026rsquo;actifs, de biens ou d\u0026rsquo;investissements hérités. Intérêts dans une société en commandite limitée : Investir dans des partenariats à responsabilité limitée avec un potentiel de profit. REITs privés : Trusts d\u0026rsquo;investissement immobilier qui investissent dans des biens ou actifs non cotés en bourse. ","permalink":"https://www.shafiq.in/fr/blog/list-of-some-income-generating-assets/","summary":"\u003col\u003e\n\u003cli\u003eImmobilier : Propriétés locatives ou investissements immobiliers.\u003c/li\u003e\n\u003cli\u003eActions : Actions versant des dividendes ou actions à croissance.\u003c/li\u003e\n\u003cli\u003eObligations : Obligations gouvernementales ou corporatives offrant un intérêt fixe.\u003c/li\u003e\n\u003cli\u003eFonds de dividendes : Fonds commun de placement ou ETF axés sur des actions versant des dividendes.\u003c/li\u003e\n\u003cli\u003ePrêts entre pairs : Investir dans des prêts via des plateformes en ligne.\u003c/li\u003e\n\u003cli\u003ePropriété d\u0026rsquo;entreprise : Équité dans une entreprise rentable.\u003c/li\u003e\n\u003cli\u003eDroits d\u0026rsquo;auteur : Revenu provenant de propriété intellectuelle, tels que des livres, de la musique ou des brevets.\u003c/li\u003e\n\u003cli\u003eREITs : Trusts d\u0026rsquo;investissement immobilier offrant des dividendes provenant de placements immobiliers.\u003c/li\u003e\n\u003cli\u003eCertificat de dépôt (CD) : Dépôt à intérêt fixe à faible risque avec un terme déterminé.\u003c/li\u003e\n\u003cli\u003eAnnuités : Contrats d\u0026rsquo;assurance offrant un flux régulier de revenus.\u003c/li\u003e\n\u003cli\u003eCryptomonnaies : Actifs numériques comme Bitcoin ou Ethereum avec un potentiel d\u0026rsquo;appréciation.\u003c/li\u003e\n\u003cli\u003eMatières premières : Investir dans des biens physiques comme l\u0026rsquo;or, l\u0026rsquo;argent ou des produits agricoles.\u003c/li\u003e\n\u003cli\u003ePropriété intellectuelle : Sous-louer des brevets, marques ou droits d\u0026rsquo;auteur pour des redevances.\u003c/li\u003e\n\u003cli\u003eTerres agricoles : Propriété directe ou investissement dans des terres agricoles.\u003c/li\u003e\n\u003cli\u003eArt et objets de collection : Pièces précieuses pouvant augmenter de valeur avec le temps.\u003c/li\u003e\n\u003cli\u003ePropriété de franchise : Posséder une franchise d\u0026rsquo;une entreprise réussie.\u003c/li\u003e\n\u003cli\u003eInfluenceur sur les réseaux sociaux : Générer des revenus grâce à du contenu commandité et des partenariats.\u003c/li\u003e\n\u003cli\u003eMarketing d\u0026rsquo;affiliation : Gagner des commissions en promouvant des produits d\u0026rsquo;autres entreprises.\u003c/li\u003e\n\u003cli\u003eRevenu locatif provenant d\u0026rsquo;équipements : Loyer de machines ou équipements.\u003c/li\u003e\n\u003cli\u003eCours en ligne : Créer et vendre du contenu éducatif ou des cours.\u003c/li\u003e\n\u003cli\u003eInvestissements pétroliers et gaziers : Investissement direct ou partenariats dans l\u0026rsquo;exploration énergétique.\u003c/li\u003e\n\u003cli\u003eFonds spéculatifs : Investir dans des fonds gérés par des professionnels avec diverses stratégies.\u003c/li\u003e\n\u003cli\u003eCapital-risque : Investir dans des startups à potentiel de croissance.\u003c/li\u003e\n\u003cli\u003eNégociation d\u0026rsquo;options : Engager des contrats d\u0026rsquo;options pour un profit potentiel.\u003c/li\u003e\n\u003cli\u003eÉquité privée : Investir dans des entreprises non cotées pour une propriété d\u0026rsquo;équité.\u003c/li\u003e\n\u003cli\u003eTerres forestières : Posséder ou investir dans des forêts pour la production de bois.\u003c/li\u003e\n\u003cli\u003eDroits d\u0026rsquo;auteur musicaux : Revenu provenant de la composition, de l\u0026rsquo;écriture ou de la production musicale.\u003c/li\u003e\n\u003cli\u003eBiens hérités : Revenu généré à partir de biens transmis de génération en génération.\u003c/li\u003e\n\u003cli\u003eParcs de mobile homes : Posséder ou investir dans des communautés de mobile homes.\u003c/li\u003e\n\u003cli\u003eETFs de propriété intellectuelle : Fonds négociés en bourse axés sur des actifs IP.\u003c/li\u003e\n\u003cli\u003eDettes en difficulté : Investir dans la dette d\u0026rsquo;entreprises en difficulté financière.\u003c/li\u003e\n\u003cli\u003eUnits de stockage : Posséder ou investir dans des installations de stockage auto-gérées.\u003c/li\u003e\n\u003cli\u003eNuméros d\u0026rsquo;immatriculation : Certaines juridictions autorisent la vente de numéros d\u0026rsquo;immatriculation uniques.\u003c/li\u003e\n\u003cli\u003eEspaces de stationnement : Investir dans des places de stationnement dans des zones à forte demande.\u003c/li\u003e\n\u003cli\u003ePanneaux solaires : Générer des revenus grâce à la production d\u0026rsquo;énergie solaire.\u003c/li\u003e\n\u003cli\u003eNFT (Tokens non fongibles) : Actifs numériques représentant la propriété d\u0026rsquo;objets uniques.\u003c/li\u003e\n\u003cli\u003eStaking de cryptomonnaies : Gagner des récompenses en participant à la validation des blockchains.\u003c/li\u003e\n\u003cli\u003eÉlevage : Élever et vendre du bétail pour un profit.\u003c/li\u003e\n\u003cli\u003eFlipping de sites web : Acheter, améliorer et vendre des sites web pour un profit.\u003c/li\u003e\n\u003cli\u003eMicro-investissement : Petits investissements dans divers actifs via des applications ou plateformes.\u003c/li\u003e\n\u003cli\u003eREITs agricoles : Trusts d\u0026rsquo;investissement immobilier spécialisés dans les terres agricoles.\u003c/li\u003e\n\u003cli\u003eProjets d\u0026rsquo;énergie renouvelable : Investir dans la production d\u0026rsquo;électricité éolienne, solaire ou hydroélectrique.\u003c/li\u003e\n\u003cli\u003eDroits d\u0026rsquo;eau : Propriété ou investissement dans des droits d\u0026rsquo;eau pour des usages agricoles ou commerciaux.\u003c/li\u003e\n\u003cli\u003eÉdition indépendante : Générer des revenus en publiant soi-même des livres ou du contenu numérique.\u003c/li\u003e\n\u003cli\u003eServices d\u0026rsquo;abonnement : Créer et monétiser des produits ou services basés sur un abonnement.\u003c/li\u003e\n\u003cli\u003eLocation de stockage : Louer de l\u0026rsquo;espace de stockage pour un usage personnel ou professionnel.\u003c/li\u003e\n\u003cli\u003eLocation de bétail : Louer du bétail à des fins agricoles.\u003c/li\u003e\n\u003cli\u003eHéritage : Revenu généré à partir d\u0026rsquo;actifs, de biens ou d\u0026rsquo;investissements hérités.\u003c/li\u003e\n\u003cli\u003eIntérêts dans une société en commandite limitée : Investir dans des partenariats à responsabilité limitée avec un potentiel de profit.\u003c/li\u003e\n\u003cli\u003eREITs privés : Trusts d\u0026rsquo;investissement immobilier qui investissent dans des biens ou actifs non cotés en bourse.\u003c/li\u003e\n\u003c/ol\u003e","title":"List of some income generating assets"},{"content":" Rediriger les conversations : Orientez les échanges vers des sujets constructifs ou positifs. Pratiquer l\u0026rsquo;empathie : Essayez de comprendre les autres sans porter de jugement. Promouvoir une communication ouverte : Encouragez des échanges transparents et directs. Établir des limites personnelles : Sachez quand vous retirer des ragots pour préserver votre intégrité. Donner l\u0026rsquo;exemple : Montrez un engagement envers une communication positive. Être attentif : Soyez conscient des choix de mots et de leur impact potentiel. Encourager les discussions axées sur les solutions : Concentrez-vous sur la recherche de solutions plutôt que sur les problèmes. Valoriser la vie privée : Respectez les informations personnelles des autres et évitez d’en parler sans consentement. Cultiver une culture positive : Favorisez un environnement qui décourage les ragots. Réfléchir à l’impact : Pensez à la façon dont les ragots affectent les relations et la dynamique globale de l’équipe. Écouter avec intention : Écoutez activement sans participer aux conversations de ragots. Choisir ses mots avec soin : Soyez prudent dans le langage utilisé lors des échanges. Renforcer positivement : Reconnaître et promouvoir les aspects positifs plutôt que de critiquer par des ragots. Se concentrer sur sa croissance personnelle : Déplacer l’attention vers l’amélioration de soi plutôt que vers la critique des autres. Limiter l’implication sur les réseaux sociaux : Évitez de participer ou de perpétuer les ragots en ligne. Créer des distractions : Introduire de nouveaux sujets ou activités pour détourner les conversations des ragots. Encourager la communication directe : Plaidoyer pour résoudre les conflits par des échanges directs. Exprimer son désaccord de manière diplomatique : S’éloigner poliment quand des ragots apparaissent. Diriger les discussions collectives : Guider les échanges pour qu’ils restent constructifs et respectueux. Réfléchir régulièrement : Évaluer son propre comportement afin de maintenir un engagement envers des interactions sans ragots. ","permalink":"https://www.shafiq.in/fr/blog/how-to-actively-avoid-engaging-in-gossip/","summary":"\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eRediriger les conversations\u003c/strong\u003e : Orientez les échanges vers des sujets constructifs ou positifs.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiquer l\u0026rsquo;empathie\u003c/strong\u003e : Essayez de comprendre les autres sans porter de jugement.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePromouvoir une communication ouverte\u003c/strong\u003e : Encouragez des échanges transparents et directs.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉtablir des limites personnelles\u003c/strong\u003e : Sachez quand vous retirer des ragots pour préserver votre intégrité.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDonner l\u0026rsquo;exemple\u003c/strong\u003e : Montrez un engagement envers une communication positive.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÊtre attentif\u003c/strong\u003e : Soyez conscient des choix de mots et de leur impact potentiel.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEncourager les discussions axées sur les solutions\u003c/strong\u003e : Concentrez-vous sur la recherche de solutions plutôt que sur les problèmes.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eValoriser la vie privée\u003c/strong\u003e : Respectez les informations personnelles des autres et évitez d’en parler sans consentement.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCultiver une culture positive\u003c/strong\u003e : Favorisez un environnement qui décourage les ragots.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRéfléchir à l’impact\u003c/strong\u003e : Pensez à la façon dont les ragots affectent les relations et la dynamique globale de l’équipe.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉcouter avec intention\u003c/strong\u003e : Écoutez activement sans participer aux conversations de ragots.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eChoisir ses mots avec soin\u003c/strong\u003e : Soyez prudent dans le langage utilisé lors des échanges.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRenforcer positivement\u003c/strong\u003e : Reconnaître et promouvoir les aspects positifs plutôt que de critiquer par des ragots.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSe concentrer sur sa croissance personnelle\u003c/strong\u003e : Déplacer l’attention vers l’amélioration de soi plutôt que vers la critique des autres.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eLimiter l’implication sur les réseaux sociaux\u003c/strong\u003e : Évitez de participer ou de perpétuer les ragots en ligne.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCréer des distractions\u003c/strong\u003e : Introduire de nouveaux sujets ou activités pour détourner les conversations des ragots.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEncourager la communication directe\u003c/strong\u003e : Plaidoyer pour résoudre les conflits par des échanges directs.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eExprimer son désaccord de manière diplomatique\u003c/strong\u003e : S’éloigner poliment quand des ragots apparaissent.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDiriger les discussions collectives\u003c/strong\u003e : Guider les échanges pour qu’ils restent constructifs et respectueux.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRéfléchir régulièrement\u003c/strong\u003e : Évaluer son propre comportement afin de maintenir un engagement envers des interactions sans ragots.\u003c/li\u003e\n\u003c/ol\u003e","title":"How to actively avoid engaging in gossip"},{"content":" Conscience de soi : Reconnaissez les pensées et émotions négatives. Mentalité positive : Cultivez l\u0026rsquo;optimisme et concentrez-vous sur les solutions. Pratique de la gratitude : Reconnaissez et appréciez les aspects positifs de la vie. Présence d\u0026rsquo;esprit : Restez dans le moment présent, en réduisant les pensées négatives. Limites saines : Établissez et maintenez des limites dans les relations. Résolution des conflits : Abordez les problèmes calmement et cherchez des solutions. Entourez-vous de positivité : Choisissez des environnements inspirants. Réduisez l\u0026rsquo;exposition à la négativité : Minimisez l\u0026rsquo;exposition aux médias ou personnes négatives. Fixez-vous des objectifs : Concentrez-vous sur vos aspirations personnelles et professionnelles. Célébrez vos succès : Reconnaissez vos accomplissements, grands ou petits. Apprenez des échecs : Retirez des leçons et grandissez à partir des revers. Affirmations positives : Répétez des déclarations affirmatives quotidiennement. Activité physique : L\u0026rsquo;exercice régulier améliore l\u0026rsquo;humeur et réduit le stress. Mode de vie sain : Priorisez le sommeil, la nutrition et les soins de soi. Connectez-vous socialement : Établissez des relations soutenantes avec des personnes positives. Développement professionnel : Améliorez vos compétences et connaissances. Gestion efficace du temps : Réduisez le stress en priorisant les tâches. Déléguer des tâches : Partagez les responsabilités pour éviter l\u0026rsquo;overwhelm. Mentalité orientée vers la solution : Abordez les défis avec une mentalité tournée vers la résolution. Apprenez à dire non : Fixez des limites pour éviter le sur-engagement. Prenez des pauses régulières : Prenez de courtes pauses pour vous rafraîchir et vous recentrer. Loisirs : Impliquez-vous dans des activités qui apportent joie et accomplissement. Travail bénévole : Aider les autres peut procurer un sentiment de but. Limitez le perfectionnisme : Acceptez les imperfections et apprenez des erreurs. Communication positive : Utilisez un langage constructif dans vos interactions. Réflexion régulière : Évaluez et ajustez vos attitudes et comportements. Pardonner : Lâchez les rancunes et la rancœur. Apprentissage continu : Restez curieux et ouvert d\u0026rsquo;esprit. Valeurs personnelles : Alignez vos actions avec vos valeurs fondamentales pour un accomplissement. Consultez un professionnel si nécessaire : Consultez un conseiller ou un thérapeute pour soutien. Visualisez le succès : Imaginez des résultats positifs pour stimuler votre motivation. Humour : Trouvez de la joie dans les situations quotidiennes pour alléger l\u0026rsquo;humeur. Désencombrez : Organisez vos espaces physiques et numériques pour plus de clarté. Éduquez-vous : Comprenez l\u0026rsquo;impact de la négativité sur le bien-être. Empathie : Mettez-vous à la place des autres pour favoriser la compréhension. Limitez les plaintes : Minimisez les déboulés et concentrez-vous sur les solutions plutôt que sur les plaintes. Modèles positifs : Entourez-vous de personnes inspirantes. Exprimez votre gratitude : Partagez votre appréciation régulièrement avec les autres. Acceptez le changement : Voyez les défis comme des opportunités de croissance. Cahier de réflexion : Écrivez vos pensées et émotions pour une auto-réflexion. Créez une planche de vision : Visualisez vos objectifs et aspirations. Pratiquez le pardon : Lâchez la rancœur pour une paix intérieure. Limites saines : Communiquez clairement vos attentes dans les relations. Apprenez à vous détacher : Évitez de vous absorber excessivement dans des situations négatives. Respiration consciente : Pratiquez des respirations profondes et intentionnelles pour vous détendre. Limitez les réseaux sociaux : Contrôlez l\u0026rsquo;exposition à du contenu potentiellement négatif. Modèles positifs : Cherchez de l\u0026rsquo;inspiration chez ceux qui surmontent l\u0026rsquo;adversité. Célébrez le succès des autres : Cultivez une communauté positive. Pratiques spirituelles : Engagez-vous dans des activités qui nourrissent votre âme. Cahier de gratitude : Notez chaque jour des moments de gratitude. Fixez-vous des attentes réalistes : Évitez de vous mettre en situation de stress inutile. Éduquez les autres : Encouragez un climat positif grâce à un partage de connaissances. Apprenez à dire \u0026ldquo;je suis désolé\u0026rdquo; : Désolé lorsque nécessaire et allez de l\u0026rsquo;avant. Établissez une routine : La prévisibilité peut offrir stabilité et réduire le stress. Manger consciemment : Savourez et appréciez vos repas pour une connexion positive. Auto-parole positive : Remplacez les pensées critiques par des affirmations positives. Apprenez à prioriser : Identifiez et concentrez-vous sur ce qui compte vraiment. Cultivez des loisirs : Suivez des activités qui apportent de la joie en dehors du travail. Exprimez votre créativité : Impliquez-vous dans des activités artistiques ou créatives pour vous exprimer. Écoute active : Favorisez une communication positive grâce à une écoute attentive. Fixez-vous des objectifs réalistes : Divisez de grands objectifs en étapes gérables et réalisables. Explorez de nouvelles perspectives : Considérez des points de vue alternatifs pour votre croissance personnelle. Célébrez les progrès : Reconnaissez et récompensez les réalisations progressives. Créez un système de soutien : Entourez-vous de personnes compréhensives et encourageantes. Modèle positif : Soyez une influence positive pour ceux qui vous entourent. Acceptez la solitude : Trouvez des moments de réflexion silencieuse pour la paix intérieure. Désintoxication numérique : Prenez des pauses des écrans pour réduire la surcharge d\u0026rsquo;information. Établissez une routine matinale : Commencez la journée avec des habitudes positives pour créer de la dynamique. Cultivez la résilience : Apprenez à rebondir des défis plus fort. Fixez-vous des limites personnelles claires : Communiquez vos limites aux autres pour qu\u0026rsquo;elles soient respectées. Apprenez à déléguer : Faites confiance aux autres pour des tâches afin de partager la charge de travail. Réfléchissez à vos réussites : Évaluez régulièrement et célébrez vos succès. Connectez-vous à la nature : Passez du temps à l\u0026rsquo;extérieur pour une rénovation mentale. Pratiquez des actes de bienveillance aléatoires : Répandez la positivité par de petits gestes. Investissez dans l\u0026rsquo;apprentissage : Acquérez continuellement de nouvelles connaissances pour votre développement personnel. Pratiquez la pleine conscience au travail : Intégrez de courtes exercices de pleine conscience dans votre journée de travail. Impliquez-vous dans une réflexion positive sur soi : Évaluez régulièrement votre croissance et vos améliorations personnelles. Établissez une règle du \u0026ldquo;pas de plainte\u0026rdquo; : Encouragez une culture positive en minimisant les plaintes. Développez une mentalité de croissance : Acceptez les défis comme des opportunités d\u0026rsquo;apprentissage et d\u0026rsquo;évolution. Créez un mantra positif : Développez une phrase qui vous motive et vous inspire. Établissez une routine matinale d\u0026rsquo;affirmations : Commencez votre journée avec des déclarations positives. Célébrez les petits succès : Reconnaissez et appréciez les accomplissements mineurs. Favorisez un environnement de travail positif : Contribuez à une culture de travail qui valorise la positivité. Déconnectez avant le coucher : Limitez l\u0026rsquo;utilisation des écrans pour améliorer la qualité du sommeil. Priorisez votre santé mentale : Vérifiez régulièrement votre bien-être émotionnel. Pratiquez le time-blocking : Affectez des créneaux spécifiques à différentes tâches pour améliorer votre concentration. Identifiez les relations toxiques : Minimisez les contacts avec des personnes qui apportent constamment de la négativité. Établissez un objectif d\u0026rsquo;apprentissage : Cherchez continuellement des opportunités pour élargir vos connaissances. Apprenez à lâcher prise : Lâchez les attaches aux résultats qui dépassent votre contrôle. Pratiquez la visualisation positive : Imaginez votre réussite de manière vivide. Créez une déclaration de mission personnelle : Définissez vos valeurs et votre but pour vous guider. Explorez régulièrement de nouveaux loisirs : Gardez la vie excitante avec des intérêts variés. Participez à des événements de réseautage : Connectez-vous à des personnes partageant vos intérêts. Établissez des limites numériques : Contrôlez l\u0026rsquo;utilisation de la technologie pour un meilleur équilibre vie-travail. Maintenez un espace de travail propre : Organisez votre environnement pour réduire le stress. Investissez dans le développement personnel : Participez à des ateliers ou des cours pour vous améliorer. Faites du bénévolat pour une cause : Contribuez à un impact positif dans votre communauté. Pratiquez des exercices de respiration profonde : Intégrez des moments de calme dans votre journée. Limitez les comparaisons : Concentrez-vous sur votre parcours sans comparer excessivement aux autres. Célébrez votre unicité : Acceptez votre individualité et vos forces. Établissez une politique du \u0026ldquo;pas de ragots\u0026rdquo; : Évitez de participer à des conversations négatives sur les autres. Créez une déclaration de vision : Définissez vos aspirations à long terme pour vous guider. Apprenez à négocier efficacement : Transformez les conflits en opportunités de gain mutuel. Évaluez régulièrement vos priorités : Assurez-vous que vos actions s\u0026rsquo;alignent avec vos valeurs fondamentales. Construisez une routine positive : Développez des habitudes qui contribuent à votre bien-être. Pratiquez la gratitude active : Exprimez verbalement votre appréciation aux autres régulièrement. Investissez dans des relations de qualité : Nourrissez des liens qui vous élèvent et vous soutiennent. Actualisez régulièrement vos objectifs : Ajustez vos aspirations au fur et à mesure que les circonstances évoluent. Établissez une curfew numérique : Limitez l\u0026rsquo;utilisation des appareils électroniques le soir pour un meilleur sommeil. Créez une playlist positive : Compilez de la musique qui améliore votre humeur. Investissez dans des activités de bien-être : Priorisez des activités qui rechargent votre énergie. Explorez de nouvelles cultures : Élargissez votre perspective par l\u0026rsquo;exposition à des expériences diverses. Cultivez une mentalité de croissance chez les autres : Encouragez ceux qui vous entourent à embrasser les défis. Développez une marque personnelle : Présentez-vous de manière à refléter vos qualités positives. Demandez des retours : Acceptez les critiques constructives comme un outil d\u0026rsquo;amélioration. Pratiquez la bienveillance envers soi-même : Traitez-vous avec bienveillance pendant les moments difficiles. Créez une liste de rituels positifs : Définissez des activités qui apportent joie et paix. Participez à des activités de cohésion d\u0026rsquo;équipe : Favorisez des relations positives dans les environnements professionnels. Fixez-vous des objectifs intentionnels chaque jour : Définissez des réalisations spécifiques à viser. Explorez des techniques de relaxation : Intégrez des méthodes comme la méditation ou la respiration profonde. Lisez des œuvres motivantes : Trouvez de l\u0026rsquo;inspiration dans des livres, des articles ou des citations. Rejoignez un groupe communautaire : Connectez-vous à d\u0026rsquo;autres partageant des intérêts similaires. Pratiquez le pardon envers vous-même : Lâchez les erreurs personnelles et allez de l\u0026rsquo;avant. Établissez un pot de gratitude : Notez chaque jour des moments de gratitude pour y réfléchir. Acceptez les défis comme des opportunités : Changez votre perspective sur les difficultés. Investissez dans un sommeil de qualité : Priorisez une routine de sommeil régulière et reposante. Créez une planche de mission personnelle : Visualisez vos objectifs et aspirations. Communication consciente : Choisissez vos mots consciemment pour promouvoir une discussion positive. Développez une routine matinale : Commencez votre journée avec des activités positives et intentionnelles. Participez à des événements de développement personnel : Engagez-vous dans des ateliers ou des séminaires pour croître. Pratiquez l\u0026rsquo;intelligence émotionnelle : Comprenez et gérez vos émotions efficacement. Établissez un plan financier : Réduisez le stress en organisant et en gérant vos finances. Apprenez à déléguer à la maison : Partagez les responsabilités pour une vie familiale équilibrée. Explorez des thérapies alternatives : Considérez des pratiques comme le yoga ou la méditation pour un bien-être holistique. Créez un défi de croissance personnelle : Fixez des défis mensuels pour améliorer différents aspects de votre vie. Célébrez l\u0026rsquo;unicité des autres : Apprécierez la diversité et les forces individuelles. Organisez un club de lecture positif : Discutez de littérature inspirante avec des personnes partageant vos intérêts. Apprenez une nouvelle compétence : Stimulez votre esprit avec un apprentissage continu. Pratiquez la règle 5 à 1 : Ayez cinq interactions positives pour chaque interaction négative. Rejoignez un groupe de loisirs : Connectez-vous à des personnes partageant vos intérêts. Établissez une routine de sommeil régulière : Priorisez la cohérence dans vos habitudes de sommeil. Cultivez un rituel du matin : Engagez-vous dans des activités qui fixent une tonalité positive pour la journée. Créez un journal de positivité : Notez des moments édifiants et des réussites. Acceptez l\u0026rsquo;inconfort : Voyez les défis comme des opportunités de croissance personnelle. Apprenez à négocier avec élégance : Résolvez les conflits avec tact et diplomatie. Pratiquez la réflexion sur le temps : Évaluez régulièrement la manière dont vous utilisez votre temps. Favorisez une mentalité de croissance chez les autres : Encouragez vos collègues ou amis à embrasser l\u0026rsquo;apprentissage. Cherchez un mentor : Apprenez des personnes expérimentées dans votre domaine. Limitez le multitâche : Concentrez-vous sur une tâche à la fois pour une meilleure efficacité. Établissez un examen hebdomadaire : Réfléchissez régulièrement à vos réussites et à vos domaines d\u0026rsquo;amélioration. Créez une liste de mots positifs : Compilez des mots inspirants pour des affirmations quotidiennes. Établissez des limites avec la technologie : Définissez des moments spécifiques d\u0026rsquo;utilisation du téléphone et de l\u0026rsquo;email. Explorez des pratiques de bien-être holistique : Intégrez des activités qui traitent la santé mentale, physique et émotionnelle. Pratiquez une communication positive : Projetez la confiance et l\u0026rsquo;ouverture dans vos interactions. Investissez dans l\u0026rsquo;éducation financière : Améliorez votre littératie financière pour une meilleure gestion de l\u0026rsquo;argent. Participez à des services communautaires : Contribuez à votre communauté pour un sentiment de but. Fixez-vous des intentions pour la journée : Définissez des intentions positives spécifiques chaque matin. Établissez un conseil personnel : Cherchez des conseils auprès de mentors et amis de confiance. Pratiquez la réflexion sur soi : Évaluez régulièrement vos pensées, émotions et actions. Pratiquez la thérapie de l\u0026rsquo;humour : Entourez-vous de l\u0026rsquo;humour et de la joie. Fixez-vous des attentes réalistes pour les autres : Évitez de mettre une pression excessive sur ceux qui vous entourent. Créez une routine d\u0026rsquo;amour-propre : Consacrez du temps à des activités qui favorisent la bienveillance envers soi-même. Pratiquez la non-jugement : Évitez de juger durement vous-même et les autres. Cultivez une présence en ligne positive : Partagez du contenu inspirant sur les réseaux sociaux. Explorez des opportunités bénévoles : Offrez votre temps et vos compétences à des causes qui vous tiennent à cœur. Actualisez régulièrement vos objectifs : Assurez-vous que vos aspirations s\u0026rsquo;alignent avec vos priorités en évolution. Célébrez la diversité : Apprécierez et apprenez de différentes perspectives et origines. Établissez un rituel de réflexion : Dédiez du temps chaque jour à l\u0026rsquo;introspection. Encouragez les autres : Offrez soutien et motivation à ceux qui vous entourent. Pratiquez l\u0026rsquo;empathie dans la communication : Comprenez et validez les perspectives des autres. Apprenez des revers : Extrayez des leçons et appliquez-les à de futurs projets. Favorisez une compétition positive : Encouragez une compétition saine pour une croissance mutuelle. Créez un espace de travail positif : Personnalisez votre environnement pour inspirer productivité et bien-être. Pratiquez la discipline : Cultivez des habitudes qui contribuent à vos objectifs à long terme. Établissez un réseau d\u0026rsquo;apprentissage : Connectez-vous avec des personnes partageant vos intérêts professionnels. Engagez-vous dans des activités de stimulation cérébrale : Stimulez votre fonction cognitive avec des puzzles ou jeux. Construisez un kit de résilience : Rassemblez des stratégies pour faire face efficacement aux défis. Intégrez l\u0026rsquo;aromathérapie : Utilisez des parfums comme la lavande pour la relaxation et la positivité. Pratiquez un cadre temporel positif : Concentrez-vous sur le présent et l\u0026rsquo;avenir plutôt que sur le passé. Rejoignez un groupe de réflexion : Colaborez avec des personnes partageant vos objectifs pour une croissance mutuelle. Participez à un programme de mentorat : Offrez des conseils à d\u0026rsquo;autres tout en apprenant des mentors expérimentés. Créez un journal de croissance personnelle : Documentez votre parcours vers l\u0026rsquo;amélioration de soi. Explorez des applications de pleine conscience : Utilisez la technologie pour des méditations guidées et une réduction du stress. Organisez un cercle de gratitude : Partagez des moments de reconnaissance avec des amis ou votre famille. Pratiquez la règle \u0026ldquo;un en, un hors\u0026rdquo; : Désencombrez régulièrement pour maintenir un espace positif. Créez une déclaration de vision pour vos relations : Définissez le type de relations que vous aspirez à avoir. Explorez la thérapie naturelle : Passez du temps à l\u0026rsquo;extérieur pour une rénovation mentale et émotionnelle. Investissez dans une marque personnelle : Cultivez une image positive et authentique. Établissez un plan de bien-être financier : Alignez vos habitudes de dépenses avec vos objectifs financiers à long terme. Pratiquez la méditation du pardon : Libérez la négativité à travers des exercices guidés de pardon. Créez une planche de vision bien-être : Visualisez un mode de vie équilibré et sain. Engagez-vous dans des exercices de visualisation positive : Imaginez atteindre vos objectifs de manière vivide. Explorez des expériences virtuelles : Connectez-vous à des communautés en ligne et événements inspirants. Établissez un défi de croissance personnelle : Fixez des objectifs mensuels pour votre amélioration. Organisez une boucle de retour positif : Encouragez une culture de retours constructifs dans vos cercles. Pratiquez la technique Pomodoro : Améliorez votre productivité avec des intervalles de travail concentrés. Établissez une zone \u0026ldquo;sans technologie\u0026rdquo; : Dédiez des espaces spécifiques sans appareils électroniques. Pratiquez une clarté décisionnelle : Prenez des décisions alignées avec vos valeurs et objectifs. Créez une playlist d\u0026rsquo;amour-propre : Compilez de la musique qui renforce votre estime de soi et votre positivité. Construisez un plan de légende : Définissez l\u0026rsquo;impact positif que vous souhaitez laisser sur le monde. ","permalink":"https://www.shafiq.in/fr/blog/list-of-ways-to-eliminate-negativity-from-personal-and-professional-life/","summary":"\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eConscience de soi :\u003c/strong\u003e Reconnaissez les pensées et émotions négatives.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eMentalité positive :\u003c/strong\u003e Cultivez l\u0026rsquo;optimisme et concentrez-vous sur les solutions.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratique de la gratitude :\u003c/strong\u003e Reconnaissez et appréciez les aspects positifs de la vie.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePrésence d\u0026rsquo;esprit :\u003c/strong\u003e Restez dans le moment présent, en réduisant les pensées négatives.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eLimites saines :\u003c/strong\u003e Établissez et maintenez des limites dans les relations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRésolution des conflits :\u003c/strong\u003e Abordez les problèmes calmement et cherchez des solutions.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEntourez-vous de positivité :\u003c/strong\u003e Choisissez des environnements inspirants.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRéduisez l\u0026rsquo;exposition à la négativité :\u003c/strong\u003e Minimisez l\u0026rsquo;exposition aux médias ou personnes négatives.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixez-vous des objectifs :\u003c/strong\u003e Concentrez-vous sur vos aspirations personnelles et professionnelles.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCélébrez vos succès :\u003c/strong\u003e Reconnaissez vos accomplissements, grands ou petits.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eApprenez des échecs :\u003c/strong\u003e Retirez des leçons et grandissez à partir des revers.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAffirmations positives :\u003c/strong\u003e Répétez des déclarations affirmatives quotidiennement.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eActivité physique :\u003c/strong\u003e L\u0026rsquo;exercice régulier améliore l\u0026rsquo;humeur et réduit le stress.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eMode de vie sain :\u003c/strong\u003e Priorisez le sommeil, la nutrition et les soins de soi.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eConnectez-vous socialement :\u003c/strong\u003e Établissez des relations soutenantes avec des personnes positives.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDéveloppement professionnel :\u003c/strong\u003e Améliorez vos compétences et connaissances.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGestion efficace du temps :\u003c/strong\u003e Réduisez le stress en priorisant les tâches.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDéléguer des tâches :\u003c/strong\u003e Partagez les responsabilités pour éviter l\u0026rsquo;overwhelm.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eMentalité orientée vers la solution :\u003c/strong\u003e Abordez les défis avec une mentalité tournée vers la résolution.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eApprenez à dire non :\u003c/strong\u003e Fixez des limites pour éviter le sur-engagement.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePrenez des pauses régulières :\u003c/strong\u003e Prenez de courtes pauses pour vous rafraîchir et vous recentrer.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eLoisirs :\u003c/strong\u003e Impliquez-vous dans des activités qui apportent joie et accomplissement.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTravail bénévole :\u003c/strong\u003e Aider les autres peut procurer un sentiment de but.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eLimitez le perfectionnisme :\u003c/strong\u003e Acceptez les imperfections et apprenez des erreurs.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCommunication positive :\u003c/strong\u003e Utilisez un langage constructif dans vos interactions.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRéflexion régulière :\u003c/strong\u003e Évaluez et ajustez vos attitudes et comportements.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePardonner :\u003c/strong\u003e Lâchez les rancunes et la rancœur.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eApprentissage continu :\u003c/strong\u003e Restez curieux et ouvert d\u0026rsquo;esprit.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eValeurs personnelles :\u003c/strong\u003e Alignez vos actions avec vos valeurs fondamentales pour un accomplissement.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eConsultez un professionnel si nécessaire :\u003c/strong\u003e Consultez un conseiller ou un thérapeute pour soutien.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eVisualisez le succès :\u003c/strong\u003e Imaginez des résultats positifs pour stimuler votre motivation.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHumour :\u003c/strong\u003e Trouvez de la joie dans les situations quotidiennes pour alléger l\u0026rsquo;humeur.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDésencombrez :\u003c/strong\u003e Organisez vos espaces physiques et numériques pour plus de clarté.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉduquez-vous :\u003c/strong\u003e Comprenez l\u0026rsquo;impact de la négativité sur le bien-être.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEmpathie :\u003c/strong\u003e Mettez-vous à la place des autres pour favoriser la compréhension.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eLimitez les plaintes :\u003c/strong\u003e Minimisez les déboulés et concentrez-vous sur les solutions plutôt que sur les plaintes.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eModèles positifs :\u003c/strong\u003e Entourez-vous de personnes inspirantes.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eExprimez votre gratitude :\u003c/strong\u003e Partagez votre appréciation régulièrement avec les autres.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAcceptez le changement :\u003c/strong\u003e Voyez les défis comme des opportunités de croissance.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCahier de réflexion :\u003c/strong\u003e Écrivez vos pensées et émotions pour une auto-réflexion.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCréez une planche de vision :\u003c/strong\u003e Visualisez vos objectifs et aspirations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiquez le pardon :\u003c/strong\u003e Lâchez la rancœur pour une paix intérieure.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eLimites saines :\u003c/strong\u003e Communiquez clairement vos attentes dans les relations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eApprenez à vous détacher :\u003c/strong\u003e Évitez de vous absorber excessivement dans des situations négatives.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRespiration consciente :\u003c/strong\u003e Pratiquez des respirations profondes et intentionnelles pour vous détendre.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eLimitez les réseaux sociaux :\u003c/strong\u003e Contrôlez l\u0026rsquo;exposition à du contenu potentiellement négatif.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eModèles positifs :\u003c/strong\u003e Cherchez de l\u0026rsquo;inspiration chez ceux qui surmontent l\u0026rsquo;adversité.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCélébrez le succès des autres :\u003c/strong\u003e Cultivez une communauté positive.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiques spirituelles :\u003c/strong\u003e Engagez-vous dans des activités qui nourrissent votre âme.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCahier de gratitude :\u003c/strong\u003e Notez chaque jour des moments de gratitude.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixez-vous des attentes réalistes :\u003c/strong\u003e Évitez de vous mettre en situation de stress inutile.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉduquez les autres :\u003c/strong\u003e Encouragez un climat positif grâce à un partage de connaissances.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eApprenez à dire \u0026ldquo;je suis désolé\u0026rdquo; :\u003c/strong\u003e Désolé lorsque nécessaire et allez de l\u0026rsquo;avant.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉtablissez une routine :\u003c/strong\u003e La prévisibilité peut offrir stabilité et réduire le stress.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eManger consciemment :\u003c/strong\u003e Savourez et appréciez vos repas pour une connexion positive.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAuto-parole positive :\u003c/strong\u003e Remplacez les pensées critiques par des affirmations positives.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eApprenez à prioriser :\u003c/strong\u003e Identifiez et concentrez-vous sur ce qui compte vraiment.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCultivez des loisirs :\u003c/strong\u003e Suivez des activités qui apportent de la joie en dehors du travail.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eExprimez votre créativité :\u003c/strong\u003e Impliquez-vous dans des activités artistiques ou créatives pour vous exprimer.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉcoute active :\u003c/strong\u003e Favorisez une communication positive grâce à une écoute attentive.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixez-vous des objectifs réalistes :\u003c/strong\u003e Divisez de grands objectifs en étapes gérables et réalisables.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eExplorez de nouvelles perspectives :\u003c/strong\u003e Considérez des points de vue alternatifs pour votre croissance personnelle.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCélébrez les progrès :\u003c/strong\u003e Reconnaissez et récompensez les réalisations progressives.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCréez un système de soutien :\u003c/strong\u003e Entourez-vous de personnes compréhensives et encourageantes.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eModèle positif :\u003c/strong\u003e Soyez une influence positive pour ceux qui vous entourent.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAcceptez la solitude :\u003c/strong\u003e Trouvez des moments de réflexion silencieuse pour la paix intérieure.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDésintoxication numérique :\u003c/strong\u003e Prenez des pauses des écrans pour réduire la surcharge d\u0026rsquo;information.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉtablissez une routine matinale :\u003c/strong\u003e Commencez la journée avec des habitudes positives pour créer de la dynamique.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCultivez la résilience :\u003c/strong\u003e Apprenez à rebondir des défis plus fort.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixez-vous des limites personnelles claires :\u003c/strong\u003e Communiquez vos limites aux autres pour qu\u0026rsquo;elles soient respectées.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eApprenez à déléguer :\u003c/strong\u003e Faites confiance aux autres pour des tâches afin de partager la charge de travail.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRéfléchissez à vos réussites :\u003c/strong\u003e Évaluez régulièrement et célébrez vos succès.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eConnectez-vous à la nature :\u003c/strong\u003e Passez du temps à l\u0026rsquo;extérieur pour une rénovation mentale.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiquez des actes de bienveillance aléatoires :\u003c/strong\u003e Répandez la positivité par de petits gestes.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eInvestissez dans l\u0026rsquo;apprentissage :\u003c/strong\u003e Acquérez continuellement de nouvelles connaissances pour votre développement personnel.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiquez la pleine conscience au travail :\u003c/strong\u003e Intégrez de courtes exercices de pleine conscience dans votre journée de travail.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eImpliquez-vous dans une réflexion positive sur soi :\u003c/strong\u003e Évaluez régulièrement votre croissance et vos améliorations personnelles.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉtablissez une règle du \u0026ldquo;pas de plainte\u0026rdquo; :\u003c/strong\u003e Encouragez une culture positive en minimisant les plaintes.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDéveloppez une mentalité de croissance :\u003c/strong\u003e Acceptez les défis comme des opportunités d\u0026rsquo;apprentissage et d\u0026rsquo;évolution.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCréez un mantra positif :\u003c/strong\u003e Développez une phrase qui vous motive et vous inspire.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉtablissez une routine matinale d\u0026rsquo;affirmations :\u003c/strong\u003e Commencez votre journée avec des déclarations positives.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCélébrez les petits succès :\u003c/strong\u003e Reconnaissez et appréciez les accomplissements mineurs.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFavorisez un environnement de travail positif :\u003c/strong\u003e Contribuez à une culture de travail qui valorise la positivité.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDéconnectez avant le coucher :\u003c/strong\u003e Limitez l\u0026rsquo;utilisation des écrans pour améliorer la qualité du sommeil.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePriorisez votre santé mentale :\u003c/strong\u003e Vérifiez régulièrement votre bien-être émotionnel.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiquez le time-blocking :\u003c/strong\u003e Affectez des créneaux spécifiques à différentes tâches pour améliorer votre concentration.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIdentifiez les relations toxiques :\u003c/strong\u003e Minimisez les contacts avec des personnes qui apportent constamment de la négativité.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉtablissez un objectif d\u0026rsquo;apprentissage :\u003c/strong\u003e Cherchez continuellement des opportunités pour élargir vos connaissances.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eApprenez à lâcher prise :\u003c/strong\u003e Lâchez les attaches aux résultats qui dépassent votre contrôle.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiquez la visualisation positive :\u003c/strong\u003e Imaginez votre réussite de manière vivide.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCréez une déclaration de mission personnelle :\u003c/strong\u003e Définissez vos valeurs et votre but pour vous guider.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eExplorez régulièrement de nouveaux loisirs :\u003c/strong\u003e Gardez la vie excitante avec des intérêts variés.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eParticipez à des événements de réseautage :\u003c/strong\u003e Connectez-vous à des personnes partageant vos intérêts.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉtablissez des limites numériques :\u003c/strong\u003e Contrôlez l\u0026rsquo;utilisation de la technologie pour un meilleur équilibre vie-travail.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eMaintenez un espace de travail propre :\u003c/strong\u003e Organisez votre environnement pour réduire le stress.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eInvestissez dans le développement personnel :\u003c/strong\u003e Participez à des ateliers ou des cours pour vous améliorer.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFaites du bénévolat pour une cause :\u003c/strong\u003e Contribuez à un impact positif dans votre communauté.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiquez des exercices de respiration profonde :\u003c/strong\u003e Intégrez des moments de calme dans votre journée.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eLimitez les comparaisons :\u003c/strong\u003e Concentrez-vous sur votre parcours sans comparer excessivement aux autres.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCélébrez votre unicité :\u003c/strong\u003e Acceptez votre individualité et vos forces.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉtablissez une politique du \u0026ldquo;pas de ragots\u0026rdquo; :\u003c/strong\u003e Évitez de participer à des conversations négatives sur les autres.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCréez une déclaration de vision :\u003c/strong\u003e Définissez vos aspirations à long terme pour vous guider.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eApprenez à négocier efficacement :\u003c/strong\u003e Transformez les conflits en opportunités de gain mutuel.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉvaluez régulièrement vos priorités :\u003c/strong\u003e Assurez-vous que vos actions s\u0026rsquo;alignent avec vos valeurs fondamentales.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eConstruisez une routine positive :\u003c/strong\u003e Développez des habitudes qui contribuent à votre bien-être.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiquez la gratitude active :\u003c/strong\u003e Exprimez verbalement votre appréciation aux autres régulièrement.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eInvestissez dans des relations de qualité :\u003c/strong\u003e Nourrissez des liens qui vous élèvent et vous soutiennent.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eActualisez régulièrement vos objectifs :\u003c/strong\u003e Ajustez vos aspirations au fur et à mesure que les circonstances évoluent.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉtablissez une curfew numérique :\u003c/strong\u003e Limitez l\u0026rsquo;utilisation des appareils électroniques le soir pour un meilleur sommeil.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCréez une playlist positive :\u003c/strong\u003e Compilez de la musique qui améliore votre humeur.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eInvestissez dans des activités de bien-être :\u003c/strong\u003e Priorisez des activités qui rechargent votre énergie.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eExplorez de nouvelles cultures :\u003c/strong\u003e Élargissez votre perspective par l\u0026rsquo;exposition à des expériences diverses.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCultivez une mentalité de croissance chez les autres :\u003c/strong\u003e Encouragez ceux qui vous entourent à embrasser les défis.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDéveloppez une marque personnelle :\u003c/strong\u003e Présentez-vous de manière à refléter vos qualités positives.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDemandez des retours :\u003c/strong\u003e Acceptez les critiques constructives comme un outil d\u0026rsquo;amélioration.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiquez la bienveillance envers soi-même :\u003c/strong\u003e Traitez-vous avec bienveillance pendant les moments difficiles.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCréez une liste de rituels positifs :\u003c/strong\u003e Définissez des activités qui apportent joie et paix.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eParticipez à des activités de cohésion d\u0026rsquo;équipe :\u003c/strong\u003e Favorisez des relations positives dans les environnements professionnels.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixez-vous des objectifs intentionnels chaque jour :\u003c/strong\u003e Définissez des réalisations spécifiques à viser.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eExplorez des techniques de relaxation :\u003c/strong\u003e Intégrez des méthodes comme la méditation ou la respiration profonde.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eLisez des œuvres motivantes :\u003c/strong\u003e Trouvez de l\u0026rsquo;inspiration dans des livres, des articles ou des citations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRejoignez un groupe communautaire :\u003c/strong\u003e Connectez-vous à d\u0026rsquo;autres partageant des intérêts similaires.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiquez le pardon envers vous-même :\u003c/strong\u003e Lâchez les erreurs personnelles et allez de l\u0026rsquo;avant.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉtablissez un pot de gratitude :\u003c/strong\u003e Notez chaque jour des moments de gratitude pour y réfléchir.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAcceptez les défis comme des opportunités :\u003c/strong\u003e Changez votre perspective sur les difficultés.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eInvestissez dans un sommeil de qualité :\u003c/strong\u003e Priorisez une routine de sommeil régulière et reposante.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCréez une planche de mission personnelle :\u003c/strong\u003e Visualisez vos objectifs et aspirations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCommunication consciente :\u003c/strong\u003e Choisissez vos mots consciemment pour promouvoir une discussion positive.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDéveloppez une routine matinale :\u003c/strong\u003e Commencez votre journée avec des activités positives et intentionnelles.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eParticipez à des événements de développement personnel :\u003c/strong\u003e Engagez-vous dans des ateliers ou des séminaires pour croître.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiquez l\u0026rsquo;intelligence émotionnelle :\u003c/strong\u003e Comprenez et gérez vos émotions efficacement.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉtablissez un plan financier :\u003c/strong\u003e Réduisez le stress en organisant et en gérant vos finances.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eApprenez à déléguer à la maison :\u003c/strong\u003e Partagez les responsabilités pour une vie familiale équilibrée.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eExplorez des thérapies alternatives :\u003c/strong\u003e Considérez des pratiques comme le yoga ou la méditation pour un bien-être holistique.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCréez un défi de croissance personnelle :\u003c/strong\u003e Fixez des défis mensuels pour améliorer différents aspects de votre vie.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCélébrez l\u0026rsquo;unicité des autres :\u003c/strong\u003e Apprécierez la diversité et les forces individuelles.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eOrganisez un club de lecture positif :\u003c/strong\u003e Discutez de littérature inspirante avec des personnes partageant vos intérêts.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eApprenez une nouvelle compétence :\u003c/strong\u003e Stimulez votre esprit avec un apprentissage continu.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiquez la règle 5 à 1 :\u003c/strong\u003e Ayez cinq interactions positives pour chaque interaction négative.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRejoignez un groupe de loisirs :\u003c/strong\u003e Connectez-vous à des personnes partageant vos intérêts.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉtablissez une routine de sommeil régulière :\u003c/strong\u003e Priorisez la cohérence dans vos habitudes de sommeil.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCultivez un rituel du matin :\u003c/strong\u003e Engagez-vous dans des activités qui fixent une tonalité positive pour la journée.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCréez un journal de positivité :\u003c/strong\u003e Notez des moments édifiants et des réussites.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eAcceptez l\u0026rsquo;inconfort :\u003c/strong\u003e Voyez les défis comme des opportunités de croissance personnelle.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eApprenez à négocier avec élégance :\u003c/strong\u003e Résolvez les conflits avec tact et diplomatie.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiquez la réflexion sur le temps :\u003c/strong\u003e Évaluez régulièrement la manière dont vous utilisez votre temps.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFavorisez une mentalité de croissance chez les autres :\u003c/strong\u003e Encouragez vos collègues ou amis à embrasser l\u0026rsquo;apprentissage.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCherchez un mentor :\u003c/strong\u003e Apprenez des personnes expérimentées dans votre domaine.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eLimitez le multitâche :\u003c/strong\u003e Concentrez-vous sur une tâche à la fois pour une meilleure efficacité.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉtablissez un examen hebdomadaire :\u003c/strong\u003e Réfléchissez régulièrement à vos réussites et à vos domaines d\u0026rsquo;amélioration.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCréez une liste de mots positifs :\u003c/strong\u003e Compilez des mots inspirants pour des affirmations quotidiennes.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉtablissez des limites avec la technologie :\u003c/strong\u003e Définissez des moments spécifiques d\u0026rsquo;utilisation du téléphone et de l\u0026rsquo;email.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eExplorez des pratiques de bien-être holistique :\u003c/strong\u003e Intégrez des activités qui traitent la santé mentale, physique et émotionnelle.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiquez une communication positive :\u003c/strong\u003e Projetez la confiance et l\u0026rsquo;ouverture dans vos interactions.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eInvestissez dans l\u0026rsquo;éducation financière :\u003c/strong\u003e Améliorez votre littératie financière pour une meilleure gestion de l\u0026rsquo;argent.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eParticipez à des services communautaires :\u003c/strong\u003e Contribuez à votre communauté pour un sentiment de but.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixez-vous des intentions pour la journée :\u003c/strong\u003e Définissez des intentions positives spécifiques chaque matin.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉtablissez un conseil personnel :\u003c/strong\u003e Cherchez des conseils auprès de mentors et amis de confiance.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiquez la réflexion sur soi :\u003c/strong\u003e Évaluez régulièrement vos pensées, émotions et actions.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiquez la thérapie de l\u0026rsquo;humour :\u003c/strong\u003e Entourez-vous de l\u0026rsquo;humour et de la joie.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFixez-vous des attentes réalistes pour les autres :\u003c/strong\u003e Évitez de mettre une pression excessive sur ceux qui vous entourent.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCréez une routine d\u0026rsquo;amour-propre :\u003c/strong\u003e Consacrez du temps à des activités qui favorisent la bienveillance envers soi-même.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiquez la non-jugement :\u003c/strong\u003e Évitez de juger durement vous-même et les autres.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCultivez une présence en ligne positive :\u003c/strong\u003e Partagez du contenu inspirant sur les réseaux sociaux.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eExplorez des opportunités bénévoles :\u003c/strong\u003e Offrez votre temps et vos compétences à des causes qui vous tiennent à cœur.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eActualisez régulièrement vos objectifs :\u003c/strong\u003e Assurez-vous que vos aspirations s\u0026rsquo;alignent avec vos priorités en évolution.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCélébrez la diversité :\u003c/strong\u003e Apprécierez et apprenez de différentes perspectives et origines.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉtablissez un rituel de réflexion :\u003c/strong\u003e Dédiez du temps chaque jour à l\u0026rsquo;introspection.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEncouragez les autres :\u003c/strong\u003e Offrez soutien et motivation à ceux qui vous entourent.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiquez l\u0026rsquo;empathie dans la communication :\u003c/strong\u003e Comprenez et validez les perspectives des autres.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eApprenez des revers :\u003c/strong\u003e Extrayez des leçons et appliquez-les à de futurs projets.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFavorisez une compétition positive :\u003c/strong\u003e Encouragez une compétition saine pour une croissance mutuelle.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCréez un espace de travail positif :\u003c/strong\u003e Personnalisez votre environnement pour inspirer productivité et bien-être.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiquez la discipline :\u003c/strong\u003e Cultivez des habitudes qui contribuent à vos objectifs à long terme.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉtablissez un réseau d\u0026rsquo;apprentissage :\u003c/strong\u003e Connectez-vous avec des personnes partageant vos intérêts professionnels.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEngagez-vous dans des activités de stimulation cérébrale :\u003c/strong\u003e Stimulez votre fonction cognitive avec des puzzles ou jeux.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eConstruisez un kit de résilience :\u003c/strong\u003e Rassemblez des stratégies pour faire face efficacement aux défis.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIntégrez l\u0026rsquo;aromathérapie :\u003c/strong\u003e Utilisez des parfums comme la lavande pour la relaxation et la positivité.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiquez un cadre temporel positif :\u003c/strong\u003e Concentrez-vous sur le présent et l\u0026rsquo;avenir plutôt que sur le passé.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRejoignez un groupe de réflexion :\u003c/strong\u003e Colaborez avec des personnes partageant vos objectifs pour une croissance mutuelle.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eParticipez à un programme de mentorat :\u003c/strong\u003e Offrez des conseils à d\u0026rsquo;autres tout en apprenant des mentors expérimentés.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCréez un journal de croissance personnelle :\u003c/strong\u003e Documentez votre parcours vers l\u0026rsquo;amélioration de soi.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eExplorez des applications de pleine conscience :\u003c/strong\u003e Utilisez la technologie pour des méditations guidées et une réduction du stress.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eOrganisez un cercle de gratitude :\u003c/strong\u003e Partagez des moments de reconnaissance avec des amis ou votre famille.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiquez la règle \u0026ldquo;un en, un hors\u0026rdquo; :\u003c/strong\u003e Désencombrez régulièrement pour maintenir un espace positif.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCréez une déclaration de vision pour vos relations :\u003c/strong\u003e Définissez le type de relations que vous aspirez à avoir.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eExplorez la thérapie naturelle :\u003c/strong\u003e Passez du temps à l\u0026rsquo;extérieur pour une rénovation mentale et émotionnelle.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eInvestissez dans une marque personnelle :\u003c/strong\u003e Cultivez une image positive et authentique.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉtablissez un plan de bien-être financier :\u003c/strong\u003e Alignez vos habitudes de dépenses avec vos objectifs financiers à long terme.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiquez la méditation du pardon :\u003c/strong\u003e Libérez la négativité à travers des exercices guidés de pardon.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCréez une planche de vision bien-être :\u003c/strong\u003e Visualisez un mode de vie équilibré et sain.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEngagez-vous dans des exercices de visualisation positive :\u003c/strong\u003e Imaginez atteindre vos objectifs de manière vivide.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eExplorez des expériences virtuelles :\u003c/strong\u003e Connectez-vous à des communautés en ligne et événements inspirants.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉtablissez un défi de croissance personnelle :\u003c/strong\u003e Fixez des objectifs mensuels pour votre amélioration.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eOrganisez une boucle de retour positif :\u003c/strong\u003e Encouragez une culture de retours constructifs dans vos cercles.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiquez la technique Pomodoro :\u003c/strong\u003e Améliorez votre productivité avec des intervalles de travail concentrés.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eÉtablissez une zone \u0026ldquo;sans technologie\u0026rdquo; :\u003c/strong\u003e Dédiez des espaces spécifiques sans appareils électroniques.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePratiquez une clarté décisionnelle :\u003c/strong\u003e Prenez des décisions alignées avec vos valeurs et objectifs.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCréez une playlist d\u0026rsquo;amour-propre :\u003c/strong\u003e Compilez de la musique qui renforce votre estime de soi et votre positivité.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eConstruisez un plan de légende :\u003c/strong\u003e Définissez l\u0026rsquo;impact positif que vous souhaitez laisser sur le monde.\u003c/li\u003e\n\u003c/ol\u003e","title":"List of ways to eliminate negativity from personal and professional life"},{"content":" Comprendre les conditions du marché :\nÉtudier les tendances générales du marché, comme savoir s’il est haussier, baissier ou neutre. Analyser toute actualité ou événement significatif affectant le marché. Définir votre stratégie de trading :\nDécider de votre style de trading (par exemple, scalping, trading par momentum ou trading par breakout). Déterminer votre tolérance au risque et vos objectifs de profit pour chaque opération. Filtrage des actions potentielles :\nUtiliser des outils de screening d’actions ou des plateformes de trading pour filtrer les actions selon des critères tels que la volatilité, le volume et les mouvements de prix. Rechercher des actions à forte liquidité pour assurer une entrée et une sortie faciles. Analyse technique :\nAnalyser les graphiques des cours à l’aide d’indicateurs techniques tels que les moyennes mobiles, l’RSI (Relative Strength Index), le MACD (Moving Average Convergence Divergence) et les bandes de Bollinger. Identifier des motifs comme les triangles, les drapeaux ou les formations « tête et épaules ». Analyse fondamentale :\nÉvaluer la santé fondamentale de l’entreprise, notamment les rapports d’exploitation, la croissance du chiffre d’affaires et l’orientation du secteur. Prendre en compte des facteurs comme les actualités liées à l’entreprise, les surprises aux résultats ou les notations des analystes. Gestion des risques :\nDéfinir des ordres de stop-loss pour limiter les pertes potentielles sur chaque opération. Calculer la taille des positions en fonction de votre tolérance au risque et de la volatilité de l’action. Tester votre stratégie :\nRéaliser un backtest de votre stratégie de trading à l’aide de données historiques afin d’évaluer son efficacité. Trader en simulation ou utiliser un compte démo pour pratiquer l’exécution des opérations sans risquer d’argent réel. Restez informé :\nSuivre l’actualité du marché, les indicateurs économiques et les annonces des entreprises susceptibles d’influencer vos actions choisies. Surveiller les plateformes de réseaux sociaux et les sites d’information financière pour des mises à jour en temps réel et une analyse de sentiment. Exécuter vos opérations :\nEntrer et sortir des opérations selon votre stratégie prédéfinie et le moment choisi. Utiliser des ordres limités pour vous assurer d’obtenir le prix souhaité pour vos opérations. Revoir et apprendre :\nAprès chaque session de trading, examiner vos opérations pour identifier vos forces et vos faiblesses. Tirer des enseignements des opérations réussies comme des échecs pour affiner votre stratégie au fil du temps. ","permalink":"https://www.shafiq.in/fr/blog/how-to-pick-a-stock-for-day-trading/","summary":"\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eComprendre les conditions du marché :\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eÉtudier les tendances générales du marché, comme savoir s’il est haussier, baissier ou neutre.\u003c/li\u003e\n\u003cli\u003eAnalyser toute actualité ou événement significatif affectant le marché.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eDéfinir votre stratégie de trading :\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDécider de votre style de trading (par exemple, scalping, trading par momentum ou trading par breakout).\u003c/li\u003e\n\u003cli\u003eDéterminer votre tolérance au risque et vos objectifs de profit pour chaque opération.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eFiltrage des actions potentielles :\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUtiliser des outils de screening d’actions ou des plateformes de trading pour filtrer les actions selon des critères tels que la volatilité, le volume et les mouvements de prix.\u003c/li\u003e\n\u003cli\u003eRechercher des actions à forte liquidité pour assurer une entrée et une sortie faciles.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eAnalyse technique :\u003c/strong\u003e\u003c/p\u003e","title":"How to pick a stock for day trading"},{"content":" Scalping :\nConsiste à réaliser de nombreuses petites opérations tout au long de la journée, en visant à tirer profit de petites variations de prix. Les positions sont généralement détenues pendant une très courte période, souvent quelques secondes à quelques minutes. Day Trading :\nAchat et vente d\u0026rsquo;instruments financiers au sein d\u0026rsquo;une même journée de trading. Les positions sont généralement clôturées avant la fermeture du marché afin d\u0026rsquo;éviter une exposition nocturne. Swing Trading :\nConsiste à détenir des positions pendant plusieurs jours à plusieurs semaines, en profitant des mouvements de prix à court à moyen terme. Les traders cherchent à capturer les « oscillations » ou les fluctuations des tendances de prix. Momentum Trading :\nSe concentre sur l\u0026rsquo;achat ou la vente d\u0026rsquo;actifs présentant des mouvements de prix forts vers le haut ou vers le bas. Les traders cherchent à profiter de la dynamique du marché ou d\u0026rsquo;un action spécifique. Breakout Trading :\nConsiste à entrer en position lorsque le prix franchit un niveau significatif de soutien ou de résistance. Les traders cherchent à tirer profit du potentiel de mouvements brusques de prix suivant le franchissement. Contrarian Trading :\nConsiste à prendre des positions à l\u0026rsquo;opposé de l\u0026rsquo;orientation générale du marché. Les traders contrariants pensent que les marchés ont tendance à réagir de manière excessive aux nouvelles, et que les prix reviendront finalement à leur moyenne. Position Trading :\nAdopte une approche à long terme, avec des positions détenues pendant des semaines, des mois, voire des années. Les traders se concentrent sur l\u0026rsquo;analyse fondamentale et les tendances macroéconomiques pour identifier des opportunités. Trading Algorithmique :\nUtilise des algorithmes informatiques pour exécuter automatiquement des opérations selon des critères prédéfinis. Les algorithmes peuvent analyser de grandes quantités de données et exécuter des trades à grande vitesse. Trading par Motifs :\nConsiste à identifier et à trader des motifs spécifiques sur les graphiques, tels que les triangles, les drapeaux ou les formations en tête et épaules. Les traders utilisent l\u0026rsquo;analyse technique pour repérer ces motifs et prédire les mouvements futurs de prix. Trading à Haute Fréquence (HFT) :\nUtilise des algorithmes sophistiqués et des connexions de données à très haute vitesse pour exécuter un grand nombre d\u0026rsquo;opérations en fractions de seconde. Les entreprises de HFT tirent profit des petites disparités de prix et des opportunités d\u0026rsquo;arbitrage. Chaque style de trading présente ses propres avantages et défis, et les traders choisissent généralement celui qui correspond le mieux à leur tolérance au risque, à leur horizon temporel et à leur expertise du marché.\n","permalink":"https://www.shafiq.in/fr/blog/day-trading-styles/","summary":"\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eScalping :\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eConsiste à réaliser de nombreuses petites opérations tout au long de la journée, en visant à tirer profit de petites variations de prix.\u003c/li\u003e\n\u003cli\u003eLes positions sont généralement détenues pendant une très courte période, souvent quelques secondes à quelques minutes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eDay Trading :\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAchat et vente d\u0026rsquo;instruments financiers au sein d\u0026rsquo;une même journée de trading.\u003c/li\u003e\n\u003cli\u003eLes positions sont généralement clôturées avant la fermeture du marché afin d\u0026rsquo;éviter une exposition nocturne.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eSwing Trading :\u003c/strong\u003e\u003c/p\u003e","title":"Day Trading Styles"},{"content":"Si vous souhaitez éteindre une machine virtuelle en cours d\u0026rsquo;exécution sur un environnement virtuel Proxmox (PVE), vous pouvez utiliser l\u0026rsquo;interface en ligne de commande (CLI) de Proxmox pour accomplir cette tâche de manière efficace. La commande pour éteindre une machine virtuelle sous Proxmox est qm shutdown, suivie de l\u0026rsquo;identifiant de la machine virtuelle que vous souhaitez éteindre. Voici la procédure à suivre :\nAccéder au serveur : Connectez-vous d\u0026rsquo;abord à votre serveur Proxmox via SSH.\nssh username@your-proxmox-server-ip Trouver l\u0026rsquo;ID de la VM : Si vous ne connaissez pas l\u0026rsquo;ID de la VM, vous pouvez lister toutes les machines virtuelles en exécutant la commande suivante :\nqm list Cette commande affiche une liste des machines virtuelles avec leurs identifiants et leurs états.\nÉteindre la VM : Une fois que vous avez l\u0026rsquo;identifiant de la VM, utilisez la commande suivante pour éteindre la machine virtuelle de manière propre :\nqm shutdown VM_ID Remplacez VM_ID par l\u0026rsquo;identifiant de la machine virtuelle que vous souhaitez éteindre. Par exemple, si l\u0026rsquo;identifiant de votre VM est 101, la commande serait :\nqm shutdown 101 Notez que qm shutdown tente d\u0026rsquo;éteindre la VM de manière propre, ce qui signifie qu\u0026rsquo;il envoie un signal de shutdown ACPI au système d\u0026rsquo;exploitation. Si la VM ne répond pas à ce signal, elle ne sera pas forcément éteinte. Si vous devez forcer l\u0026rsquo;extinction, vous pouvez utiliser qm stop VM_ID, bien que cette opération revienne à retirer la prise électrique et devrait être utilisée uniquement en dernier recours.\n","permalink":"https://www.shafiq.in/fr/blog/shutdown-proxmox-vm-using-cli/","summary":"\u003cp\u003eSi vous souhaitez éteindre une machine virtuelle en cours d\u0026rsquo;exécution sur un environnement virtuel Proxmox (PVE), vous pouvez utiliser l\u0026rsquo;interface en ligne de commande (CLI) de Proxmox pour accomplir cette tâche de manière efficace. La commande pour éteindre une machine virtuelle sous Proxmox est \u003ccode\u003eqm shutdown\u003c/code\u003e, suivie de l\u0026rsquo;identifiant de la machine virtuelle que vous souhaitez éteindre. Voici la procédure à suivre :\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eAccéder au serveur\u003c/strong\u003e : Connectez-vous d\u0026rsquo;abord à votre serveur Proxmox via SSH.\u003c/p\u003e","title":"Shutdown Proxmox VM using CLI"},{"content":"Nous allons directement plonger dans les concepts et composants fondamentaux qui vous aideront à maîtriser Ansible. Ce tutoriel suppose que vous avez déjà installé Ansible sur votre système et que vous avez une compréhension de base de ce qu\u0026rsquo;est Ansible.\nConfiguration de l\u0026rsquo;environnement Génération de clés SSH Si ce n’est pas déjà fait, générez une paire de clés SSH sur votre nœud de contrôle Ansible.\nssh-keygen -t rsa Distribution des clés SSH Copiez la clé publique SSH sur tous vos nœuds cibles.\nssh-copy-id username@target_host Remplacez username par l’utilisateur approprié et target_host par l’adresse IP ou le nom d’hôte du nœud cible.\nFichiers d\u0026rsquo;inventaire Inventaire simple Créez un fichier d\u0026rsquo;inventaire simple avec l\u0026rsquo;extension .ini.\n# my_inventory.ini [web] 192.168.1.2 [db] 192.168.1.3 Inventaire dynamique Vous pouvez également utiliser des scripts d\u0026rsquo;inventaire dynamique. Ansible prend en charge les scripts qui produisent du JSON.\n#!/usr/bin/python import json inventory = { \u0026#34;web\u0026#34;: [\u0026#34;192.168.1.2\u0026#34;], \u0026#34;db\u0026#34;: [\u0026#34;192.168.1.3\u0026#34;] } print(json.dumps(inventory)) Commandes ad-hoc Exécutez des commandes directement sur vos nœuds.\nansible web -i my_inventory.ini -m ping Cela exécutera le module ping sur tous les nœuds du groupe [web] dans my_inventory.ini.\nRédaction de playbooks Votre premier playbook Créez un fichier YAML nommé my_first_playbook.yml.\n--- - name: Mon premier playbook hosts: web tasks: - name: Installer Nginx apt: name: nginx state: present Exécutez le playbook avec la commande ansible-playbook.\nansible-playbook -i my_inventory.ini my_first_playbook.yml Playbook multi-tâches Vous pouvez avoir plusieurs tâches dans un playbook.\n--- - name: Configuration du serveur web hosts: web tasks: - name: Installer Nginx apt: name: nginx state: present - name: Démarrer le service Nginx service: name: nginx state: started Rôles et playbooks basés sur les rôles Les rôles vous permettent d’organiser vos playbooks en composants réutilisables.\nansible-galaxy init web-server Cela créera un répertoire de rôle web-server avec divers sous-répertoires (tasks, vars, templates, etc.).\nUtilisation des rôles dans un playbook --- - name: Playbook basé sur les rôles hosts: web roles: - web-server Variables de rôle Dans web-server/vars/main.yml, définissez quelques variables.\nhttp_port: 80 https_port: 443 Dans web-server/tasks/main.yml, utilisez ces variables.\n--- - name: Configurer Nginx template: src: nginx.conf.j2 dest: /etc/nginx/nginx.conf vars: http_port: \u0026#34;{{ http_port }}\u0026#34; https_port: \u0026#34;{{ https_port }}\u0026#34; Variables et faits Variables de playbook Définissez des variables dans vos playbooks.\n--- - name: Exemple de variable hosts: web vars: my_variable: \u0026#34;Bonjour, le monde !\u0026#34; Collecte de faits Ansible peut collecter des faits (informations système) sur les nœuds cibles.\n--- - name: Collecte de faits hosts: all tasks: - setup: Conditions et boucles Conditions Exécutez des tâches de façon conditionnelle.\n--- - name: Playbook conditionnel hosts: all tasks: - name: Installer Apache si le système est Ubuntu apt: name: apache2 state: present when: ansible_facts[\u0026#39;os_family\u0026#39;] == \u0026#34;Debian\u0026#34; Boucles Exécutez des tâches en boucle.\n--- - name: Exemple de boucle hosts: all tasks: - name: Installer plusieurs paquets apt: name: \u0026#34;{{ item }}\u0026#34; state: present loop: - git - vim - curl Modèles et fichiers Notions de base des modèles Ansible utilise Jinja2 pour les modèles. Créez un fichier modèle avec l’extension .j2.\n# my_template.j2 Bonjour, {{ my_variable }} ! Utilisation des modèles dans les tâches --- - name: Exemple de modèle hosts: web tasks: - name: Déployer le modèle template: src: my_template.j2 dest: /tmp/my_template.txt vars: my_variable: \u0026#34;Monde\u0026#34; Concepts avancés Balises Utilisez des balises pour exécuter sélectivement des tâches spécifiques.\n--- - name: Exemple de balise hosts: all tasks: - name: Installer Nginx apt: name: nginx state: present tags: [\u0026#34;web\u0026#34;] Exécutez uniquement les tâches balisées.\nansible-playbook -i my_inventory.ini my_playbook.yml --tags \u0026#34;web\u0026#34; Gestion des erreurs Ajoutez une gestion des erreurs à vos playbooks.\n--- - name: Exemple de gestion des erreurs hosts: all tasks: - name: Essayer d\u0026#39;installer un paquet apt: name: some-nonexistent-package state: present ignore_errors: true Dépannage et débogage Sortie verbeuse Exécutez les commandes Ansible avec -vvv pour une sortie verbeuse.\nansible-playbook -i my_inventory.ini my_playbook.yml -vvv Module debug Utilisez le module debug pour afficher des variables.\n--- - name: Exemple de débogage hosts: all tasks: - debug: var: my_variable Et voilà, notre tutoriel approfondi sur la maîtrise d’Ansible est terminé. J’espère que ce guide vous a aidé à naviguer à travers les divers composants et subtilités d’Ansible, vous permettant de gérer et d’automatiser votre infrastructure avec aisance.\n","permalink":"https://www.shafiq.in/fr/blog/mastering-ansible-a-step-by-step-tutorial/","summary":"\u003cp\u003eNous allons directement plonger dans les concepts et composants fondamentaux qui vous aideront à maîtriser Ansible. Ce tutoriel suppose que vous avez déjà installé Ansible sur votre système et que vous avez une compréhension de base de ce qu\u0026rsquo;est Ansible.\u003c/p\u003e\n\u003ch2 id=\"configuration-de-lenvironnement\"\u003eConfiguration de l\u0026rsquo;environnement\u003c/h2\u003e\n\u003ch3 id=\"génération-de-clés-ssh\"\u003eGénération de clés SSH\u003c/h3\u003e\n\u003cp\u003eSi ce n’est pas déjà fait, générez une paire de clés SSH sur votre nœud de contrôle Ansible.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003essh-keygen -t rsa\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003ch3 id=\"distribution-des-clés-ssh\"\u003eDistribution des clés SSH\u003c/h3\u003e\n\u003cp\u003eCopiez la clé publique SSH sur tous vos nœuds cibles.\u003c/p\u003e","title":"Mastering Ansible: A Step-by-Step Tutorial"},{"content":" \u0026ldquo;Comment se faire des amis et influencer les gens\u0026rdquo; de Dale Carnegie\nCe livre classique propose des conseils intemporels sur la communication, la construction de relations et l\u0026rsquo;influence. \u0026ldquo;L\u0026rsquo;intelligence émotionnelle 2.0\u0026rdquo; de Travis Bradberry et Jean Greaves\nCe livre offre des insights sur la compréhension et l\u0026rsquo;amélioration de l\u0026rsquo;intelligence émotionnelle, essentielle pour une direction efficace. \u0026ldquo;Conversations cruciales : Outils pour parler quand les enjeux sont élevés\u0026rdquo; de Kerry Patterson, Joseph Grenny, Ron McMillan et Al Switzler\nCe livre présente des techniques pour gérer les conversations à enjeux élevés, dont les résultats peuvent impacter la réussite d\u0026rsquo;un projet. \u0026ldquo;Drive : La vérité surprenante sur ce qui nous motive\u0026rdquo; de Daniel H. Pink\nPink explore la psychologie de la motivation, essentielle pour gérer efficacement une équipe. \u0026ldquo;Les cinq dysfonctionnements d\u0026rsquo;une équipe : Une fable sur le leadership\u0026rdquo; de Patrick Lencioni\nLencioni aborde les obstacles auxquels les équipes sont confrontées et comment un responsable de projet peut les surmonter pour créer une équipe soudée. \u0026ldquo;Influence : La psychologie de la persuasion\u0026rdquo; de Robert B. Cialdini\nCe livre explore la psychologie derrière les \u0026ldquo;oui\u0026rdquo; des gens et comment appliquer ces compréhensions dans divers aspects de la gestion. \u0026ldquo;Les leaders mangent en dernier : Pourquoi certaines équipes s\u0026rsquo;unissent et d\u0026rsquo;autres non\u0026rdquo; de Simon Sinek\nSinek explore comment les leaders peuvent inspirer la coopération et le changement, en mettant l\u0026rsquo;accent sur la confiance et la collaboration. \u0026ldquo;Les 7 habitudes des personnes hautement efficaces : Leçons puissantes sur le changement personnel\u0026rdquo; de Stephen R. Covey\nLe livre de Covey est un guide pour l\u0026rsquo;efficacité personnelle, avec des principes facilement adaptés aux rôles de leadership. \u0026ldquo;Penser vite et lentement\u0026rdquo; de Daniel Kahneman\nCe livre explore la prise de décision et les biais cognitifs, offrant des insights précieux pour les gestionnaires de projets qui doivent prendre des décisions rapides mais éclairées. \u0026ldquo;Mindset : La nouvelle psychologie du succès\u0026rdquo; de Carol S. Dweck\nDweck aborde le concept de \u0026ldquo;mentalité fixe\u0026rdquo; vs. \u0026ldquo;mentalité de croissance\u0026rdquo;, et comment adopter une mentalité de croissance peut fortement influencer votre capacité à gérer avec succès des projets. Ces livres couvrent une gamme de compétences douces, de la communication et de l\u0026rsquo;intelligence émotionnelle à la direction et la dynamique d\u0026rsquo;équipe, toutes essentielles pour une gestion de projet efficace.\n","permalink":"https://www.shafiq.in/fr/blog/10-most-popular-books-on-soft-skills-for-project-managers/","summary":"\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u0026ldquo;Comment se faire des amis et influencer les gens\u0026rdquo; de Dale Carnegie\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCe livre classique propose des conseils intemporels sur la communication, la construction de relations et l\u0026rsquo;influence.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u0026ldquo;L\u0026rsquo;intelligence émotionnelle 2.0\u0026rdquo; de Travis Bradberry et Jean Greaves\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCe livre offre des insights sur la compréhension et l\u0026rsquo;amélioration de l\u0026rsquo;intelligence émotionnelle, essentielle pour une direction efficace.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u0026ldquo;Conversations cruciales : Outils pour parler quand les enjeux sont élevés\u0026rdquo; de Kerry Patterson, Joseph Grenny, Ron McMillan et Al Switzler\u003c/strong\u003e\u003c/p\u003e","title":"10 most popular books on soft skills for project managers"},{"content":"Utilisation de pdftotext : Installation :\nSi ce n’est pas déjà installé, vous devrez installer le paquet poppler-utils, qui inclut pdftotext : sudo apt install poppler-utils ou\nyum install poppler-utils selon votre distribution.\nUtilisation :\nUne fois installé, vous pouvez convertir un PDF en texte et compter les mots comme suit : pdftotext input.pdf - | wc -w Ici, input.pdf est votre fichier PDF source, et wc -w compte le nombre de mots. Le - dans pdftotext indique que la sortie doit être envoyée à stdout, qui est ensuite redirigée vers wc.\nUtilisation de pdfgrep : Installation :\nInstallez pdfgrep à l’aide de votre gestionnaire de paquets : sudo apt install pdfgrep ou\nyum install pdfgrep Utilisation :\npdfgrep est généralement utilisé pour la recherche de motifs, mais vous pouvez l’utiliser pour correspondre à tout caractère de mot et le rediriger vers wc -w comme suit : pdfgrep -o \u0026#39;\\w+\u0026#39; input.pdf | wc -w Cela peut être plus lent, et est généralement utile uniquement lorsque vous cherchez des mots spécifiques.\nUtilisation de Python avec PyPDF2 : Vous pouvez également créer un petit script Python pour effectuer cette tâche en utilisant la bibliothèque PyPDF2.\nInstallation :\nInstallez PyPDF2 à l’aide de pip : pip install PyPDF2 Utilisation :\nVoici un simple script Python que vous pouvez utiliser : import PyPDF2 def count_words_in_pdf(file_path): with open(file_path, \u0026#39;rb\u0026#39;) as f: reader = PyPDF2.PdfFileReader(f) total_words = 0 for i in range(reader.numPages): page = reader.getPage(i) text = page.extractText() total_words += len(text.split()) return total_words if __name__ == \u0026#34;__main__\u0026#34;: file_path = \u0026#34;input.pdf\u0026#34; print(count_words_in_pdf(file_path)) Enregistrez ce script, rendez-le exécutable, puis exécutez-le. Il lira input.pdf et affichera le nombre de mots.\nUtilisation de pdf2txt.py du paquet pdfminer : Installation :\nVous pouvez installer pdfminer comme suit : pip install pdfminer.six Utilisation :\npdf2txt.py input.pdf | wc -w Cette commande convertira le PDF en texte, puis le redirigera vers wc pour compter les mots.\nConsidérations sur les performances : Précision : Toutes les méthodes n’ont pas le même niveau de précision. La mise en page du texte dans les PDFs peut être complexe, et les méthodes ci-dessus pourraient ne pas capturer toutes les subtilités.\nVitesse : Les outils CLI natifs comme pdftotext et pdfgrep sont généralement plus rapides que les solutions basées sur Python, qui doivent démarrer un interpréteur Python.\nComplexité : pdftotext et pdfgrep sont plus simples à utiliser pour des tâches simples, mais les solutions basées sur Python offrent plus de flexibilité et de contrôle.\nPortabilité : Les outils CLI dépendent de certains paquets qui doivent être installés, mais un script Python pourrait être plus portable, notamment si vous devez l’exécuter sur différents systèmes.\nLe choix de la méthode dépendra probablement de vos besoins spécifiques. Si vous avez besoin d’une solution rapide et simple, pdftotext redirigé vers wc est facile et efficace. Pour des besoins plus complexes, comme le traitement de plusieurs PDFs, l’intégration de logique supplémentaire, ou même l’utilisation de techniques avancées d’analyse de texte (comme le traitement du langage naturel), vous pourriez préférer les solutions basées sur Python. Elles offrent les briques de base pour concevoir une solution sur mesure qui peut évoluer avec vos besoins. L’élégance de la ligne de commande Linux réside dans le fait qu’elle propose une vaste gamme d’outils pouvant être combinés de presque une infinité de façons pour résoudre des problèmes, grands comme petits. Ce coffre à outils devient encore plus puissant lorsque vous l’intégrez à des langages de script comme Python, vous permettant ainsi de relever non seulement des tâches de traitement de texte, mais aussi de nombreuses autres défis.\n","permalink":"https://www.shafiq.in/fr/blog/how-to-count-number-of-words-in-a-pdf-file-from-linux-cli/","summary":"\u003ch3 id=\"utilisation-de-pdftotext-\"\u003eUtilisation de \u003ccode\u003epdftotext\u003c/code\u003e :\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eInstallation\u003c/strong\u003e :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSi ce n’est pas déjà installé, vous devrez installer le paquet \u003ccode\u003epoppler-utils\u003c/code\u003e, qui inclut \u003ccode\u003epdftotext\u003c/code\u003e :\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-fallback\" data-lang=\"fallback\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo apt install poppler-utils\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eou\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-fallback\" data-lang=\"fallback\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eyum install poppler-utils\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eselon votre distribution.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eUtilisation\u003c/strong\u003e :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUne fois installé, vous pouvez convertir un PDF en texte et compter les mots comme suit :\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-fallback\" data-lang=\"fallback\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003epdftotext input.pdf - | wc -w\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eIci, \u003ccode\u003einput.pdf\u003c/code\u003e est votre fichier PDF source, et \u003ccode\u003ewc -w\u003c/code\u003e compte le nombre de mots. Le \u003ccode\u003e-\u003c/code\u003e dans \u003ccode\u003epdftotext\u003c/code\u003e indique que la sortie doit être envoyée à stdout, qui est ensuite redirigée vers \u003ccode\u003ewc\u003c/code\u003e.\u003c/p\u003e","title":"How to count number of words in a pdf file from Linux cli"},{"content":"Psql est une interface en ligne de commande pour interagir avec PostgreSQL, un système de base de données relationnelle puissant et open source. Brew est un gestionnaire de paquets pour macOS qui facilite l\u0026rsquo;installation et la gestion des logiciels. Voici les étapes à suivre pour installer psql avec brew :\nTout d’abord, installez le gestionnaire de paquets brew si vous ne l’avez pas déjà. Vous pouvez le faire en exécutant la commande suivante dans votre terminal : /bin/bash -c \u0026#34;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\u0026#34; Ensuite, mettez à jour brew en exécutant les commandes suivantes : brew doctor brew update Troisièmement, installez libpq en exécutant la commande suivante : brew install libpq Libpq est une bibliothèque qui contient psql et d\u0026rsquo;autres utilitaires clients PostgreSQL.\nQuatrièmement, créez un lien symbolique de psql (et des autres outils libpq) dans /usr/local/bin en exécutant la commande : brew link --force libpq Cela rendra psql accessible depuis n’importe quel répertoire dans votre terminal.\nCinquièmement, vérifiez la version de PostgreSQL en utilisant la commande psql : psql --version Vous devriez voir quelque chose comme ceci :\npsql (PostgreSQL) 13.4 Félicitations, vous avez réussi à installer psql avec brew ! Vous pouvez maintenant utiliser psql pour vous connecter aux bases de données PostgreSQL et exécuter des requêtes SQL.\n","permalink":"https://www.shafiq.in/fr/blog/how-to-install-postgresql-client-using-homebrew/","summary":"\u003cp\u003ePsql est une interface en ligne de commande pour interagir avec PostgreSQL, un système de base de données relationnelle puissant et open source. Brew est un gestionnaire de paquets pour macOS qui facilite l\u0026rsquo;installation et la gestion des logiciels. Voici les étapes à suivre pour installer psql avec brew :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTout d’abord, installez le gestionnaire de paquets brew si vous ne l’avez pas déjà. Vous pouvez le faire en exécutant la commande suivante dans votre terminal :\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e/bin/bash -c \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"k\"\u003e$(\u003c/span\u003ecurl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh\u003cspan class=\"k\"\u003e)\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003eEnsuite, mettez à jour brew en exécutant les commandes suivantes :\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ebrew doctor\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ebrew update\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003eTroisièmement, installez libpq en exécutant la commande suivante :\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ebrew install libpq\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eLibpq est une bibliothèque qui contient psql et d\u0026rsquo;autres utilitaires clients PostgreSQL.\u003c/p\u003e","title":"How to install Postgresql Client using Homebrew"},{"content":"Kubernetes est une plateforme puissante pour gérer des applications conteneurisées sur un cluster de nœuds. Cependant, il arrive parfois que vous souhaitiez avoir un contrôle plus fin sur lesquels pods sont planifiés sur quels nœuds, pour diverses raisons telles que les performances, la sécurité ou les coûts.\nQu\u0026rsquo;est-ce que les taints et les tolerations ? Les taints et les tolerations sont une fonctionnalité de Kubernetes qui vous permet de marquer des nœuds avec certains attributs ou conditions, puis de préciser quels pods peuvent ou ne peuvent pas être planifiés sur ces nœuds en fonction de ces attributs ou conditions. Les taints sont appliqués aux nœuds, et les tolerations sont appliquées aux pods.\nUn taint se compose de trois composants : une clé, une valeur et un effet. La clé et la valeur sont des chaînes arbitraires que vous pouvez choisir pour identifier le taint. L\u0026rsquo;effet détermine ce qui se passe avec les pods qui ne tolèrent pas le taint. Il existe trois effets possibles :\nNoSchedule : les pods qui ne tolèrent pas le taint ne sont pas planifiés sur le nœud. PreferNoSchedule : les pods qui ne tolèrent pas le taint sont préférés mais pas garanties à ne pas être planifiés sur le nœud, mais cela n\u0026rsquo;est pas garanti. NoExecute : les pods qui ne tolèrent pas le taint ne sont pas planifiés sur le nœud, et tous les pods existants sur le nœud qui ne tolèrent pas le taint sont évacués. Une toleration se compose de quatre composants : une clé, une valeur, un opérateur et un effet. La clé et la valeur doivent correspondre à celles du taint. L\u0026rsquo;opérateur peut être soit Equal, soit Exists. L\u0026rsquo;effet peut être soit NoSchedule, PreferNoSchedule, NoExecute, soit laisser vide (ce qui signifie tout effet).\nUn pod peut tolérer un taint si l\u0026rsquo;une de ses tolerations correspond au taint selon les règles suivantes :\nLes clés doivent être égales. Les valeurs doivent être égales si l\u0026rsquo;opérateur est Equal, ou toute valeur si l\u0026rsquo;opérateur est Exists. Les effets doivent correspondre, ou l\u0026rsquo;effet de la toleration doit être vide. Comment utiliser les taints et les tolerations ? Pour utiliser les taints et les tolerations, vous devez les appliquer à vos nœuds et vos pods à l\u0026rsquo;aide de commandes kubectl ou de manifestes YAML. Voici quelques exemples de leur utilisation.\nAppliquer un taint à un nœud Pour appliquer un taint à un nœud, vous pouvez utiliser la commande suivante :\nkubectl taint nodes \u0026lt;nom-du-nœud\u0026gt; \u0026lt;clé\u0026gt;=\u0026lt;valeur\u0026gt;:\u0026lt;effet\u0026gt;\nPar exemple, si vous souhaitez marquer un nœud comme dédié uniquement aux pods de base de données, vous pouvez appliquer un taint avec la clé type, la valeur db et l\u0026rsquo;effet NoSchedule :\nkubectl taint nodes node1 type=db:NoSchedule\nCela empêchera tout pod d’être planifié sur node1 à moins qu’il n’ait une toleration correspondante.\nAppliquer une toleration à un pod Pour appliquer une toleration à un pod, vous pouvez l’ajouter à la spécification du pod sous le champ tolerations. Par exemple, si vous souhaitez autoriser un pod de base de données à être planifié sur node1, vous pouvez ajouter une toleration avec la clé type, la valeur db et l’opérateur Equal :\napiVersion: v1 kind: Pod metadata: name: db-pod spec: containers: - name: db-container image: db-image tolerations: - key: type operator: Equal value: db effect: NoSchedule Cela permettra au pod de tolérer le taint sur node1 et d’être planifié là-bas.\nSupprimer un taint d’un nœud Pour supprimer un taint d’un nœud, vous pouvez utiliser la commande suivante :\nkubectl taint nodes \u0026lt;nom-du-nœud\u0026gt; \u0026lt;clé\u0026gt;:\u0026lt;effet\u0026gt;-\nPar exemple, si vous souhaitez supprimer le taint avec la clé type et l\u0026rsquo;effet NoSchedule du nœud node1, vous pouvez utiliser :\nkubectl taint nodes node1 type:NoSchedule-\nCela permettra à nouveau à tout pod d’être planifié sur node1.\nLes taints et les tolerations sont une fonctionnalité utile de Kubernetes qui vous permet de contrôler quels pods sont planifiés sur quels nœuds. Vous pouvez les utiliser pour isoler certains nœuds à des fins spécifiques, telles que les performances, la sécurité ou les coûts. Vous pouvez également les utiliser pour éviter les conflits ou les interférences entre différents types de pods. Pour les utiliser efficacement, vous devez comprendre leur fonctionnement et savoir les appliquer correctement.\n","permalink":"https://www.shafiq.in/fr/blog/how-to-avoid-other-pods-from-being-scheduled-on-your-node-in-kubernetes/","summary":"\u003cp\u003eKubernetes est une plateforme puissante pour gérer des applications conteneurisées sur un cluster de nœuds. Cependant, il arrive parfois que vous souhaitiez avoir un contrôle plus fin sur lesquels pods sont planifiés sur quels nœuds, pour diverses raisons telles que les performances, la sécurité ou les coûts.\u003c/p\u003e\n\u003ch2 id=\"quest-ce-que-les-taints-et-les-tolerations-\"\u003eQu\u0026rsquo;est-ce que les taints et les tolerations ?\u003c/h2\u003e\n\u003cp\u003eLes taints et les tolerations sont une fonctionnalité de Kubernetes qui vous permet de marquer des nœuds avec certains attributs ou conditions, puis de préciser quels pods peuvent ou ne peuvent pas être planifiés sur ces nœuds en fonction de ces attributs ou conditions. Les taints sont appliqués aux nœuds, et les tolerations sont appliquées aux pods.\u003c/p\u003e","title":"How to avoid other pods from being scheduled on your node in Kubernetes"},{"content":"Le cloud computing consist en la fourniture de services informatiques tels que des serveurs, du stockage, des bases de données, du réseau, du logiciel, de l\u0026rsquo;analyse et de l\u0026rsquo;intelligence via Internet. Les services cloud offrent de nombreux avantages tels que la scalabilité, la flexibilité, l\u0026rsquo;efficacité coûts et l\u0026rsquo;innovation. Toutefois, ils posent également des risques de sécurité importants, en particulier en ce qui concerne l\u0026rsquo;accès et la gestion de données et d\u0026rsquo;actifs sensibles dans les environnements de production cloud.\nUn environnement de production cloud est là où les applications en direct et les données réelles sont hébergées et accessibles aux utilisateurs finaux. Il diffère d\u0026rsquo;un environnement de développement ou de test cloud, où les applications et les données sont encore en cours de développement ou de test et non accessibles au public. Un environnement de production cloud nécessite un haut niveau de sécurité et de fiabilité pour garantir que les applications et les données sont protégées contre l\u0026rsquo;accès non autorisé, la modification, la suppression ou la divulgation.\nL\u0026rsquo;une des façons d\u0026rsquo;atteindre ce niveau de sécurité consiste à mettre en œuvre un contrôle de sécurité pour toute personne qui a besoin d\u0026rsquo;accéder ou de gérer des environnements de production cloud. Le contrôle de sécurité est un processus d\u0026rsquo;investigation de dossier qui évalue la convenance d\u0026rsquo;une personne à accéder à des informations, des actifs ou du matériel sensibles. Ce contrôle est nécessaire pour protéger contre les menaces provenant de services de renseignement hostiles, de cybermenaces, de terroristes et d\u0026rsquo;autres groupes pressionnistes.\nNiveaux de contrôle de sécurité Il existe différents niveaux de contrôle de sécurité au Royaume-Uni, selon la nature et la sensibilité des informations, des actifs ou du matériel impliqués. Les principaux niveaux sont les suivants :\nStandard de sécurité du personnel de base (BPSS) : Ce n\u0026rsquo;est pas une autorisation de sécurité formelle, mais un contrôle pré-emploi des individus ayant accès aux actifs gouvernementaux. Il comprend des vérifications de l\u0026rsquo;identité, de l\u0026rsquo;historique professionnel, du statut d\u0026rsquo;immigration et du casier judiciaire non effacé. Contrôle d\u0026rsquo;accréditation (AC) : Ce niveau concerne les individus qui ont besoin d\u0026rsquo;un accès non escorté à la zone restreinte de sécurité des aéroports du Royaume-Uni ou qui fournissent une formation en sécurité aérienne au Royaume-Uni. Il implique la vérification de l\u0026rsquo;identité, de l\u0026rsquo;historique professionnel, du casier judiciaire non effacé et une vérification contre les dossiers détenus par le gouvernement britannique ou ses agences. Contrôle antiterroriste (CTC) / Niveau 1B : Ce niveau concerne les individus qui ont besoin d\u0026rsquo;accès aux actifs du Royaume-Uni OFFICIEL et d\u0026rsquo;accès occasionnel aux actifs du Royaume-Uni SECRET, ou qui travaillent dans des zones où des informations SECRETES ou TOP SECRETES pourraient être entendues. Il inclut des vérifications de l\u0026rsquo;identité, de l\u0026rsquo;historique professionnel, du casier judiciaire, de la situation financière et des circonstances personnelles. Contrôle de sécurité (SC) : Ce niveau concerne les individus qui ont besoin d\u0026rsquo;un accès substantiel sans surveillance aux actifs du Royaume-Uni SECRET ou d\u0026rsquo;accès occasionnel aux actifs du Royaume-Uni TOP SECRET. Il inclut les mêmes vérifications que le CTC, plus une vérification de référence de crédit et une vérification contre les dossiers détenus par MI5. Vérification approfondie (DV) : Ce niveau concerne les individus qui ont besoin d\u0026rsquo;un accès substantiel sans surveillance aux actifs du Royaume-Uni TOP SECRET ou qui travaillent dans des postes liés au renseignement. Il inclut les mêmes vérifications que le SC, plus une interview détaillée avec un officier de vérification et des enquêtes auprès de témoins. Comment demander ou renouveler un contrôle de sécurité Pour demander ou renouveler un contrôle de sécurité, vous avez besoin d\u0026rsquo;un sponsor, généralement votre responsable RH ou contrôleur de sécurité de l\u0026rsquo;entreprise. Votre sponsor doit confirmer que votre poste nécessite un contrôle de sécurité et qu\u0026rsquo;il a effectué le contrôle BPSS (sauf si vous êtes soumis au contrôle AC). Votre sponsor créera alors votre demande de contrôle, et vous recevrez un lien pour remplir un questionnaire de sécurité en ligne.\nLe questionnaire de sécurité vous demandera des informations personnelles telles que votre nom, votre date de naissance, votre adresse, votre nationalité, votre niveau d\u0026rsquo;études, votre historique professionnel, votre situation financière, votre casier judiciaire, vos voyages à l\u0026rsquo;étranger et vos contacts. Vous devez répondre à toutes les questions honnêtement et fournir des documents justificatifs lorsque requis. Vous devez également donner votre consentement pour que vos informations soient vérifiées par les autorités concernées.\nAprès avoir soumis votre questionnaire de sécurité, vous pourriez être contacté par un officier de vérification pour des enquêtes supplémentaires ou un entretien. L\u0026rsquo;officier de vérification vous posera des questions sur votre passé, votre mode de vie, votre comportement et vos attitudes afin d\u0026rsquo;évaluer votre fiabilité, votre intégrité et votre loyauté. Vous devez coopérer pleinement avec l\u0026rsquo;officier de vérification et fournir toute information ou document supplémentaire qu\u0026rsquo;il demande.\nLa décision concernant votre contrôle de sécurité sera prise par le responsable du risque, généralement votre sponsor ou son supérieur hiérarchique. La décision sera fondée sur les informations recueillies durant le processus de vérification et le niveau de risque associé à votre poste. Vous serez informé du résultat par votre sponsor ou via le portail de la National Security Vetting Service (NSVS).\nSi vous obtenez un contrôle de sécurité, vous devez respecter les conditions de votre autorisation, telles que signaler tout changement dans votre situation personnelle ou tout incident pouvant affecter votre adéquation. Vous devez également subir des révisions régulières de votre autorisation selon le niveau et la durée de votre contrôle.\nSi votre contrôle de sécurité est refusé, ou si votre autorisation est révoquée ou réduite, vous avez le droit de faire appel contre la décision dans les 28 jours suivant la notification. Vous pouvez faire appel en écrivant à l’équipe d’appel de la NSVS, en expliquant pourquoi vous contestez la décision et en fournissant toute nouvelle preuve pour étayer votre dossier. Votre appel sera examiné par un panel indépendant qui décidera soit de maintenir, soit de renverser la décision.\nLe contrôle de sécurité est une composante essentielle pour assurer la sécurité et l\u0026rsquo;intégrité des environnements de production cloud. Il aide à prévenir l\u0026rsquo;accès non autorisé, la modification, la suppression ou la divulgation de données et d\u0026rsquo;actifs sensibles dans le cloud. Il contribue également à protéger la sécurité nationale et les intérêts du Royaume-Uni et de ses alliés.\nSi vous travaillez dans un poste qui nécessite un accès ou une gestion d\u0026rsquo;environnements de production cloud, vous devez être conscient des niveaux, des processus et des responsabilités liés au contrôle de sécurité. Vous devez également être prêt à subir un contrôle de sécurité et à maintenir votre autorisation tout au long de votre emploi.\nLe contrôle de sécurité n\u0026rsquo;est pas une garantie de fiabilité future, et toutes les autorisations sont soumises à un examen régulier afin de maintenir le niveau nécessaire d\u0026rsquo;assurance. Vous devez toujours agir de manière professionnelle, éthique et légale, et signaler tout problème de sécurité ou incident à votre sponsor ou à votre contrôleur de sécurité.\n","permalink":"https://www.shafiq.in/fr/blog/security-clearance-vetting-for-access-to-cloud-production-environments/","summary":"\u003cp\u003eLe cloud computing consist en la fourniture de services informatiques tels que des serveurs, du stockage, des bases de données, du réseau, du logiciel, de l\u0026rsquo;analyse et de l\u0026rsquo;intelligence via Internet. Les services cloud offrent de nombreux avantages tels que la scalabilité, la flexibilité, l\u0026rsquo;efficacité coûts et l\u0026rsquo;innovation. Toutefois, ils posent également des risques de sécurité importants, en particulier en ce qui concerne l\u0026rsquo;accès et la gestion de données et d\u0026rsquo;actifs sensibles dans les environnements de production cloud.\u003c/p\u003e","title":"Security Clearance Vetting for Access to Cloud Production Environments"},{"content":"Les tolérances Kubernetes sont une manière de permettre à des pods d’être planifiés sur des nœuds possédant des taints, qui sont des marqueurs repoussant les pods par défaut. Les tolérances vous permettent de contrôler quels pods peuvent s’exécuter sur quels nœuds, en fonction des besoins du pod et des caractéristiques du nœud.\nQu’est-ce que les tolérances Kubernetes ? Les tolérances Kubernetes sont une propriété d’un pod qui permet à ce pod d’être planifié sur un nœud ayant un taint correspondant. Les taints sont l’inverse de l’affinité de nœud, qui est une manière d’attirer les pods vers un ensemble de nœuds. Les taints sont appliqués aux nœuds et agissent comme une barrière répulsive contre les nouveaux pods. Les nœuds taintés n’accepteront que les pods marqués d’une tolérance correspondante.\nLes tolérances sont spécifiées dans la spécification du pod, sous le champ tolerations. Une tolérance se compose de trois composants : une clé, un opérateur et un effet. La clé et l’opérateur sont utilisés pour faire correspondre la tolérance au taint. L’effet détermine le comportement du planificateur lorsqu’il rencontre le taint.\nIl existe trois effets possibles pour les taints et les tolérances :\nNoSchedule : les pods qui ne tolèrent pas le taint ne seront pas planifiés sur le nœud. Les pods déjà en cours d’exécution sur le nœud ne sont pas affectés. PreferNoSchedule : les pods qui ne tolèrent pas le taint seront évités par le planificateur, mais ils pourraient quand même être planifiés sur le nœud s’il n’y a pas d’autre option. NoExecute : les pods qui ne tolèrent pas le taint seront évacués du nœud s’ils sont déjà en cours d’exécution, et ils ne seront pas planifiés sur le nœud à l’avenir. L’opérateur peut être soit Equal soit Exists. L’opérateur Equal exige que la clé et la valeur du taint correspondent exactement à la clé et à la valeur de la tolérance. L’opérateur Exists ne requiert que la clé du taint corresponde à la clé de la tolérance, indépendamment de la valeur.\nVoici un exemple de spécification de pod avec une tolérance :\napiVersion: v1 kind: Pod metadata: name: nginx labels: env: test spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent tolerations: - key: \u0026#34;example-key\u0026#34; operator: \u0026#34;Exists\u0026#34; effect: \u0026#34;NoSchedule\u0026#34; Ce pod possède une tolérance pour tout taint ayant la clé example-key et l’effet NoSchedule. Cela signifie qu’il peut être planifié sur n’importe quel nœud ayant un tel taint, mais il ne tolérera pas d’autres taints.\nComment utiliser les tolérances Kubernetes ? Pour utiliser les tolérances Kubernetes, vous devez d’abord appliquer des taints à vos nœuds. Vous pouvez le faire en utilisant la commande kubectl taint. Par exemple, pour appliquer un taint ayant la clé example-key, la valeur example-value, et l’effet NoSchedule à un nœud nommé node1, vous pouvez exécuter :\nkubectl taint nodes node1 example-key=example-value:NoSchedule Pour supprimer un taint d’un nœud, vous pouvez ajouter un - à la fin de la commande :\nkubectl taint nodes node1 example-key=example-value:NoSchedule- Vous pouvez également appliquer plusieurs taints à un nœud en même temps, ou supprimer plusieurs taints à la fois, en les séparant par des espaces :\nkubectl taint nodes node1 example-key=example-value:NoSchedule another-key=another-value:PreferNoSchedule kubectl taint nodes node1 example-key=example-value:NoSchedule- another-key=another-value:PreferNoSchedule- Pour afficher les taints sur vos nœuds, vous pouvez utiliser la commande kubectl describe :\nkubectl describe nodes node1 Vous devriez voir quelque chose comme ceci dans la sortie :\nName: node1 Roles: \u0026lt;none\u0026gt; Labels: beta.kubernetes.io/arch=amd64 beta.kubernetes.io/os=linux kubernetes.io/hostname=node1 Annotations: \u0026lt;none\u0026gt; Taints: example-key=example-value:NoSchedule another-key=another-value:PreferNoSchedule ... Une fois que vous avez appliqué des taints à vos nœuds, vous pouvez créer des pods avec des tolérances correspondantes. Vous pouvez le faire en ajoutant le champ tolerations à votre spécification de pod, comme montré dans l’exemple précédent. Vous pouvez également utiliser un modèle de pod pour créer plusieurs pods ayant les mêmes tolérances, par exemple dans un déploiement ou un daemonset.\nCas d’usage des tolérances Kubernetes Les tolérances Kubernetes peuvent être utilisées dans divers scénarios où vous souhaitez contrôler quels pods peuvent s’exécuter sur quels nœuds, en fonction des besoins du pod et des caractéristiques du nœud. Voici quelques cas d’usage courants pour les tolérances :\nIsoler des nœuds pour des charges spécifiques : Vous pouvez avoir certains nœuds dédiés à des types particuliers de charges, comme des applications intensives en GPU, ou du traitement de données sensibles. Vous pouvez taint ces nœuds avec une clé et une valeur uniques, et autoriser uniquement les pods ayant une tolérance correspondante à s’exécuter dessus. Ainsi, vous assurez que ces nœuds ne sont pas utilisés par d’autres pods qui n’en ont pas besoin, et que vos charges spéciales ont accès aux ressources dont elles ont besoin.\nRéserver des nœuds pour des pods à haute priorité : Vous pouvez avoir certains pods plus critiques que d’autres, comme des composants système ou des pods traitant les requêtes utilisateurs. Vous pouvez taint certains nœuds avec une clé et une valeur de haute priorité, et autoriser uniquement les pods ayant une tolérance correspondante à s’exécuter dessus. Ainsi, vous assurez que ces nœuds ne sont pas occupés par des pods à faible priorité pouvant interférer avec les performances ou la disponibilité de vos pods à haute priorité.\nÉviter les nœuds ayant des problèmes de performance : Vous pouvez avoir certains nœuds en proie à des problèmes de performance, comme une charge CPU élevée, une pression mémoire ou une congestion réseau. Vous pouvez taint ces nœuds avec une clé et une valeur indiquant le problème, et utiliser l’effet PreferNoSchedule pour décourager les pods d’être planifiés dessus. Ainsi, vous évitez de surcharger davantage ces nœuds, leur laissant une chance de se rétablir. Vous pouvez également utiliser l’effet NoExecute pour évacuer les pods déjà en cours d’exécution sur ces nœuds, si vous souhaitez libérer les ressources plus rapidement.\n","permalink":"https://www.shafiq.in/fr/blog/kubernetes-tolerations/","summary":"\u003cp\u003eLes tolérances Kubernetes sont une manière de permettre à des pods d’être planifiés sur des nœuds possédant des \u003cem\u003etaints\u003c/em\u003e, qui sont des marqueurs repoussant les pods par défaut. Les tolérances vous permettent de contrôler quels pods peuvent s’exécuter sur quels nœuds, en fonction des besoins du pod et des caractéristiques du nœud.\u003c/p\u003e\n\u003ch2 id=\"quest-ce-que-les-tolérances-kubernetes-\"\u003eQu’est-ce que les tolérances Kubernetes ?\u003c/h2\u003e\n\u003cp\u003eLes tolérances Kubernetes sont une propriété d’un pod qui permet à ce pod d’être planifié sur un nœud ayant un \u003cem\u003etaint\u003c/em\u003e correspondant. Les \u003cem\u003etaints\u003c/em\u003e sont l’inverse de l’affinité de nœud, qui est une manière d’attirer les pods vers un ensemble de nœuds. Les \u003cem\u003etaints\u003c/em\u003e sont appliqués aux nœuds et agissent comme une barrière répulsive contre les nouveaux pods. Les nœuds \u003cem\u003etaintés\u003c/em\u003e n’accepteront que les pods marqués d’une tolérance correspondante.\u003c/p\u003e","title":"Kubernetes Tolerations"},{"content":" Émotion Résumé Emoji Acceptation Se sentir content ou heureux 🙏️ Admiration Admiration pour quelqu’un ou quelque chose 😍 Crainte Effrayé ou effrayé ⚡️ Aggression Comportement hostile 💢 Émerveillement Être stupéfait 🤯 Colère Irrité ou en colère 😠 Anticipation Attendre qu’un événement se produise 🎉 Apathie Manque d’intérêt 🌚 Reconnaissance Reconnaissant quelque chose 👏 Arrogance Trop confiant 🥵 Honte Sentiments de culpabilité, regret 🤦🏻‍♂️ Gêne Situation inconfortable 😬 Ennui Se sentir désintéressé 😩 Courageux Brave 💪 Sérénité Serein 🙂 Insouciance Détendu et sans souci 🍾 Souci Montrer de l’attention pour les autres 🧡 Joyeux Joyeux et heureux 😊 Perdu Confus ou incertain 🤷🏼‍♀️ Froidesse Émotionnellement inerte ❄️ Compassion Empathie envers les autres 🌈 Inquiétude Préoccupé pour quelqu’un ou quelque chose 👀 Contentement Satisfait de la vie 😎 Mépris Dédain, manque de respect ou scorner 🖕 Collaboration Travailler ensemble 🤝 Calme Imperturbable sous pression 🥶 Courageux Brave 💪 Lâcheté Manque de courage 🐮 Fou Fou ou insensé 🍆 Curiosité Désir d’apprendre 🧐 Audace Téméraire et aventureux 🚁 Défaitisme Sentiment d’impuissance 🙅‍♂️ Défensif Protecteur 🛡 Émerveillé Très heureux 😊 Désespoir Espoir perdu 🌫 Déterminé Résolu 👊 Dévotion Loyauté ✨ Déception Tristesse à propos d’un résultat 😔 Découragement Perdre l’espoir, la motivation 🤷🏻‍♀️ Dégoût Répulsion 🤢 Détresse Anxiété ou troublé 💀 Hésitant Incertain sur quelque chose 🤞🏼 Impatience Excitation pour faire quelque chose 🦅 Embarras Honte ou inconfort 🙈 Empathie Comprendre les sentiments des autres 🧠 Envie Jalousie 🐍 Éuphorie Heure extrême 🥳 Intrépide Brave et courageux 🚫 Frustration Irrité 😡 Amical Bienveillant et accessible 👋 Reconnaissance Reconnaissant quelqu’un ou quelque chose 🙇🏽‍♂️ Culpabilité Se sentir responsable d’une faute 🌾 Joie Joie, plaisir 😊 Haine Intense désapprobation ❄️ Cœur brisé Tristesse après avoir perdu l’amour 💔 Impuissance Incapable de faire quoi que ce soit 🤷🏻‍♀️ Espoir Attente optimiste 🎉 Horreur Choqué ou effrayé 😨 Humiliation Honte 😩 Impatience Perdre patience 🕰 Indifférence Apathie 🧬 Insécurité Incertain de soi 🥺 Intérêt Curiosité 👀 Irritabilité En colère et frustré 🙅‍♂️ Jalousie Envie 🐍 Bienveillance Amabilité 🌸 Solitude Se sentir seul 😢 Amour Affection ❤️ Malice Intention mauvaise 💁🏽‍♂️ Mélancolie Tristesse, dépression 😔 Misérable Très malheureux 😭 Misère Tristesse extrême 😓 Humilité Humilité 🎶 Nervosité Effrayé ou anxieux 😨 Neutre Indifférent 🚫 Obsession Préoccupation pour quelque chose 🧠 Optimisme Espoir pour un bon résultat 👀 Panique Effrayé et submergé 🙅‍♀️ Passionné Émotion intense 🔥 Patience Attendre calmement 🌿 Sérénité Calme et sérénité ✈️ Persécution Se sentir opprimé 💢 Joueux Léger et enjoué 🤡 Plaisir Joie, bonheur 🍻 Équilibre Grâce sous pression 🕊 Éloge Complimentaire 🏆 Fierté Satisfaction pour un accomplissement 🎉 Renvoi Tristesse à propos d’actes passés 😞 Détente Repos ou loisir 🛋 Remords Culpabilité pour des fautes 👁 Répulsion Dégoût 🦀 Respect Estime pour quelqu’un ou quelque chose 🙇🏽‍♂️ Rancune Colère pour une offense 🔥 Romantique Amour et affection ❣️ Sécurité Sécurité 🚨 Tristesse Deuil ou désespoir 💔 Sarcasme Ironie, humour moqueur 🤷🏻‍♀️ Crainte Effrayé 😱 Secret Garder quelque chose caché 🕵️‍♀️ Maîtrise de soi Contrôler ses émotions 🧠 Honte Honteux 🙈 Choc Surprise et incrédulité 😲 Chagrin Deuil 🌾 Stress Tension 😩 Succès Réussite 🎉 Suspicion Doute sur quelqu’un ou quelque chose 👁 Sympathique Comprendre les sentiments des autres 🧠 Reconnaissance Reconnaissance 🙇🏽‍♂️ Soif Désir d’eau 💦 Timidité Timidité ou peur 🐮 Confiance Confiance en quelqu’un ou quelque chose 🤝 Incertitude Doutes ⚪️ Inconfort Malaise 🥶 Vulnérabilité Exposé au danger 🔫 Chaleur Amabilité, bienveillance 🍂 Faiblesse Manque de force 🆕 Nostalgie Rêveur 🌿 Émerveillement Étonnement 😲 Inquiet Anxieux et préoccupé 👀 Désir Désir pour quelque chose 🎉 Élan Profiter de la vie 🧡 ","permalink":"https://www.shafiq.in/fr/blog/list-of-emotions/","summary":"\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003eÉmotion\u003c/th\u003e\n          \u003cth\u003eRésumé\u003c/th\u003e\n          \u003cth\u003eEmoji\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eAcceptation\u003c/td\u003e\n          \u003ctd\u003eSe sentir content ou heureux\u003c/td\u003e\n          \u003ctd\u003e🙏️\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eAdmiration\u003c/td\u003e\n          \u003ctd\u003eAdmiration pour quelqu’un ou quelque chose\u003c/td\u003e\n          \u003ctd\u003e😍\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eCrainte\u003c/td\u003e\n          \u003ctd\u003eEffrayé ou effrayé\u003c/td\u003e\n          \u003ctd\u003e⚡️\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eAggression\u003c/td\u003e\n          \u003ctd\u003eComportement hostile\u003c/td\u003e\n          \u003ctd\u003e💢\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eÉmerveillement\u003c/td\u003e\n          \u003ctd\u003eÊtre stupéfait\u003c/td\u003e\n          \u003ctd\u003e🤯\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eColère\u003c/td\u003e\n          \u003ctd\u003eIrrité ou en colère\u003c/td\u003e\n          \u003ctd\u003e😠\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eAnticipation\u003c/td\u003e\n          \u003ctd\u003eAttendre qu’un événement se produise\u003c/td\u003e\n          \u003ctd\u003e🎉\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eApathie\u003c/td\u003e\n          \u003ctd\u003eManque d’intérêt\u003c/td\u003e\n          \u003ctd\u003e🌚\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eReconnaissance\u003c/td\u003e\n          \u003ctd\u003eReconnaissant quelque chose\u003c/td\u003e\n          \u003ctd\u003e👏\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eArrogance\u003c/td\u003e\n          \u003ctd\u003eTrop confiant\u003c/td\u003e\n          \u003ctd\u003e🥵\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eHonte\u003c/td\u003e\n          \u003ctd\u003eSentiments de culpabilité, regret\u003c/td\u003e\n          \u003ctd\u003e🤦🏻‍♂️\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eGêne\u003c/td\u003e\n          \u003ctd\u003eSituation inconfortable\u003c/td\u003e\n          \u003ctd\u003e😬\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eEnnui\u003c/td\u003e\n          \u003ctd\u003eSe sentir désintéressé\u003c/td\u003e\n          \u003ctd\u003e😩\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eCourageux\u003c/td\u003e\n          \u003ctd\u003eBrave\u003c/td\u003e\n          \u003ctd\u003e💪\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eSérénité\u003c/td\u003e\n          \u003ctd\u003eSerein\u003c/td\u003e\n          \u003ctd\u003e🙂\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eInsouciance\u003c/td\u003e\n          \u003ctd\u003eDétendu et sans souci\u003c/td\u003e\n          \u003ctd\u003e🍾\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eSouci\u003c/td\u003e\n          \u003ctd\u003eMontrer de l’attention pour les autres\u003c/td\u003e\n          \u003ctd\u003e🧡\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eJoyeux\u003c/td\u003e\n          \u003ctd\u003eJoyeux et heureux\u003c/td\u003e\n          \u003ctd\u003e😊\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003ePerdu\u003c/td\u003e\n          \u003ctd\u003eConfus ou incertain\u003c/td\u003e\n          \u003ctd\u003e🤷🏼‍♀️\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eFroidesse\u003c/td\u003e\n          \u003ctd\u003eÉmotionnellement inerte\u003c/td\u003e\n          \u003ctd\u003e❄️\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eCompassion\u003c/td\u003e\n          \u003ctd\u003eEmpathie envers les autres\u003c/td\u003e\n          \u003ctd\u003e🌈\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eInquiétude\u003c/td\u003e\n          \u003ctd\u003ePréoccupé pour quelqu’un ou quelque chose\u003c/td\u003e\n          \u003ctd\u003e👀\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eContentement\u003c/td\u003e\n          \u003ctd\u003eSatisfait de la vie\u003c/td\u003e\n          \u003ctd\u003e😎\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eMépris\u003c/td\u003e\n          \u003ctd\u003eDédain, manque de respect ou scorner\u003c/td\u003e\n          \u003ctd\u003e🖕\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eCollaboration\u003c/td\u003e\n          \u003ctd\u003eTravailler ensemble\u003c/td\u003e\n          \u003ctd\u003e🤝\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eCalme\u003c/td\u003e\n          \u003ctd\u003eImperturbable sous pression\u003c/td\u003e\n          \u003ctd\u003e🥶\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eCourageux\u003c/td\u003e\n          \u003ctd\u003eBrave\u003c/td\u003e\n          \u003ctd\u003e💪\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eLâcheté\u003c/td\u003e\n          \u003ctd\u003eManque de courage\u003c/td\u003e\n          \u003ctd\u003e🐮\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eFou\u003c/td\u003e\n          \u003ctd\u003eFou ou insensé\u003c/td\u003e\n          \u003ctd\u003e🍆\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eCuriosité\u003c/td\u003e\n          \u003ctd\u003eDésir d’apprendre\u003c/td\u003e\n          \u003ctd\u003e🧐\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eAudace\u003c/td\u003e\n          \u003ctd\u003eTéméraire et aventureux\u003c/td\u003e\n          \u003ctd\u003e🚁\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eDéfaitisme\u003c/td\u003e\n          \u003ctd\u003eSentiment d’impuissance\u003c/td\u003e\n          \u003ctd\u003e🙅‍♂️\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eDéfensif\u003c/td\u003e\n          \u003ctd\u003eProtecteur\u003c/td\u003e\n          \u003ctd\u003e🛡\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eÉmerveillé\u003c/td\u003e\n          \u003ctd\u003eTrès heureux\u003c/td\u003e\n          \u003ctd\u003e😊\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eDésespoir\u003c/td\u003e\n          \u003ctd\u003eEspoir perdu\u003c/td\u003e\n          \u003ctd\u003e🌫\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eDéterminé\u003c/td\u003e\n          \u003ctd\u003eRésolu\u003c/td\u003e\n          \u003ctd\u003e👊\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eDévotion\u003c/td\u003e\n          \u003ctd\u003eLoyauté\u003c/td\u003e\n          \u003ctd\u003e✨\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eDéception\u003c/td\u003e\n          \u003ctd\u003eTristesse à propos d’un résultat\u003c/td\u003e\n          \u003ctd\u003e😔\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eDécouragement\u003c/td\u003e\n          \u003ctd\u003ePerdre l’espoir, la motivation\u003c/td\u003e\n          \u003ctd\u003e🤷🏻‍♀️\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eDégoût\u003c/td\u003e\n          \u003ctd\u003eRépulsion\u003c/td\u003e\n          \u003ctd\u003e🤢\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eDétresse\u003c/td\u003e\n          \u003ctd\u003eAnxiété ou troublé\u003c/td\u003e\n          \u003ctd\u003e💀\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eHésitant\u003c/td\u003e\n          \u003ctd\u003eIncertain sur quelque chose\u003c/td\u003e\n          \u003ctd\u003e🤞🏼\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eImpatience\u003c/td\u003e\n          \u003ctd\u003eExcitation pour faire quelque chose\u003c/td\u003e\n          \u003ctd\u003e🦅\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eEmbarras\u003c/td\u003e\n          \u003ctd\u003eHonte ou inconfort\u003c/td\u003e\n          \u003ctd\u003e🙈\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eEmpathie\u003c/td\u003e\n          \u003ctd\u003eComprendre les sentiments des autres\u003c/td\u003e\n          \u003ctd\u003e🧠\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eEnvie\u003c/td\u003e\n          \u003ctd\u003eJalousie\u003c/td\u003e\n          \u003ctd\u003e🐍\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eÉuphorie\u003c/td\u003e\n          \u003ctd\u003eHeure extrême\u003c/td\u003e\n          \u003ctd\u003e🥳\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eIntrépide\u003c/td\u003e\n          \u003ctd\u003eBrave et courageux\u003c/td\u003e\n          \u003ctd\u003e🚫\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eFrustration\u003c/td\u003e\n          \u003ctd\u003eIrrité\u003c/td\u003e\n          \u003ctd\u003e😡\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eAmical\u003c/td\u003e\n          \u003ctd\u003eBienveillant et accessible\u003c/td\u003e\n          \u003ctd\u003e👋\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eReconnaissance\u003c/td\u003e\n          \u003ctd\u003eReconnaissant quelqu’un ou quelque chose\u003c/td\u003e\n          \u003ctd\u003e🙇🏽‍♂️\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eCulpabilité\u003c/td\u003e\n          \u003ctd\u003eSe sentir responsable d’une faute\u003c/td\u003e\n          \u003ctd\u003e🌾\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eJoie\u003c/td\u003e\n          \u003ctd\u003eJoie, plaisir\u003c/td\u003e\n          \u003ctd\u003e😊\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eHaine\u003c/td\u003e\n          \u003ctd\u003eIntense désapprobation\u003c/td\u003e\n          \u003ctd\u003e❄️\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eCœur brisé\u003c/td\u003e\n          \u003ctd\u003eTristesse après avoir perdu l’amour\u003c/td\u003e\n          \u003ctd\u003e💔\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eImpuissance\u003c/td\u003e\n          \u003ctd\u003eIncapable de faire quoi que ce soit\u003c/td\u003e\n          \u003ctd\u003e🤷🏻‍♀️\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eEspoir\u003c/td\u003e\n          \u003ctd\u003eAttente optimiste\u003c/td\u003e\n          \u003ctd\u003e🎉\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eHorreur\u003c/td\u003e\n          \u003ctd\u003eChoqué ou effrayé\u003c/td\u003e\n          \u003ctd\u003e😨\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eHumiliation\u003c/td\u003e\n          \u003ctd\u003eHonte\u003c/td\u003e\n          \u003ctd\u003e😩\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eImpatience\u003c/td\u003e\n          \u003ctd\u003ePerdre patience\u003c/td\u003e\n          \u003ctd\u003e🕰\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eIndifférence\u003c/td\u003e\n          \u003ctd\u003eApathie\u003c/td\u003e\n          \u003ctd\u003e🧬\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eInsécurité\u003c/td\u003e\n          \u003ctd\u003eIncertain de soi\u003c/td\u003e\n          \u003ctd\u003e🥺\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eIntérêt\u003c/td\u003e\n          \u003ctd\u003eCuriosité\u003c/td\u003e\n          \u003ctd\u003e👀\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eIrritabilité\u003c/td\u003e\n          \u003ctd\u003eEn colère et frustré\u003c/td\u003e\n          \u003ctd\u003e🙅‍♂️\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eJalousie\u003c/td\u003e\n          \u003ctd\u003eEnvie\u003c/td\u003e\n          \u003ctd\u003e🐍\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eBienveillance\u003c/td\u003e\n          \u003ctd\u003eAmabilité\u003c/td\u003e\n          \u003ctd\u003e🌸\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eSolitude\u003c/td\u003e\n          \u003ctd\u003eSe sentir seul\u003c/td\u003e\n          \u003ctd\u003e😢\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eAmour\u003c/td\u003e\n          \u003ctd\u003eAffection\u003c/td\u003e\n          \u003ctd\u003e❤️\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eMalice\u003c/td\u003e\n          \u003ctd\u003eIntention mauvaise\u003c/td\u003e\n          \u003ctd\u003e💁🏽‍♂️\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eMélancolie\u003c/td\u003e\n          \u003ctd\u003eTristesse, dépression\u003c/td\u003e\n          \u003ctd\u003e😔\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eMisérable\u003c/td\u003e\n          \u003ctd\u003eTrès malheureux\u003c/td\u003e\n          \u003ctd\u003e😭\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eMisère\u003c/td\u003e\n          \u003ctd\u003eTristesse extrême\u003c/td\u003e\n          \u003ctd\u003e😓\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eHumilité\u003c/td\u003e\n          \u003ctd\u003eHumilité\u003c/td\u003e\n          \u003ctd\u003e🎶\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eNervosité\u003c/td\u003e\n          \u003ctd\u003eEffrayé ou anxieux\u003c/td\u003e\n          \u003ctd\u003e😨\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eNeutre\u003c/td\u003e\n          \u003ctd\u003eIndifférent\u003c/td\u003e\n          \u003ctd\u003e🚫\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eObsession\u003c/td\u003e\n          \u003ctd\u003ePréoccupation pour quelque chose\u003c/td\u003e\n          \u003ctd\u003e🧠\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eOptimisme\u003c/td\u003e\n          \u003ctd\u003eEspoir pour un bon résultat\u003c/td\u003e\n          \u003ctd\u003e👀\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003ePanique\u003c/td\u003e\n          \u003ctd\u003eEffrayé et submergé\u003c/td\u003e\n          \u003ctd\u003e🙅‍♀️\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003ePassionné\u003c/td\u003e\n          \u003ctd\u003eÉmotion intense\u003c/td\u003e\n          \u003ctd\u003e🔥\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003ePatience\u003c/td\u003e\n          \u003ctd\u003eAttendre calmement\u003c/td\u003e\n          \u003ctd\u003e🌿\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eSérénité\u003c/td\u003e\n          \u003ctd\u003eCalme et sérénité\u003c/td\u003e\n          \u003ctd\u003e✈️\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003ePersécution\u003c/td\u003e\n          \u003ctd\u003eSe sentir opprimé\u003c/td\u003e\n          \u003ctd\u003e💢\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eJoueux\u003c/td\u003e\n          \u003ctd\u003eLéger et enjoué\u003c/td\u003e\n          \u003ctd\u003e🤡\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003ePlaisir\u003c/td\u003e\n          \u003ctd\u003eJoie, bonheur\u003c/td\u003e\n          \u003ctd\u003e🍻\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eÉquilibre\u003c/td\u003e\n          \u003ctd\u003eGrâce sous pression\u003c/td\u003e\n          \u003ctd\u003e🕊\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eÉloge\u003c/td\u003e\n          \u003ctd\u003eComplimentaire\u003c/td\u003e\n          \u003ctd\u003e🏆\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eFierté\u003c/td\u003e\n          \u003ctd\u003eSatisfaction pour un accomplissement\u003c/td\u003e\n          \u003ctd\u003e🎉\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eRenvoi\u003c/td\u003e\n          \u003ctd\u003eTristesse à propos d’actes passés\u003c/td\u003e\n          \u003ctd\u003e😞\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eDétente\u003c/td\u003e\n          \u003ctd\u003eRepos ou loisir\u003c/td\u003e\n          \u003ctd\u003e🛋\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eRemords\u003c/td\u003e\n          \u003ctd\u003eCulpabilité pour des fautes\u003c/td\u003e\n          \u003ctd\u003e👁\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eRépulsion\u003c/td\u003e\n          \u003ctd\u003eDégoût\u003c/td\u003e\n          \u003ctd\u003e🦀\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eRespect\u003c/td\u003e\n          \u003ctd\u003eEstime pour quelqu’un ou quelque chose\u003c/td\u003e\n          \u003ctd\u003e🙇🏽‍♂️\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eRancune\u003c/td\u003e\n          \u003ctd\u003eColère pour une offense\u003c/td\u003e\n          \u003ctd\u003e🔥\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eRomantique\u003c/td\u003e\n          \u003ctd\u003eAmour et affection\u003c/td\u003e\n          \u003ctd\u003e❣️\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eSécurité\u003c/td\u003e\n          \u003ctd\u003eSécurité\u003c/td\u003e\n          \u003ctd\u003e🚨\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eTristesse\u003c/td\u003e\n          \u003ctd\u003eDeuil ou désespoir\u003c/td\u003e\n          \u003ctd\u003e💔\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eSarcasme\u003c/td\u003e\n          \u003ctd\u003eIronie, humour moqueur\u003c/td\u003e\n          \u003ctd\u003e🤷🏻‍♀️\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eCrainte\u003c/td\u003e\n          \u003ctd\u003eEffrayé\u003c/td\u003e\n          \u003ctd\u003e😱\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eSecret\u003c/td\u003e\n          \u003ctd\u003eGarder quelque chose caché\u003c/td\u003e\n          \u003ctd\u003e🕵️‍♀️\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eMaîtrise de soi\u003c/td\u003e\n          \u003ctd\u003eContrôler ses émotions\u003c/td\u003e\n          \u003ctd\u003e🧠\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eHonte\u003c/td\u003e\n          \u003ctd\u003eHonteux\u003c/td\u003e\n          \u003ctd\u003e🙈\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eChoc\u003c/td\u003e\n          \u003ctd\u003eSurprise et incrédulité\u003c/td\u003e\n          \u003ctd\u003e😲\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eChagrin\u003c/td\u003e\n          \u003ctd\u003eDeuil\u003c/td\u003e\n          \u003ctd\u003e🌾\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eStress\u003c/td\u003e\n          \u003ctd\u003eTension\u003c/td\u003e\n          \u003ctd\u003e😩\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eSuccès\u003c/td\u003e\n          \u003ctd\u003eRéussite\u003c/td\u003e\n          \u003ctd\u003e🎉\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eSuspicion\u003c/td\u003e\n          \u003ctd\u003eDoute sur quelqu’un ou quelque chose\u003c/td\u003e\n          \u003ctd\u003e👁\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eSympathique\u003c/td\u003e\n          \u003ctd\u003eComprendre les sentiments des autres\u003c/td\u003e\n          \u003ctd\u003e🧠\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eReconnaissance\u003c/td\u003e\n          \u003ctd\u003eReconnaissance\u003c/td\u003e\n          \u003ctd\u003e🙇🏽‍♂️\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eSoif\u003c/td\u003e\n          \u003ctd\u003eDésir d’eau\u003c/td\u003e\n          \u003ctd\u003e💦\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eTimidité\u003c/td\u003e\n          \u003ctd\u003eTimidité ou peur\u003c/td\u003e\n          \u003ctd\u003e🐮\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eConfiance\u003c/td\u003e\n          \u003ctd\u003eConfiance en quelqu’un ou quelque chose\u003c/td\u003e\n          \u003ctd\u003e🤝\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eIncertitude\u003c/td\u003e\n          \u003ctd\u003eDoutes\u003c/td\u003e\n          \u003ctd\u003e⚪️\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eInconfort\u003c/td\u003e\n          \u003ctd\u003eMalaise\u003c/td\u003e\n          \u003ctd\u003e🥶\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eVulnérabilité\u003c/td\u003e\n          \u003ctd\u003eExposé au danger\u003c/td\u003e\n          \u003ctd\u003e🔫\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eChaleur\u003c/td\u003e\n          \u003ctd\u003eAmabilité, bienveillance\u003c/td\u003e\n          \u003ctd\u003e🍂\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eFaiblesse\u003c/td\u003e\n          \u003ctd\u003eManque de force\u003c/td\u003e\n          \u003ctd\u003e🆕\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eNostalgie\u003c/td\u003e\n          \u003ctd\u003eRêveur\u003c/td\u003e\n          \u003ctd\u003e🌿\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eÉmerveillement\u003c/td\u003e\n          \u003ctd\u003eÉtonnement\u003c/td\u003e\n          \u003ctd\u003e😲\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eInquiet\u003c/td\u003e\n          \u003ctd\u003eAnxieux et préoccupé\u003c/td\u003e\n          \u003ctd\u003e👀\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eDésir\u003c/td\u003e\n          \u003ctd\u003eDésir pour quelque chose\u003c/td\u003e\n          \u003ctd\u003e🎉\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eÉlan\u003c/td\u003e\n          \u003ctd\u003eProfiter de la vie\u003c/td\u003e\n          \u003ctd\u003e🧡\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e","title":"List of Emotions"},{"content":" Un tableau de vision est une collation d’images et de mots représentant les désirs ou objectifs d’une personne, conçu pour servir d’inspiration ou de motivation. Il comprend des photos et des mots qui vous aideront à vous inspirer afin de concrétiser vos rêves et d’atteindre vos objectifs. C’est une manière de documenter et d’organiser ce que vous souhaitez accomplir dans la vie tout en vous poussant à agir. Utilisez des tableaux de vision pour des objectifs à court et à long terme dans la vie. OxfordDictionaries. (n.d.). Vision board. http://www.oxforddictionaries.com/definition/vision_board\nDavis, T. (2021, mars 1). Qu’est-ce qu’un tableau de vision et pourquoi en créer un ? Psychology Today. https://www.psychologytoday.com/us/blog/click-here-happiness/202103/what-is-vision-board-and-why-make-one ","permalink":"https://www.shafiq.in/fr/blog/what-is-a-vision-board/","summary":"\u003cdl\u003e\n\u003cdt\u003eUn tableau de vision est une collation d’images et de mots représentant les désirs ou objectifs d’une personne, conçu pour servir d’inspiration ou de motivation. Il comprend des photos et des mots qui vous aideront à vous inspirer afin de concrétiser vos rêves et d’atteindre vos objectifs. C’est une manière de documenter et d’organiser ce que vous souhaitez accomplir dans la vie tout en vous poussant à agir. Utilisez des tableaux de vision pour des objectifs à court et à long terme dans la vie.\u003c/dt\u003e\n\u003cdd\u003e\n\u003cp\u003eOxfordDictionaries. (n.d.). Vision board. \u003ca href=\"http://www.oxforddictionaries.com/definition/vision_board\"\u003ehttp://www.oxforddictionaries.com/definition/vision_board\u003c/a\u003e\u003c/p\u003e","title":"What is a vision board"},{"content":"La thérapie de l\u0026rsquo;enfant intérieur est une forme de psychothérapie visant à aider les personnes à guérir leurs traumatismes d\u0026rsquo;enfance et à retrouver leur authenticité. Le concept de l\u0026rsquo;enfant intérieur repose sur l\u0026rsquo;idée que chacun possède une part de soi qui conserve les émotions, souvenirs et expériences de sa jeunesse. Cette part peut influencer nos pensées, émotions et comportements à l\u0026rsquo;âge adulte, en particulier si nous avons des problèmes non résolus ou des besoins non satisfaits du passé.\nQuelques objectifs de la thérapie de l\u0026rsquo;enfant intérieur sont :\nIdentifier et reconnaître les blessures et besoins de l\u0026rsquo;enfant intérieur Offrir un espace sûr et bienveillant pour que l\u0026rsquo;enfant intérieur puisse s\u0026rsquo;exprimer Développer une relation pleine de compassion et de bienveillance avec l\u0026rsquo;enfant intérieur Rééduquer l\u0026rsquo;enfant intérieur par des messages positifs et des affirmations Intégrer l\u0026rsquo;enfant intérieur à l\u0026rsquo;adulte et créer un sentiment d\u0026rsquo;unité et d\u0026rsquo;équilibre Quelques bienfaits de la thérapie de l\u0026rsquo;enfant intérieur sont :\nAugmentation de la conscience de soi et de l\u0026rsquo;estime de soi Réduction de l\u0026rsquo;anxiété et de la dépression Meilleure régulation émotionnelle et compétences d\u0026rsquo;adaptation Relations améliorées et communication renforcée Créativité et joie accrues La thérapie de l\u0026rsquo;enfant intérieur peut inclure diverses techniques, telles que :\nImagerie guidée et méditation Journaling et écriture de lettres Thérapie par l’art et la musique Jeux de rôle et dialogues Thérapie cognitivo-comportementale (TCC) et thérapie des schémas Thérapie de l\u0026rsquo;enfant intérieur - Counselling Directory. (n.d.). https://www.counselling-directory.org.uk/memberarticles/inner-child-therapy\nEnfant intérieur : guérir votre enfant intérieur | BetterHelp. (n.d.). https://www.betterhelp.com/advice/therapy/inner-child-what-is-it-what-happened-to-it-and-how-can-i-fix-it/\nQu\u0026rsquo;est-ce que la thérapie de l\u0026rsquo;enfant intérieur ? Objectifs et ce à quoi s\u0026rsquo;attendre - Medical News Today. (n.d.). https://www.medicalnewstoday.com/articles/inner-child-therapy\nThérapie de l\u0026rsquo;enfant intérieur - Ce qu\u0026rsquo;elle est et comment elle aide. https://fherehab.com/learning/inner-child-therapy.\nGuérison de l\u0026rsquo;enfant intérieur : 35 outils pratiques pour dépasser son passé. https://positivepsychology.com/inner-child-healing/.\n","permalink":"https://www.shafiq.in/fr/blog/what-is-inner-child-therapy/","summary":"\u003cp\u003eLa thérapie de l\u0026rsquo;enfant intérieur est une forme de psychothérapie visant à aider les personnes à guérir leurs traumatismes d\u0026rsquo;enfance et à retrouver leur authenticité. Le concept de l\u0026rsquo;enfant intérieur repose sur l\u0026rsquo;idée que chacun possède une part de soi qui conserve les émotions, souvenirs et expériences de sa jeunesse. Cette part peut influencer nos pensées, émotions et comportements à l\u0026rsquo;âge adulte, en particulier si nous avons des problèmes non résolus ou des besoins non satisfaits du passé.\u003c/p\u003e","title":"What is inner child therapy"},{"content":"find . -name \u0026#34;*.md\u0026#34; -type f -exec sed -i \u0026#39;/line of text/d\u0026#39; {} \\; Cette commande utilise find pour localiser tous les fichiers .md dans le répertoire courant et ses sous-répertoires de manière récursive. L\u0026rsquo;option -exec est utilisée pour exécuter la commande sed sur chaque fichier trouvé. Le {} est remplacé par le nom de chaque fichier trouvé, et \\; est utilisé pour terminer l\u0026rsquo;option -exec.\nLa commande sed supprime toute ligne contenant la chaîne de caractères \u0026ldquo;line of text\u0026rdquo; de chaque fichier trouvé.\n","permalink":"https://www.shafiq.in/fr/blog/how-to-erase-line-in-files-containing-string-recursively-in-linux/","summary":"\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003efind . -name \u003cspan class=\"s2\"\u003e\u0026#34;*.md\u0026#34;\u003c/span\u003e -type f -exec sed -i \u003cspan class=\"s1\"\u003e\u0026#39;/line of text/d\u0026#39;\u003c/span\u003e \u003cspan class=\"o\"\u003e{}\u003c/span\u003e \u003cspan class=\"se\"\u003e\\;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eCette commande utilise \u003ccode\u003efind\u003c/code\u003e pour localiser tous les fichiers \u003ccode\u003e.md\u003c/code\u003e dans le répertoire courant et ses sous-répertoires de manière récursive. L\u0026rsquo;option \u003ccode\u003e-exec\u003c/code\u003e est utilisée pour exécuter la commande \u003ccode\u003esed\u003c/code\u003e sur chaque fichier trouvé. Le \u003ccode\u003e{}\u003c/code\u003e est remplacé par le nom de chaque fichier trouvé, et \u003ccode\u003e\\;\u003c/code\u003e est utilisé pour terminer l\u0026rsquo;option \u003ccode\u003e-exec\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eLa commande \u003ccode\u003esed\u003c/code\u003e supprime toute ligne contenant la chaîne de caractères \u0026ldquo;line of text\u0026rdquo; de chaque fichier trouvé.\u003c/p\u003e","title":"How to erase line in files containing string recursively in Linux"},{"content":"PhantomJS est un navigateur web headless pour automatiser les interactions avec les pages web.\nPour installer PhantomJS sur Ubuntu 22.10, suivez ces étapes :\nMettez à jour les paquets système avec sudo apt update \u0026amp;\u0026amp; sudo apt upgrade Installez les paquets requis avec sudo apt install build-essential chrpath libssl-dev libxft-dev libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev Téléchargez le fichier binaire de PhantomJS depuis son site officiel avec wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 Extrayez le fichier dans /usr/local/share/ avec sudo tar xvjf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/share/ Créez un lien symbolique vers le fichier binaire avec sudo ln -sf /usr/local/share/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin Vérifiez l\u0026rsquo;installation avec phantomjs --version ","permalink":"https://www.shafiq.in/fr/blog/how-to-install-phantomjs-on-ubuntu-22.10/","summary":"\u003cp\u003ePhantomJS est un navigateur web headless pour automatiser les interactions avec les pages web.\u003c/p\u003e\n\u003cp\u003ePour installer PhantomJS sur Ubuntu 22.10, suivez ces étapes :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMettez à jour les paquets système avec \u003ccode\u003esudo apt update \u0026amp;\u0026amp; sudo apt upgrade\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eInstallez les paquets requis avec \u003ccode\u003esudo apt install build-essential chrpath libssl-dev libxft-dev libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eTéléchargez le fichier binaire de PhantomJS depuis son site officiel avec \u003ccode\u003ewget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eExtrayez le fichier dans \u003ccode\u003e/usr/local/share/\u003c/code\u003e avec \u003ccode\u003esudo tar xvjf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/share/\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCréez un lien symbolique vers le fichier binaire avec \u003ccode\u003esudo ln -sf /usr/local/share/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eVérifiez l\u0026rsquo;installation avec \u003ccode\u003ephantomjs --version\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e","title":"How to install PhantomJS on Ubuntu 22.10"},{"content":"find -type f -name \u0026#39;*string*\u0026#39; -delete Cette commande supprime tous les fichiers dont le nom contient la chaîne string. Le caractère * est un joker qui correspond à un nombre quelconque de caractères. L\u0026rsquo;option -type f indique à find de ne rechercher que des fichiers, pas des répertoires. L\u0026rsquo;option -delete demande à find de supprimer les fichiers qu\u0026rsquo;il a trouvés.\n","permalink":"https://www.shafiq.in/fr/blog/how-to-delete-all-files-containing-string-in-linux/","summary":"\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003efind -type f -name \u003cspan class=\"s1\"\u003e\u0026#39;*string*\u0026#39;\u003c/span\u003e -delete\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eCette commande supprime tous les fichiers dont le nom contient la chaîne \u003ccode\u003estring\u003c/code\u003e. Le caractère \u003ccode\u003e*\u003c/code\u003e est un joker qui correspond à un nombre quelconque de caractères. L\u0026rsquo;option \u003ccode\u003e-type f\u003c/code\u003e indique à \u003ccode\u003efind\u003c/code\u003e de ne rechercher que des fichiers, pas des répertoires. L\u0026rsquo;option \u003ccode\u003e-delete\u003c/code\u003e demande à \u003ccode\u003efind\u003c/code\u003e de supprimer les fichiers qu\u0026rsquo;il a trouvés.\u003c/p\u003e","title":"How to delete all files containing string in Linux"},{"content":"DevOps est une philosophie qui met l\u0026rsquo;accent sur la collaboration entre les équipes développement et opérations. L\u0026rsquo;objectif du DevOps est d\u0026rsquo;accélérer la livraison du logiciel tout en maintenant des niveaux élevés de qualité et de sécurité. La collaboration est essentielle au succès d\u0026rsquo;une équipe DevOps.\nL\u0026rsquo;une des façons les plus importantes dont les équipes développement et opérations peuvent collaborer est l\u0026rsquo;utilisation d\u0026rsquo;outils et de plateformes partagées. Ces outils et plateformes permettent aux équipes de partager des informations et de communiquer efficacement, ce qui est crucial pour atteindre les objectifs du DevOps. Par exemple, une plateforme commune pour les équipes développement et opérations est un système de gestion de code source, tel que Git. Ce système permet aux équipes de collaborer sur le code et de suivre les modifications, ce qui facilite la détection et la résolution des problèmes.\nUn autre aspect clé de la collaboration au sein d\u0026rsquo;une équipe DevOps est l\u0026rsquo;utilisation de l\u0026rsquo;automatisation. L\u0026rsquo;automatisation aide les équipes à fluidifier les processus, à améliorer l\u0026rsquo;efficacité et à réduire le risque d\u0026rsquo;erreurs. Par exemple, un outil d\u0026rsquo;automatisation comme Jenkins peut être utilisé pour automatiser le processus de construction et de déploiement, ce qui facilite la collaboration sur le développement et la livraison logicielle.\nLa communication est également cruciale pour la collaboration au sein d\u0026rsquo;une équipe DevOps. Les équipes doivent pouvoir communiquer efficacement entre elles afin de s\u0026rsquo;assurer que tout le monde est sur la même longueur d\u0026rsquo;onde et que les problèmes sont identifiés et résolus rapidement. Cela peut être réalisé grâce à des réunions régulières, à l\u0026rsquo;email, au messagerie instantanée et à d\u0026rsquo;autres outils de communication.\nEn complément de ce qui précède, il est important de cultiver une culture d\u0026rsquo;apprentissage continu et d\u0026rsquo;amélioration continue. Une telle culture encourage les équipes à partager leurs connaissances, à apprendre les unes des autres et à améliorer continuellement leur manière de travailler. Cela peut être réalisé grâce à des pratiques telles que les rétrospectives, où les équipes examinent leur travail et identifient les domaines d\u0026rsquo;amélioration.\nEnfin, il est important de disposer d\u0026rsquo;une compréhension claire des rôles et responsabilités. Dans une équipe DevOps, il est essentiel que chacun comprenne son rôle et soit conscient des responsabilités des autres membres de l\u0026rsquo;équipe. Cela peut être réalisé grâce à des réunions régulières, à une documentation claire et à une communication régulière.\nLa collaboration est essentielle au succès d\u0026rsquo;une équipe DevOps. Les équipes développement et opérations doivent travailler ensemble pour atteindre les objectifs du DevOps, qui incluent une livraison logicielle plus rapide, une meilleure qualité et une sécurité améliorée. La collaboration peut être mise en œuvre grâce à l\u0026rsquo;utilisation d\u0026rsquo;outils et de plateformes partagées, à l\u0026rsquo;automatisation, à une communication efficace, à une culture d\u0026rsquo;apprentissage continu et d\u0026rsquo;amélioration continue, ainsi qu\u0026rsquo;à une compréhension claire des rôles et responsabilités.\n","permalink":"https://www.shafiq.in/fr/blog/collaboration-in-a-devops-team/","summary":"\u003cp\u003eDevOps est une philosophie qui met l\u0026rsquo;accent sur la collaboration entre les équipes développement et opérations. L\u0026rsquo;objectif du DevOps est d\u0026rsquo;accélérer la livraison du logiciel tout en maintenant des niveaux élevés de qualité et de sécurité. La collaboration est essentielle au succès d\u0026rsquo;une équipe DevOps.\u003c/p\u003e\n\u003cp\u003eL\u0026rsquo;une des façons les plus importantes dont les équipes développement et opérations peuvent collaborer est l\u0026rsquo;utilisation d\u0026rsquo;outils et de plateformes partagées. Ces outils et plateformes permettent aux équipes de partager des informations et de communiquer efficacement, ce qui est crucial pour atteindre les objectifs du DevOps. Par exemple, une plateforme commune pour les équipes développement et opérations est un système de gestion de code source, tel que Git. Ce système permet aux équipes de collaborer sur le code et de suivre les modifications, ce qui facilite la détection et la résolution des problèmes.\u003c/p\u003e","title":"Collaboration in a DevOps Team"},{"content":"Memento Mori fait référence au rappel philosophique de l\u0026rsquo;inévitable mort. Vous pourriez quitter la vie à cet instant. Que cela détermine ce que vous faites, dites et pensez. Cela vous aide à vous souvenir des bonnes choses sans arrogance, et à laisser aller les mauvaises choses avec indifférence. Vous contrôlez si vous perdez du temps à vous énerver pour des choses. Et si vous perdez du temps à prendre les choses personnellement.\n","permalink":"https://www.shafiq.in/fr/blog/memento-mori/","summary":"\u003cp\u003e\u003cstrong\u003eMemento Mori\u003c/strong\u003e fait référence au rappel philosophique de l\u0026rsquo;inévitable mort. Vous pourriez quitter la vie à cet instant. Que cela détermine ce que vous faites, dites et pensez. Cela vous aide à vous souvenir des bonnes choses sans arrogance, et à laisser aller les mauvaises choses avec indifférence. Vous contrôlez si vous perdez du temps à vous énerver pour des choses. Et si vous perdez du temps à prendre les choses personnellement.\u003c/p\u003e","title":"Memento Mori"},{"content":"Amor fati est une expression qui peut être traduite par « amour de son destin ». Elle décrit une attitude selon laquelle on considère tout ce qui arrive dans sa vie, y compris la souffrance et la perte, comme bon ou, du moins, nécessaire. Vous prenez ce que vous pouvez de la vie. Vous en faites du carburant. Vous en devenez meilleur. Vous êtes amélioré par cela. Faites-en le meilleur usage. Devenez meilleur à cause de ce qui s\u0026rsquo;est produit.\n","permalink":"https://www.shafiq.in/fr/blog/amor-fati/","summary":"\u003cp\u003e\u003cstrong\u003eAmor fati\u003c/strong\u003e est une expression qui peut être traduite par « amour de son destin ». Elle décrit une attitude selon laquelle on considère tout ce qui arrive dans sa vie, y compris la souffrance et la perte, comme bon ou, du moins, nécessaire. Vous prenez ce que vous pouvez de la vie. Vous en faites du carburant. Vous en devenez meilleur. Vous êtes amélioré par cela. Faites-en le meilleur usage. Devenez meilleur à cause de ce qui s\u0026rsquo;est produit.\u003c/p\u003e","title":"Amor Fati"},{"content":"Vous n\u0026rsquo;avez pas besoin d\u0026rsquo;être fou pour vivre sur Terre. Mais pour certains, cela aide à être fou.\n","permalink":"https://www.shafiq.in/fr/blog/you-dont-have-to-be-crazy-to-live-on-earth.-but-to-some-it-helps-to-be./","summary":"\u003cp\u003eVous n\u0026rsquo;avez pas besoin d\u0026rsquo;être fou pour vivre sur Terre. Mais pour certains, cela aide à être fou.\u003c/p\u003e","title":"You don't have to be crazy to live on Earth. But to some it helps to be."},{"content":"Lorsque vous travaillez avec Vagrant, un outil permettant de créer et de gérer des environnements virtuels, vous pouvez rencontrer un message d\u0026rsquo;erreur indiquant « Cannot unregister the machine while it is locked ». Ce message est souvent accompagné d\u0026rsquo;un bloc de messages d\u0026rsquo;erreur et de sorties de commande, comme indiqué ci-dessous :\nvagrant destroy default: Êtes-vous sûr de vouloir détruire la machine virtuelle \u0026#39;default\u0026#39; ? [y/N] y ==\u0026gt; default: Destruction de la machine virtuelle et des disques associés… Une erreur s\u0026#39;est produite lors de l\u0026#39;exécution de VBoxManage, une interface en ligne de commande utilisée par Vagrant pour contrôler VirtualBox. ... VBoxManage : erreur : Impossible de désenregistrer la machine \u0026#39;CnC_default_1643660523119_45689\u0026#39; pendant qu\u0026#39;elle est verrouillée ... Cette erreur est généralement levée lorsqu\u0026rsquo;on tente de détruire une machine virtuelle Vagrant à l\u0026rsquo;aide de la commande vagrant destroy. Elle indique que la machine virtuelle est dans un état verrouillé, empêchant son désenregistrement et sa suppression.\nSolution Le problème peut être résolu en terminant manuellement toutes les instances en cours d\u0026rsquo;exécution de VirtualBox avant d\u0026rsquo;exécuter à nouveau la commande vagrant destroy. La commande suivante peut être exécutée pour tuer toutes les instances en cours de VBoxHeadless, le processus responsable de l\u0026rsquo;exécution des machines virtuelles en mode tête-à-tête :\nkillall -9 VBoxHeadless \u0026amp;\u0026amp; vagrant destroy Cette commande va forcer la terminaison de tous les processus VBoxHeadless en cours d\u0026rsquo;exécution, puis exécuter la commande vagrant destroy pour supprimer la machine virtuelle.\nCompréhension de la commande Analysons ce que fait cette commande :\nkillall -9 VBoxHeadless : La commande killall envoie un signal pour terminer tous les processus ayant un nom spécifique, ici VBoxHeadless. L\u0026rsquo;option -9 envoie le signal SIGKILL, qui tue immédiatement le processus.\n\u0026amp;\u0026amp; : Cet opérateur shell permet d\u0026rsquo;exécuter une deuxième commande uniquement si la première a réussi.\nvagrant destroy : Cette commande permet de détruire la machine virtuelle Vagrant, qui devrait maintenant s\u0026rsquo;exécuter sans problème.\nRencontrer des erreurs lors du travail avec Vagrant peut être frustrant, mais comprendre comment les résoudre efficacement vous épargnera du temps et des efforts. L\u0026rsquo;erreur « Cannot unregister the machine while it is locked » peut être facilement corrigée en combinant les commandes killall et vagrant destroy, permettant ainsi de reprendre vos tâches de développement sans interruption.\n","permalink":"https://www.shafiq.in/fr/blog/how-to-resolve-cannot-unregister-the-machine-while-it-is-locked-error-in-vagrant/","summary":"\u003cp\u003eLorsque vous travaillez avec Vagrant, un outil permettant de créer et de gérer des environnements virtuels, vous pouvez rencontrer un message d\u0026rsquo;erreur indiquant « Cannot unregister the machine while it is locked ». Ce message est souvent accompagné d\u0026rsquo;un bloc de messages d\u0026rsquo;erreur et de sorties de commande, comme indiqué ci-dessous :\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003evagrant destroy\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003edefault: Êtes-vous sûr de vouloir détruire la machine virtuelle \u003cspan class=\"s1\"\u003e\u0026#39;default\u0026#39;\u003c/span\u003e ? \u003cspan class=\"o\"\u003e[\u003c/span\u003ey/N\u003cspan class=\"o\"\u003e]\u003c/span\u003e \u003cspan class=\"nv\"\u003ey\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"o\"\u003e==\u003c/span\u003e\u0026gt; default: Destruction de la machine virtuelle et des disques associés…\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eUne erreur s\u003cspan class=\"s1\"\u003e\u0026#39;est produite lors de l\u0026#39;\u003c/span\u003eexécution de VBoxManage, une interface en ligne de commande utilisée par Vagrant pour contrôler VirtualBox.\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e...\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eVBoxManage : erreur : Impossible de désenregistrer la machine \u003cspan class=\"s1\"\u003e\u0026#39;CnC_default_1643660523119_45689\u0026#39;\u003c/span\u003e pendant qu\u003cspan class=\"err\"\u003e\u0026#39;\u003c/span\u003eelle est verrouillée\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e...\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eCette erreur est généralement levée lorsqu\u0026rsquo;on tente de détruire une machine virtuelle Vagrant à l\u0026rsquo;aide de la commande \u003ccode\u003evagrant destroy\u003c/code\u003e. Elle indique que la machine virtuelle est dans un état verrouillé, empêchant son désenregistrement et sa suppression.\u003c/p\u003e","title":"How to Resolve \"Cannot Unregister the Machine While It Is Locked\" Error in Vagrant"},{"content":"openssl s_client -connect {HOSTNAME}:{PORT} -showcerts ","permalink":"https://www.shafiq.in/fr/blog/how-to-get-a-remote-server-ssl-certificate/","summary":"\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eopenssl s_client -connect \u003cspan class=\"o\"\u003e{\u003c/span\u003eHOSTNAME\u003cspan class=\"o\"\u003e}\u003c/span\u003e:\u003cspan class=\"o\"\u003e{\u003c/span\u003ePORT\u003cspan class=\"o\"\u003e}\u003c/span\u003e -showcerts\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","title":"How to get a remote server SSL certificate"},{"content":"« Aucun bon geste ne reste impuni. »\nParfois, lorsque vous essayez de faire quelque chose de bon ou d’utile, cela peut mal tourner et vous vous retrouverez en difficulté ou confronté à des conséquences négatives, malheureusement, même avec les meilleures intentions.\nCela peut arriver même lorsque vous essayez d’être bienveillant ou utile envers ceux qui nous sont les plus proches, comme nos parents. C’est une réalité malheureuse que les bons gestes ne donnent pas toujours des résultats positifs.\n","permalink":"https://www.shafiq.in/fr/blog/no-good-deed-ever-goes-unpunished./","summary":"\u003cp\u003e« Aucun bon geste ne reste impuni. »\u003c/p\u003e\n\u003cp\u003eParfois, lorsque vous essayez de faire quelque chose de bon ou d’utile, cela peut mal tourner et vous vous retrouverez en difficulté ou confronté à des conséquences négatives, malheureusement, même avec les meilleures intentions.\u003c/p\u003e\n\u003cp\u003eCela peut arriver même lorsque vous essayez d’être bienveillant ou utile envers ceux qui nous sont les plus proches, comme nos parents. C’est une réalité malheureuse que les bons gestes ne donnent pas toujours des résultats positifs.\u003c/p\u003e","title":"No good deed ever goes unpunished."},{"content":"Chaque fois que vous avez envie de critiquer quelqu’un, rappelez-vous que toutes les personnes dans ce monde n’ont pas eu les avantages que vous avez eu.\n","permalink":"https://www.shafiq.in/fr/blog/whenever-you-feel-like-criticizing-any-one-just-remember-that-all-the-people-in-this-world-havent-had-the-advantages-that-youve-had./","summary":"\u003cp\u003eChaque fois que vous avez envie de critiquer quelqu’un, rappelez-vous que toutes les personnes dans ce monde n’ont pas eu les avantages que vous avez eu.\u003c/p\u003e","title":"Whenever you feel like criticizing any one, just remember that all the people in this world haven't had the advantages that you've had."},{"content":"for f in .; do pre=\u0026#34;${f%.}\u0026#34;; suf=\u0026#34;${f##.}\u0026#34;; mv -i -f -- \u0026#34;$f\u0026#34; \u0026#34;${pre//./_}.${suf}\u0026#34;; done ","permalink":"https://www.shafiq.in/fr/blog/replace-all-dots-in-filenames-except-the-extension-on-linux/","summary":"\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003efor\u003c/span\u003e f in .\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"k\"\u003edo\u003c/span\u003e \u003cspan class=\"nv\"\u003epre\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003ef\u003c/span\u003e\u003cspan class=\"p\"\u003e%.\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"nv\"\u003esuf\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003ef\u003c/span\u003e\u003cspan class=\"p\"\u003e##.\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e mv -i -f -- \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"nv\"\u003e$f\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003epre\u003c/span\u003e\u003cspan class=\"p\"\u003e//./_\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e.\u003c/span\u003e\u003cspan class=\"si\"\u003e${\u003c/span\u003e\u003cspan class=\"nv\"\u003esuf\u003c/span\u003e\u003cspan class=\"si\"\u003e}\u003c/span\u003e\u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e \u003cspan class=\"k\"\u003edone\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","title":"Replace all dots in filenames except the extension on Linux"},{"content":"ls -1 | wc -l ","permalink":"https://www.shafiq.in/fr/blog/count-number-of-directories-in-the-current-directory-using-linux-cli/","summary":"\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003els -1 \u003cspan class=\"p\"\u003e|\u003c/span\u003e wc -l\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","title":"Count number of directories in the current directory using Linux cli"},{"content":"ls -l . | egrep -c \u0026#39;^-\u0026#39; ","permalink":"https://www.shafiq.in/fr/blog/count-number-of-files-in-a-directory-using-linux-cli/","summary":"\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003els -l . \u003cspan class=\"p\"\u003e|\u003c/span\u003e egrep -c \u003cspan class=\"s1\"\u003e\u0026#39;^-\u0026#39;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","title":"Count number of files in a directory using Linux cli"},{"content":"Prérequis Connectez-vous à votre système Debian 9 en utilisant un accès shell. Pour les systèmes distants, connectez-vous via SSH. Les utilisateurs Windows peuvent utiliser Putty ou d\u0026rsquo;autres applications alternatives pour établir une connexion SSH.\nssh root@debian9 Exécutez les commandes suivantes pour mettre à jour les paquets actuels vers la dernière version.\nsudo apt update sudo apt upgrade Exécutons maintenant les commandes suivantes pour installer les paquets requis sur votre système. Ensuite, importez la clé de signature des paquets. Après cela, configurez le PPA pour les paquets PHP sur votre système.\nsudo apt install ca-certificates apt-transport-https wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add - echo \u0026#34;deb https://packages.sury.org/php/ stretch main\u0026#34; | sudo tee /etc/apt/sources.list.d/php.list Maintenant, utilisez l\u0026rsquo;une des options ci-dessous pour installer PHP selon vos besoins.\nInstallation de PHP 7.4 Vous pouvez également installer la dernière version de PHP sur votre système. Exécutez les commandes suivantes pour installer PHP 7.4 sur Debian 9.\nsudo apt update sudo apt install php7.4 Installez également les modules PHP requis.\nsudo apt install php7.4-cli php7.4-common php7.4-curl php7.4-mbstring php7.4-mysql php7.4-xml Installation de PHP 7.3 Vous pouvez également installer la dernière version de PHP sur votre système. Exécutez les commandes suivantes pour installer PHP 7.3 sur Debian 9.\nsudo apt update sudo apt install php7.3 Installez également les modules PHP requis.\nsudo apt install php7.3-cli php7.3-common php7.3-curl php7.3-mbstring php7.3-mysql php7.3-xml Installation de PHP 7.2 Vous pouvez également installer la dernière version de PHP sur votre système. Exécutez les commandes suivantes pour installer PHP 7.2 sur Debian 9.\nsudo apt update sudo apt install php7.2 Installez également les modules PHP requis.\nsudo apt install php7.2-cli php7.2-common php7.2-curl php7.2-mbstring php7.2-mysql php7.2-xml Installation de PHP 7.1 Si votre application a un besoin spécifique pour PHP 7.1, vous pouvez utiliser les commandes suivantes pour installer PHP 7.1 sur un système Debian 9 Stretch.\nsudo apt update sudo apt install php7.1 Installez également les modules PHP requis selon vos besoins. Voici une liste des modules fréquemment utilisés.\nsudo apt install php7.1-cli php7.1-common php7.1-curl php7.1-mbstring php7.1-mysql php7.1-xml Installation de PHP 5.6 Exécutez les commandes suivantes pour installer PHP 5.6 sur votre système Debian 9 Stretch.\nsudo apt update sudo apt install php5.6 Installez également les modules PHP requis.\nsudo apt install php5.6-cli php5.6-common php5.6-curl php5.6-mbstring php5.6-mysql php5.6-xml ","permalink":"https://www.shafiq.in/fr/blog/how-to-install-php-7.4-7.3-5.6-on-debian-9-stretch/","summary":"\u003ch2 id=\"prérequis\"\u003ePrérequis\u003c/h2\u003e\n\u003cp\u003eConnectez-vous à votre système Debian 9 en utilisant un accès shell. Pour les systèmes distants, connectez-vous via SSH. Les utilisateurs Windows peuvent utiliser Putty ou d\u0026rsquo;autres applications alternatives pour établir une connexion SSH.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003essh root@debian9\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eExécutez les commandes suivantes pour mettre à jour les paquets actuels vers la dernière version.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo apt update \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo apt upgrade\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eExécutons maintenant les commandes suivantes pour installer les paquets requis sur votre système. Ensuite, importez la clé de signature des paquets. Après cela, configurez le PPA pour les paquets PHP sur votre système.\u003c/p\u003e","title":"How To Install PHP (7.4, 7.3 \u0026 5.6) on Debian 9 Stretch"},{"content":"Si vous obtenez une erreur du type Error: Cask 'hex-fiend-beta' definition is invalid: invalid 'depends_on macos' value: \u0026quot;:lion\u0026quot;, où hex-fiend-beta peut être n\u0026rsquo;importe quel nom de cask, et :lion n\u0026rsquo;importe quel nom de version de macOS, exécutez la commande suivante :\n/usr/bin/find \u0026#34;$(brew --prefix)/Caskroom/\u0026#34;*\u0026#39;/.metadata\u0026#39; -type f -name \u0026#39;*.rb\u0026#39; -print0 | /usr/bin/xargs -0 /usr/bin/perl -i -pe \u0026#39;s/depends_on macos: \\[.*?\\]//gsm;s/depends_on macos: .*//g\u0026#39; Cela supprimera toutes les références depends_on macos des casks installés.\n","permalink":"https://www.shafiq.in/fr/blog/fix-casks-with-depends_on-that-reference-pre-mavericks/","summary":"\u003cp\u003eSi vous obtenez une erreur du type \u003ccode\u003eError: Cask 'hex-fiend-beta' definition is invalid: invalid 'depends_on macos' value: \u0026quot;:lion\u0026quot;\u003c/code\u003e, où \u003ccode\u003ehex-fiend-beta\u003c/code\u003e peut être n\u0026rsquo;importe quel nom de cask, et \u003ccode\u003e:lion\u003c/code\u003e n\u0026rsquo;importe quel nom de version de macOS, exécutez la commande suivante :\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e/usr/bin/find \u003cspan class=\"s2\"\u003e\u0026#34;\u003c/span\u003e\u003cspan class=\"k\"\u003e$(\u003c/span\u003ebrew --prefix\u003cspan class=\"k\"\u003e)\u003c/span\u003e\u003cspan class=\"s2\"\u003e/Caskroom/\u0026#34;\u003c/span\u003e*\u003cspan class=\"s1\"\u003e\u0026#39;/.metadata\u0026#39;\u003c/span\u003e -type f -name \u003cspan class=\"s1\"\u003e\u0026#39;*.rb\u0026#39;\u003c/span\u003e -print0 \u003cspan class=\"p\"\u003e|\u003c/span\u003e /usr/bin/xargs -0 /usr/bin/perl -i -pe \u003cspan class=\"s1\"\u003e\u0026#39;s/depends_on macos: \\[.*?\\]//gsm;s/depends_on macos: .*//g\u0026#39;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eCela supprimera toutes les références \u003ccode\u003edepends_on macos\u003c/code\u003e des casks \u003cem\u003einstallés\u003c/em\u003e.\u003c/p\u003e","title":"Fix casks with `depends_on` that reference pre-Mavericks"},{"content":"sed -i \u0026#39;s/geteuid/getppid/\u0026#39; /usr/bin/vlc Explication : Le script d\u0026rsquo;initialisation vérifie si l\u0026rsquo;UID est égal à zéro. Zéro est réservé à l\u0026rsquo;utilisateur root. Utiliser sed pour remplacer geteuid par getppid trompe le script d\u0026rsquo;initialisation, car getppid est toujours \u0026gt; 0.\nBien que l\u0026rsquo;exécution de VLC en tant que root ne soit pas recommandée, cela fonctionne. Soyez conscient des risques et bien évidemment, ne le faites pas dans des environnements de production.\n","permalink":"https://www.shafiq.in/fr/blog/how-to-run-vlc-player-as-root-user/","summary":"\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esed -i \u003cspan class=\"s1\"\u003e\u0026#39;s/geteuid/getppid/\u0026#39;\u003c/span\u003e /usr/bin/vlc\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e\u003cstrong\u003eExplication :\u003c/strong\u003e Le script d\u0026rsquo;initialisation vérifie si l\u0026rsquo;UID est égal à zéro. Zéro est réservé à l\u0026rsquo;utilisateur root. Utiliser \u003ccode\u003esed\u003c/code\u003e pour remplacer \u003ccode\u003egeteuid\u003c/code\u003e par \u003ccode\u003egetppid\u003c/code\u003e trompe le script d\u0026rsquo;initialisation, car \u003ccode\u003egetppid\u003c/code\u003e est toujours \u003ccode\u003e\u0026gt; 0\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eBien que l\u0026rsquo;exécution de VLC en tant que root ne soit pas recommandée, cela fonctionne. Soyez conscient des risques et bien évidemment, ne le faites pas dans des environnements de production.\u003c/p\u003e","title":"How to run VLC player as root user"},{"content":"Veuillez accepter, sans engagement implicite ou explicite, mes meilleurs voeux pour une célébration de la nuit de solstice d\u0026rsquo;hiver, écologiquement consciente, socialement responsable, à faible stress, non addictive, neutre en matière de genre, pratiquée selon les traditions les plus agréables de la persuasion religieuse de votre choix, ou selon des pratiques laïques de votre choix, avec respect envers les persuasions religieuses ou laïques et/ou les traditions d\u0026rsquo;autrui, ou envers le choix de ne pas pratiquer de traditions religieuses ou laïques du tout… ainsi qu\u0026rsquo;une reconnaissance fiscalement réussie, personnellement épanouissante et médicalement sans complication de l\u0026rsquo;arrivée de l\u0026rsquo;année calendaire généralement acceptée, 2019, sans toutefois négliger les calendriers choisis par d\u0026rsquo;autres cultures dont les contributions ont aidé à faire de la Grande-Bretagne un pays éminent (sans suggérer que la Grande-Bretagne est nécessairement supérieure à toute autre nation, ni qu\u0026rsquo;elle est la seule « Grande-Bretagne » dans l’hémisphère nord), et sans tenir compte de la race, de la croyance, de la couleur, de l’âge, de l’aptitude physique, de la foi religieuse ou de l’orientation sexuelle du destinataire.\nCe voeu est limité aux bonnes nouvelles habituelles et usuelles pour une période d’un an, ou jusqu’à l’envoi d’un message de félicitations ultérieur, selon ce qui arrive en premier. Le terme « fête » n’est pas entendu comme se limitant aux célébrations juives ou chrétiennes habituelles, ni aux activités d\u0026rsquo;une communauté religieuse organisée ou spontanée, d\u0026rsquo;un groupe, d\u0026rsquo;un individu ou d\u0026rsquo;une croyance (ou de son absence).\nToute référence implicite à une figure festive, réelle ou fictive, décédée ou vivante, n’implique pas une approbation par ou une représentation de cette salutation, et tous les droits de propriété intellectuelle liés aux noms ou images de tiers sont ici reconnus.\nDISCLAIMER : En acceptant ce message, vous acceptez les conditions suivantes : Ce voeu est sujet à clarification ou retrait, et peut être révoqué à tout moment, pour quelque raison que ce soit ou sans raison, à la seule discrétion de l’expéditeur. Ce voeu est transférable librement sans modification du message d’origine. Ce voeu n’implique aucune promesse de l’expéditeur de concrétiser les souhaits du destinataire, de lui-même ou d’autrui, ni aucune responsabilité pour les conséquences pouvant découler de la mise en œuvre ou de l’absence de mise en œuvre de ces souhaits.\nCe voeu est nul là où la loi l’interdit.\n","permalink":"https://www.shafiq.in/fr/blog/a-lawyers-christmas-greeting/","summary":"\u003cp\u003eVeuillez accepter, sans engagement implicite ou explicite, mes meilleurs voeux pour une célébration de la nuit de solstice d\u0026rsquo;hiver, écologiquement consciente, socialement responsable, à faible stress, non addictive, neutre en matière de genre, pratiquée selon les traditions les plus agréables de la persuasion religieuse de votre choix, ou selon des pratiques laïques de votre choix, avec respect envers les persuasions religieuses ou laïques et/ou les traditions d\u0026rsquo;autrui, ou envers le choix de ne pas pratiquer de traditions religieuses ou laïques du tout… ainsi qu\u0026rsquo;une reconnaissance fiscalement réussie, personnellement épanouissante et médicalement sans complication de l\u0026rsquo;arrivée de l\u0026rsquo;année calendaire généralement acceptée, 2019, sans toutefois négliger les calendriers choisis par d\u0026rsquo;autres cultures dont les contributions ont aidé à faire de la Grande-Bretagne un pays éminent (sans suggérer que la Grande-Bretagne est nécessairement supérieure à toute autre nation, ni qu\u0026rsquo;elle est la seule « Grande-Bretagne » dans l’hémisphère nord), et sans tenir compte de la race, de la croyance, de la couleur, de l’âge, de l’aptitude physique, de la foi religieuse ou de l’orientation sexuelle du destinataire.\u003c/p\u003e","title":"A lawyers christmas greeting"},{"content":"It looks like you\u0026rsquo;ve provided a large list of Azure extension metadata, likely from an Azure VM or a similar cloud environment. This list contains extension definitions used in Microsoft Azure, including:\nNames (e.g., OmsAgentForLinux, CustomScriptExtension, AzureLogCollector) Publishers (e.g., Microsoft.EnterpriseCloud.Monitoring, Puppet, Qualys) Versions (e.g., 1.8.11, 2.0.164, 1.0.0.999) ✅ What This List Is Likely Used For This data is typically used in scenarios such as:\nAzure VM Extension Management – To list or validate which extensions are available or installed. Infrastructure as Code (IaC) – When defining VM extensions in ARM templates, Bicep, Terraform, or PowerShell/CLI scripts. Security \u0026amp; Compliance Scanning – To verify that only approved extensions are deployed. Custom Image Building – To pre-install or test specific extensions during VM image creation. Troubleshooting – To diagnose extension failures, version conflicts, or missing components. 🔍 Key Observations from Your List 1. Microsoft-First Extensions Most extensions are published by Microsoft.*, indicating official Azure services. Examples: MicrosoftMonitoringAgent (OMS/Log Analytics) VMAccessAgent (VM access management) CustomScriptExtension (run scripts) DSC (Desired State Configuration) 2. Third-Party Extensions Many are from vendors: Puppet (puppet) Qualys (Qualys) Symantec (Symantec) Trend Micro (TrendMicro) Rapid7 (Rapid7.InsightPlatform) Stackify (Stackify.LinuxAgent.Extension) Octopus (OctopusDeploy.Tentacle) NVIDIA (NvidiaGpuDriverLinux) 3. Test \u0026amp; Experimental Extensions Many have Test, Edp, IaaS7, or 0.0.0 versions. Example: Microsoft.TestSqlServer.Edp Microsoft.GuestConfiguration.Test Microsoft.OSTCExtensions.Test WAD2EventHub.Diagnostics.Test These are likely for testing, staging, or internal development.\n4. Versioning Patterns Versions often follow X.Y.Z or X.Y.Z.W (e.g., 1.0.0.999) Some use semantic versioning (e.g., 2.0.164) Others use date-like or build numbers (e.g., 1.0.0.993) 5. Linux vs Windows Extensions like OmsAgentForLinux, CustomScriptForLinux, DSCForLinux are Linux-specific. VMAccessForLinux, RunCommandLinux, ManagedIdentityExtensionForLinux Windows equivalents: RunCommandWindows, ManagedIdentityExtensionForWindows, VMAccessAgent 🛠️ Useful Actions You Can Take With This List Goal How to Use This List Audit VM Extensions Compare this list with your VM\u0026rsquo;s actual extensions to detect unapproved ones. Build a Custom Image Pre-install only approved extensions to reduce deployment time. Automate Deployment Use az vm extension set or Bicep with this list as reference. Detect Security Risks Identify outdated or untrusted extensions (e.g., Test extensions in prod). Troubleshoot Failures Check if a missing or misconfigured extension is causing VM issues. Create a Compliance Policy Enforce only Microsoft.* or ApprovedVendor.* extensions. 📌 Example: Get Only Microsoft Extensions (Safe \u0026amp; Official) [ { \u0026#34;name\u0026#34;: \u0026#34;MicrosoftMonitoringAgent\u0026#34;, \u0026#34;publisher\u0026#34;: \u0026#34;Microsoft.EnterpriseCloud.Monitoring\u0026#34;, \u0026#34;version\u0026#34;: \u0026#34;1.0.11081.5\u0026#34; }, { \u0026#34;name\u0026#34;: \u0026#34;VMAccessAgent\u0026#34;, \u0026#34;publisher\u0026#34;: \u0026#34;Microsoft.Compute\u0026#34;, \u0026#34;version\u0026#34;: \u0026#34;2.4.4\u0026#34; }, { \u0026#34;name\u0026#34;: \u0026#34;CustomScriptExtension\u0026#34;, \u0026#34;publisher\u0026#34;: \u0026#34;Microsoft.Compute\u0026#34;, \u0026#34;version\u0026#34;: \u0026#34;1.9.3\u0026#34; }, { \u0026#34;name\u0026#34;: \u0026#34;DSC\u0026#34;, \u0026#34;publisher\u0026#34;: \u0026#34;Microsoft.Powershell\u0026#34;, \u0026#34;version\u0026#34;: \u0026#34;2.26.1.0\u0026#34; } ] ❓ Need Help With? Let me know what you\u0026rsquo;d like to do with this list! For example:\n✅ Filter for only Linux extensions ✅ Find all extensions from a specific vendor (e.g., Qualys, Symantec) ✅ List all test/preview extensions ✅ Export to CSV, JSON, or Markdown table ✅ Validate version compatibility with a VM size or OS ✅ Generate Bicep/ARM template snippet for a specific extension Just say the word: \u0026ldquo;Filter for Linux\u0026rdquo;, \u0026ldquo;List all Qualys extensions\u0026rdquo;, or \u0026ldquo;Export to CSV\u0026rdquo; — I’ll do it instantly.\n","permalink":"https://www.shafiq.in/fr/blog/list-all-azure-vm-extensions/","summary":"\u003cp\u003eIt looks like you\u0026rsquo;ve provided a large list of Azure extension metadata, likely from an Azure VM or a similar cloud environment. This list contains \u003cstrong\u003eextension definitions\u003c/strong\u003e used in Microsoft Azure, including:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNames\u003c/strong\u003e (e.g., \u003ccode\u003eOmsAgentForLinux\u003c/code\u003e, \u003ccode\u003eCustomScriptExtension\u003c/code\u003e, \u003ccode\u003eAzureLogCollector\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePublishers\u003c/strong\u003e (e.g., \u003ccode\u003eMicrosoft.EnterpriseCloud.Monitoring\u003c/code\u003e, \u003ccode\u003ePuppet\u003c/code\u003e, \u003ccode\u003eQualys\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eVersions\u003c/strong\u003e (e.g., \u003ccode\u003e1.8.11\u003c/code\u003e, \u003ccode\u003e2.0.164\u003c/code\u003e, \u003ccode\u003e1.0.0.999\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"-what-this-list-is-likely-used-for\"\u003e✅ \u003cstrong\u003eWhat This List Is Likely Used For\u003c/strong\u003e\u003c/h3\u003e\n\u003cp\u003eThis data is typically used in scenarios such as:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eAzure VM Extension Management\u003c/strong\u003e – To list or validate which extensions are available or installed.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eInfrastructure as Code (IaC)\u003c/strong\u003e – When defining VM extensions in ARM templates, Bicep, Terraform, or PowerShell/CLI scripts.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSecurity \u0026amp; Compliance Scanning\u003c/strong\u003e – To verify that only approved extensions are deployed.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCustom Image Building\u003c/strong\u003e – To pre-install or test specific extensions during VM image creation.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTroubleshooting\u003c/strong\u003e – To diagnose extension failures, version conflicts, or missing components.\u003c/li\u003e\n\u003c/ol\u003e\n\u003chr\u003e\n\u003ch3 id=\"-key-observations-from-your-list\"\u003e🔍 \u003cstrong\u003eKey Observations from Your List\u003c/strong\u003e\u003c/h3\u003e\n\u003ch4 id=\"1-microsoft-first-extensions\"\u003e1. \u003cstrong\u003eMicrosoft-First Extensions\u003c/strong\u003e\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eMost extensions are published by \u003ccode\u003eMicrosoft.*\u003c/code\u003e, indicating official Azure services.\u003c/li\u003e\n\u003cli\u003eExamples:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eMicrosoftMonitoringAgent\u003c/code\u003e (OMS/Log Analytics)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eVMAccessAgent\u003c/code\u003e (VM access management)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eCustomScriptExtension\u003c/code\u003e (run scripts)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eDSC\u003c/code\u003e (Desired State Configuration)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"2-third-party-extensions\"\u003e2. \u003cstrong\u003eThird-Party Extensions\u003c/strong\u003e\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eMany are from vendors:\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePuppet\u003c/strong\u003e (\u003ccode\u003epuppet\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eQualys\u003c/strong\u003e (\u003ccode\u003eQualys\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSymantec\u003c/strong\u003e (\u003ccode\u003eSymantec\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTrend Micro\u003c/strong\u003e (\u003ccode\u003eTrendMicro\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRapid7\u003c/strong\u003e (\u003ccode\u003eRapid7.InsightPlatform\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStackify\u003c/strong\u003e (\u003ccode\u003eStackify.LinuxAgent.Extension\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eOctopus\u003c/strong\u003e (\u003ccode\u003eOctopusDeploy.Tentacle\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eNVIDIA\u003c/strong\u003e (\u003ccode\u003eNvidiaGpuDriverLinux\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"3-test--experimental-extensions\"\u003e3. \u003cstrong\u003eTest \u0026amp; Experimental Extensions\u003c/strong\u003e\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eMany have \u003ccode\u003eTest\u003c/code\u003e, \u003ccode\u003eEdp\u003c/code\u003e, \u003ccode\u003eIaaS7\u003c/code\u003e, or \u003ccode\u003e0.0.0\u003c/code\u003e versions.\u003c/li\u003e\n\u003cli\u003eExample:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eMicrosoft.TestSqlServer.Edp\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMicrosoft.GuestConfiguration.Test\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eMicrosoft.OSTCExtensions.Test\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eWAD2EventHub.Diagnostics.Test\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003eThese are likely for \u003cstrong\u003etesting, staging, or internal development\u003c/strong\u003e.\u003c/p\u003e","title":"List all Azure VM extensions"},{"content":"npm update -g ","permalink":"https://www.shafiq.in/fr/blog/npm-update-all-globally-installed-packages/","summary":"\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003enpm update -g\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","title":"NPM update all globally installed packages"},{"content":"Introduction Si vous travaillez avec Azure, vous avez peut-être rencontré une erreur qui ressemble à ceci :\n« Échec de l’envoi de la requête : StatusCode=0 — Erreur d’origine : Code=\u0026lsquo;ReferencedResourceNotProvisioned\u0026rsquo; Message=\u0026lsquo;Impossible de poursuivre l’opération car la ressource utilisée n’est pas dans l’état Succeeded. La ressource est en état de Mise à jour et la dernière opération qui a mis à jour ou met à jour la ressource est PutSubnetOperation.\u0026rsquo; »\nBien que le message d’erreur puisse sembler intimidant et cryptique au premier abord, ne vous inquiétez pas. Dans ce billet, nous allons explorer ce que signifie cette erreur et comment la résoudre.\nPourquoi cette erreur se produit-elle ? Le message d’erreur nous indique que l’opération que vous tentez d’exécuter ne peut pas se poursuivre parce qu’une ressource associée est dans l’état « Mise à jour » au lieu de « Réussie ». Cela se produit généralement lorsqu’une opération en cours est en cours sur la même ressource ou une ressource liée, empêchant Azure d’exécuter l’opération que vous avez demandée.\nUne solution concrète Bien qu’il soit tentant de commencer à déboguer immédiatement, il existe une solution relativement simple à cette erreur. Vous pouvez ajuster le nombre d’opérations simultanées avec l’API Azure en définissant le drapeau -parallelism. En le fixant à 1, vous résolvez souvent ce problème :\nterraform apply -parallelism=1 Comment cela fonctionne-t-il ? En limitant le nombre d’opérations parallèles à 1, vous demandez essentiellement à Azure de se concentrer sur la complétion d’une opération à la fois. Cela permet généralement aux opérations en cours de se terminer, libérant ainsi la ressource pour atteindre un état « Réussi », ce qui résout l’erreur.\nBien que rencontrer des erreurs pendant le développement puisse être frustrant, comprendre ce qui se cache derrière elles et savoir comment les corriger fait partie du parcours. La prochaine fois que vous vous retrouverez face à une erreur StatusCode=0 \u0026quot;ReferencedResourceNotProvisioned\u0026quot;, n’oubliez pas d’essayer d’ajuster le drapeau -parallelism. C’est une méthode simple mais efficace pour éliminer les obstacles dans vos aventures Azure.\n","permalink":"https://www.shafiq.in/fr/blog/decoding-the-error-statuscode0-referencedresourcenotprovisioned-in-azure/","summary":"\u003ch2 id=\"introduction\"\u003eIntroduction\u003c/h2\u003e\n\u003cp\u003eSi vous travaillez avec Azure, vous avez peut-être rencontré une erreur qui ressemble à ceci :\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e« Échec de l’envoi de la requête : StatusCode=0 — Erreur d’origine : Code=\u0026lsquo;ReferencedResourceNotProvisioned\u0026rsquo; Message=\u0026lsquo;Impossible de poursuivre l’opération car la ressource utilisée n’est pas dans l’état Succeeded. La ressource est en état de Mise à jour et la dernière opération qui a mis à jour ou met à jour la ressource est PutSubnetOperation.\u0026rsquo; »\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003cp\u003eBien que le message d’erreur puisse sembler intimidant et cryptique au premier abord, ne vous inquiétez pas. Dans ce billet, nous allons explorer ce que signifie cette erreur et comment la résoudre.\u003c/p\u003e","title":"Decoding the Error: StatusCode=0 \"ReferencedResourceNotProvisioned\" in Azure"},{"content":"L\u0026rsquo;exemple ci-dessous va importer une instance AWS dans un module Terraform :\nterraform import module.foo.aws_instance.bar i-abcd1234 ","permalink":"https://www.shafiq.in/fr/blog/import-a-resource-to-terraform-module/","summary":"\u003cp\u003eL\u0026rsquo;exemple ci-dessous va importer une instance AWS dans un module Terraform :\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-fallback\" data-lang=\"fallback\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eterraform import module.foo.aws_instance.bar i-abcd1234\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","title":"Import a Resource to Terraform Module"},{"content":"Dans le domaine du Infrastructure as Code, les modules Terraform peuvent jouer un rôle important pour simplifier votre travail. Parfois, toutefois, ces modules ne se trouvent pas au niveau du répertoire racine de leur package source. Au contraire, ils sont situés dans des sous-répertoires. Heureusement, Terraform dispose d\u0026rsquo;une méthode intelligente pour vous aider à accéder à ces modules imbriqués.\nTerraform utilise une syntaxe particulière avec deux barres obliques (//) pour indiquer précisément le sous-répertoire où se trouve le module. Le chemin qui suit cette syntaxe est considéré comme un sous-répertoire au sein du package ou du dépôt.\nVoici quelques exemples pour illustrer ce concept :\nUtilisation du module Consul sur AWS : hashicorp/consul/aws//modules/consul-cluster Pointage vers un module VPC dans un dépôt Git : git::https://example.com/network.git//modules/vpc Accès à un module VPC à partir d\u0026rsquo;un fichier zip : https://example.com/network-module.zip//modules/vpc Récupération d\u0026rsquo;un module VPC depuis un bucket S3 : s3::https://s3-eu-west-1.amazonaws.com/examplecorp-terraform-modules/network.zip//modules/vpc Si vous travaillez avec des sources contrôlées par version et que vous devez inclure des arguments comme ref pour spécifier une version précise, assurez-vous que le chemin du sous-répertoire précède ces arguments. Par exemple :\ngit::https://example.com/network.git//modules/vpc?ref=v1.2.0 Une autre chose à noter est que, lorsque vous utilisez cette fonctionnalité, Terraform télécharge l’intégralité du package sur votre machine locale. Toutefois, il n’utilise que le module situé dans le sous-répertoire spécifié. Cela signifie également que si vous avez des modules qui interagissent entre eux au sein du même package, ils peuvent se référencer mutuellement en utilisant des chemins locaux.\nPour plus d\u0026rsquo;informations, consultez la documentation officielle Terraform sur les Modules dans des sous-répertoires de package.\nNaviguer dans les sous-répertoires peut sembler une fonctionnalité mineure, mais c’est un outil puissant qui vous aide à maintenir votre code bien organisé tout en tirant pleinement parti des modules externes. Bonne programmation !\n","permalink":"https://www.shafiq.in/fr/blog/navigating-terraform-modules-stored-in-package-subdirectories/","summary":"\u003cp\u003eDans le domaine du Infrastructure as Code, les modules Terraform peuvent jouer un rôle important pour simplifier votre travail. Parfois, toutefois, ces modules ne se trouvent pas au niveau du répertoire racine de leur package source. Au contraire, ils sont situés dans des sous-répertoires. Heureusement, Terraform dispose d\u0026rsquo;une méthode intelligente pour vous aider à accéder à ces modules imbriqués.\u003c/p\u003e\n\u003cp\u003eTerraform utilise une syntaxe particulière avec deux barres obliques (\u003ccode\u003e//\u003c/code\u003e) pour indiquer précisément le sous-répertoire où se trouve le module. Le chemin qui suit cette syntaxe est considéré comme un sous-répertoire au sein du package ou du dépôt.\u003c/p\u003e","title":"Navigating Terraform Modules Stored in Package Subdirectories"},{"content":"Comprendre le problème : « RPC failed ; HTTP 413 curl 22 » Si vous avez rencontré le message d\u0026rsquo;erreur « RPC failed ; HTTP 413 curl 22 La URL demandée a renvoyé une erreur : 413 Request Entity Too Large », vous essayez probablement de pousser un commit important via HTTP vers votre serveur exécutant Nginx. Cet erreur signifie que la taille de la requête que vous tentez d\u0026rsquo;envoyer dépasse la limite que le serveur est prêt à accepter. Alors, comment la corriger ?\nSolution Nginx : Mise à jour du fichier de configuration Ne vous inquiétez pas ; la solution est plus simple qu\u0026rsquo;elle n\u0026rsquo;en a l\u0026rsquo;air. Suivez ces étapes pour éliminer cette erreur :\nÉtape 1 : Localiser votre fichier de configuration Nginx La première chose à faire est de trouver votre fichier nginx.conf. Son emplacement peut varier selon votre configuration, mais il se trouve généralement dans /etc/nginx/nginx.conf.\nÉtape 2 : Modifier le fichier de configuration Ouvrez le fichier de configuration dans un éditeur de texte de votre choix. Faites défiler jusqu\u0026rsquo;à trouver l\u0026rsquo;un des blocs suivants : http, server ou location.\nÉtape 3 : Ajouter ou mettre à jour « client_max_body_size » Insérez la ligne client_max_body_size 50m; dans le bloc que vous avez sélectionné. N\u0026rsquo;hésitez pas à modifier 50m par la taille maximale qui correspond à vos besoins.\nÉtape 4 : Enregistrer et fermer le fichier Une fois la modification effectuée, enregistrez le fichier et quittez l\u0026rsquo;éditeur de texte.\nÉtape 5 : Recharger la configuration Nginx Pour vous assurer que Nginx prend en compte votre nouvelle configuration, rechargez le service en exécutant la commande suivante dans votre terminal :\nsudo service nginx reload Étape 6 : Tester la nouvelle configuration Passez à nouveau à la poussée de votre commit via HTTP. Si tout s\u0026rsquo;est bien passé, l\u0026rsquo;erreur ne devrait plus apparaître.\nConclusion Et voilà ! Vous avez augmenté avec succès la limite de taille du corps, résolvant ainsi l\u0026rsquo;erreur « RPC failed ; HTTP 413 curl 22 ». Bonne programmation !\n","permalink":"https://www.shafiq.in/fr/blog/how-to-fix-the-rpc-failed-http-413-curl-22-error-in-nginx/","summary":"\u003ch2 id=\"comprendre-le-problème---rpc-failed--http-413-curl-22-\"\u003eComprendre le problème : « RPC failed ; HTTP 413 curl 22 »\u003c/h2\u003e\n\u003cp\u003eSi vous avez rencontré le message d\u0026rsquo;erreur « RPC failed ; HTTP 413 curl 22 La URL demandée a renvoyé une erreur : 413 Request Entity Too Large », vous essayez probablement de pousser un commit important via HTTP vers votre serveur exécutant Nginx. Cet erreur signifie que la taille de la requête que vous tentez d\u0026rsquo;envoyer dépasse la limite que le serveur est prêt à accepter. Alors, comment la corriger ?\u003c/p\u003e","title":"How to Fix the \"RPC failed; HTTP 413 curl 22\" Error in Nginx"},{"content":"Installez les gems sur la machine de destination à partir des fichiers locaux :\ncd /path/to/gems gem install --force --local *.gem ","permalink":"https://www.shafiq.in/fr/blog/install-ruby-gem-files/","summary":"\u003cp\u003eInstallez les gems sur la machine de destination à partir des fichiers locaux :\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-fallback\" data-lang=\"fallback\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecd /path/to/gems\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003egem install --force --local *.gem\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","title":"Install ruby gem files"},{"content":"Nous avons tous entendu cette vieille maxime : mettre la charrette avant le cheval. Malheureusement, dans le monde du DevOps, cela se produit bien plus souvent qu’il ne devrait, et il est temps d’en parler.\nLe cœur du problème est que, trop souvent, l’accent n’est pas mis sur la résolution de problèmes réels, mais sur l’utilisation de technologies nouvelles et séduisantes. Imaginez ceci : un développeur tombe par hasard sur une technologie de pointe. Il est immédiatement séduit par ses fonctionnalités, ses capacités, et la façon dont elle est présentée comme le « prochain grand truc ». Alors, il cherche des moyens de l’intégrer à son travail, peu importe si elle est réellement adaptée aux problèmes à résoudre.\nLes conséquences de cette approche peuvent être multiples. Premièrement, cela peut entraîner un tissu excessif, enchevêtré d’outils et de processus qui ne communiquent pas nécessairement bien entre eux. Ce système compliqué non seulement génère un travail supplémentaire, mais aussi nuit à l’efficacité globale et à la performance opérationnelle. En outre, en se concentrant trop sur la technologie et pas assez sur le problème à résoudre, on court le risque de négliger des solutions plus simples, plus directes, qui pourraient faire aussi bien, voire mieux, le travail.\nN’oublions pas non plus l’aspect financier. Investir dans de nouvelles technologies sans comprendre clairement comment elles résoudront des défis spécifiques ou ajouteront de la valeur peut être une dépense inutile. Nous parlons ici de temps et d’argent — des ressources que l’on pourrait mieux utiliser pour innover et aborder des problèmes réels, urgents.\nCela ne veut pas dire que les nouvelles technologies sont l’ennemi. Au contraire. Elles offrent un potentiel énorme pour révolutionner la façon dont nous travaillons. Mais le point clé est de laisser le problème guider la technologie, et non l’inverse.\nAvant de vous laisser séduire par le dernier outil ou le dernier processus, prenez un instant pour vous reculer. Identifiez les défis auxquels vous êtes confrontés. Élaborez des solutions potentielles et comparez-les entre elles. Plus important encore, consultez votre équipe. Ils pourraient avoir des idées ou des préoccupations que vous n’avez pas encore envisagées.\nAlors, en explorant le paysage en constante évolution du DevOps, assurons-nous de conduire avec le cheval, pas la charrette. En agissant ainsi, nous avons bien plus de chances d’atteindre notre destination : résoudre des problèmes du monde réel avec les solutions les plus efficaces à notre disposition.\n","permalink":"https://www.shafiq.in/fr/blog/the-cart-before-the-horse-a-devops-conundrum/","summary":"\u003cp\u003eNous avons tous entendu cette vieille maxime : mettre la charrette avant le cheval. Malheureusement, dans le monde du DevOps, cela se produit bien plus souvent qu’il ne devrait, et il est temps d’en parler.\u003c/p\u003e\n\u003cp\u003eLe cœur du problème est que, trop souvent, l’accent n’est pas mis sur la résolution de problèmes réels, mais sur l’utilisation de technologies nouvelles et séduisantes. Imaginez ceci : un développeur tombe par hasard sur une technologie de pointe. Il est immédiatement séduit par ses fonctionnalités, ses capacités, et la façon dont elle est présentée comme le « prochain grand truc ». Alors, il cherche des moyens de l’intégrer à son travail, peu importe si elle est réellement adaptée aux problèmes à résoudre.\u003c/p\u003e","title":"The Cart Before the Horse - A DevOps Conundrum"},{"content":"Naviguer dans le monde de l\u0026rsquo;architecture d\u0026rsquo;entreprise peut être une tâche intimidante, surtout lorsque l\u0026rsquo;on ne sait pas où trouver des ressources fiables. Que vous soyez un professionnel expérimenté ou simplement en train de plonger dans l\u0026rsquo;océan de l\u0026rsquo;architecture, cette liste soigneusement sélectionnée vous aidera à rester à jour.\nLes amateurs d\u0026rsquo;Agilité Agile Architect par Andrew Johnston\nCe blog, géré par Questa Computing Ltd., se concentre sur la méthodologie agile dans le cadre de l\u0026rsquo;architecture d\u0026rsquo;entreprise. Site web Agile Architect Développement et Tendances Tendances en développement d\u0026rsquo;applications - Section Enterprise Architect\nCe site traite diverses tendances et actualités dans le monde de l\u0026rsquo;architecture d\u0026rsquo;entreprise. Section Enterprise d\u0026rsquo;ADT Magazine Gouvernance et Stratégie Architecture \u0026amp; Governance Magazine\nCe magazine est votre référence pour tout ce qui concerne la gouvernance liée à l\u0026rsquo;architecture d\u0026rsquo;entreprise. Architecture \u0026amp; Governance Magazine Dominez le monde des affaires Business Rules Group\nAxé sur les aspects métier de l\u0026rsquo;architecture, ce groupe vise à offrir une vision complète du domaine de l\u0026rsquo;architecture d\u0026rsquo;entreprise. Business Rules Group Recherche et Études Cutter Consortium\nDes centres de recherche spécialisés proposent diverses insights ; notez que la plupart du contenu est réservé aux clients. Cutter Consortium Architecture Complète Enterprise-Wide IT Architecture (EWITA)\nUne plateforme riche en ressources, offrant des perspectives et approches précieuses. EWITA Perspectives Industrielles Forrester Research\nDes sections sur l\u0026rsquo;architecture d\u0026rsquo;entreprise, les sujets liés au CIO, ainsi que les processus métiers et applications ; le contenu est principalement réservé aux clients. Forrester Research Approche Académique Institute For Enterprise Architecture Developments (IFEAD)\nFondé par Jaap Schekkerman, cet institut propose une approche académique de l\u0026rsquo;architecture d\u0026rsquo;entreprise. Site web IFEAD Outils et Techniques Ressources pour les architectes logiciels par Bredemeyer Consulting\nDes ressources pratiques et des conseils pour les architectes logiciels. Bredemeyer Consulting Bonnes Pratiques Software Engineering Institute (SEI)\nUn institut offrant une vaste gamme de guides, bonnes pratiques et formations. SEI Normes et Cadres The Open Group Architecture Forum\nUn forum axé sur les normes et cadres d\u0026rsquo;architecture d\u0026rsquo;entreprise. Zachman Institute for Framework Advancement (ZIFA)\nPromotion du cadre Zachman pour l\u0026rsquo;architecture d\u0026rsquo;entreprise. ZIFA Restez à jour avec l\u0026rsquo;évolution constante du paysage de l\u0026rsquo;architecture d\u0026rsquo;entreprise en gardant ces ressources précieuses à portée de main. Bonne découverte !\n","permalink":"https://www.shafiq.in/fr/blog/your-go-to-guide-for-top-enterprise-architecture-resources/","summary":"\u003cp\u003eNaviguer dans le monde de l\u0026rsquo;architecture d\u0026rsquo;entreprise peut être une tâche intimidante, surtout lorsque l\u0026rsquo;on ne sait pas où trouver des ressources fiables. Que vous soyez un professionnel expérimenté ou simplement en train de plonger dans l\u0026rsquo;océan de l\u0026rsquo;architecture, cette liste soigneusement sélectionnée vous aidera à rester à jour.\u003c/p\u003e\n\u003ch3 id=\"les-amateurs-dagilité\"\u003eLes amateurs d\u0026rsquo;Agilité\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003eAgile Architect par Andrew Johnston\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCe blog, géré par Questa Computing Ltd., se concentre sur la méthodologie agile dans le cadre de l\u0026rsquo;architecture d\u0026rsquo;entreprise.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://www.agilearchitect.org\"\u003eSite web Agile Architect\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"développement-et-tendances\"\u003eDéveloppement et Tendances\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003eTendances en développement d\u0026rsquo;applications - Section Enterprise Architect\u003c/strong\u003e\u003c/p\u003e","title":"Your Go-To Guide for Top Enterprise Architecture Resources"},{"content":"sudo apt-get install -y libssl-dev\n","permalink":"https://www.shafiq.in/fr/blog/scripts/extract-cert.c2110-fatal-error-openssl/bio.h-no-such-file-or-directory/","summary":"\u003cp\u003e\u003ccode\u003esudo apt-get install -y libssl-dev\u003c/code\u003e\u003c/p\u003e","title":"scripts/extract-cert.c:21:10: fatal error: openssl/bio.h: No such file or directory"},{"content":"sudo apt-get install bison ","permalink":"https://www.shafiq.in/fr/blog/bin/sh-1-bison-not-found/","summary":"\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo apt-get install bison\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","title":"/bin/sh: 1: bison: not found"},{"content":"sudo apt-get install flex ","permalink":"https://www.shafiq.in/fr/blog/bin/sh-1-flex-not-found/","summary":"\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo apt-get install flex\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","title":"/bin/sh: 1: flex: not found"},{"content":"Erreur :\nxcrun : erreur : chemin du développeur actif (\u0026quot;/Applications/Xcode.app/Contents/Developer\u0026quot;) n\u0026rsquo;existe pas\nUtilisez sudo xcode-select --switch chemin/Vers/Xcode.app pour spécifier l\u0026rsquo;Xcode que vous souhaitez utiliser pour les outils de développement en ligne de commande, ou utilisez xcode-select --install pour installer les outils de développement en ligne de commande autonomes.\nVoir man xcode-select pour plus de détails.\nxcrun : erreur : chemin du développeur actif (\u0026quot;/Applications/Xcode.app/Contents/Developer\u0026quot;) n\u0026rsquo;existe pas\nUtilisez sudo xcode-select --switch chemin/Vers/Xcode.app pour spécifier l\u0026rsquo;Xcode que vous souhaitez utiliser pour les outils de développement en ligne de commande, ou utilisez xcode-select --install pour installer les outils de développement en ligne de commande autonomes.\nVoir man xcode-select pour plus de détails.\nSolution :\nsudo xcode-select -reset\n","permalink":"https://www.shafiq.in/fr/blog/solved-xcrun-error-active-developer-path-/applications/xcode.app/contents/developer-does-not-exist/","summary":"\u003cp\u003eErreur :\u003c/p\u003e\n\u003cp\u003excrun : erreur : chemin du développeur actif (\u0026quot;/Applications/Xcode.app/Contents/Developer\u0026quot;) n\u0026rsquo;existe pas\u003cbr\u003e\nUtilisez \u003ccode\u003esudo xcode-select --switch chemin/Vers/Xcode.app\u003c/code\u003e pour spécifier l\u0026rsquo;Xcode que vous souhaitez utiliser pour les outils de développement en ligne de commande, ou utilisez \u003ccode\u003excode-select --install\u003c/code\u003e pour installer les outils de développement en ligne de commande autonomes.\u003cbr\u003e\nVoir \u003ccode\u003eman xcode-select\u003c/code\u003e pour plus de détails.\u003cbr\u003e\nxcrun : erreur : chemin du développeur actif (\u0026quot;/Applications/Xcode.app/Contents/Developer\u0026quot;) n\u0026rsquo;existe pas\u003cbr\u003e\nUtilisez \u003ccode\u003esudo xcode-select --switch chemin/Vers/Xcode.app\u003c/code\u003e pour spécifier l\u0026rsquo;Xcode que vous souhaitez utiliser pour les outils de développement en ligne de commande, ou utilisez \u003ccode\u003excode-select --install\u003c/code\u003e pour installer les outils de développement en ligne de commande autonomes.\u003cbr\u003e\nVoir \u003ccode\u003eman xcode-select\u003c/code\u003e pour plus de détails.\u003c/p\u003e","title":"[solved] xcrun: error: active developer path (\"/Applications/Xcode.app/Contents/Developer\") does not exist"},{"content":"Vous êtes bloqué avec deux dépôts Git ou deux branches ayant des historiques complètement différents, mais vous devez les fusionner ? Vous pouvez rencontrer un obstacle car Git est conçu pour empêcher ce type d\u0026rsquo;opération par défaut. Cependant, il existe une solution de contournement, et elle est plus simple que vous ne le pensez.\nLe Problème : Historiques Git non liés Imaginez que vous travaillez sur un projet avec une branche main, et qu\u0026rsquo;une autre personne a un projet complètement indépendant, avec son propre historique. Maintenant, vous souhaitez combiner les deux projets dans un seul dépôt. Si vous tentez d\u0026rsquo;exécuter une fusion git merge classique ou un git rebase, Git vous empêchera probablement avec un message d\u0026rsquo;erreur, par exemple :\nfatal: refusing to merge unrelated histories La Solution : Autoriser les historiques non liés La clé pour résoudre ce problème réside dans l\u0026rsquo;option --allow-unrelated-histories. Cette option indique à Git de négliger le fait que les deux branches n\u0026rsquo;ont pas de base commune et de procéder à la fusion.\nVoici un guide étape par étape simple :\nRécupérer l\u0026rsquo;autre dépôt : Si vous travaillez avec un dépôt séparé, vous devez d\u0026rsquo;abord le récupérer dans votre dépôt actuel. Vous pouvez le faire avec :\ngit remote add other_repo [URL_of_other_repo] git fetch other_repo Passer à la branche cible : Assurez-vous d’être sur la branche vers laquelle vous souhaitez fusionner l’historique non lié. Habituellement, il s’agit de votre branche main :\ngit checkout main Effectuer la fusion : Procédez maintenant à la fusion réelle en utilisant l’option --allow-unrelated-histories :\ngit merge other_repo/other_branch --allow-unrelated-histories Résoudre les conflits : Si des conflits de fichiers apparaissent, résolvez-les comme d’habitude.\nValider et pousser : Enfin, validez les modifications et poussez-les vers votre dépôt :\ngit commit -m \u0026#34;Merged unrelated histories\u0026#34; git push origin main Et voilà ! Vous avez fusionné avec succès deux historiques Git non liés.\nBien que ce cas soit rare, il est bon de savoir que vous disposez des outils nécessaires pour accomplir cette tâche quand c’est nécessaire. N’oubliez pas d’utiliser l’option --allow-unrelated-histories avec prudence et attention, car elle peut entraîner des modifications importantes dans votre historique Git.\n","permalink":"https://www.shafiq.in/fr/blog/merging-unrelated-git-histories-a-simple-guide/","summary":"\u003cp\u003eVous êtes bloqué avec deux dépôts Git ou deux branches ayant des historiques complètement différents, mais vous devez les fusionner ? Vous pouvez rencontrer un obstacle car Git est conçu pour empêcher ce type d\u0026rsquo;opération par défaut. Cependant, il existe une solution de contournement, et elle est plus simple que vous ne le pensez.\u003c/p\u003e\n\u003ch3 id=\"le-problème--historiques-git-non-liés\"\u003eLe Problème : Historiques Git non liés\u003c/h3\u003e\n\u003cp\u003eImaginez que vous travaillez sur un projet avec une branche \u003ccode\u003emain\u003c/code\u003e, et qu\u0026rsquo;une autre personne a un projet complètement indépendant, avec son propre historique. Maintenant, vous souhaitez combiner les deux projets dans un seul dépôt. Si vous tentez d\u0026rsquo;exécuter une fusion \u003ccode\u003egit merge\u003c/code\u003e classique ou un \u003ccode\u003egit rebase\u003c/code\u003e, Git vous empêchera probablement avec un message d\u0026rsquo;erreur, par exemple :\u003c/p\u003e","title":"Merging Unrelated Git Histories - A Simple Guide"},{"content":"Qu\u0026rsquo;est-ce que le provisionneur Ansible dans Packer ? Si vous vous êtes aventuré dans le monde du DevOps, il est fort probable que vous ayez déjà croisé Ansible et Packer. Mais comment combiner les deux ? Le provisionneur Ansible dans Packer vous permet d\u0026rsquo;exécuter des playbooks Ansible tout en créant vos images machine. Autrement dit, il vous aide à configurer votre environnement serveur automatiquement, exactement comme vous le souhaitez, pendant que Packer s\u0026rsquo;occupe de créer l\u0026rsquo;image machine.\nAttention : Si vous spécifiez un remote_user dans vos tâches Ansible, sachez que Packer va l\u0026rsquo;ignorer. Packer se connecte en utilisant le nom d\u0026rsquo;utilisateur fourni dans sa configuration JSON pour ce provisionneur.\nUn exemple fonctionnel pour bien commencer Plongeons directement dans un exemple simple qui utilise DigitalOcean comme fournisseur cloud. N\u0026rsquo;oubliez pas de remplacer le jeton API en tant que placeholder par votre jeton API DigitalOcean réel.\nVoici la configuration JSON :\n{ \u0026#34;provisioners\u0026#34;: [ { \u0026#34;type\u0026#34;: \u0026#34;ansible\u0026#34;, \u0026#34;playbook_file\u0026#34;: \u0026#34;./playbook.yml\u0026#34; } ], \u0026#34;builders\u0026#34;: [ { \u0026#34;type\u0026#34;: \u0026#34;digitalocean\u0026#34;, \u0026#34;api_token\u0026#34;: \u0026#34;YOUR_API_TOKEN_GOES_HERE\u0026#34;, \u0026#34;image\u0026#34;: \u0026#34;ubuntu-14-04-x64\u0026#34;, \u0026#34;region\u0026#34;: \u0026#34;sfo1\u0026#34; } ] } Pour plus de détails, n\u0026rsquo;hésitez pas à consulter la documentation officielle de Packer sur les provisionneurs Ansible.\n","permalink":"https://www.shafiq.in/fr/blog/a-simple-guide-to-using-ansible-with-packer/","summary":"\u003ch1 id=\"quest-ce-que-le-provisionneur-ansible-dans-packer-\"\u003eQu\u0026rsquo;est-ce que le provisionneur Ansible dans Packer ?\u003c/h1\u003e\n\u003cp\u003eSi vous vous êtes aventuré dans le monde du DevOps, il est fort probable que vous ayez déjà croisé Ansible et Packer. Mais comment combiner les deux ? Le provisionneur Ansible dans Packer vous permet d\u0026rsquo;exécuter des playbooks Ansible tout en créant vos images machine. Autrement dit, il vous aide à configurer votre environnement serveur automatiquement, exactement comme vous le souhaitez, pendant que Packer s\u0026rsquo;occupe de créer l\u0026rsquo;image machine.\u003c/p\u003e","title":"A Simple Guide to Using Ansible with Packer"},{"content":"Introduction SSHPass est un petit outil pratique qui permet d\u0026rsquo;automatiser la connexion SSH en contournant la demande de mot de passe habituelle. Bien qu\u0026rsquo;il soit très pratique pour la création de scripts, il convient de noter qu\u0026rsquo;il n\u0026rsquo;est pas idéal pour un environnement multi-utilisateurs en raison de préoccupations liées à la sécurité. Toutefois, si vous l\u0026rsquo;utilisez sur votre machine de développement personnelle, il est relativement sans danger.\nComment installer SSHPass sur Ubuntu L\u0026rsquo;installation de SSHPass sur Ubuntu est aussi simple que possible. Il vous suffit d\u0026rsquo;ouvrir votre terminal et d\u0026rsquo;exécuter la commande suivante :\nsudo apt-get install sshpass Installation de SSHPass sur macOS Configurer SSHPass sur un Mac nécessite un peu plus d\u0026rsquo;efforts car il n\u0026rsquo;existe pas de version officielle pour macOS. Mais ne vous inquiétez pas, cela n\u0026rsquo;est pas trop compliqué. Tout d\u0026rsquo;abord, vous devez avoir Xcode et les outils en ligne de commande installés sur votre système.\nComment installer avec Homebrew Malheureusement, le dépôt standard de Homebrew ne propose pas sshpass. Toutefois, il existe une formule alternative que vous pouvez utiliser. Ouvrez votre terminal et exécutez la commande suivante :\nbrew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb C\u0026rsquo;est tout ! Vous avez installé avec succès SSHPass sur votre machine, qu\u0026rsquo;elle soit Ubuntu ou macOS. Bonne chance avec vos scripts !\nPour plus d\u0026rsquo;informations, vous pouvez consulter ces ressources utiles :\nDocumentation officielle de SSHPass Site officiel de Homebrew N\u0026rsquo;oubliez pas qu\u0026rsquo; bien que SSHPass soit un outil pratique, il n\u0026rsquo;est pas le choix le plus sécurisé disponible. Soyez donc vigilant quant à l\u0026rsquo;endroit et à la manière dont vous l\u0026rsquo;utilisez.\n","permalink":"https://www.shafiq.in/fr/blog/a-simple-guide-to-installing-sshpass-on-ubuntu-and-macos/","summary":"\u003ch1 id=\"introduction\"\u003eIntroduction\u003c/h1\u003e\n\u003cp\u003eSSHPass est un petit outil pratique qui permet d\u0026rsquo;automatiser la connexion SSH en contournant la demande de mot de passe habituelle. Bien qu\u0026rsquo;il soit très pratique pour la création de scripts, il convient de noter qu\u0026rsquo;il n\u0026rsquo;est pas idéal pour un environnement multi-utilisateurs en raison de préoccupations liées à la sécurité. Toutefois, si vous l\u0026rsquo;utilisez sur votre machine de développement personnelle, il est relativement sans danger.\u003c/p\u003e\n\u003ch2 id=\"comment-installer-sshpass-sur-ubuntu\"\u003eComment installer SSHPass sur Ubuntu\u003c/h2\u003e\n\u003cp\u003eL\u0026rsquo;installation de SSHPass sur Ubuntu est aussi simple que possible. Il vous suffit d\u0026rsquo;ouvrir votre terminal et d\u0026rsquo;exécuter la commande suivante :\u003c/p\u003e","title":"A Simple Guide to Installing SSHPass on Ubuntu and macOS"},{"content":"Ce dont vous avez besoin avant de commencer Conditions système requises Tout d’abord, assurez-vous d’exécuter l’une des versions 64 bits suivantes d’Ubuntu pour installer Docker CE :\nUbuntu 18.04 (Bionic) - LTS Ubuntu 17.10 (Artful) Ubuntu 16.04 (Xenial) - LTS Ubuntu 14.04 (Trusty) - LTS Docker CE est compatible avec ces architectures : x86_64, armhf, s390x (IBM Z) et ppc64le (IBM Power).\nRemarque : Pour les architectures IBM Z et Power, vous devez disposer d’Ubuntu 16.04 (Xenial) ou d’une version ultérieure.\nAdieu le vieux Si vous avez installé des versions anciennes de Docker, il est préférable de les supprimer d’abord :\nsudo apt-get remove docker docker-engine docker.io Ne vous inquiétez pas si apt-get indique que ces paquets n\u0026rsquo;existent pas. C’est normal. Vos anciens fichiers dans /var/lib/docker/, tels que les images et les conteneurs, ne seront pas supprimés.\nInformations sur le pilote de stockage Docker CE prend en charge les pilotes de stockage overlay2 et aufs sur Ubuntu.\nPour les versions du noyau Linux 4 ou supérieures, overlay2 est le choix recommandé. Si vous êtes sur une version du noyau Linux 3, choisissez aufs. Si vous devez utiliser aufs, une configuration supplémentaire est nécessaire, mais nous n’entrerons pas dans les détails ici.\nInstallons Docker CE Étapes : Utilisation d’un dépôt Avant de pouvoir profiter des avantages de Docker CE, vous devez configurer son dépôt. Une fois cela fait, vous pouvez installer ou mettre à jour Docker facilement.\nConfiguration du dépôt Docker Mettez à jour votre liste de paquets :\nsudo apt-get update Installez les paquets requis :\nsudo apt-get install apt-transport-https ca-certificates curl software-properties-common Ajoutez la clé GPG de Docker pour les téléchargements sécurisés :\ncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - Vérifiez que la clé possède l’empreinte 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 :\nsudo apt-key fingerprint 0EBFCD88 Enfin, ajoutez le dépôt Docker :\nsudo add-apt-repository \u0026#34;deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable\u0026#34; Remarque : Si vous êtes aventurier et souhaitez essayer les versions edge ou test, vous pouvez les ajouter à la commande du dépôt ci-dessus.\nInstallation de Docker CE Mettez à jour votre liste de paquets :\nsudo apt-get update Installez Docker CE :\nsudo apt-get install docker-ce Si vous souhaitez une version spécifique, listez d’abord les versions disponibles :\napt-cache madison docker-ce Ensuite, installez la version souhaitée :\nsudo apt-get install docker-ce=\u0026lt;VERSION\u0026gt; Testez votre installation en exécutant :\nsudo docker run hello-world Docker CE devrait maintenant être en cours d’exécution sur votre machine. Au départ, vous devrez utiliser sudo pour les commandes Docker. Pour permettre l’accès sans privilèges root, consultez les étapes supplémentaires dans le guide post-installation Linux.\n","permalink":"https://www.shafiq.in/fr/blog/a-simple-guide-to-installing-docker-ce-on-ubuntu/","summary":"\u003ch2 id=\"ce-dont-vous-avez-besoin-avant-de-commencer\"\u003eCe dont vous avez besoin avant de commencer\u003c/h2\u003e\n\u003ch3 id=\"conditions-système-requises\"\u003eConditions système requises\u003c/h3\u003e\n\u003cp\u003eTout d’abord, assurez-vous d’exécuter l’une des versions 64 bits suivantes d’Ubuntu pour installer Docker CE :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUbuntu 18.04 (Bionic) - LTS\u003c/li\u003e\n\u003cli\u003eUbuntu 17.10 (Artful)\u003c/li\u003e\n\u003cli\u003eUbuntu 16.04 (Xenial) - LTS\u003c/li\u003e\n\u003cli\u003eUbuntu 14.04 (Trusty) - LTS\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDocker CE est compatible avec ces architectures : \u003ccode\u003ex86_64\u003c/code\u003e, \u003ccode\u003earmhf\u003c/code\u003e, \u003ccode\u003es390x\u003c/code\u003e (IBM Z) et \u003ccode\u003eppc64le\u003c/code\u003e (IBM Power).\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eRemarque\u003c/strong\u003e : Pour les architectures IBM Z et Power, vous devez disposer d’Ubuntu 16.04 (Xenial) ou d’une version ultérieure.\u003c/p\u003e","title":"A Simple Guide to Installing Docker CE on Ubuntu"},{"content":"Examiner l\u0026rsquo;architecture requise par un projet de manière isolée peut être trompeur et masque la nécessité d\u0026rsquo;une architecture produit à plus long terme, qui est plus stratégique que l\u0026rsquo;architecture au niveau du projet.\n","permalink":"https://www.shafiq.in/fr/blog/looking-at-the-architecture-required-by-a-project-in-isolation-can-be-misleading-and-hides-the-need-for-a-longer-term-product-level-architecture-which-is-more-strategic-in-nature-than-the-project-level-architecture/","summary":"\u003cp\u003eExaminer l\u0026rsquo;architecture requise par un projet de manière isolée peut être trompeur et masque la nécessité d\u0026rsquo;une architecture produit à plus long terme, qui est plus stratégique que l\u0026rsquo;architecture au niveau du projet.\u003c/p\u003e","title":"Looking at the architecture required by a project in isolation can be misleading and hides the need for a longer term product-level architecture, which is more strategic in nature than the project-level architecture"},{"content":"Il semble que la perfection soit atteinte non pas quand il ne reste plus rien à ajouter, mais quand il ne reste plus rien à retirer.\n— Antoine de Saint-Exupéry, Terre des Hommes, 1939\n","permalink":"https://www.shafiq.in/fr/blog/it-seems-that-perfection-would-be-attained-not-when-there-is-no-longer-anything-to-add-but-when-there-is-no-longer-anything-to-take-away/","summary":"\u003cp\u003eIl semble que la perfection soit atteinte non pas quand il ne reste plus rien à ajouter, mais quand il ne reste plus rien à retirer.\u003cbr\u003e\n— Antoine de Saint-Exupéry, Terre des Hommes, 1939\u003c/p\u003e","title":"It seems that perfection would be attained not when there is no longer anything to add, but when there is no longer anything to take away"},{"content":"En fin de compte, le DevOps est une transformation organisationnelle.\n","permalink":"https://www.shafiq.in/fr/blog/ultimately-devops-is-an-organizational-transformation/","summary":"\u003cp\u003eEn fin de compte, le DevOps est une transformation organisationnelle.\u003c/p\u003e","title":"Ultimately DevOps is an organizational transformation"},{"content":"« Nous sommes appelés à devenir les architectes de l\u0026rsquo;avenir, non ses victimes. »\n— R. Buckminster Fuller\n","permalink":"https://www.shafiq.in/fr/blog/we-are-called-to-be-architects-of-the-future-not-its-victims/","summary":"\u003cp\u003e« Nous sommes appelés à devenir les architectes de l\u0026rsquo;avenir, non ses victimes. »\u003cbr\u003e\n— R. Buckminster Fuller\u003c/p\u003e","title":"We are called to be architects of the future, not its victims"},{"content":"L\u0026rsquo;architecture d\u0026rsquo;entreprise est la pratique qui vise à décrire et à contrôler de manière intégrée la structure, les processus, les applications, les systèmes et la technologie d\u0026rsquo;une organisation.\n","permalink":"https://www.shafiq.in/fr/blog/enterprise-architecture/","summary":"\u003cp\u003eL\u0026rsquo;architecture d\u0026rsquo;entreprise est la pratique qui vise à décrire et à contrôler de manière intégrée la structure, les processus, les applications, les systèmes et la technologie d\u0026rsquo;une organisation.\u003c/p\u003e","title":"Enterprise architecture"},{"content":"Un modèle d\u0026rsquo;architecture n\u0026rsquo;est pas seulement utile pour apporter des éclairages sur la situation actuelle ou future ; il peut également servir à évaluer la transition du « état actuel » vers le « état futur ».\n","permalink":"https://www.shafiq.in/fr/blog/enterprise-architecture-model/","summary":"\u003cp\u003eUn modèle d\u0026rsquo;architecture n\u0026rsquo;est pas seulement utile pour apporter des éclairages sur la situation actuelle ou future ; il peut également servir à évaluer la transition du « état actuel » vers le « état futur ».\u003c/p\u003e","title":"Enterprise Architecture Model"},{"content":"La plupart des parties prenantes d\u0026rsquo;un système ne s\u0026rsquo;intéressent pas à son architecture, mais uniquement à l\u0026rsquo;impact de celle-ci sur leurs préoccupations.\n","permalink":"https://www.shafiq.in/fr/blog/stakeholders-and-ea/","summary":"\u003cp\u003eLa plupart des parties prenantes d\u0026rsquo;un système ne s\u0026rsquo;intéressent pas à son architecture, mais uniquement à l\u0026rsquo;impact de celle-ci sur leurs préoccupations.\u003c/p\u003e","title":"Stakeholders and EA"},{"content":"L\u0026rsquo;architecture est utile pour protéger les éléments essentiels de l\u0026rsquo;entreprise, tout en permettant une flexibilité et une adaptation maximales.\n","permalink":"https://www.shafiq.in/fr/blog/architecture-is-helpful-in-guarding-the-essentials-of-the-business-while-still-allowing-for-maximal-flexibility-and-adaptability/","summary":"\u003cp\u003eL\u0026rsquo;architecture est utile pour protéger les éléments essentiels de l\u0026rsquo;entreprise, tout en permettant une flexibilité et une adaptation maximales.\u003c/p\u003e","title":"Architecture is helpful in guarding the essentials of the business, while still allowing for maximal flexibility and adaptability"},{"content":"L\u0026rsquo;architecture d\u0026rsquo;entreprise est la structure et le plan opérationnel d\u0026rsquo;une entreprise.\n","permalink":"https://www.shafiq.in/fr/blog/enterprise-architecture-is-the-structure-and-the-operational-blueprint-of-a-company/","summary":"\u003cp\u003eL\u0026rsquo;architecture d\u0026rsquo;entreprise est la structure et le plan opérationnel d\u0026rsquo;une entreprise.\u003c/p\u003e","title":"Enterprise Architecture is the structure and the operational blueprint of a company"},{"content":"Archimate permet la création de modèles entièrement intégrés de l\u0026rsquo;architecture d\u0026rsquo;entreprise d\u0026rsquo;une organisation, de la motivation qui le sous-tend, ainsi que des programmes, projets et parcours de migration pour sa mise en œuvre.\n","permalink":"https://www.shafiq.in/fr/blog/archimate/","summary":"\u003cp\u003eArchimate permet la création de modèles entièrement intégrés de l\u0026rsquo;architecture d\u0026rsquo;entreprise d\u0026rsquo;une organisation, de la motivation qui le sous-tend, ainsi que des programmes, projets et parcours de migration pour sa mise en œuvre.\u003c/p\u003e","title":"Archimate"},{"content":" ","permalink":"https://www.shafiq.in/fr/blog/project-initiation-documentation-raci-chart/","summary":"\u003cimg src=\"/wp-content/uploads/2014/12/9781118510582-tb1003_hu_4cc90702c3146e4e.png\" alt=\"9781118510582-tb1003\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e","title":"Project Initiation Documentation RACI Chart"},{"content":"Télécharger la matrice RACI des parties prenantes\n","permalink":"https://www.shafiq.in/fr/blog/stakeholder-raci-matrix-spreadsheet/","summary":"\u003cp\u003e\u003ca href=\"/wp-content/uploads/2014/12/stakeholder-raci-matrix.xls\"\u003eTélécharger la matrice RACI des parties prenantes\u003c/a\u003e\u003c/p\u003e","title":"Stakeholder RACI Matrix Spreadsheet"},{"content":"Télécharger le document sur les rôles des parties prenantes\n","permalink":"https://www.shafiq.in/fr/blog/break-stakeholders-into-smaller-groups-according-to-roles-or-goals-doc/","summary":"\u003cp\u003e\u003ca href=\"/wp-content/uploads/2014/12/stakeholder-roles-groups.docx\"\u003eTélécharger le document sur les rôles des parties prenantes\u003c/a\u003e\u003c/p\u003e","title":"Break stakeholders into smaller groups according to roles or goals [doc]"},{"content":"Télécharger -\u0026gt; Document Liste des parties prenantes\n","permalink":"https://www.shafiq.in/fr/blog/stakeholder-list-document/","summary":"\u003cp\u003eTélécharger -\u0026gt; \u003ca href=\"/wp-content/uploads/2014/12/stakeholder-list.docx\"\u003eDocument Liste des parties prenantes\u003c/a\u003e\u003c/p\u003e","title":"Stakeholder List Document"},{"content":"Le lauréat du prix Nobel et pionnier de la théorie des jeux Reinhard Selten a observé que les gens s\u0026rsquo;efforcent ardemment d\u0026rsquo;être rationnels ex post. Autrement dit, nous examinons fréquemment le déroulement d\u0026rsquo;une situation passée afin de comprendre comment un meilleur résultat aurait pu être atteint. Cela contraste avec une approche de la théorie des jeux, dont l\u0026rsquo;objectif est de concevoir une stratégie permettant d\u0026rsquo;obtenir ce meilleur résultat a priori.\n","permalink":"https://www.shafiq.in/fr/blog/a-priori-thinking/","summary":"\u003cp\u003eLe lauréat du prix Nobel et pionnier de la théorie des jeux Reinhard Selten a observé que les gens s\u0026rsquo;efforcent ardemment d\u0026rsquo;être rationnels \u003cem\u003eex post\u003c/em\u003e. Autrement dit, nous examinons fréquemment le déroulement d\u0026rsquo;une situation passée afin de comprendre comment un meilleur résultat aurait pu être atteint. Cela contraste avec une approche de la théorie des jeux, dont l\u0026rsquo;objectif est de concevoir une stratégie permettant d\u0026rsquo;obtenir ce meilleur résultat \u003cem\u003ea priori\u003c/em\u003e.\u003c/p\u003e","title":"a priori thinking"},{"content":" Cinq compétences humaines essentielles : la construction de relations la curiosité la communication l’ambition et la résolution de conflits L’assertivité : la capacité à parler et agir de manière à provoquer naturellement des réponses attentives et positives de la part des autres. Utilisez des phrases comme « Tu pourrais avoir raison à ce sujet… » ou « Je comprends ce que tu ressens… ». Tenez un journal des comportements agressifs et passifs de votre part. \u0026hellip; ","permalink":"https://www.shafiq.in/fr/blog/some-notes-on-people-skills-and-emotional-intelligence-1/","summary":"\u003cul\u003e\n\u003cli\u003eCinq compétences humaines essentielles :\n\u003cul\u003e\n\u003cli\u003ela construction de relations\u003c/li\u003e\n\u003cli\u003ela curiosité\u003c/li\u003e\n\u003cli\u003ela communication\u003c/li\u003e\n\u003cli\u003el’ambition\u003c/li\u003e\n\u003cli\u003eet la résolution de conflits\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eL’assertivité : la capacité à parler et agir de manière à provoquer naturellement des réponses attentives et positives de la part des autres.\u003c/li\u003e\n\u003cli\u003eUtilisez des phrases comme « Tu pourrais avoir raison à ce sujet… » ou « Je comprends ce que tu ressens… ».\u003c/li\u003e\n\u003cli\u003eTenez un journal des comportements agressifs et passifs de votre part.\u003c/li\u003e\n\u003cli\u003e\u0026hellip;\u003c/li\u003e\n\u003c/ul\u003e","title":"Some notes on people skills and emotional intelligence – 1"},{"content":"Je suis rappelé aux écrits d\u0026rsquo;un évêque anglican :\nQuand j\u0026rsquo;étais jeune et libre, et que mon imagination n\u0026rsquo;avait pas de limites, je rêvais de changer le monde ;\nÀ mesure que j\u0026rsquo;ai grandi et que j\u0026rsquo;ai acquis de la sagesse, j\u0026rsquo;ai compris que le monde ne changerait pas.\nEt j\u0026rsquo;ai décidé de réduire mes ambitions et de tenter de changer seulement mon pays. Mais celui-ci semblait lui aussi immuable.\nÀ l\u0026rsquo;approche de mes dernières années, dans un dernier effort désespéré, j\u0026rsquo;ai cherché à changer seulement ma famille, ceux qui m\u0026rsquo;étaient les plus proches, mais hélas ils n\u0026rsquo;en voulaient rien savoir.\nEt maintenant je gis sur mon lit de mort et réalise (peut-être pour la première fois) que si j\u0026rsquo;avais commencé par changer moi-même, alors par exemple j\u0026rsquo;aurais pu influencer ma famille, et avec leur encouragement et leur soutien, j\u0026rsquo;aurais pu améliorer mon pays, et qui sait, j\u0026rsquo;aurais pu changer le monde.\n","permalink":"https://www.shafiq.in/fr/blog/writings-of-an-anglican-bishop/","summary":"\u003cp\u003eJe suis rappelé aux écrits d\u0026rsquo;un évêque anglican :\u003c/p\u003e\n\u003cp\u003eQuand j\u0026rsquo;étais jeune et libre, et que mon imagination n\u0026rsquo;avait pas de limites, je rêvais de changer le monde ;\u003c/p\u003e\n\u003cp\u003eÀ mesure que j\u0026rsquo;ai grandi et que j\u0026rsquo;ai acquis de la sagesse, j\u0026rsquo;ai compris que le monde ne changerait pas.\u003c/p\u003e\n\u003cp\u003eEt j\u0026rsquo;ai décidé de réduire mes ambitions et de tenter de changer seulement mon pays. Mais celui-ci semblait lui aussi immuable.\u003c/p\u003e\n\u003cp\u003eÀ l\u0026rsquo;approche de mes dernières années, dans un dernier effort désespéré, j\u0026rsquo;ai cherché à changer seulement ma famille, ceux qui m\u0026rsquo;étaient les plus proches, mais hélas ils n\u0026rsquo;en voulaient rien savoir.\u003c/p\u003e","title":"Writings of an Anglican bishop"},{"content":"L\u0026rsquo;intelligence politique exige une compréhension approfondie des dynamiques du levier, ce qui signifie simplement votre capacité à faire faire à autrui ce que vous voulez.\n","permalink":"https://www.shafiq.in/fr/blog/political-intelligence-requires-a-thorough-understanding-of-the-dynamics-of-leverage-which-simply-means-your-ability-to-get-others-to-do-what-you-want./","summary":"\u003cp\u003eL\u0026rsquo;intelligence politique exige une compréhension approfondie des dynamiques du levier, ce qui signifie simplement votre capacité à faire faire à autrui ce que vous voulez.\u003c/p\u003e","title":"Political Intelligence requires a thorough understanding of the dynamics of leverage, which simply means your ability to get others to do what you want."},{"content":"Naviguer dans les subtilités de la politique au bureau peut parfois ressembler à marcher sur un champ de mines. Toutefois, développer un QI politique aiguisé peut non seulement vous aider à survivre, mais aussi à prospérer dans votre environnement professionnel. Voici comment affiner votre stratégie et tirer le meilleur parti de vos relations au travail.\nCartographiez clairement votre chemin vers le succès Avant même de penser à manœuvrer dans le labyrinthe de la politique au bureau, vous devez avoir une idée précise de l’endroit où vous voulez aller. Quels sont vos objectifs professionnels ? Quels jalons devez-vous atteindre sur le chemin ? Comprendre vos ambitions vous donnera une carte routière pour traverser la complexité du lieu de travail.\nComprenez les dynamiques de pouvoir Le lieu de travail n’est pas seulement une question de accomplir ses tâches ; c’est un écosystème vivant et respirant, avec ses propres règles et ses dynamiques de pouvoir. Reconnaître qui détient l’influence et pourquoi peut vous donner un avantage. Que ce soit le vétéran vers lequel tout le monde se tourne pour conseils ou le nouveau venu aux idées révolutionnaires, savoir où se situe le pouvoir peut vous aider à tisser des alliances précieuses.\nProfitez des opportunités pour amplifier votre influence Une fois que vous avez une bonne compréhension de la structure du pouvoir, la prochaine étape consiste à trouver votre place au sein de celle-ci. Cherchez des occasions qui vous permettent de mettre en valeur vos compétences et de contribuer aux objectifs de l’équipe. Que ce soit en vous portant volontaire pour un projet exigeant ou simplement en aidant un collègue en besoin, chaque action que vous entreprenez peut renforcer votre pouvoir personnel et votre influence au sein de l’organisation.\nDécryptez les intentions cachées et les motifs profonds Tout le monde n’est pas transparent sur ses intentions, c’est pourquoi il est essentiel de développer la capacité à lire entre les lignes. Quelqu’un vous félicite constamment mais vous exclut des réunions importantes ? Il pourrait s’agir d’un frenemy. En comprenant les motifs sous-jacents de vos collègues, vous pouvez mieux protéger vos intérêts et éviter les pièges potentiels.\nGardez les yeux sur la récompense Il est facile de se laisser distraire par les drames quotidiens et les distractions qui peuplent souvent les environnements de travail. Garder le focus sur vos objectifs ultimes vous aidera à traverser le bruit. Si vous vous retrouvez dans une situation toxique, n’ayez pas peur de prendre les mesures nécessaires pour vous en retirer. Parfois, changer de département, voire d’organisation, peut être le choix le plus sain pour votre carrière.\nEn suivant ces stratégies, vous non seulement renforcerez votre QI politique, mais vous vous positionnerez sur une trajectoire de succès professionnel continu. La politique au bureau sera toujours présente dans l’expérience de travail, mais avec une conscience aiguisée et des tactiques intelligentes, vous pouvez transformer cet aspect souvent redouté en un outil précieux pour la croissance de votre carrière.\n","permalink":"https://www.shafiq.in/fr/blog/how-to-sharpen-your-political-iq-for-a-smoother-career-path/","summary":"\u003cp\u003eNaviguer dans les subtilités de la politique au bureau peut parfois ressembler à marcher sur un champ de mines. Toutefois, développer un QI politique aiguisé peut non seulement vous aider à survivre, mais aussi à prospérer dans votre environnement professionnel. Voici comment affiner votre stratégie et tirer le meilleur parti de vos relations au travail.\u003c/p\u003e\n\u003ch3 id=\"cartographiez-clairement-votre-chemin-vers-le-succès\"\u003eCartographiez clairement votre chemin vers le succès\u003c/h3\u003e\n\u003cp\u003eAvant même de penser à manœuvrer dans le labyrinthe de la politique au bureau, vous devez avoir une idée précise de l’endroit où vous voulez aller. Quels sont vos objectifs professionnels ? Quels jalons devez-vous atteindre sur le chemin ? Comprendre vos ambitions vous donnera une carte routière pour traverser la complexité du lieu de travail.\u003c/p\u003e","title":"How to Sharpen Your Political IQ for a Smoother Career Path"},{"content":"Voici quelques-éléments clés qui peuvent faire ou défaire votre stratégie de contenu numérique.\nCodes QR Les codes QR (Quick Response) sont faciles à scanner et peuvent rediriger instantanément les utilisateurs vers des sites web, des pages de produits ou d\u0026rsquo;autres emplacements numériques, ce qui en fait un outil polyvalent dans le marketing moderne.\nArchitecture de l\u0026rsquo;information semi-automatisée Intégrez l’auto-étiquetage et les liens internes dans votre contenu pour simplifier la navigation utilisateur et rendre votre site plus optimisé pour le référencement (SEO).\nApproche mobile-first Une plateforme e-commerce réactive garantit que votre site est accessible sur tous les appareils, augmentant ainsi votre portée et l’engagement des utilisateurs.\nContenu adaptable La personnalisation est essentielle. Ajustez l’expérience utilisateur en fonction de sa localisation, de l’heure et de ses préférences. Le contenu adaptable s’ajuste dynamiquement pour répondre aux besoins individuels, améliorant ainsi l’engagement.\nIntégration aux réseaux sociaux Ajouter une fonctionnalité de connexion Facebook peut être une manière efficace de collecter des informations utilisateur pour des interactions plus personnalisées.\nOptimisation de la plateforme Votre priorité absolue doit être de structurer votre contenu de manière à ce qu’il soit accessible sur n’importe quel appareil. Le vrai défi réside dans la mise en place d’un flux éditorial multicanal, surtout si le contenu varie selon les plateformes.\nFlux éditorial Gérer le contenu sur plusieurs plateformes peut s’avérer complexe. Les décisions concernant la livraison de contenus différents ou réduits aux utilisateurs mobiles doivent être équilibrées par rapport au temps et à l’effort nécessaires à leur maintenance.\nProcessus interne et flux de travail Traiter les processus internes, les flux de travail et les outils est essentiel. Une approche adaptative à la publication sur plusieurs appareils permet d’éviter les problèmes liés au « forking de contenu ».\nÉléments du contenu adaptable Le contenu adaptable se compose de contenu indépendant de la présentation, de métadonnées pertinentes et d’une interface utilisateur CMS qui permet des variations de contenu au sein d’un même package, plutôt que de lier le contenu à des pages spécifiques.\nTypes de contenu interactif Le contenu interactif peut engager les utilisateurs de manière plus profonde. Par exemple, The Guardian utilise :\ndu contenu statique du contenu légèrement interactif des galeries entièrement interactives Rédaction de teasers Rédiger des versions courtes et longues de vos teasers donne aux plateformes la flexibilité nécessaire pour allouer l’espace selon leurs besoins, rendant votre contenu plus adaptable et attrayant.\nEn portant attention à ces éléments, vous pouvez créer une stratégie de contenu numérique solide et flexible, vous positionnant ainsi pour le succès à long terme.\n","permalink":"https://www.shafiq.in/fr/blog/mastering-digital-content-strategy-a-comprehensive-guide/","summary":"\u003cp\u003eVoici quelques-éléments clés qui peuvent faire ou défaire votre stratégie de contenu numérique.\u003c/p\u003e\n\u003ch3 id=\"codes-qr\"\u003eCodes QR\u003c/h3\u003e\n\u003cp\u003eLes codes QR (Quick Response) sont faciles à scanner et peuvent rediriger instantanément les utilisateurs vers des sites web, des pages de produits ou d\u0026rsquo;autres emplacements numériques, ce qui en fait un outil polyvalent dans le marketing moderne.\u003c/p\u003e\n\u003ch3 id=\"architecture-de-linformation-semi-automatisée\"\u003eArchitecture de l\u0026rsquo;information semi-automatisée\u003c/h3\u003e\n\u003cp\u003eIntégrez l’auto-étiquetage et les liens internes dans votre contenu pour simplifier la navigation utilisateur et rendre votre site plus optimisé pour le référencement (SEO).\u003c/p\u003e","title":"Mastering Digital Content Strategy - A Comprehensive Guide"},{"content":"Les singes aide-mémoire des statistiques de WordPress.com ont préparé un rapport annuel 2013 pour ce blog.\nVoici un extrait :\nLa salle de concert de l\u0026rsquo;Opéra de Sydney peut accueillir 2 700 personnes. Ce blog a été vu environ 51 000 fois en 2013. Si cela avait été un concert à l\u0026rsquo;Opéra de Sydney, il faudrait environ 19 représentations sold-out pour que autant de personnes puissent le voir.\n","permalink":"https://www.shafiq.in/fr/blog/2013-blogs-in-review/","summary":"\u003cp\u003eLes singes aide-mémoire des statistiques de WordPress.com ont préparé un rapport annuel 2013 pour ce blog.\u003c/p\u003e\n\u003cimg alt=\"emailteaser\" loading=\"lazy\" src=\"http://www.wordpress.com/wp-content/mu-plugins/annual-reports/img/2012-emailteaser.png\"\u003e\u003cp\u003eVoici un extrait :\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eLa salle de concert de l\u0026rsquo;Opéra de Sydney peut accueillir 2 700 personnes. Ce blog a été vu environ \u003cstrong\u003e51 000\u003c/strong\u003e fois en 2013. Si cela avait été un concert à l\u0026rsquo;Opéra de Sydney, il faudrait environ 19 représentations sold-out pour que autant de personnes puissent le voir.\u003c/p\u003e\n\u003c/blockquote\u003e","title":"2013 blogs in review"},{"content":"Dans ce billet, nous décomposons le cycle de vie des grandes données en ses composantes essentielles, en offrant une carte routière pour naviguer dans ce paysage multifacette.\nLes huit défis majeurs Capture : C’est là que tout commence. Vous ne pouvez pas analyser ce que vous n’avez pas, aussi la collecte de données pertinentes provenant de sources diverses est la première étape. Le défi réside ici dans la détermination de ce qui est utile, puis dans la recherche de moyens efficaces pour les recueillir.\nCurateur : Une fois les données collectées, il est temps de les nettoyer et de les préparer. Cela implique de supprimer toute incohérence, erreur ou redondance, afin de rendre le jeu de données prêt à l’analyse.\nStockage : Stocker de grandes quantités de données n’est pas une tâche négligeable. Cela exige une infrastructure solide capable de gérer de grands volumes de données sous différentes formes. C’est là que des solutions comme le stockage dans le cloud ou les entrepôts de données entrent en jeu.\nRecherche : Une fois les données stockées, la prochaine étape consiste à les rendre facilement accessibles. Vous aurez besoin d’algorithmes de recherche efficaces et de mécanismes permettant de trouver des informations spécifiques au sein de vos grands jeux de données.\nPartage : Les données sont les plus précieuses lorsqu’elles peuvent être partagées facilement et intégrées à d’autres données. Cela exige des méthodes sécurisées et efficaces pour distribuer vos informations sur différentes plates-formes et équipes.\nTransfert : Parfois, vos données doivent être déplacées — entre différentes solutions de stockage ou même entre entreprises. Cela soulève des défis liés à la vitesse, à la sécurité et à la compatibilité.\nAnalyse : C’est souvent la phase la plus excitante, où vous fouillez profondément vos données pour en extraire des insights précieux. Mais c’est aussi la plus difficile, exigeant une expertise en science des données et en outils d’analyse.\nVisualisation : Enfin, les informations tirées de l’analyse doivent être présentées de manière compréhensible. De bonnes techniques de visualisation des données aident les parties prenantes à comprendre l’histoire que vos données racontent.\nNaviguer dans le cycle de vie des grandes données n’est pas pour les âmes sensibles, mais comprendre ces défis peut rendre le parcours considérablement plus fluide. En étant préparé et en sachant à quoi s’attendre, vous pouvez mieux outiller votre organisation pour tirer le meilleur parti de vos initiatives sur les grandes données.\n","permalink":"https://www.shafiq.in/fr/blog/navigating-the-big-data-journey-understanding-its-life-cycle/","summary":"\u003cp\u003eDans ce billet, nous décomposons le cycle de vie des grandes données en ses composantes essentielles, en offrant une carte routière pour naviguer dans ce paysage multifacette.\u003c/p\u003e\n\u003ch3 id=\"les-huit-défis-majeurs\"\u003eLes huit défis majeurs\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eCapture\u003c/strong\u003e : C’est là que tout commence. Vous ne pouvez pas analyser ce que vous n’avez pas, aussi la collecte de données pertinentes provenant de sources diverses est la première étape. Le défi réside ici dans la détermination de ce qui est utile, puis dans la recherche de moyens efficaces pour les recueillir.\u003c/p\u003e","title":"Navigating the Big Data Journey - Understanding its Life Cycle"},{"content":"Ma résolution du Nouvel An 2014 : simplifier pour amplifier Alors que l\u0026rsquo;année tire à sa fin et que 2014 est juste au coin de la rue, j\u0026rsquo;ai fait un peu de réflexion. Qu\u0026rsquo;est-ce que je peux faire différemment l\u0026rsquo;année prochaine pour la rendre encore meilleure que l\u0026rsquo;année dernière ? Après quelques instants de réflexion, j\u0026rsquo;ai décidé de garder les choses simples. Si simples, d\u0026rsquo;ailleurs, que j\u0026rsquo;ai choisi une seule résolution du Nouvel An pour 2014.\n1. Écrire plus souvent sur mon blog Oui, c\u0026rsquo;est tout. Une seule résolution, mais qui pèse lourd pour moi. Je crois que l\u0026rsquo;acte d\u0026rsquo;écrire régulièrement m\u0026rsquo;aidera non seulement à communiquer plus efficacement, mais aussi à affiner mes pensées sur divers sujets. Que ce soit du design, du code, des commentaires, ou simplement des hasards du quotidien, je veux que cet espace devienne une tapisserie riche d\u0026rsquo;idées et d\u0026rsquo;inspirations.\nPourquoi une seule résolution ? Vous vous demandez peut-être pourquoi j\u0026rsquo;ai choisi de me limiter à une seule résolution. Eh bien, j\u0026rsquo;ai appris, à travers mes expériences passées, que moins peut en fait être plus. Se concentrer sur un objectif crucial me permet de consacrer toute mon énergie à l\u0026rsquo;atteindre, plutôt que de me disperser sur plusieurs objectifs.\n","permalink":"https://www.shafiq.in/fr/blog/my-2014-new-years-resolution-less-is-more/","summary":"\u003ch3 id=\"ma-résolution-du-nouvel-an-2014--simplifier-pour-amplifier\"\u003eMa résolution du Nouvel An 2014 : simplifier pour amplifier\u003c/h3\u003e\n\u003cp\u003eAlors que l\u0026rsquo;année tire à sa fin et que 2014 est juste au coin de la rue, j\u0026rsquo;ai fait un peu de réflexion. Qu\u0026rsquo;est-ce que je peux faire différemment l\u0026rsquo;année prochaine pour la rendre encore meilleure que l\u0026rsquo;année dernière ? Après quelques instants de réflexion, j\u0026rsquo;ai décidé de garder les choses simples. Si simples, d\u0026rsquo;ailleurs, que j\u0026rsquo;ai choisi une seule résolution du Nouvel An pour 2014.\u003c/p\u003e","title":"My 2014 New Year's Resolution - Less is More"},{"content":"Valeurs applicables pour AddItemRequest.Item.Country • AA (in/out) NOTE : APO/FPO étaient définis dans la liste eBay précédemment, mais ils ne sont pas définis dans ISO 3166. Ce pays restera sur la liste des codes pays eBay pour une compatibilité descendante.\n• AD (in/out) Andorre.\n• AE (in/out) Émirats arabes unis.\n• AF (in/out) Afghanistan.\n• AG (in/out) Antigua-et-Barbuda.\n• AI (in/out) Anguilla.\n• AL (in/out) Albanie.\n• AM (in/out) Arménie.\n• AN (in/out) Antilles néerlandaises.\n• AO (in/out) Angola.\n• AQ (in/out) Antarctique.\n• AR (in/out) Argentine.\n• AS (in/out) Samoa américaine.\n• AT (in/out) Autriche.\n• AU (in/out) Australie.\n• AW (in/out) Aruba.\n• AZ (in/out) Azerbaïdjan.\n• BA (in/out) Bosnie-Herzégovine.\n• BB (in/out) Barbade.\n• BD (in/out) Bangladesh.\n• BE (in/out) Belgique.\n• BF (in/out) Burkina Faso.\n• BG (in/out) Bulgarie.\n• BH (in/out) Bahreïn.\n• BI (in/out) Burundi.\n• BJ (in/out) Bénin.\n• BM (in/out) Bermudes.\n• BN (in/out) Brunéi Darussalam.\n• BO (in/out) Bolivie.\n• BR (in/out) Brésil.\n• BS (in/out) Bahamas.\n• BT (in/out) Bhoutan.\n• BV (in/out) Île Bouvet.\n• BW (in/out) Botswana.\n• BY (in/out) Biélorussie.\n• BZ (in/out) Belize.\n• CA (in/out) Canada.\n• CC (in/out) Îles Cocos (Keeling).\n• CD (in/out) République démocratique du Congo.\n• CF (in/out) République centrafricaine.\n• CG (in/out) Congo.\n• CH (in/out) Suisse.\n• CI (in/out) Côte d\u0026rsquo;Ivoire.\n• CK (in/out) Îles Cook.\n• CL (in/out) Chili.\n• CM (in/out) Cameroun.\n• CN (in/out) Chine.\n• CO (in/out) Colombie.\n• CR (in/out) Costa Rica.\n• CU (in/out) Cuba.\n• CustomCode (in/out) Réservé à une utilisation interne ou future.\n• CV (in/out) Cap-Vert.\n• CX (in/out) Île Christmas.\n• CY (in/out) Chypre.\n• CZ (in/out) République tchèque.\n• DE (in/out) Allemagne.\n• DJ (in/out) Djibouti.\n• DK (in/out) Danemark.\n• DM (in/out) Dominique.\n• DO (in/out) République dominicaine.\n• DZ (in/out) Algérie.\n• EC (in/out) Équateur.\n• EE (in/out) Estonie.\n• EG (in/out) Égypte.\n• EH (in/out) Sahara occidental.\n• ER (in/out) Érythrée.\n• ES (in/out) Espagne.\n• ET (in/out) Éthiopie.\n• FI (in/out) Finlande.\n• FJ (in/out) Fidji.\n• FK (in/out) Îles Falkland (Malouines).\n• FM (in/out) Micronésie, États fédérés de.\n• FO (in/out) Îles Féroé.\n• FR (in/out) France.\n• GA (in/out) Gabon.\n• GB (in/out) Royaume-Uni.\n• GD (in/out) Grenade.\n• GE (in/out) Géorgie.\n• GF (in/out) Guyane française.\n• GG (in/out) Guernesey.\n• GH (in/out) Ghana.\n• GI (in/out) Gibraltar.\n• GL (in/out) Groenland.\n• GM (in/out) Gambie.\n• GN (in/out) Guinée.\n• GP (in/out) Guadeloupe.\n• GQ (in/out) Guinée équatoriale.\n• GR (in/out) Grèce.\n• GS (in/out) Géorgie du Sud et Îles Sandwich du Sud.\n• GT (in/out) Guatemala.\n• GU (in/out) Guam.\n• GW (in/out) Guinée-Bissau.\n• GY (in/out) Guyana.\n• HK (in/out) Hong Kong.\n• HM (in/out) Îles Heard et McDonald.\n• HN (in/out) Honduras.\n• HR (in/out) Croatie.\n• HT (in/out) Haïti.\n• HU (in/out) Hongrie.\n• ID (in/out) Indonésie.\n• IE (in/out) Irlande.\n• IL (in/out) Israël.\n• IN (in/out) Inde.\n• IO (in/out) Territoire britannique de l’océan Indien.\n• IQ (in/out) Irak.\n• IR (in/out) Iran, République islamique d\u0026rsquo;.\n• IS (in/out) Islande.\n• IT (in/out) Italie.\n• JE (in/out) Jersey.\n• JM (in/out) Jamaïque.\n• JO (in/out) Jordanie.\n• JP (in/out) Japon.\n• KE (in/out) Kenya.\n• KG (in/out) Kirghizistan.\n• KH (in/out) Cambodge.\n• KI (in/out) Kiribati.\n• KM (in/out) Comores.\n• KN (in/out) Saint-Kitts-et-Nevis.\n• KP (in/out) Corée, République populaire démocratique de.\n• KR (in/out) Corée, République de.\n• KW (in/out) Koweït.\n• KY (in/out) Îles Caïmans.\n• KZ (in/out) Kazakhstan.\n• LA (in/out) République démocratique populaire lao.\n• LB (in/out) Liban.\n• LC (in/out) Sainte-Lucie.\n• LI (in/out) Liechtenstein.\n• LK (in/out) Sri Lanka.\n• LR (in/out) Libéria.\n• LS (in/out) Lesotho.\n• LT (in/out) Lituanie.\n• LU (in/out) Luxembourg.\n• LV (in/out) Lettonie.\n• LY (in/out) République arabe libyenne.\n• MA (in/out) Maroc.\n• MC (in/out) Monaco.\n• MD (in/out) Moldavie, République de.\n• ME (in/out) Monténégro.\n• MG (in/out) Madagascar.\n• MH (in/out) Îles Marshall.\n• MK (in/out) Macédoine, ancienne République yougoslave.\n• ML (in/out) Mali.\n• MM (in/out) Myanmar.\n• MN (in/out) Mongolie.\n• MO (in/out) Macao.\n• MP (in/out) Îles Mariannes du Nord.\n• MQ (in/out) Martinique.\n• MR (in/out) Mauritanie.\n• MS (in/out) Montserrat.\n• MT (in/out) Malte.\n• MU (in/out) Maurice.\n• MV (in/out) Maldives.\n• MW (in/out) Malawi.\n• MX (in/out) Mexique.\n• MY (in/out) Malaisie.\n• MZ (in/out) Mozambique.\n• NA (in/out) Namibie.\n• NC (in/out) Nouvelle-Calédonie.\n• NE (in/out) Niger.\n• NF (in/out) Île Norfolk.\n• NG (in/out) Nigéria.\n• NI (in/out) Nicaragua.\n• NL (in/out) Pays-Bas.\n• NO (in/out) Norvège.\n• NP (in/out) Népal.\n• NR (in/out) Nauru.\n• NU (in/out) Nioué.\n• NZ (in/out) Nouvelle-Zélande.\n• OM (in/out) Oman.\n• PA (in/out) Panama.\n• PE (in/out) Pérou.\n• PF (in/out) Polynésie française. Inclut Tahiti.\n• PG (in/out) Papouasie-Nouvelle-Guinée.\n• PH (in/out) Philippines.\n• PK (in/out) Pakistan.\n• PL (in/out) Pologne.\n• PM (in/out) Saint-Pierre-et-Miquelon.\n• PN (in/out) Île Pitcairn.\n• PR (in/out) Porto Rico.\n• PS (in/out) Territoire palestinien, occupé.\n• PT (in/out) Portugal.\n• PW (in/out) Palaos.\n• PY (in/out) Paraguay.\n• QA (in/out) Qatar.\n• QM (in/out) NOTE : Guernesey était défini dans la liste eBay précédemment, mais il n’est pas défini dans ISO 3166. Ce pays restera sur la liste des pays eBay pour une compatibilité descendante.\n• QN (in/out) NOTE : Jan Mayen était défini dans la liste eBay précédemment, mais il n’est pas défini dans ISO 3166. Ce pays restera sur la liste des pays eBay pour une compatibilité descendante.\n• QO (in/out) NOTE : Jersey était défini dans la liste eBay précédemment, mais il n’est pas défini dans ISO 3166. Ce pays restera sur la liste des pays eBay pour une compatibilité descendante.\n• RE (in/out) Réunion.\n• RO (in/out) Roumanie.\n• RS (in/out) Serbie.\n• RU (in/out) Fédération de Russie.\n• RW (in/out) Rwanda.\n• SA (in/out) Arabie saoudite.\n• SB (in/out) Îles Salomon.\n• SC (in/out) Seychelles.\n• SD (in/out) Soudan.\n• SE (in/out) Suède.\n• SG (in/out) Singapour.\n• SH (in/out) Sainte-Hélène.\n• SI (in/out) Slovénie.\n• SJ (in/out) Svalbard et Jan Mayen.\n• SK (in/out) Slovaquie.\n• SL (in/out) Sierra Leone.\n• SM (in/out) Saint-Marin.\n• SN (in/out) Sénégal.\n• SO (in/out) Somalie.\n• SR (in/out) Suriname.\n• ST (in/out) Sao Tomé-et-Principe.\n• SV (in/out) El Salvador.\n• SY (in/out) République arabe syrienne.\n• SZ (in/out) Swaziland.\n• TC (in/out) Îles Turques-et-Caïques.\n• TD (in/out) Tchad.\n• TF (in/out) Territoires austraux français.\n• TG (in/out) Togo.\n• TH (in/out) Thaïlande.\n• TJ (in/out) Tadjikistan.\n• TK (in/out) Tokelau.\n• TM (in/out) Turkménistan.\n• TN (in/out) Tunisie.\n• TO (in/out) Tonga.\n• TP (in/out) Plus utilisé.\n• TR (in/out) Turquie.\n• TT (in/out) Trinité-et-Tobago.\n• TV (in/out) Tuvalu.\n• TW (in/out) Taïwan, province de Chine.\n• TZ (in/out) Tanzanie, République unie.\n• UA (in/out) Ukraine.\n• UG (in/out) Ouganda.\n• UM (in/out) NOTE : Les îles mineures des États-Unis ont été définies dans la liste eBay précédemment, mais elles ne sont plus une option viable. Ce pays restera sur la liste des pays eBay pour une compatibilité descendante. Utilisez \u0026lsquo;US\u0026rsquo; à la place.\n• US (in/out) États-Unis.\n• UY (in/out) Uruguay.\n• UZ (in/out) Ouzbékistan.\n• VA (in/out) Saint-Siège (État de la Cité du Vatican).\n• VC (in/out) Saint-Vincent-et-les-Grenadines.\n• VE (in/out) Venezuela.\n• VG (in/out) Îles Vierges britanniques.\n• VI (in/out) Îles Vierges des États-Unis.\n• VN (in/out) Viêt Nam.\n• VU (in/out) Vanuatu.\n• WF (in/out) Wallis et Futuna.\n• WS (in/out) Samoa.\n• YE (in/out) Yémen.\n• YT (in/out) Mayotte.\n• YU (in/out) Plus utilisé. Voir RS pour la Serbie et ME pour le Monténégro.\n• ZA (in/out) Afrique du Sud.\n• ZM (in/out) Zambie.\n• ZW (in/out) Zimbabwe.\n• ZZ (in/out) Pays inconnu.\n","permalink":"https://www.shafiq.in/fr/blog/applicable-values-for-additemrequest.item.country/","summary":"\u003ch1 id=\"valeurs-applicables-pour-additemrequestitemcountry\"\u003eValeurs applicables pour AddItemRequest.Item.Country\u003c/h1\u003e\n\u003cp\u003e•   AA (in/out) NOTE : APO/FPO étaient définis dans la liste eBay précédemment, mais ils ne sont pas définis dans ISO 3166. Ce pays restera sur la liste des codes pays eBay pour une compatibilité descendante.\u003cbr\u003e\n•   AD (in/out) Andorre.\u003cbr\u003e\n•   AE (in/out) Émirats arabes unis.\u003cbr\u003e\n•   AF (in/out) Afghanistan.\u003cbr\u003e\n•   AG (in/out) Antigua-et-Barbuda.\u003cbr\u003e\n•   AI (in/out) Anguilla.\u003cbr\u003e\n•   AL (in/out) Albanie.\u003cbr\u003e\n•   AM (in/out) Arménie.\u003cbr\u003e\n•   AN (in/out) Antilles néerlandaises.\u003cbr\u003e\n•   AO (in/out) Angola.\u003cbr\u003e\n•   AQ (in/out) Antarctique.\u003cbr\u003e\n•   AR (in/out) Argentine.\u003cbr\u003e\n•   AS (in/out) Samoa américaine.\u003cbr\u003e\n•   AT (in/out) Autriche.\u003cbr\u003e\n•   AU (in/out) Australie.\u003cbr\u003e\n•   AW (in/out) Aruba.\u003cbr\u003e\n•   AZ (in/out) Azerbaïdjan.\u003cbr\u003e\n•   BA (in/out) Bosnie-Herzégovine.\u003cbr\u003e\n•   BB (in/out) Barbade.\u003cbr\u003e\n•   BD (in/out) Bangladesh.\u003cbr\u003e\n•   BE (in/out) Belgique.\u003cbr\u003e\n•   BF (in/out) Burkina Faso.\u003cbr\u003e\n•   BG (in/out) Bulgarie.\u003cbr\u003e\n•   BH (in/out) Bahreïn.\u003cbr\u003e\n•   BI (in/out) Burundi.\u003cbr\u003e\n•   BJ (in/out) Bénin.\u003cbr\u003e\n•   BM (in/out) Bermudes.\u003cbr\u003e\n•   BN (in/out) Brunéi Darussalam.\u003cbr\u003e\n•   BO (in/out) Bolivie.\u003cbr\u003e\n•   BR (in/out) Brésil.\u003cbr\u003e\n•   BS (in/out) Bahamas.\u003cbr\u003e\n•   BT (in/out) Bhoutan.\u003cbr\u003e\n•   BV (in/out) Île Bouvet.\u003cbr\u003e\n•   BW (in/out) Botswana.\u003cbr\u003e\n•   BY (in/out) Biélorussie.\u003cbr\u003e\n•   BZ (in/out) Belize.\u003cbr\u003e\n•   CA (in/out) Canada.\u003cbr\u003e\n•   CC (in/out) Îles Cocos (Keeling).\u003cbr\u003e\n•   CD (in/out) République démocratique du Congo.\u003cbr\u003e\n•   CF (in/out) République centrafricaine.\u003cbr\u003e\n•   CG (in/out) Congo.\u003cbr\u003e\n•   CH (in/out) Suisse.\u003cbr\u003e\n•   CI (in/out) Côte d\u0026rsquo;Ivoire.\u003cbr\u003e\n•   CK (in/out) Îles Cook.\u003cbr\u003e\n•   CL (in/out) Chili.\u003cbr\u003e\n•   CM (in/out) Cameroun.\u003cbr\u003e\n•   CN (in/out) Chine.\u003cbr\u003e\n•   CO (in/out) Colombie.\u003cbr\u003e\n•   CR (in/out) Costa Rica.\u003cbr\u003e\n•   CU (in/out) Cuba.\u003cbr\u003e\n•   CustomCode (in/out) Réservé à une utilisation interne ou future.\u003cbr\u003e\n•   CV (in/out) Cap-Vert.\u003cbr\u003e\n•   CX (in/out) Île Christmas.\u003cbr\u003e\n•   CY (in/out) Chypre.\u003cbr\u003e\n•   CZ (in/out) République tchèque.\u003cbr\u003e\n•   DE (in/out) Allemagne.\u003cbr\u003e\n•   DJ (in/out) Djibouti.\u003cbr\u003e\n•   DK (in/out) Danemark.\u003cbr\u003e\n•   DM (in/out) Dominique.\u003cbr\u003e\n•   DO (in/out) République dominicaine.\u003cbr\u003e\n•   DZ (in/out) Algérie.\u003cbr\u003e\n•   EC (in/out) Équateur.\u003cbr\u003e\n•   EE (in/out) Estonie.\u003cbr\u003e\n•   EG (in/out) Égypte.\u003cbr\u003e\n•   EH (in/out) Sahara occidental.\u003cbr\u003e\n•   ER (in/out) Érythrée.\u003cbr\u003e\n•   ES (in/out) Espagne.\u003cbr\u003e\n•   ET (in/out) Éthiopie.\u003cbr\u003e\n•   FI (in/out) Finlande.\u003cbr\u003e\n•   FJ (in/out) Fidji.\u003cbr\u003e\n•   FK (in/out) Îles Falkland (Malouines).\u003cbr\u003e\n•   FM (in/out) Micronésie, États fédérés de.\u003cbr\u003e\n•   FO (in/out) Îles Féroé.\u003cbr\u003e\n•   FR (in/out) France.\u003cbr\u003e\n•   GA (in/out) Gabon.\u003cbr\u003e\n•   GB (in/out) Royaume-Uni.\u003cbr\u003e\n•   GD (in/out) Grenade.\u003cbr\u003e\n•   GE (in/out) Géorgie.\u003cbr\u003e\n•   GF (in/out) Guyane française.\u003cbr\u003e\n•   GG (in/out) Guernesey.\u003cbr\u003e\n•   GH (in/out) Ghana.\u003cbr\u003e\n•   GI (in/out) Gibraltar.\u003cbr\u003e\n•   GL (in/out) Groenland.\u003cbr\u003e\n•   GM (in/out) Gambie.\u003cbr\u003e\n•   GN (in/out) Guinée.\u003cbr\u003e\n•   GP (in/out) Guadeloupe.\u003cbr\u003e\n•   GQ (in/out) Guinée équatoriale.\u003cbr\u003e\n•   GR (in/out) Grèce.\u003cbr\u003e\n•   GS (in/out) Géorgie du Sud et Îles Sandwich du Sud.\u003cbr\u003e\n•   GT (in/out) Guatemala.\u003cbr\u003e\n•   GU (in/out) Guam.\u003cbr\u003e\n•   GW (in/out) Guinée-Bissau.\u003cbr\u003e\n•   GY (in/out) Guyana.\u003cbr\u003e\n•   HK (in/out) Hong Kong.\u003cbr\u003e\n•   HM (in/out) Îles Heard et McDonald.\u003cbr\u003e\n•   HN (in/out) Honduras.\u003cbr\u003e\n•   HR (in/out) Croatie.\u003cbr\u003e\n•   HT (in/out) Haïti.\u003cbr\u003e\n•   HU (in/out) Hongrie.\u003cbr\u003e\n•   ID (in/out) Indonésie.\u003cbr\u003e\n•   IE (in/out) Irlande.\u003cbr\u003e\n•   IL (in/out) Israël.\u003cbr\u003e\n•   IN (in/out) Inde.\u003cbr\u003e\n•   IO (in/out) Territoire britannique de l’océan Indien.\u003cbr\u003e\n•   IQ (in/out) Irak.\u003cbr\u003e\n•   IR (in/out) Iran, République islamique d\u0026rsquo;.\u003cbr\u003e\n•   IS (in/out) Islande.\u003cbr\u003e\n•   IT (in/out) Italie.\u003cbr\u003e\n•   JE (in/out) Jersey.\u003cbr\u003e\n•   JM (in/out) Jamaïque.\u003cbr\u003e\n•   JO (in/out) Jordanie.\u003cbr\u003e\n•   JP (in/out) Japon.\u003cbr\u003e\n•   KE (in/out) Kenya.\u003cbr\u003e\n•   KG (in/out) Kirghizistan.\u003cbr\u003e\n•   KH (in/out) Cambodge.\u003cbr\u003e\n•   KI (in/out) Kiribati.\u003cbr\u003e\n•   KM (in/out) Comores.\u003cbr\u003e\n•   KN (in/out) Saint-Kitts-et-Nevis.\u003cbr\u003e\n•   KP (in/out) Corée, République populaire démocratique de.\u003cbr\u003e\n•   KR (in/out) Corée, République de.\u003cbr\u003e\n•   KW (in/out) Koweït.\u003cbr\u003e\n•   KY (in/out) Îles Caïmans.\u003cbr\u003e\n•   KZ (in/out) Kazakhstan.\u003cbr\u003e\n•   LA (in/out) République démocratique populaire lao.\u003cbr\u003e\n•   LB (in/out) Liban.\u003cbr\u003e\n•   LC (in/out) Sainte-Lucie.\u003cbr\u003e\n•   LI (in/out) Liechtenstein.\u003cbr\u003e\n•   LK (in/out) Sri Lanka.\u003cbr\u003e\n•   LR (in/out) Libéria.\u003cbr\u003e\n•   LS (in/out) Lesotho.\u003cbr\u003e\n•   LT (in/out) Lituanie.\u003cbr\u003e\n•   LU (in/out) Luxembourg.\u003cbr\u003e\n•   LV (in/out) Lettonie.\u003cbr\u003e\n•   LY (in/out) République arabe libyenne.\u003cbr\u003e\n•   MA (in/out) Maroc.\u003cbr\u003e\n•   MC (in/out) Monaco.\u003cbr\u003e\n•   MD (in/out) Moldavie, République de.\u003cbr\u003e\n•   ME (in/out) Monténégro.\u003cbr\u003e\n•   MG (in/out) Madagascar.\u003cbr\u003e\n•   MH (in/out) Îles Marshall.\u003cbr\u003e\n•   MK (in/out) Macédoine, ancienne République yougoslave.\u003cbr\u003e\n•   ML (in/out) Mali.\u003cbr\u003e\n•   MM (in/out) Myanmar.\u003cbr\u003e\n•   MN (in/out) Mongolie.\u003cbr\u003e\n•   MO (in/out) Macao.\u003cbr\u003e\n•   MP (in/out) Îles Mariannes du Nord.\u003cbr\u003e\n•   MQ (in/out) Martinique.\u003cbr\u003e\n•   MR (in/out) Mauritanie.\u003cbr\u003e\n•   MS (in/out) Montserrat.\u003cbr\u003e\n•   MT (in/out) Malte.\u003cbr\u003e\n•   MU (in/out) Maurice.\u003cbr\u003e\n•   MV (in/out) Maldives.\u003cbr\u003e\n•   MW (in/out) Malawi.\u003cbr\u003e\n•   MX (in/out) Mexique.\u003cbr\u003e\n•   MY (in/out) Malaisie.\u003cbr\u003e\n•   MZ (in/out) Mozambique.\u003cbr\u003e\n•   NA (in/out) Namibie.\u003cbr\u003e\n•   NC (in/out) Nouvelle-Calédonie.\u003cbr\u003e\n•   NE (in/out) Niger.\u003cbr\u003e\n•   NF (in/out) Île Norfolk.\u003cbr\u003e\n•   NG (in/out) Nigéria.\u003cbr\u003e\n•   NI (in/out) Nicaragua.\u003cbr\u003e\n•   NL (in/out) Pays-Bas.\u003cbr\u003e\n•   NO (in/out) Norvège.\u003cbr\u003e\n•   NP (in/out) Népal.\u003cbr\u003e\n•   NR (in/out) Nauru.\u003cbr\u003e\n•   NU (in/out) Nioué.\u003cbr\u003e\n•   NZ (in/out) Nouvelle-Zélande.\u003cbr\u003e\n•   OM (in/out) Oman.\u003cbr\u003e\n•   PA (in/out) Panama.\u003cbr\u003e\n•   PE (in/out) Pérou.\u003cbr\u003e\n•   PF (in/out) Polynésie française. Inclut Tahiti.\u003cbr\u003e\n•   PG (in/out) Papouasie-Nouvelle-Guinée.\u003cbr\u003e\n•   PH (in/out) Philippines.\u003cbr\u003e\n•   PK (in/out) Pakistan.\u003cbr\u003e\n•   PL (in/out) Pologne.\u003cbr\u003e\n•   PM (in/out) Saint-Pierre-et-Miquelon.\u003cbr\u003e\n•   PN (in/out) Île Pitcairn.\u003cbr\u003e\n•   PR (in/out) Porto Rico.\u003cbr\u003e\n•   PS (in/out) Territoire palestinien, occupé.\u003cbr\u003e\n•   PT (in/out) Portugal.\u003cbr\u003e\n•   PW (in/out) Palaos.\u003cbr\u003e\n•   PY (in/out) Paraguay.\u003cbr\u003e\n•   QA (in/out) Qatar.\u003cbr\u003e\n•   QM (in/out) NOTE : Guernesey était défini dans la liste eBay précédemment, mais il n’est pas défini dans ISO 3166. Ce pays restera sur la liste des pays eBay pour une compatibilité descendante.\u003cbr\u003e\n•   QN (in/out) NOTE : Jan Mayen était défini dans la liste eBay précédemment, mais il n’est pas défini dans ISO 3166. Ce pays restera sur la liste des pays eBay pour une compatibilité descendante.\u003cbr\u003e\n•   QO (in/out) NOTE : Jersey était défini dans la liste eBay précédemment, mais il n’est pas défini dans ISO 3166. Ce pays restera sur la liste des pays eBay pour une compatibilité descendante.\u003cbr\u003e\n•   RE (in/out) Réunion.\u003cbr\u003e\n•   RO (in/out) Roumanie.\u003cbr\u003e\n•   RS (in/out) Serbie.\u003cbr\u003e\n•   RU (in/out) Fédération de Russie.\u003cbr\u003e\n•   RW (in/out) Rwanda.\u003cbr\u003e\n•   SA (in/out) Arabie saoudite.\u003cbr\u003e\n•   SB (in/out) Îles Salomon.\u003cbr\u003e\n•   SC (in/out) Seychelles.\u003cbr\u003e\n•   SD (in/out) Soudan.\u003cbr\u003e\n•   SE (in/out) Suède.\u003cbr\u003e\n•   SG (in/out) Singapour.\u003cbr\u003e\n•   SH (in/out) Sainte-Hélène.\u003cbr\u003e\n•   SI (in/out) Slovénie.\u003cbr\u003e\n•   SJ (in/out) Svalbard et Jan Mayen.\u003cbr\u003e\n•   SK (in/out) Slovaquie.\u003cbr\u003e\n•   SL (in/out) Sierra Leone.\u003cbr\u003e\n•   SM (in/out) Saint-Marin.\u003cbr\u003e\n•   SN (in/out) Sénégal.\u003cbr\u003e\n•   SO (in/out) Somalie.\u003cbr\u003e\n•   SR (in/out) Suriname.\u003cbr\u003e\n•   ST (in/out) Sao Tomé-et-Principe.\u003cbr\u003e\n•   SV (in/out) El Salvador.\u003cbr\u003e\n•   SY (in/out) République arabe syrienne.\u003cbr\u003e\n•   SZ (in/out) Swaziland.\u003cbr\u003e\n•   TC (in/out) Îles Turques-et-Caïques.\u003cbr\u003e\n•   TD (in/out) Tchad.\u003cbr\u003e\n•   TF (in/out) Territoires austraux français.\u003cbr\u003e\n•   TG (in/out) Togo.\u003cbr\u003e\n•   TH (in/out) Thaïlande.\u003cbr\u003e\n•   TJ (in/out) Tadjikistan.\u003cbr\u003e\n•   TK (in/out) Tokelau.\u003cbr\u003e\n•   TM (in/out) Turkménistan.\u003cbr\u003e\n•   TN (in/out) Tunisie.\u003cbr\u003e\n•   TO (in/out) Tonga.\u003cbr\u003e\n•   TP (in/out) Plus utilisé.\u003cbr\u003e\n•   TR (in/out) Turquie.\u003cbr\u003e\n•   TT (in/out) Trinité-et-Tobago.\u003cbr\u003e\n•   TV (in/out) Tuvalu.\u003cbr\u003e\n•   TW (in/out) Taïwan, province de Chine.\u003cbr\u003e\n•   TZ (in/out) Tanzanie, République unie.\u003cbr\u003e\n•   UA (in/out) Ukraine.\u003cbr\u003e\n•   UG (in/out) Ouganda.\u003cbr\u003e\n•   UM (in/out) NOTE : Les îles mineures des États-Unis ont été définies dans la liste eBay précédemment, mais elles ne sont plus une option viable. Ce pays restera sur la liste des pays eBay pour une compatibilité descendante. Utilisez \u0026lsquo;US\u0026rsquo; à la place.\u003cbr\u003e\n•   US (in/out) États-Unis.\u003cbr\u003e\n•   UY (in/out) Uruguay.\u003cbr\u003e\n•   UZ (in/out) Ouzbékistan.\u003cbr\u003e\n•   VA (in/out) Saint-Siège (État de la Cité du Vatican).\u003cbr\u003e\n•   VC (in/out) Saint-Vincent-et-les-Grenadines.\u003cbr\u003e\n•   VE (in/out) Venezuela.\u003cbr\u003e\n•   VG (in/out) Îles Vierges britanniques.\u003cbr\u003e\n•   VI (in/out) Îles Vierges des États-Unis.\u003cbr\u003e\n•   VN (in/out) Viêt Nam.\u003cbr\u003e\n•   VU (in/out) Vanuatu.\u003cbr\u003e\n•   WF (in/out) Wallis et Futuna.\u003cbr\u003e\n•   WS (in/out) Samoa.\u003cbr\u003e\n•   YE (in/out) Yémen.\u003cbr\u003e\n•   YT (in/out) Mayotte.\u003cbr\u003e\n•   YU (in/out) Plus utilisé. Voir RS pour la Serbie et ME pour le Monténégro.\u003cbr\u003e\n•   ZA (in/out) Afrique du Sud.\u003cbr\u003e\n•   ZM (in/out) Zambie.\u003cbr\u003e\n•   ZW (in/out) Zimbabwe.\u003cbr\u003e\n•   ZZ (in/out) Pays inconnu.\u003c/p\u003e","title":"Applicable values for AddItemRequest.Item.Country"},{"content":"Le buzz est réel, et l\u0026rsquo;attente est palpable. Nous avons entendu parler pendant des mois du dernier film de Saahith Mothkuri, « KICHIDI ». Aujourd\u0026rsquo;hui, nous avons enfin le privilège d’apercevoir un aperçu exclusif et la bande-annonce officielle, nous offrant ainsi notre première véritable aperçu de ce qui promet d’être une expérience cinématographique captivante.\nIl y a toujours une sensation particulière liée à la sortie d’une bande-annonce. C’est ce mélange envoûtant d’anticipation, de curiosité et de l’espoir que ce nouveau film puisse être la prochaine grande chose. La bande-annonce de « KICHIDI » répond à toutes ces attentes. Elle est fascinante, mystérieuse, et laisse désirer davantage, faisant honneur à l’essence même des bandes-annonces : des aperçus séduisants qui éveillent l’imagination sans tout révéler.\nSaahith Mothkuri, derrière la caméra, est déjà connu pour son talent narratif. Avec « KICHIDI », il semble s’aventurer dans de nouveaux territoires narratifs. La bande-annonce montre une fusion d’émotions, allant de l’humour à la romance, en passant par le drame et la suspension, suggérant une histoire riche et complexe qui nous attend.\nSi vous êtes fan des précédents travaux de Mothkuri, vous y retrouverez des éléments familiers, mais il y a une fraîcheur distincte qui promet un autre genre de magie cette fois-ci. À en juger par les aperçus, les personnages semblent complexes et multidimensionnels, un élément essentiel à tout drame convaincant. En outre, la photographie a l’air d’excellente qualité, capturant parfaitement l’ambiance et le ton.\nEn résumé, la bande-annonce de « KICHIDI » a sans aucun doute augmenté nos attentes et notre intérêt. Il est clair que Saahith Mothkuri a mis tout son créativité et son passion dans ce projet, et nous ne pouvons pas attendre de voir le film complet sur grand écran.\nAlors, marquez vos calendriers, car c’est un film que vous ne voudrez pas manquer.\n","permalink":"https://www.shafiq.in/fr/blog/sneak-peek-and-official-trailer-the-film-kichidi-by-director-saahith-mothkuri/","summary":"\u003cp\u003eLe buzz est réel, et l\u0026rsquo;attente est palpable. Nous avons entendu parler pendant des mois du dernier film de Saahith Mothkuri, « KICHIDI ». Aujourd\u0026rsquo;hui, nous avons enfin le privilège d’apercevoir un aperçu exclusif et la bande-annonce officielle, nous offrant ainsi notre première véritable aperçu de ce qui promet d’être une expérience cinématographique captivante.\u003c/p\u003e\n\u003cp\u003eIl y a toujours une sensation particulière liée à la sortie d’une bande-annonce. C’est ce mélange envoûtant d’anticipation, de curiosité et de l’espoir que ce nouveau film puisse être la prochaine grande chose. La bande-annonce de « KICHIDI » répond à toutes ces attentes. Elle est fascinante, mystérieuse, et laisse désirer davantage, faisant honneur à l’essence même des bandes-annonces : des aperçus séduisants qui éveillent l’imagination sans tout révéler.\u003c/p\u003e","title":"Sneak Peek and Official Trailer - The Film \"KICHIDI\" by Director Saahith Mothkuri"},{"content":"Lorsque vous travaillez avec Drupal 6, il arrive parfois que vous deviez inspecter les données stockées dans un champ d\u0026rsquo;un nœud. Cela est particulièrement utile pour le débogage ou lorsque vous cherchez à mieux comprendre la structure du contenu. Une manière rapide d\u0026rsquo;y parvenir consiste à afficher le contenu du champ sous forme de tableau. En PHP, la fonction var_export() s\u0026rsquo;avère très pratique à cet effet.\nVoici comment procéder :\nvar_export(content_fields(\u0026#39;field_name_of_the_field\u0026#39;, \u0026#39;name_of_the_content_type\u0026#39;)); Dans ce morceau de code, remplacez 'field_name_of_the_field' par le nom réel du champ qui vous intéresse et 'name_of_the_content_type' par le type de contenu spécifique contenant ce champ.\nCette ligne simple de code affichera le contenu du champ sous forme de tableau, ce qui facilite l\u0026rsquo;analyse de sa structure et de son contenu.\n","permalink":"https://www.shafiq.in/fr/blog/how-to-display-the-contents-of-a-nodes-field-as-an-array-in-drupal-6/","summary":"\u003cp\u003eLorsque vous travaillez avec Drupal 6, il arrive parfois que vous deviez inspecter les données stockées dans un champ d\u0026rsquo;un nœud. Cela est particulièrement utile pour le débogage ou lorsque vous cherchez à mieux comprendre la structure du contenu. Une manière rapide d\u0026rsquo;y parvenir consiste à afficher le contenu du champ sous forme de tableau. En PHP, la fonction \u003ccode\u003evar_export()\u003c/code\u003e s\u0026rsquo;avère très pratique à cet effet.\u003c/p\u003e\n\u003cp\u003eVoici comment procéder :\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-php\" data-lang=\"php\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nx\"\u003evar_export\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nx\"\u003econtent_fields\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;field_name_of_the_field\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;name_of_the_content_type\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e));\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eDans ce morceau de code, remplacez \u003ccode\u003e'field_name_of_the_field'\u003c/code\u003e par le nom réel du champ qui vous intéresse et \u003ccode\u003e'name_of_the_content_type'\u003c/code\u003e par le type de contenu spécifique contenant ce champ.\u003c/p\u003e","title":"How to Display the Contents of a Node's Field as an Array in Drupal 6"},{"content":"Téléchargement : PROJ_FORMAT_ Introduction\nEnvironnement de travail\n2.1 Spécifications des exigences matérielles\ni. Microcontrôleur AT89c52\nii. ADC ADC0808\niii. Horloge temps réel DS1307\niv. EEPROM sériel AT24c08\nv. Transmetteur-récepteur sériel MAX232\nvi. LCD 16×2\n2.2 Spécifications logicielles\ni. Langage de programmation ANSI C\nii. Compilateur KEIL\n2.3 À propos du matériel\n2.3.1 Microcontrôleur (89C52)\nFonctionnalités principales\n Compatible avec les produits MCS-51™\n 8 Ko de mémoire Flash réprogrammable en système\n Durée de vie : 1 000 cycles d\u0026rsquo;écriture/effacement\n 256 octets de RAM interne 8 bits\n 32 lignes d\u0026rsquo;entrée/sortie programmables\n Trois compteurs/timers 16 bits\n Huit sources d\u0026rsquo;interruption\n Canal série programmable\nDescription\nL\u0026rsquo;AT89C52 est un microcontrôleur CMOS 8 bits à faible consommation et à haute performance, doté de 8 Ko de mémoire Flash programmable et effaçable en lecture seule (PEROM). L\u0026rsquo;appareil est fabriqué à l\u0026rsquo;aide de la technologie de mémoire non volatile à haute densité d\u0026rsquo;Atmel. La mémoire Flash intégrée permet la reprogrammation de la mémoire de programme en système ou à l\u0026rsquo;aide d\u0026rsquo;un programmeur classique de mémoire non volatile. En combinant un CPU 8 bits polyvalent avec une mémoire Flash sur une seule puce, l\u0026rsquo;AT89C52 d\u0026rsquo;Atmel constitue un microordinateur puissant qui offre une solution flexible et rentable pour de nombreuses applications embarquées.\nSchéma des broches\nDescription des broches\n• RST\nEntrée de réinitialisation. Un niveau haut sur cette broche pendant deux cycles machine, tandis que l\u0026rsquo;oscillateur fonctionne, réinitialise l\u0026rsquo;appareil.\n• ALE/PROG\nSignal d\u0026rsquo;activation de verrouillage d\u0026rsquo;adresse : émet un signal d\u0026rsquo;impulsion pour verrouiller le bas de l\u0026rsquo;adresse lors des accès à la mémoire externe. Cette broche est également l\u0026rsquo;entrée d\u0026rsquo;impulsion de programmation (PROG) pendant la programmation Flash.\n• PSEN\nSignal d\u0026rsquo;activation de mémoire programme : impulsion de lecture pour la mémoire programme externe. Lorsque l\u0026rsquo;AT89C52 exécute du code depuis une mémoire programme externe, PSEN est activé deux fois par cycle machine, sauf que deux activations PSEN sont sautées lors de chaque accès à la mémoire donnée externe.\n• EA/VPP\nActivation de l\u0026rsquo;accès externe. EA doit être relié à GND afin d\u0026rsquo;activer l\u0026rsquo;appareil pour lire le code depuis les adresses mémoire externes allant de 0000H à FFFFH.\nProgrammation de la mémoire Flash\nPour programmer l'89c52, suivez les étapes suivantes.\nEntrez l\u0026rsquo;emplacement mémoire souhaité sur les lignes d\u0026rsquo;adresse. Entrez les données appropriées sur les lignes de données Activez la combinaison correcte des signaux de contrôle Activez EA/Vpp Pulsez ALE/PROG une fois pour programmer un octet dans le tableau Flash ou verrouiller les bits. Le cycle d\u0026rsquo;écriture d\u0026rsquo;octet est auto-chronométré et dure généralement au plus 1,5 ms. Répétez les étapes 1 à 5, en changeant l\u0026rsquo;adresse et les données pour toute la mémoire ou jusqu\u0026rsquo;à la fin du fichier objet. 2.3.2 ADC 0808\nFonctionnalités principales :\n2.3.3 Horloge temps réel (DS1307)\nFonctionnalités\n Horloge temps réel (RTC) qui compte les secondes, les minutes, les heures, la date du mois, le mois, le jour de la semaine, et l\u0026rsquo;année avec compensation de l\u0026rsquo;année bissextile, valable jusqu\u0026rsquo;en 2100\n 56 octets de mémoire vive (NV) alimentée par batterie\n Interface série à deux fils\n Détection automatique des coupures d\u0026rsquo;alimentation et commutation du circuit\nSchéma des broches\nDescription des broches\n SCL (entrée horloge série) – SCL est utilisée pour synchroniser le transfert de données sur l\u0026rsquo;interface série.\n SDA (entrée/sortie données série) – SDA est la broche d\u0026rsquo;entrée/sortie pour l\u0026rsquo;interface série à deux fils.\n SQW/OUT (conducteur de sortie d\u0026rsquo;onde carrée) – Lorsqu\u0026rsquo;elle est activée, le bit SQWE défini à 1, la broche SQW/OUT produit l\u0026rsquo;une des quatre fréquences d\u0026rsquo;onde carrée (1 Hz, 4 kHz, 8 kHz, 32 kHz).\n X1, X2 – Connexions pour un cristal standard de 32,768 kHz. Le circuit d\u0026rsquo;oscillateur interne est conçu pour fonctionner avec un cristal ayant une capacité de charge (CL) de 12,5 pF.\nDescription\nLe DS1307 est une horloge/chronomètre en série à faible consommation, avec un calendrier complet en BCD (code binaire décimal) et 56 octets de mémoire vive (NV) SRAM. Les adresses et les données sont transférées en série via un bus bidirectionnel à deux fils. L\u0026rsquo;horloge/calendrier fournit des informations sur les secondes, les minutes, les heures, les jours, les dates, les mois et les années. La fin du mois est automatiquement ajustée pour les mois comportant moins de 31 jours, y compris les corrections pour les années bissextiles. L\u0026rsquo;horloge fonctionne en mode 24 heures ou en mode 12 heures avec indicateur AM/PM. Le DS1307 dispose d\u0026rsquo;un circuit intégré de détection de coupure d\u0026rsquo;alimentation qui détecte les coupures d\u0026rsquo;alimentation et bascule automatiquement sur l\u0026rsquo;alimentation de la batterie.\nFonctionnement\nLe DS1307 fonctionne comme un périphérique esclave sur le bus série. L\u0026rsquo;accès est obtenu en implémentant une condition de départ (START) et en fournissant un code d\u0026rsquo;identification du périphérique, suivi d\u0026rsquo;une adresse de registre. Les registres suivants peuvent être accessibles séquentiellement jusqu\u0026rsquo;à ce qu\u0026rsquo;une condition d\u0026rsquo;arrêt (STOP) soit exécutée. Lorsque VCC tombe en dessous de 1,25 x VBAT, l\u0026rsquo;appareil interrompt l\u0026rsquo;accès en cours et réinitialise le compteur d\u0026rsquo;adresse du périphérique. Les entrées vers le périphérique ne seront pas reconnues à ce moment-là pour éviter l\u0026rsquo;écriture de données erronées provenant d\u0026rsquo;un système hors tolérance. Lorsque VCC tombe en dessous de VBAT, l\u0026rsquo;appareil bascule en mode de sauvegarde à faible courant alimenté par la batterie. Lors du démarrage, l\u0026rsquo;appareil bascule de la batterie vers VCC lorsque VCC est supérieur à VBAT + 0,2 V, et reconnaît les entrées lorsque VCC est supérieur à 1,25 x VBAT.\n2.3.4 Transmetteur-récepteur série (MAX232)\nFonctionnalités\n Débit de données élevé – 250 kbits/s sous charge\n Fonctionnement à partir d\u0026rsquo;une alimentation unique +5 V\n Utilisation de condensateurs petits : 0,1 µF\nSchéma des broches\nDescription\nLe DS232A est une paire double de conducteurs/récepteurs RS-232 qui génère des niveaux de tension RS-232 à partir d\u0026rsquo;une alimentation unique +5 V. Aucune alimentation supplémentaire ±12 V n\u0026rsquo;est nécessaire car le DS232A utilise des pompes de charge intégrées pour convertir l\u0026rsquo;alimentation +5 V en ±10 V. Les taux de montée des conducteurs et les débits de données sont garantis jusqu\u0026rsquo;à 250 kbits/s. Le DS232A fonctionne avec seulement des condensateurs de pompe de charge de 0,1 µF.\n2.3.4 EEPROM série\nFonctionnalités\n Mémoire organisée en interne 1024 x 8 (8 Ko)\n Interface série à deux fils\n Protocole de transfert de données bidirectionnel\n Broche de protection contre l\u0026rsquo;écriture pour une protection matérielle des données\n Mode d\u0026rsquo;écriture par page : 8 octets (1K, 2K), 16 octets (4K, 8K, 16K)\n Écriture partielle de page autorisée\nSchéma des broches\nDescription\nL\u0026rsquo;AT24C08 fournit 8192 bits de mémoire EEPROM sérielle effaçable et programmable, organisée en 1024 mots de 8 bits chacun. L\u0026rsquo;appareil est optimisé pour une utilisation dans de nombreuses applications industrielles et commerciales où l\u0026rsquo;opération à faible puissance et à faible tension est essentielle. L\u0026rsquo;AT24C08 est accessible via une interface série à deux fils.\n2.3.5 Écran à cristaux liquides\nLe système en ligne de surveillance de température utilise un écran à cristaux liquides comme affichage final du système, avec un affichage de 16 x 2. Il peut afficher 16 caractères de données ASCII sur 2 lignes, soit un total de 32 caractères.\n2.4 À propos du logiciel\n2.4.1 Langage de programmation (ANSI C)\nLe logiciel du projet a été écrit dans le langage \u0026ldquo;C\u0026rdquo; de haut niveau, en utilisant le compilateur KEIL.\nPourquoi le \u0026ldquo;C\u0026rdquo; ?\nLe C est devenu le langage de prédilection pour les programmeurs embarqués, car il offre l\u0026rsquo;avantage de l\u0026rsquo;indépendance du processeur. Cette indépendance permet au programmeur de se concentrer sur les algorithmes et les applications plutôt que sur les détails de l\u0026rsquo;architecture du processeur. Cependant, de nombreuses de ses fonctionnalités s\u0026rsquo;appliquent également aux autres langages de haut niveau. Peut-être la force du C réside dans le fait qu\u0026rsquo;il donne aux programmeurs embarqués un degré exceptionnel de contrôle direct sur le matériel sans sacrifier les avantages des langages de haut niveau.\nDes compilateurs et des crois-compilateurs sont disponibles pour presque tous les processeurs avec le C. Tout code source en C, C++ ou langage assembleur doit être converti en une image exécutable pouvant être chargée dans une puce ROM.\n2.4.2 Compilateur KEIL\nEnvironnement de développement Raisonance\nÀ propos des kits de développement Raisonance\nLes kits de développement Raisonance 8051, XA et ST6 constituent une solution complète pour créer des logiciels pour la famille 8051, la famille XA et la famille ST6. Les kits de développement comprennent de nombreux outils différents qui permettent de développer des projets allant de simples à très complexes avec une relative facilité. KEIL développe des outils embarqués depuis 1988 et a accumulé de nombreuses années d\u0026rsquo;expérience.\nOutils de développement\n• Compilateur C ANSI\nLe compilateur C est un compilateur conforme à ANSI qui prend des fichiers sources et génère des fichiers objets. Des extensions au langage C sont utilisées pour activer des fonctionnalités du microcontrôleur.\n• Assembleur\nL\u0026rsquo;assembleur prend des fichiers sources écrits en assembleur et génère des fichiers objets.\n• Lien/Localisation\nLe lien combine les fichiers objets générés par le compilateur et le lien et produit un autre type de fichier objet. Le lien décide également de l\u0026rsquo;emplacement de certains types de données et de code en mémoire.\n• Convertisseur objet-HEX\nLe convertisseur transforme un fichier objet généré par le lien et génère un fichier HEX Intel, compatible avec la plupart des programmeurs de périphériques.\n• KEIL\nL\u0026rsquo;Environnement de développement intégré KEIL. KEIL est un programme Windows qui permet à l\u0026rsquo;utilisateur de créer des projets, d\u0026rsquo;appeler facilement le compilateur, l\u0026rsquo;assembleur et le lien pour construire le projet, et de le simuler ou de le déboguer.\n• Gestionnaire de bibliothèques\nLe gestionnaire de bibliothèques peut prendre des fichiers objets générés par le compilateur ou l\u0026rsquo;assembleur et créer une bibliothèque incluse dans d\u0026rsquo;autres projets.\n• Moniteur\nLe moniteur est un programme qui s\u0026rsquo;exécute sur le matériel et transmet des informations de débogage à KEIL pendant l\u0026rsquo;exécution du programme. Il fournit également un moyen de contrôler l\u0026rsquo;exécution du programme et de déboguer le programme pendant son exécution sur le matériel.\nÉtapes du développement\nRIDE fournit un éditeur qui permet à l\u0026rsquo;utilisateur de générer des fichiers sources C (.c) et des fichiers sources assembleur (.a51 pour 8051, .axa pour XA et .st6 pour ST6). Chaque fichier source est traduit en utilisant l\u0026rsquo;outil approprié. Le compilateur traduit les fichiers sources C. L\u0026rsquo;assembleur traduit les fichiers sources assembleur. Chaque outil génère un fichier objet rélocalisable (.obj). Si un projet comporte plus d\u0026rsquo;un fichier source C ou plus d\u0026rsquo;un fichier source assembleur, alors le compilateur et l\u0026rsquo;assembleur sont exécutés autant de fois que nécessaire. Si un fichier bibliothèque est généré, le gestionnaire de bibliothèques prend tous les fichiers objets rélocalisables et les combine en un fichier bibliothèque (.lib). Le fichier bibliothèque peut ensuite être lié à d\u0026rsquo;autres projets. Le lien/localisation prend les fichiers objets rélocalisables et les fichiers bibliothèques et les lie ensemble, résolvant les références externes. Le lien/localisation décide également de l\u0026rsquo;emplacement de certaines variables et de code à des adresses spécifiques dans la carte mémoire. Le lien/localisation génère un fichier objet absolu unique (.aof) et un fichier avec extension vide. Le fichier objet absolu peut être utilisé par le simulateur ou le débogueur dans KEIL, car le fichier peut contenir des informations de débogage. Alternativement, le fichier objet absolu peut être utilisé avec des émulateurs en circuit. L\u0026rsquo;outil convertisseur objet-HEX convertit un fichier objet absolu en un fichier HEX Intel (.hex), qui représente le code binaire pur généré, sans informations de débogage. Le fichier HEX Intel est accepté par presque tous les programmeurs de périphériques. En plus d\u0026rsquo;être un éditeur, un simulateur et un débogueur, KEIL contrôle également et automatise l\u0026rsquo;ensemble du processus de construction. En sélectionnant un seul élément de menu, KEIL exécutera les outils appropriés pour générer soit un fichier bibliothèque, soit un fichier objet absolu et un fichier HEX Intel. Spécifications minimales du système\n• Windows 9x/NT/2000\n• Processeur Pentium\n• 20 Mo d\u0026rsquo;espace disque dur\n• 32 Mo de RAM\n2.4.3 Outil d\u0026rsquo;interface\n2.4.4 Plateforme\nConception et description matérielle Figure 1 Diagramme bloc du système de surveillance de température en ligne\nDescription du système\n. Ce bus I2C fournit une communication fiable et rapide entre le périphérique maître (microcontrôleur) et les autres périphériques esclaves (horloge temps réel, EEPROM série).\nAnalyse du système La tâche d\u0026rsquo;analyse du système comprend deux sous-tâches.\nElles sont\nDiagramme de flux de données\nDiagramme de flux de contrôle\nDiagramme de flux de données\nUn diagramme de flux de données est une représentation graphique qui illustre le flux d\u0026rsquo;informations et les transformations appliquées aux données lorsqu\u0026rsquo;elles passent de l\u0026rsquo;entrée à la sortie. Le DFD peut être utilisé pour représenter un système ou un logiciel à n\u0026rsquo;importe quel niveau d\u0026rsquo;abstraction.\nNotations clés utilisées dans DFD et CFD\nDiagramme de flux de données de niveau contexte pour OTMS\nUn DFD de niveau 0, également appelé modèle fondamental du système ou modèle contexte, représente l\u0026rsquo;ensemble du logiciel comme une seule bulle avec les données d\u0026rsquo;entrée et de sortie indiquées par des flèches entrantes et sortantes respectivement.\nÀ mesure que le DFD est affiné en niveaux plus détaillés, l\u0026rsquo;analyste effectue une décomposition fonctionnelle implicite du système, accomplissant ainsi l\u0026rsquo;analyse fonctionnelle requise. En même temps, l\u0026rsquo;affinement du DFD résulte en un affinement correspondant des données lors de leur passage à travers les processus qui incarnent l\u0026rsquo;application.\nFigure 2 Diagramme de flux de données de niveau contexte\nDiagramme de flux de données de niveau 1 pour OTMS\nFigure 3 Diagramme de flux de données de niveau 1\nInformations sur le flux de données\nCommandes utilisateur et données Demande de configuration Données de configuration Démarrer/Arrêter Statut du capteur Données de configuration Message A/D Données de configuration Informations du capteur Informations à afficher Type d\u0026rsquo;alarme Diagramme de flux de données de niveau 2 pour OTMS\nDiagramme de flux de données de niveau 2 affinant le processus de surveillance des capteurs\nFigure 1 Diagramme de flux de données de niveau 2\nInformations sur le flux de données\nStatut du capteur ID du capteur, type Données d\u0026rsquo;alarme Données de configuration ID du capteur, type, emplacement Informations du capteur Type d\u0026rsquo;alarme Diagramme de flux de contrôle\nLes grandes applications sont souvent « pilotées » par des événements plutôt que par des données ; elles produisent des informations de contrôle plutôt que des rapports ou des affichages, et traitent les informations avec une forte préoccupation pour le temps et les performances.\nFigure 1 Diagramme de flux de contrôle\nInformations sur le flux de données\nCommandes utilisateur et données Demande de configuration Données de configuration Démarrer/Arrêter Statut du capteur Données de configuration Message A/D Données de configuration Informations du capteur Informations à afficher Type d\u0026rsquo;alarme Conception logicielle\nLa conception logicielle inclura deux parties\n• Conception du programme C (source)\n5.1 Conception du programme C\nIl s\u0026rsquo;agit du programme principal du système de surveillance de température en ligne. Il est compilé avec le compilateur RIDE (Raisonance Integrated Development Environment) et l\u0026rsquo;image exécutable générée sera déversée dans la puce du microcontrôleur (AT 89c52). Les diagrammes de flux complets pour le programme sont donnés ci-dessous\nLe routine principale du programme Diagramme de flux pour la routine « Contrôle »\nDiagramme de flux pour la routine « Écrire l\u0026rsquo;heure »\nProtocole I2C Protocole de communication série\n6.2 Communication par protocole I2C\nAperçu\nDans les équipements électroniques grand public, les télécommunications et l\u0026rsquo;électronique industrielle, il existe souvent des similitudes entre des conceptions apparemment sans lien. Par exemple, presque tous les systèmes incluent : • Un contrôle intelligent, généralement un microcontrôleur à puce unique • Des circuits généraux comme les pilotes LCD, les ports d\u0026rsquo;entrée/sortie à distance, la RAM, l\u0026rsquo;EEPROM ou les convertisseurs de données • Des circuits orientés application comme les circuits de réglage numérique et de traitement de signal pour les systèmes radio et vidéo, ou les générateurs DTMF pour les téléphones à tonalité. Pour tirer parti de ces similitudes afin de bénéficier à la fois aux concepteurs de systèmes et aux fabricants d\u0026rsquo;équipements, ainsi qu\u0026rsquo;à maximiser l\u0026rsquo;efficacité du matériel et la simplicité du circuit, Philips a développé une simple bus bidirectionnel à deux fils pour un contrôle efficace entre les IC. Ce bus est appelé le bus IC ou I2C-bus. Actuellement, la gamme d\u0026rsquo;IC de Philips comprend plus de 150 types CMOS et bipolaires compatibles avec le bus I2C pour effectuer des fonctions dans les trois catégories mentionnées précédemment. Tous les périphériques compatibles avec le bus I2C intègrent une interface sur puce qui leur permet de communiquer directement entre eux via le bus I2C. Ce concept de conception résout les nombreux problèmes d\u0026rsquo;interfaçage rencontrés lors de la conception de circuits de contrôle numérique.\nFonctionnalités du bus I2C\n• Seulement deux lignes de bus sont nécessaires ; une ligne de données série (SDA) et une ligne d\u0026rsquo;horloge série (SCL)\n• Chaque périphérique connecté au bus est logiquement adressable par une adresse unique et des relations maître/esclave simples existent à tout moment ; les maîtres peuvent fonctionner comme émetteurs ou récepteurs maîtres\n• C\u0026rsquo;est un bus véritable multi-maître incluant une détection de collision et une arbitrage pour éviter la corruption des données si deux ou plusieurs maîtres initient simultanément un transfert de données\n• Des transferts de données série, orientés sur 8 bits, peuvent être effectués à une vitesse maximale de 100 kbit/s en mode standard, jusqu\u0026rsquo;à 400 kbit/s en mode rapide, ou jusqu\u0026rsquo;à 3,4 Mbit/s en mode haute vitesse\n• Une filtration intégrée rejette les pics sur la ligne de données du bus afin de préserver l\u0026rsquo;intégrité des données\n• Le nombre d\u0026rsquo;ICs qui peuvent être connectés au même bus est limité uniquement par une capacité maximale du bus de 400 pF. Avantages pour les concepteurs\n• Les blocs fonctionnels du schéma-bloc correspondent aux ICs réels ; les conceptions progressent rapidement du schéma-bloc à la schéma final.\n• Il n\u0026rsquo;est pas nécessaire de concevoir les interfaces de bus car l\u0026rsquo;interface du bus I2C est déjà intégrée sur puce.\n• Le protocole d\u0026rsquo;adressage et de transfert de données intégrés permet aux systèmes d\u0026rsquo;être entièrement définis logiciellement\n• Les mêmes types d\u0026rsquo;IC peuvent souvent être utilisés dans de nombreuses applications différentes\n• Le temps de conception est réduit car les concepteurs deviennent rapidement familiers avec les blocs fonctionnels fréquemment utilisés représentés par les ICs compatibles avec le bus I2C\n• Les ICs peuvent être ajoutés ou retirés d\u0026rsquo;un système sans affecter les autres circuits du bus\n• Le diagnostic des pannes et le débogage sont simples ; les défaillances peuvent être immédiatement localisées\nConcept du bus I2C\nLe bus I2C contient deux fils, les données série (SDA) et l\u0026rsquo;horloge série (SCL), qui transmettent des informations entre les périphériques connectés au bus. Chaque périphérique est reconnu par une adresse unique (qu\u0026rsquo;il s\u0026rsquo;agisse d\u0026rsquo;un microcontrôleur, d\u0026rsquo;un pilote LCD, d\u0026rsquo;une mémoire ou d\u0026rsquo;une interface clavier) et peut fonctionner soit comme émetteur soit comme récepteur, selon la fonction du périphérique. Évidemment, un pilote LCD n\u0026rsquo;est qu\u0026rsquo;un récepteur, tandis qu\u0026rsquo;une mémoire peut à la fois recevoir et transmettre des données. En plus des émetteurs et récepteurs, les périphériques peuvent également être considérés comme maîtres ou esclaves lors du transfert de données.\nDéfinition de la terminologie du bus I2C\nFormat des octets\nChaque octet transmis sur la ligne SDA doit être de 8 bits. Le nombre d\u0026rsquo;octets pouvant être transmis par transfert est illimité. Chaque octet doit être suivi d\u0026rsquo;un bit d\u0026rsquo;acquittement. Les données sont transmises avec le bit le plus significatif (MSB) en premier (voir Figure a). Si un esclave ne peut pas recevoir ou transmettre un autre octet complet de données avant d\u0026rsquo;avoir effectué une autre fonction, par exemple le service d\u0026rsquo;une interruption interne, il peut maintenir la ligne d\u0026rsquo;horloge SCL à un niveau bas pour forcer le maître en état d\u0026rsquo;attente. Le transfert de données reprend lorsque l\u0026rsquo;esclave est prêt pour un autre octet de données et relâche la ligne d\u0026rsquo;horloge SCL.\nFigure a. Transfert de données sur le bus I2C\nAccusé de réception\nLe transfert de données avec accusé de réception est obligatoire. L\u0026rsquo;impulsion d\u0026rsquo;horloge liée à l\u0026rsquo;accusé de réception est générée par le maître. Le transmetteur libère la ligne SDA (haut) pendant l\u0026rsquo;impulsion d\u0026rsquo;horloge d\u0026rsquo;accusé de réception. Le récepteur doit abaisser la ligne SDA pendant l\u0026rsquo;impulsion d\u0026rsquo;horloge d\u0026rsquo;accusé de réception pour que celle-ci reste stable à bas pendant la période haute de cette impulsion d\u0026rsquo;horloge (voir Figure).\nFigure b. Accusé de réception sur le bus I2C\nFormats avec adresses de 7 bits\nLes transferts de données suivent le format indiqué dans la Figure a. Après la condition de départ (S), une adresse esclave est envoyée. Cette adresse est de 7 bits, suivie d\u0026rsquo;un huitième bit qui est un bit de direction de données (R/W) – un « zéro » indique une transmission (ÉCRITURE), un « un » indique une demande de données (LECTURE). Un transfert de données est toujours terminé par une condition d\u0026rsquo;arrêt (P) générée par le maître. Toutefois, si le maître souhaite toujours communiquer sur le bus, il peut générer une condition de départ répétée (Sr) et adresser un autre esclave sans d\u0026rsquo;abord générer une condition d\u0026rsquo;arrêt. Des combinaisons de formats lecture/écriture sont alors possibles dans un tel transfert.\nFigure a. Transfert de données complet.\nFormat complet de transfert de données\nS - Condition de départ\nP - Condition d\u0026rsquo;arrêt\nA - Accusé de réception\nProtocole de communication série\nLa mise en place du RS 232 et de l\u0026rsquo;ASCII a été liée au développement des organisations informatiques multi-utilisateurs où un certain nombre d\u0026rsquo;utilisateurs étaient reliés à une machine hôte via des liens de données série, et les données série étaient encodées en ASCII. Les périphériques périphériques, tels que les imprimantes, ont adopté les mêmes normes afin d\u0026rsquo;accéder au marché croissant des périphériques série.\nLa transmission de données série utilisant l\u0026rsquo;ASCII est devenue si universelle que des circuits intégrés spécialisés, les récepteurs émetteurs asynchrones universels (UART), ont été développés pour effectuer les tâches de conversion d\u0026rsquo;un octet parallèle de 8 bits en un flux série de 10 bits et de conversion d\u0026rsquo;un flux série de 10 bits en un octet parallèle de 8 bits.\nL'89c52 contient une circuit de transmission/réception de données série qui peut être programmée pour utiliser quatre modes de communication asynchrone numérotés de 0 à 3. • Mode 0 : Haute vitesse, registre à décalage de 8 bits ; un débit de baud de f/12\n• Mode 1 : UART standard 8 bits ; débits de bauds variables\n• Mode 2 et Mode 3 : UART multiprocesseur 9 bits\nCaractère asynchrone 8 bits (Mode 1)\nSpécifications opérationnelles\nApplication temps réel\nConclusion\n9.1 Perspectives futures\n9.2 Limitations\n.\nBibliographie ","permalink":"https://www.shafiq.in/fr/blog/online-temperature-monitoring-system/","summary":"\u003ch1 id=\"téléchargement--proj_format_\"\u003eTéléchargement : \u003ca href=\"/wp-content/uploads/2013/06/proj_format_.doc\"\u003ePROJ_FORMAT_\u003c/a\u003e\u003c/h1\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003eIntroduction\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eEnvironnement de travail\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e2.1 Spécifications des exigences matérielles\u003c/p\u003e\n\u003cp\u003ei. Microcontrôleur AT89c52\u003cbr\u003e\nii. ADC ADC0808\u003cbr\u003e\niii. \u003ca class=\"zem_slink\" title=\"Horloge temps réel\" href=\"http://en.wikipedia.org/wiki/Real-time_clock\" target=\"_blank\" rel=\"wikipedia\"\u003eHorloge temps réel\u003c/a\u003e DS1307\u003cbr\u003e\niv. EEPROM sériel AT24c08\u003cbr\u003e\nv. Transmetteur-récepteur sériel MAX232\u003cbr\u003e\nvi. LCD 16×2\u003c/p\u003e\n\u003cp\u003e2.2 \u003ca class=\"zem_slink\" title=\"Exigence\" href=\"http://en.wikipedia.org/wiki/Requirement\" target=\"_blank\" rel=\"wikipedia\"\u003eSpécifications logicielles\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003ei. Langage de programmation ANSI C\u003cbr\u003e\nii. Compilateur KEIL\u003c/p\u003e\n\u003cp\u003e2.3 À propos du matériel\u003c/p\u003e\n\u003cp\u003e2.3.1 Microcontrôleur (89C52)\u003cbr\u003e\nFonctionnalités principales\u003cbr\u003e\n Compatible avec les produits MCS-51™\u003cbr\u003e\n 8 Ko de mémoire Flash réprogrammable en système\u003cbr\u003e\n Durée de vie : 1 000 cycles d\u0026rsquo;écriture/effacement\u003cbr\u003e\n 256 octets de RAM interne 8 bits\u003cbr\u003e\n 32 lignes d\u0026rsquo;entrée/sortie programmables\u003cbr\u003e\n Trois compteurs/timers 16 bits\u003cbr\u003e\n Huit sources d\u0026rsquo;interruption\u003cbr\u003e\n Canal série programmable\u003c/p\u003e","title":"Online Temperature Monitoring System"},{"content":"Il arrive parfois que vous souhaitiez masquer une colonne sans pour autant la supprimer du DOM. Cela peut être utile si vous voulez garder les données accessibles pour d\u0026rsquo;autres opérations, tout en ne les affichant pas sur l\u0026rsquo;interface.\nSolution rapide : Utiliser le CSS Une manière simple d’y parvenir consiste à utiliser le CSS. Cela vous permet de conserver les données de la colonne dans le DOM, tout en ne pas les afficher dans le tableau.\nÉtape 1 : Ajouter une classe à la colonne Vous pouvez ajouter une classe à la colonne que vous souhaitez masquer en utilisant l’attribut sClass dans DataTables.\n\u0026#34;sClass\u0026#34;: \u0026#34;hide_column\u0026#34; Étape 2 : Définir la classe en CSS Une fois la classe attribuée, vous devrez la définir dans votre feuille de style. Vous pouvez définir la propriété display à none pour masquer la colonne.\n.hide_column { display: none; } Et voilà ! Ainsi, la colonne restera présente dans le DOM, mais ne sera pas visible dans le DataTable.\nPourquoi voudriez-vous faire cela ? Vous vous demandez peut-être pourquoi masquer une colonne sans la supprimer du DOM. Voici quelques scénarios où cela peut être utile :\nTraitement des données : Vous pourriez vouloir garder la colonne accessible pour des tâches de traitement des données, sans la montrer aux utilisateurs.\nAffichage conditionnel : Parfois, vous souhaiterez afficher la colonne selon certaines conditions. Puisque la colonne reste dans le DOM, il est facile de la faire apparaître ou disparaître via JavaScript.\nConsistance : Garder la colonne dans le DOM assure une structure de tableau cohérente, même lorsque les colonnes sont activées ou désactivées.\nPréférences utilisateur : Vous pourriez vouloir permettre aux utilisateurs de personnaliser les colonnes visibles, sans affecter l’intégrité des données ni la structure du tableau.\n","permalink":"https://www.shafiq.in/fr/blog/how-to-hide-a-column-in-jquery-datatables-without-removing-it-from-the-dom/","summary":"\u003cp\u003eIl arrive parfois que vous souhaitiez masquer une colonne sans pour autant la supprimer du DOM. Cela peut être utile si vous voulez garder les données accessibles pour d\u0026rsquo;autres opérations, tout en ne les affichant pas sur l\u0026rsquo;interface.\u003c/p\u003e\n\u003ch2 id=\"solution-rapide--utiliser-le-css\"\u003eSolution rapide : Utiliser le CSS\u003c/h2\u003e\n\u003cp\u003eUne manière simple d’y parvenir consiste à utiliser le CSS. Cela vous permet de conserver les données de la colonne dans le DOM, tout en ne pas les afficher dans le tableau.\u003c/p\u003e","title":"How to Hide a Column in jQuery DataTables Without Removing It From the DOM"},{"content":"\u0026lt;?xml version=\u0026#34;1.0\u0026#34; encoding=\u0026#34;UTF-8\u0026#34;?\u0026gt; \u0026lt;GeteBayDetailsResponse xmlns=\u0026#34;urn:ebay:apis:eBLBaseComponents\u0026#34;\u0026gt; \u0026lt;Timestamp\u0026gt;2013-04-13T07:54:20.770Z\u0026lt;/Timestamp\u0026gt; \u0026lt;Ack\u0026gt;Success\u0026lt;/Ack\u0026gt; \u0026lt;Version\u0026gt;813\u0026lt;/Version\u0026gt; \u0026lt;Build\u0026gt;E813_INTL_BUNDLED_15816370_R1\u0026lt;/Build\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Standard Int\u0026#39;l Postage\u0026lt;/Description\u0026gt; \u0026lt;InternationalService\u0026gt;true\u0026lt;/InternationalService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_SellersStandardInternationalRate\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;50301\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;STANDARD\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Collect+ Tracked: drop at store-delivery to door\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_CollectPlusTrakedDeliveryToDoor\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;330\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;5\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;3\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;ECONOMY\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Royal Mail Airmail (Small Packets)\u0026lt;/Description\u0026gt; \u0026lt;InternationalService\u0026gt;true\u0026lt;/InternationalService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_RoyalMailAirmailInternational\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;50302\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;NONE\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Hermes Tracked\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_myHermesDoorToDoorService\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;322\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;5\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;3\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;ECONOMY\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Royal Mail 1st Class\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_RoyalMailFirstClassStandard\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;301\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;2\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;1\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;STANDARD\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Royal Mail 1st Class Standard Medium Parcel\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_RoyalMailFirstClassStandardMediumParcel\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;332\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;2\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;1\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;STANDARD\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Royal Mail Airsure\u0026lt;/Description\u0026gt; \u0026lt;InternationalService\u0026gt;true\u0026lt;/InternationalService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_RoyalMailAirsureInternational\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;50303\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;NONE\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Royal Mail 2nd Class\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_RoyalMailSecondClassStandard\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;302\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;5\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;3\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;ECONOMY\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Royal Mail Surface Mail\u0026lt;/Description\u0026gt; \u0026lt;InternationalService\u0026gt;true\u0026lt;/InternationalService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_RoyalMailSurfaceMailInternational\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;50304\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;NONE\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Royal Mail 1st Class Signed For\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_RoyalMailFirstClassRecorded\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;303\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;2\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;1\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;STANDARD\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Royal Mail 1st Class Recorded Medium Parcel\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_RoyalMailFirstClassRecordedMediumParcel\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;333\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;2\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;1\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;STANDARD\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Royal Mail 2nd Class Signed For\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_RoyalMailSecondClassRecorded\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;304\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;5\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;3\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;ECONOMY\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Royal Mail International Signed-for\u0026lt;/Description\u0026gt; \u0026lt;InternationalService\u0026gt;true\u0026lt;/InternationalService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_RoyalMailInternationalSignedFor\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;50305\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;NONE\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Royal Mail HM Forces Mail\u0026lt;/Description\u0026gt; \u0026lt;InternationalService\u0026gt;true\u0026lt;/InternationalService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_RoyalMailHMForcesMailInternational\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;50306\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;NONE\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Royal Mail Special Delivery\u0026lt;/Description\u0026gt; \u0026lt;ExpeditedService\u0026gt;true\u0026lt;/ExpeditedService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_RoyalMailSpecialDelivery\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;305\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;1\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;0\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;ONE_DAY\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Royal Mail Tracked 48\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_RoyalMailTracked\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;327\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;3\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;2\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;STANDARD\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Royal Mail Special Delivery (TM) 1:00 pm\u0026lt;/Description\u0026gt; \u0026lt;ExpeditedService\u0026gt;true\u0026lt;/ExpeditedService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_RoyalMailSpecialDeliveryNextDay\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;312\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;1\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;1\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;ONE_DAY\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Royal Mail Special Delivery (TM) 9:00 am\u0026lt;/Description\u0026gt; \u0026lt;ExpeditedService\u0026gt;true\u0026lt;/ExpeditedService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_RoyalMailSpecialDelivery9am\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;313\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;1\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;1\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;ONE_DAY\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Royal Mail Tracked 24\u0026lt;/Description\u0026gt; \u0026lt;ExpeditedService\u0026gt;true\u0026lt;/ExpeditedService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_RoyalMailNextDay\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;328\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;1\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;1\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;ONE_DAY\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Parcelforce International Datapost\u0026lt;/Description\u0026gt; \u0026lt;InternationalService\u0026gt;true\u0026lt;/InternationalService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_ParcelForceInternationalDatapost\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;50307\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;NONE\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Royal Mail Standard Parcels\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_RoyalMailStandardParcel\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;306\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;5\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;3\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;ECONOMY\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Parcelforce 24\u0026lt;/Description\u0026gt; \u0026lt;ExpeditedService\u0026gt;true\u0026lt;/ExpeditedService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_Parcelforce24\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;307\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;1\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;1\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;ONE_DAY\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Parcelforce Ireland 24\u0026lt;/Description\u0026gt; \u0026lt;InternationalService\u0026gt;true\u0026lt;/InternationalService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_ParcelForceIreland24International\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;50308\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:44:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;NONE\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Collect+ Tracked (Jiffy Bag up to 2Kg): drop at store – deliver to door\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_CollectPlusTrackJiffyBag\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;324\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;5\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;3\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-03-13T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;ECONOMY\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Collect+ : drop at store-delivery to door\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_CollectDropAtStoreDeliveryToDoor\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;323\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;5\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;3\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;ECONOMY\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Collect+ Tracked (Standard up to 5kg): drop at store – deliver to door\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_CollectPlusTrackStandard\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;325\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;5\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;3\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;ECONOMY\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Collect+ Tracked (Heavy up to 10kg): drop at store – deliver to door\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_CollectPlusTrackHeavy\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;326\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;5\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;3\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;ECONOMY\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Parcelforce 48\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_Parcelforce48\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;308\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;2\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;1\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;STANDARD\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Parcelforce Euro 48\u0026lt;/Description\u0026gt; \u0026lt;InternationalService\u0026gt;true\u0026lt;/InternationalService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_ParcelForceEuro48International\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;50309\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;NONE\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Parcelforce Global Express\u0026lt;/Description\u0026gt; \u0026lt;InternationalService\u0026gt;true\u0026lt;/InternationalService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_ParcelForceIntlExpress\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;50316\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;NONE\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Other 24 Hour Courier\u0026lt;/Description\u0026gt; \u0026lt;ExpeditedService\u0026gt;true\u0026lt;/ExpeditedService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_OtherCourier24\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;314\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;1\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;1\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;ONE_DAY\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Parcelforce Global Priority\u0026lt;/Description\u0026gt; \u0026lt;InternationalService\u0026gt;true\u0026lt;/InternationalService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_ParcelForceInternationalScheduled\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;50310\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;NONE\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Parcelforce Global Value\u0026lt;/Description\u0026gt; \u0026lt;InternationalService\u0026gt;true\u0026lt;/InternationalService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_ParcelForceIntlValue\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;50317\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;NONE\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Parcelforce Global Economy (Not available for destinations in Europe)\u0026lt;/Description\u0026gt; \u0026lt;InternationalService\u0026gt;true\u0026lt;/InternationalService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_ParcelForceIntlEconomy\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;50318\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;NONE\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Economy Int\u0026#39;l Postage\u0026lt;/Description\u0026gt; \u0026lt;InternationalService\u0026gt;true\u0026lt;/InternationalService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_OtherCourierOrDeliveryInternational\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;50311\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;ECONOMY\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Other 48 Hour Courier\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_OtherCourier48\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;315\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;2\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;1\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;STANDARD\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Other Courier 3 days\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_OtherCourier3Days\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;317\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;3\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;3\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;DimensionsRequired\u0026gt;true\u0026lt;/DimensionsRequired\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;ShippingCarrier\u0026gt;Other\u0026lt;/ShippingCarrier\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;ECONOMY\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Other Courier 5 days\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_OtherCourier5Days\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;318\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;5\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;0\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;DimensionsRequired\u0026gt;true\u0026lt;/DimensionsRequired\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;ShippingCarrier\u0026gt;Other\u0026lt;/ShippingCarrier\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;ECONOMY\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Other Courier\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_OtherCourier\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;309\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;5\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;3\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;ECONOMY\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Express Int\u0026#39;l Postage\u0026lt;/Description\u0026gt; \u0026lt;InternationalService\u0026gt;true\u0026lt;/InternationalService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_CollectInPersonInternational\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;50312\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;EXPEDITED\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Other Courier 3-5 days\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_SellersStandardRate\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;310\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;5\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;3\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;ECONOMY\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Collection in Person\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_CollectInPerson\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;311\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;PICKUP\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;International Tracked Postage\u0026lt;/Description\u0026gt; \u0026lt;InternationalService\u0026gt;true\u0026lt;/InternationalService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_IntlTrackedPostage\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;50319\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;5\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;2\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;EXPEDITED\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Economy Delivery from outside UK\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_EconomyShippingFromOutside\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;319\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;22\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;10\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;OTHER\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Standard Delivery from outside UK with Royal Mail\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;StandardDeliveryfromOutsideUKwithRoyalMail\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;329\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;13\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;7\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;OTHER\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Standard Delivery from outside UK\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_StandardShippingFromOutside\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;320\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;10\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;4\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;OTHER\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Express Delivery from outside UK\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_ExpeditedShippingFromOutside\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;321\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;3\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;1\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;OTHER\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;FedEx International Economy\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_FedExIntlEconomy\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;168\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;4\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;3\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;SurchargeApplicable\u0026gt;true\u0026lt;/SurchargeApplicable\u0026gt; \u0026lt;ShippingCarrier\u0026gt;FedEx\u0026lt;/ShippingCarrier\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;OTHER\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;TNT International Express\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_TntIntlExp\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;170\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;3\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;2\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;ShippingCarrier\u0026gt;Other\u0026lt;/ShippingCarrier\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;OTHER\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Tracked delivery from outside UK\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;UK_TrackedDeliveryFromAbroad\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;331\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ShippingTimeMax\u0026gt;5\u0026lt;/ShippingTimeMax\u0026gt; \u0026lt;ShippingTimeMin\u0026gt;2\u0026lt;/ShippingTimeMin\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ValidForSellingFlow\u0026gt;true\u0026lt;/ValidForSellingFlow\u0026gt; \u0026lt;ShippingCarrier\u0026gt;Other\u0026lt;/ShippingCarrier\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;OTHER\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Promotional Postage Service\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;PromotionalShippingMethod\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;399\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ServiceType\u0026gt;Calculated\u0026lt;/ServiceType\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;PROMOTIONAL\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Freight\u0026lt;/Description\u0026gt; \u0026lt;ShippingService\u0026gt;Courier\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;316\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;NONE\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Other Int\u0026#39;l Postage (see description)\u0026lt;/Description\u0026gt; \u0026lt;InternationalService\u0026gt;true\u0026lt;/InternationalService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_OtherInternationalPostage\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;50315\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;OTHER\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Standard Int\u0026#39;l Flat Rate Postage\u0026lt;/Description\u0026gt; \u0026lt;InternationalService\u0026gt;true\u0026lt;/InternationalService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_StandardInternationalFlatRatePostage\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;50313\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;STANDARD\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Expedited Int\u0026#39;l Flat Rate Postage\u0026lt;/Description\u0026gt; \u0026lt;InternationalService\u0026gt;true\u0026lt;/InternationalService\u0026gt; \u0026lt;ShippingService\u0026gt;UK_ExpeditedInternationalFlatRatePostage\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;50314\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;EXPEDITED\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;ShippingServiceDetails\u0026gt; \u0026lt;Description\u0026gt;Promotional Postage Service\u0026lt;/Description\u0026gt; \u0026lt;InternationalService\u0026gt;true\u0026lt;/InternationalService\u0026gt; \u0026lt;ShippingService\u0026gt;PromotionalShippingMethod\u0026lt;/ShippingService\u0026gt; \u0026lt;ShippingServiceID\u0026gt;50399\u0026lt;/ShippingServiceID\u0026gt; \u0026lt;ServiceType\u0026gt;Flat\u0026lt;/ServiceType\u0026gt; \u0026lt;ServiceType\u0026gt;Calculated\u0026lt;/ServiceType\u0026gt; \u0026lt;DetailVersion\u0026gt;74\u0026lt;/DetailVersion\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;ShippingCategory\u0026gt;PROMOTIONAL\u0026lt;/ShippingCategory\u0026gt; \u0026lt;/ShippingServiceDetails\u0026gt; \u0026lt;UpdateTime\u0026gt;2013-04-08T14:42:28.000Z\u0026lt;/UpdateTime\u0026gt; \u0026lt;/GeteBayDetailsResponse\u0026gt; ","permalink":"https://www.shafiq.in/fr/blog/list-of-ebay-shipping-services-in-uk/","summary":"\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-xml\" data-lang=\"xml\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"cp\"\u003e\u0026lt;?xml version=\u0026#34;1.0\u0026#34; encoding=\u0026#34;UTF-8\u0026#34;?\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;GeteBayDetailsResponse\u003c/span\u003e \u003cspan class=\"na\"\u003exmlns=\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;urn:ebay:apis:eBLBaseComponents\u0026#34;\u003c/span\u003e\u003cspan class=\"nt\"\u003e\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Timestamp\u0026gt;\u003c/span\u003e2013-04-13T07:54:20.770Z\u003cspan class=\"nt\"\u003e\u0026lt;/Timestamp\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Ack\u0026gt;\u003c/span\u003eSuccess\u003cspan class=\"nt\"\u003e\u0026lt;/Ack\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Version\u0026gt;\u003c/span\u003e813\u003cspan class=\"nt\"\u003e\u0026lt;/Version\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Build\u0026gt;\u003c/span\u003eE813_INTL_BUNDLED_15816370_R1\u003cspan class=\"nt\"\u003e\u0026lt;/Build\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eStandard Int\u0026#39;l Postage\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;InternationalService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/InternationalService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_SellersStandardInternationalRate\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e50301\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eSTANDARD\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eCollect+ Tracked: drop at store-delivery to door\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_CollectPlusTrakedDeliveryToDoor\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e330\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e5\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e3\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eECONOMY\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eRoyal Mail Airmail (Small Packets)\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;InternationalService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/InternationalService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_RoyalMailAirmailInternational\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e50302\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eNONE\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eHermes Tracked\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_myHermesDoorToDoorService\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e322\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e5\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e3\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eECONOMY\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eRoyal Mail 1st Class\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_RoyalMailFirstClassStandard\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e301\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e2\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e1\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eSTANDARD\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eRoyal Mail 1st Class Standard Medium Parcel\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_RoyalMailFirstClassStandardMediumParcel\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e332\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e2\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e1\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eSTANDARD\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eRoyal Mail Airsure\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;InternationalService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/InternationalService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_RoyalMailAirsureInternational\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e50303\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eNONE\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eRoyal Mail 2nd Class\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_RoyalMailSecondClassStandard\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e302\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e5\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e3\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eECONOMY\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eRoyal Mail Surface Mail\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;InternationalService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/InternationalService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_RoyalMailSurfaceMailInternational\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e50304\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eNONE\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eRoyal Mail 1st Class Signed For\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_RoyalMailFirstClassRecorded\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e303\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e2\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e1\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eSTANDARD\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eRoyal Mail 1st Class Recorded Medium Parcel\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_RoyalMailFirstClassRecordedMediumParcel\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e333\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e2\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e1\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eSTANDARD\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eRoyal Mail 2nd Class Signed For\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_RoyalMailSecondClassRecorded\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e304\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e5\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e3\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eECONOMY\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eRoyal Mail International Signed-for\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;InternationalService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/InternationalService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_RoyalMailInternationalSignedFor\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e50305\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eNONE\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eRoyal Mail HM Forces Mail\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;InternationalService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/InternationalService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_RoyalMailHMForcesMailInternational\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e50306\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eNONE\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eRoyal Mail Special Delivery\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ExpeditedService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ExpeditedService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_RoyalMailSpecialDelivery\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e305\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e1\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e0\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eONE_DAY\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eRoyal Mail Tracked 48\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_RoyalMailTracked\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e327\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e3\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e2\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eSTANDARD\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eRoyal Mail Special Delivery (TM) 1:00 pm\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ExpeditedService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ExpeditedService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_RoyalMailSpecialDeliveryNextDay\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e312\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e1\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e1\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eONE_DAY\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eRoyal Mail Special Delivery (TM) 9:00 am\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ExpeditedService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ExpeditedService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_RoyalMailSpecialDelivery9am\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e313\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e1\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e1\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eONE_DAY\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eRoyal Mail Tracked 24\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ExpeditedService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ExpeditedService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_RoyalMailNextDay\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e328\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e1\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e1\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eONE_DAY\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eParcelforce International Datapost\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;InternationalService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/InternationalService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_ParcelForceInternationalDatapost\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e50307\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eNONE\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eRoyal Mail Standard Parcels\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_RoyalMailStandardParcel\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e306\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e5\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e3\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eECONOMY\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eParcelforce 24\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ExpeditedService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ExpeditedService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_Parcelforce24\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e307\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e1\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e1\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eONE_DAY\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eParcelforce Ireland 24\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;InternationalService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/InternationalService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_ParcelForceIreland24International\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e50308\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:44:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eNONE\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eCollect+ Tracked (Jiffy Bag up to 2Kg): drop at store – deliver to door\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_CollectPlusTrackJiffyBag\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e324\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e5\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e3\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-03-13T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eECONOMY\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eCollect+ : drop at store-delivery to door\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_CollectDropAtStoreDeliveryToDoor\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e323\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e5\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e3\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eECONOMY\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eCollect+ Tracked (Standard up to 5kg): drop at store – deliver to door\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_CollectPlusTrackStandard\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e325\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e5\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e3\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eECONOMY\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eCollect+ Tracked (Heavy up to 10kg): drop at store – deliver to door\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_CollectPlusTrackHeavy\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e326\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e5\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e3\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eECONOMY\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eParcelforce 48\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_Parcelforce48\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e308\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e2\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e1\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eSTANDARD\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eParcelforce Euro 48\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;InternationalService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/InternationalService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_ParcelForceEuro48International\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e50309\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eNONE\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eParcelforce Global Express\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;InternationalService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/InternationalService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_ParcelForceIntlExpress\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e50316\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eNONE\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eOther 24 Hour Courier\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ExpeditedService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ExpeditedService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_OtherCourier24\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e314\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e1\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e1\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eONE_DAY\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eParcelforce Global Priority\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;InternationalService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/InternationalService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_ParcelForceInternationalScheduled\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e50310\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eNONE\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eParcelforce Global Value\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;InternationalService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/InternationalService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_ParcelForceIntlValue\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e50317\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eNONE\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eParcelforce Global Economy (Not available for destinations in Europe)\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;InternationalService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/InternationalService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_ParcelForceIntlEconomy\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e50318\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eNONE\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eEconomy Int\u0026#39;l Postage\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;InternationalService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/InternationalService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_OtherCourierOrDeliveryInternational\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e50311\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eECONOMY\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eOther 48 Hour Courier\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_OtherCourier48\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e315\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e2\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e1\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eSTANDARD\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eOther Courier 3 days\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_OtherCourier3Days\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e317\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e3\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e3\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DimensionsRequired\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/DimensionsRequired\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCarrier\u0026gt;\u003c/span\u003eOther\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCarrier\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eECONOMY\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eOther Courier 5 days\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_OtherCourier5Days\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e318\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e5\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e0\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DimensionsRequired\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/DimensionsRequired\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCarrier\u0026gt;\u003c/span\u003eOther\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCarrier\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eECONOMY\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eOther Courier\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_OtherCourier\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e309\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e5\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e3\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eECONOMY\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eExpress Int\u0026#39;l Postage\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;InternationalService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/InternationalService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_CollectInPersonInternational\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e50312\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eEXPEDITED\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eOther Courier 3-5 days\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_SellersStandardRate\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e310\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e5\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e3\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eECONOMY\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eCollection in Person\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_CollectInPerson\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e311\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003ePICKUP\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eInternational Tracked Postage\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;InternationalService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/InternationalService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_IntlTrackedPostage\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e50319\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e5\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e2\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eEXPEDITED\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eEconomy Delivery from outside UK\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_EconomyShippingFromOutside\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e319\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e22\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e10\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eOTHER\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eStandard Delivery from outside UK with Royal Mail\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eStandardDeliveryfromOutsideUKwithRoyalMail\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e329\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e13\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e7\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eOTHER\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eStandard Delivery from outside UK\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_StandardShippingFromOutside\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e320\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e10\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e4\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eOTHER\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eExpress Delivery from outside UK\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_ExpeditedShippingFromOutside\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e321\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e3\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e1\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eOTHER\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eFedEx International Economy\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_FedExIntlEconomy\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e168\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e4\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e3\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;SurchargeApplicable\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/SurchargeApplicable\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCarrier\u0026gt;\u003c/span\u003eFedEx\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCarrier\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eOTHER\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eTNT International Express\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_TntIntlExp\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e170\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e3\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e2\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCarrier\u0026gt;\u003c/span\u003eOther\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCarrier\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eOTHER\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eTracked delivery from outside UK\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_TrackedDeliveryFromAbroad\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e331\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMax\u0026gt;\u003c/span\u003e5\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMax\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingTimeMin\u0026gt;\u003c/span\u003e2\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingTimeMin\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ValidForSellingFlow\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/ValidForSellingFlow\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCarrier\u0026gt;\u003c/span\u003eOther\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCarrier\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eOTHER\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003ePromotional Postage Service\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003ePromotionalShippingMethod\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e399\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eCalculated\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003ePROMOTIONAL\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eFreight\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eCourier\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e316\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eNONE\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eOther Int\u0026#39;l Postage (see description)\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;InternationalService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/InternationalService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_OtherInternationalPostage\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e50315\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eOTHER\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eStandard Int\u0026#39;l Flat Rate Postage\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;InternationalService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/InternationalService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_StandardInternationalFlatRatePostage\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e50313\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eSTANDARD\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003eExpedited Int\u0026#39;l Flat Rate Postage\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;InternationalService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/InternationalService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003eUK_ExpeditedInternationalFlatRatePostage\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e50314\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003eEXPEDITED\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;Description\u0026gt;\u003c/span\u003ePromotional Postage Service\u003cspan class=\"nt\"\u003e\u0026lt;/Description\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;InternationalService\u0026gt;\u003c/span\u003etrue\u003cspan class=\"nt\"\u003e\u0026lt;/InternationalService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingService\u0026gt;\u003c/span\u003ePromotionalShippingMethod\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingService\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingServiceID\u0026gt;\u003c/span\u003e50399\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceID\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eFlat\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ServiceType\u0026gt;\u003c/span\u003eCalculated\u003cspan class=\"nt\"\u003e\u0026lt;/ServiceType\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;DetailVersion\u0026gt;\u003c/span\u003e74\u003cspan class=\"nt\"\u003e\u0026lt;/DetailVersion\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;ShippingCategory\u0026gt;\u003c/span\u003ePROMOTIONAL\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingCategory\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/ShippingServiceDetails\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;UpdateTime\u0026gt;\u003c/span\u003e2013-04-08T14:42:28.000Z\u003cspan class=\"nt\"\u003e\u0026lt;/UpdateTime\u0026gt;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003e\u0026lt;/GeteBayDetailsResponse\u0026gt;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","title":"List of Ebay shipping services in UK"},{"content":"Présentation de BottomToolBar : un outil personnalisable pour votre site web Avez-vous déjà remarqué la barre glissante en bas de l\u0026rsquo;écran de votre téléviseur affichant des messages texte et des images ? C\u0026rsquo;est une fonctionnalité courante sur les chaînes d\u0026rsquo;information et les émissions de divertissement. BottomToolBar (BTB) reprend ce concept et l\u0026rsquo;apporte sur votre site web, améliorant ainsi l\u0026rsquo;engagement des utilisateurs et la découverte de contenu.\nQu\u0026rsquo;est-ce que BottomToolBar ? BottomToolBar est une fonctionnalité pouvant être ajoutée à n\u0026rsquo;importe quel site web. Elle se situe en bas du navigateur web et reste au-dessus de tous les autres éléments de la page. Elle fonctionne comme un ticker défilant que l\u0026rsquo;on voit sur les sites d\u0026rsquo;information, mais avec une personnalisation accrue, notamment :\nFonctionnalités principales Positionnement fixe : Réside toujours en bas de votre navigateur web. Superposition : Reste au-dessus de tous les autres éléments de la page. Contenu dynamique : Récupère du texte et des images depuis un serveur pour les afficher. Défilement de texte : Les messages défilent de droite à gauche ou inversement. Séparation par icône : Les textes sont séparés par des images personnalisées, souvent le logo du site. Prise en charge des emojis : Prend en charge les emojis, comme ceux utilisés dans les chat MSN. Affichage multimédia : Peut afficher des images intégrées dans le texte défilant. Interactivité utilisateur : Permet aux utilisateurs de déplacer la barre. Analytiques : Suivre le nombre de personnes voyant chaque message et combien choisissent de fermer la barre. Préférences utilisateur : Offre aux utilisateurs le choix d\u0026rsquo;afficher ou non la barre, avec option de mémorisation de leur choix. Panneau de contrôle Depuis le panneau de contrôle, les administrateurs du site peuvent :\nCréation de balises : Définir des balises pour chaque site. Image personnalisée : Choisir une image pour séparer le texte. Fréquence du texte : Définir combien de fois un texte spécifique doit apparaître. Direction du défilement : Choisir la direction du défilement (rtl ou ltr). Couleur d\u0026rsquo;arrière-plan : Personnaliser la couleur d\u0026rsquo;arrière-plan. Source du contenu : Sélectionner la source pour le texte et les images. Positionnement de l\u0026rsquo;image : Définir où l\u0026rsquo;image sera placée dans le texte. Durée d\u0026rsquo;affichage : Définir combien de temps une image ou un texte doit être affichée. Authentification utilisateur : Fonctionnalité optionnelle permettant aux utilisateurs de se connecter et de créer leur propre barre. Approbation administrative : Les messages peuvent être approuvés ou rejetés par l\u0026rsquo;administrateur selon ses privilèges. Exemples Fonctionnalité de chat de Gmail : Comme la fonctionnalité de chat Gmail dans les navigateurs web, BottomToolBar reste au-dessus de tous les autres éléments. BottomToolBar est un outil complet et dynamique conçu pour rendre les sites web plus interactifs et engageants. Il est entièrement personnalisable pour répondre aux besoins de différents types de sites, que ce soit des portails d\u0026rsquo;information ou des sites de divertissement.\nAlors, si vous cherchez à ajouter une fonctionnalité supplémentaire et un peu de piquant à votre site web, BottomToolBar pourrait être exactement la solution dont vous avez besoin.\nConsultez le dépôt GitHub pour plus d\u0026rsquo;informations (github.com/shafiqalibhai/BottomToolbar, no longer available)\n","permalink":"https://www.shafiq.in/fr/blog/elevate-your-website-experience-with-bottomtoolbar/","summary":"\u003ch3 id=\"présentation-de-bottomtoolbar--un-outil-personnalisable-pour-votre-site-web\"\u003ePrésentation de BottomToolBar : un outil personnalisable pour votre site web\u003c/h3\u003e\n\u003cp\u003eAvez-vous déjà remarqué la barre glissante en bas de l\u0026rsquo;écran de votre téléviseur affichant des messages texte et des images ? C\u0026rsquo;est une fonctionnalité courante sur les chaînes d\u0026rsquo;information et les émissions de divertissement. BottomToolBar (BTB) reprend ce concept et l\u0026rsquo;apporte sur votre site web, améliorant ainsi l\u0026rsquo;engagement des utilisateurs et la découverte de contenu.\u003c/p\u003e\n\u003ch3 id=\"quest-ce-que-bottomtoolbar-\"\u003eQu\u0026rsquo;est-ce que BottomToolBar ?\u003c/h3\u003e\n\u003cp\u003eBottomToolBar est une fonctionnalité pouvant être ajoutée à n\u0026rsquo;importe quel site web. Elle se situe en bas du navigateur web et reste au-dessus de tous les autres éléments de la page. Elle fonctionne comme un ticker défilant que l\u0026rsquo;on voit sur les sites d\u0026rsquo;information, mais avec une personnalisation accrue, notamment :\u003c/p\u003e","title":"Elevate Your Website Experience with BottomToolBar"},{"content":"Téléchargez le guide complet sur le renforcement des systèmes Introduction au renforcement des systèmes Le renforcement des systèmes est l\u0026rsquo;art de renforcer votre environnement informatique contre les menaces potentielles. Au cœur de cette philosophie se trouve l\u0026rsquo;application du principe du « privilège minimal ». Cela implique :\nDe savoir exactement quels services et applications doivent fonctionner sur un système De créer une documentation qui décrit les politiques, les normes et les directives De configurer en toute sécurité les systèmes d\u0026rsquo;exploitation, les serveurs virtuels et les logiciels De gérer les paramètres des applications afin d\u0026rsquo;améliorer la sécurité De simplifier la configuration et l\u0026rsquo;installation des bases de données De sécuriser les équipements réseau et les périphériques portables Pourquoi le renforcement des plates-formes est-il important Les plates-formes, telles que les serveurs ou les bases de données, constituent la fondation de votre infrastructure de données. Leur intégrité est cruciale pour le transfert sécurisé et fiable de l\u0026rsquo;information. En tant que bonne pratique, veillez à ce que vos plates-formes soient configurées et entretenues pour repousser les accès non autorisés et les interruptions de service.\nDéfinitions clés en renforcement des systèmes Système renforcé (H) : Représente l’état sécurisé que vous visez pour votre système. Renforcement de base du système d\u0026rsquo;exploitation (Bos) : Désigne les paramètres de sécurité fondamentaux pour le système d\u0026rsquo;exploitation. Renforcement des fonctions applicatives/système (Af) : Concerne les configurations de sécurité pour des applications comme Apache, Oracle, ou des fonctions système spécifiques comme DNS ou DHCP. Renforcement de base (B) : Il s\u0026rsquo;agit de la somme du renforcement de base du système d\u0026rsquo;exploitation et du renforcement des fonctions applicatives/système (B = Bos + Af). Renforcement personnalisé (C) : Implique des couches de sécurité supplémentaires, telles que les paramètres DMZ, des réglages de sécurité spécifiques, ou des contrôles propres au système d\u0026rsquo;exploitation comme les TCP Wrappers. Renforcement des systèmes virtuels : Cela concerne le renforcement des machines virtuelles (VM) elles-mêmes. La formule d’un système renforcé Pour résumer le renforcement des systèmes en termes mathématiques simples, on pourrait dire :\n[ H (Système renforcé) = B (Renforcement de base) + C (Renforcement personnalisé) ]\nCette équation illustre comment un système renforcé résulte de la combinaison de configurations de sécurité de base avec des couches personnalisées de protection.\nRenforcement des systèmes virtuels Dans un environnement virtualisé, vous pouvez adapter la formule de renforcement comme suit :\n[ H (Système renforcé) = Vos (Renforcement du système d\u0026rsquo;exploitation virtuel) + B (Renforcement de base) + C (Renforcement personnalisé) ]\nL’ajout du renforcement du système d\u0026rsquo;exploitation virtuel reflète la nécessité de sécuriser la machine virtuelle elle-même, en plus des procédures de renforcement de base et personnalisé.\n","permalink":"https://www.shafiq.in/fr/blog/the-art-of-system-hardening-a-comprehensive-guide/","summary":"\u003ch1 id=\"téléchargez-le-guide-complet-sur-le-renforcement-des-systèmes\"\u003e\u003ca href=\"/wp-content/uploads/2013/01/generic-hardening-doc.docx\"\u003eTéléchargez le guide complet sur le renforcement des systèmes\u003c/a\u003e\u003c/h1\u003e\n\u003ch2 id=\"introduction-au-renforcement-des-systèmes\"\u003eIntroduction au renforcement des systèmes\u003c/h2\u003e\n\u003cp\u003eLe renforcement des systèmes est l\u0026rsquo;art de renforcer votre environnement informatique contre les menaces potentielles. Au cœur de cette philosophie se trouve l\u0026rsquo;application du principe du « privilège minimal ». Cela implique :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDe savoir exactement quels services et applications doivent fonctionner sur un système\u003c/li\u003e\n\u003cli\u003eDe créer une documentation qui décrit les politiques, les normes et les directives\u003c/li\u003e\n\u003cli\u003eDe configurer en toute sécurité les systèmes d\u0026rsquo;exploitation, les serveurs virtuels et les logiciels\u003c/li\u003e\n\u003cli\u003eDe gérer les paramètres des applications afin d\u0026rsquo;améliorer la sécurité\u003c/li\u003e\n\u003cli\u003eDe simplifier la configuration et l\u0026rsquo;installation des bases de données\u003c/li\u003e\n\u003cli\u003eDe sécuriser les équipements réseau et les périphériques portables\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"pourquoi-le-renforcement-des-plates-formes-est-il-important\"\u003ePourquoi le renforcement des plates-formes est-il important\u003c/h2\u003e\n\u003cp\u003eLes plates-formes, telles que les serveurs ou les bases de données, constituent la fondation de votre infrastructure de données. Leur intégrité est cruciale pour le transfert sécurisé et fiable de l\u0026rsquo;information. En tant que bonne pratique, veillez à ce que vos plates-formes soient configurées et entretenues pour repousser les accès non autorisés et les interruptions de service.\u003c/p\u003e","title":"The Art of System Hardening - A Comprehensive Guide"},{"content":" ","permalink":"https://www.shafiq.in/fr/blog/running-firefox-os-apps-on-ubuntu-linux/","summary":"\u003cimg src=\"/wp-content/uploads/2012/11/2012-11-24-172842_1366x768_scrot_hu_baa6681d4f264dba.png\" alt=\"Firefox OS apps screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e","title":"Running Firefox OS apps on Ubuntu linux"},{"content":"Transformez votre site WordPress avec une expérience similaire à iOS Si vous avez toujours admiré la conception sobre et intuitive d\u0026rsquo;iOS, vous allez être ravi. Je suis ravi de vous présenter un thème WordPress qui apporte l\u0026rsquo;aspect et l\u0026rsquo;expérience d\u0026rsquo;iOS directement sur votre site.\nObtenez tous les détails ici : Page de vente (no longer available) Voyez-le en action : Démo en direct (no longer available) Pourquoi vous allez adorer ce thème L\u0026rsquo;accent est mis sur la simplicité, en imitant l\u0026rsquo;interface conviviale que les utilisateurs d\u0026rsquo;iOS connaissent et aiment. Voici quelques-unes des fonctionnalités que vous pouvez attendre :\nDesign élégant : Une conception minimaliste inspirée de l\u0026rsquo;interface iOS la plus récente. Convivialité : Une navigation facile pour garantir une expérience fluide à vos visiteurs. Personnalisable : Assez de place pour ajouter vos propres touches et rendre le thème unique. Que vous soyez blogueur, propriétaire d\u0026rsquo;une petite entreprise ou simplement quelqu\u0026rsquo;un cherchant à améliorer son site WordPress, ce thème inspiré d\u0026rsquo;iOS est fait pour vous.\n","permalink":"https://www.shafiq.in/fr/blog/unveiling-the-ios-inspired-wordpress-theme-youve-been-waiting-for/","summary":"\u003ch2 id=\"transformez-votre-site-wordpress-avec-une-expérience-similaire-à-ios\"\u003eTransformez votre site WordPress avec une expérience similaire à iOS\u003c/h2\u003e\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2012/10/screenshot_3_hu_3920863580fc3dd5.png\" alt=\"Thème WordPress inspiré d\u0026#39;iOS\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\u003cp\u003eSi vous avez toujours admiré la conception sobre et intuitive d\u0026rsquo;iOS, vous allez être ravi. Je suis ravi de vous présenter un thème WordPress qui apporte l\u0026rsquo;aspect et l\u0026rsquo;expérience d\u0026rsquo;iOS directement sur votre site.\u003c/p\u003e\n\u003ch3 id=\"obtenez-tous-les-détails-ici--page-de-vente-no-longer-available\"\u003e\u003cstrong\u003eObtenez tous les détails ici\u003c/strong\u003e : Page de vente (no longer available)\u003c/h3\u003e\n\u003ch3 id=\"voyez-le-en-action--démo-en-direct-no-longer-available\"\u003e\u003cstrong\u003eVoyez-le en action\u003c/strong\u003e : Démo en direct (no longer available)\u003c/h3\u003e\n\u003ch3 id=\"pourquoi-vous-allez-adorer-ce-thème\"\u003ePourquoi vous allez adorer ce thème\u003c/h3\u003e\n\u003cp\u003eL\u0026rsquo;accent est mis sur la simplicité, en imitant l\u0026rsquo;interface conviviale que les utilisateurs d\u0026rsquo;iOS connaissent et aiment. Voici quelques-unes des fonctionnalités que vous pouvez attendre :\u003c/p\u003e","title":"Unveiling the iOS-Inspired WordPress Theme You've Been Waiting For"},{"content":"Le plan d\u0026rsquo;action pour un processus de déploiement fluide N\u0026rsquo;est-il pas satisfaisant lorsque tout tombe exactement comme prévu ? Dans le monde complexe du développement, où plusieurs rouages sont en mouvement à tout moment, avoir un plan bien défini peut faire toute la différence. Voici un guide simplifié pour mettre en place un système robuste d\u0026rsquo;ingénierie de déploiement (Releng) qui assure des déploiements efficaces et sans erreur.\nMise en œuvre étape par étape 1. Contrôle de version avec Git Nous commençons par stocker tous nos fichiers de configuration et nos manifestes Puppet dans un dépôt Git. Cela sert de hub central où les modifications sont suivies et mises à jour.\n2. Validation et poussée Une fois que vous avez apporté les modifications nécessaires, la prochaine étape consiste à valider ces changements dans le dépôt Git. Après la validation, poussez ces modifications vers votre serveur d\u0026rsquo;intégration continue (CI). Nous utilisons Jenkins à cette fin.\n3. Tests automatisés dans CI Dès que les nouvelles modifications arrivent sur le serveur CI, Jenkins déclenche une série de tests automatisés sur les manifestes et les fichiers de configuration. Ces tests agissent comme un contrôle de vérification, s\u0026rsquo;assurant que les modifications n\u0026rsquo;endommageront rien.\n4. Notifications en cas d\u0026rsquo;échec Si un test échoue, Jenkins interrompt immédiatement le processus. Des notifications sont ensuite envoyées via divers canaux comme Jabber, Email, ou même par une méthode excentrique comme un grand lapin robotique, si vous êtes du genre à aimer ce genre de chose.\n5. Déploiement via Capistrano À supposer que les tests soient réussis, Jenkins déclenche le processus de déploiement. Les manifestes et les fichiers de configuration sont transférés vers le Puppetmaster à l’aide de Capistrano, un outil d’automatisation qui simplifie les tâches complexes de déploiement.\n6. Exécution Puppet avec MCollective Enfin, une exécution Puppet est lancée sur tous les serveurs grâce à MCollective. Cet outil orchestre le déploiement, s\u0026rsquo;assurant que tous les serveurs sont mis à jour simultanément et en synchronisation.\nEn conclusion En suivant ce plan, vous n’aurez pas seulement une approche plus organisée de l’ingénierie de déploiement, mais vous réduirez aussi les risques d’erreurs et de contretemps. Un processus bien planifié est la pierre angulaire du développement réussi, et ce guide vise à être justement cela : une carte routière pour une chaîne d’ingénierie plus fluide et plus fiable.\n","permalink":"https://www.shafiq.in/fr/blog/navigating-release-engineering-a-step-by-step-plan/","summary":"\u003ch1 id=\"le-plan-daction-pour-un-processus-de-déploiement-fluide\"\u003eLe plan d\u0026rsquo;action pour un processus de déploiement fluide\u003c/h1\u003e\n\u003cp\u003eN\u0026rsquo;est-il pas satisfaisant lorsque tout tombe exactement comme prévu ? Dans le monde complexe du développement, où plusieurs rouages sont en mouvement à tout moment, avoir un plan bien défini peut faire toute la différence. Voici un guide simplifié pour mettre en place un système robuste d\u0026rsquo;ingénierie de déploiement (Releng) qui assure des déploiements efficaces et sans erreur.\u003c/p\u003e\n\u003ch2 id=\"mise-en-œuvre-étape-par-étape\"\u003eMise en œuvre étape par étape\u003c/h2\u003e\n\u003ch3 id=\"1-contrôle-de-version-avec-git\"\u003e1. Contrôle de version avec Git\u003c/h3\u003e\n\u003cp\u003eNous commençons par stocker tous nos fichiers de configuration et nos manifestes Puppet dans un dépôt Git. Cela sert de hub central où les modifications sont suivies et mises à jour.\u003c/p\u003e","title":"Navigating Release Engineering - A Step-by-Step Plan"},{"content":"Lien de téléchargement : Fiche d\u0026rsquo;évaluation des risques\nFiche d\u0026rsquo;évaluation des risques\nNom du projet :\nCode du projet :\nChef de programme :\nChef de projet :\nProcessus d\u0026rsquo;ingénierie Exigences\nÉlément Oui Non NA Remarques Stabilité Les exigences sont-elles stables ? Les interfaces externes évoluent-elles ? Complétude Y a-t-il des exigences que vous savez devoir figurer dans la spécification mais qui ne sont pas présentes ? (Si oui) Pourrez-vous intégrer ces exigences dans le système ? Le client a-t-il des exigences ou des attentes non écrites ? Les interfaces externes sont-elles entièrement définies ? Clarté Pouvez-vous comprendre les exigences telles qu\u0026rsquo;écrites ? N\u0026rsquo;existe-t-il aucune ambiguïté ou problème d\u0026rsquo;interprétation ? Validité Y a-t-il des exigences qui ne précisent pas ce que le client veut réellement ? Vous et le client comprenez-vous la même chose par les exigences ? Comment validez-vous les exigences ? Faisabilité Y a-t-il des exigences techniques difficiles à implémenter ? Précédent Les exigences spécifient-elles quelque chose d\u0026rsquo;inédit ou que votre entreprise n\u0026rsquo;a jamais fait auparavant ? Échelle La taille et la complexité du système sont-elles préoccupantes ? Page 1 sur 10 Version No.1.0 / Date : 21-01-2012 Copie de travail si imprimée\nFiche d\u0026rsquo;évaluation des risques\nConception\nÉlément Oui Non NA Remarques Fonctionnalités Y a-t-il des problèmes potentiels pour satisfaire les exigences fonctionnelles ? Difficulté La conception dépend-elle d\u0026rsquo;hypothèses irréalistes ou optimistes ? Y a-t-il des exigences ou des fonctions difficiles à concevoir ? Interface Les interfaces internes sont-elles bien définies ? Un processus existe-t-il pour définir les interfaces internes ? Le matériel est-il développé en parallèle avec le logiciel ? Performances Y a-t-il des problèmes de performance ? Débit Planification asynchrone Événements en temps réel Réponse en temps réel Délais de récupération Temps de réponse Réponse de la base de données, contention ou accès Une analyse des performances a-t-elle été effectuée ? Testabilité Le produit est-il difficile ou impossible à tester ? La conception inclut-elle des fonctionnalités facilitant le test ? Contraintes matérielles Le matériel limite-t-il votre capacité à satisfaire certaines exigences ? Architecture, capacité mémoire, débit, réponse en temps réel, temps de réponse, délais de récupération, performance de la base de données, fonctionnalités, fiabilité, disponibilité Logiciel non développé (si logiciel réutilisé ou réingénieré existe) Réutilisez-vous ou réingéniez-vous un logiciel non développé dans le cadre du programme ? (Si oui) Prévoyez-vous des problèmes ? Documentation, performances, fonctionnalités, livraison dans les délais, personnalisation Si logiciel COTS est utilisé Y a-t-il des problèmes liés à l\u0026rsquo;utilisation de logiciel COTS (commercial off-the-shelf) ? Page 2 sur 10 Version No.1.0 / Date : 21-01-2012 Copie de travail si imprimée\nFiche d\u0026rsquo;évaluation des risques\nDocumentation insuffisante pour déterminer les interfaces, la taille ou les performances Performance médiocre Exige une grande part de mémoire ou de stockage de base de données Difficile à intégrer avec des logiciels applicatifs Non testé en profondeur Pas exempt de bogues Pas maintenu adéquatement Réponse lente du fournisseur Prévoyez-vous des problèmes d\u0026rsquo;intégration des mises à jour ou révisions de logiciel COTS ?\nCode et tests unitaires\nÉlément Oui Non NA Remarques Faisabilité Certaines parties de l\u0026rsquo;implémentation du produit sont-elles non définies par la spécification de conception ? Les algorithmes et les conceptions sélectionnés sont-ils faciles à implémenter ? Y a-t-il assez de temps pour effectuer tous les tests unitaires que vous jugez nécessaires ? Des compromis seront-ils faits concernant les tests unitaires en cas de problèmes de planning ? Tests Commencez-vous les tests unitaires avant de vérifier le code par rapport à la conception ? Les tests unitaires suffisants ont-ils été prévus ? Codage/Implémentation Les spécifications de conception sont-elles suffisamment détaillées pour écrire le code ? La conception change-t-elle pendant le codage ? Des contraintes système rendent-elles le code difficile à écrire ? Délai Mémoire Stockage externe Le langage est-il adapté à la production du logiciel sur ce programme ? Utilisez-vous plusieurs langages sur le programme ? (Si oui) Existe-t-il une compatibilité d\u0026rsquo;interface entre les codes produits par les différents compilateurs ? L\u0026rsquo;ordinateur de développement est-il le même que l\u0026rsquo;ordinateur cible ? Si du matériel de développement est utilisé Les spécifications matérielles sont-elles suffisantes pour coder le logiciel ? Page 3 sur 10 Version No.1.0 / Date : 21-01-2012 Copie de travail si imprimée\nFiche d\u0026rsquo;évaluation des risques\nLes spécifications matérielles changent-elles pendant que le code est écrit ?\nIntégration et tests\nÉlément Oui Non NA Remarques Environnement Y a-t-il assez de matériel pour effectuer une intégration et des tests adéquats ? Y a-t-il un problème pour développer des scénarios réalistes et des données de test pour démontrer les exigences ? Trafic de données spécifié Réponse en temps réel Événements asynchrones Gestion des événements Interaction multi-utilisateur | | | | Pouvez-vous vérifier les performances dans votre installation ? | | | | L\u0026rsquo;instrumentation matérielle et logicielle facilite-t-elle les tests ? | | | | Produit | | | | Le matériel cible sera-t-il disponible au moment voulu ? | | | | Les critères d\u0026rsquo;acceptation ont-ils été convenus pour toutes les exigences ? | | | | Les interfaces externes sont-elles définies, documentées et baselines ? | | | | Y a-t-il des exigences difficiles à tester ? | | | | Une intégration suffisante du produit a-t-elle été prévue ? | | | | Un temps adéquat a-t-il été alloué pour l\u0026rsquo;intégration et les tests du produit ? | | | | (Si COTS) Le fournisseur acceptera-t-il les données pour la vérification des exigences attribuées aux produits COTS ? | | | | Système | | | | Une intégration suffisante du système a-t-elle été prévue ? | | | | Un temps adéquat a-t-il été alloué pour l\u0026rsquo;intégration du système ? | | | | Tous les sous-traitants font-ils partie de l\u0026rsquo;équipe d\u0026rsquo;intégration et de test ? | | | | Le produit sera-t-il intégré dans un système existant ? | | | | L\u0026rsquo;intégration du système aura-t-elle lieu sur le site du client ? | | | |\nSpécialités d\u0026rsquo;ingénierie\nÉlément Oui Non NA Remarques Maintenabilité L\u0026rsquo;architecture, la conception ou le code créent-ils des difficultés de maintenance ? Les personnes responsables de la maintenance sont-elles impliquées dès le début de la conception ? La documentation du produit est-elle suffisante pour la maintenance par une organisation extérieure ? Fiabilité Les exigences de fiabilité ont-elles été attribuées au logiciel ? Les exigences de disponibilité ont-elles été attribuées au logiciel ? Sécurité Les exigences de sécurité ont-elles été attribuées au logiciel ? La vérification de la satisfaction des exigences de sécurité sera-t-elle difficile ? Sécurité Les exigences de sécurité sont-elles plus strictes que l\u0026rsquo;état actuel de la pratique ou de l\u0026rsquo;expérience du programme ? Facteurs humains Le système sera-t-il difficile à utiliser en raison d\u0026rsquo;une mauvaise définition de l\u0026rsquo;interface humaine ? Spécification La spécification des exigences logicielles est-elle suffisante pour concevoir le système ? Les spécifications matérielles sont-elles suffisantes pour concevoir et implémenter le logiciel ? Les exigences d\u0026rsquo;interface externe sont-elles bien spécifiées ? Les spécifications de test sont-elles suffisantes pour tester pleinement le système ? Page 4 sur 10 Version No.1.0 / Date : 21-01-2012 Copie de travail si imprimée\nFiche d\u0026rsquo;évaluation des risques\nDéveloppement Processus de développement\nÉlément Oui Non NA Remarques Les plans formels et contrôlés sont-ils en place pour toutes les activités de développement ? Analyse des exigences Conception Codage Intégration et test Installation Assurance qualité Gestion de configuration Formalité Les plans précisent-ils bien le processus ? Les développeurs sont-ils familiers avec les plans ? Adéquation Le processus de développement est-il suffisant pour ce produit ? Le processus de développement est-il soutenu par un ensemble compatible de procédures, de méthodes et d\u0026rsquo;outils ? Contrôle du processus Le processus de développement logiciel est-il appliqué, surveillé et contrôlé à l\u0026rsquo;aide de métriques ? | | | | Les sites de développement distribués sont-ils coordonnés ? | | | | Familiarité | | | | Les membres du projet sont-ils expérimentés dans l\u0026rsquo;utilisation du processus ? | | | | Tout le personnel comprend-il le processus ? | | | | Contrôle du produit Existe-t-il un mécanisme de traçabilité des exigences qui suit les exigences depuis la spécification source jusqu\u0026rsquo;aux cas de test ? | | | | Ce mécanisme est-il utilisé pour évaluer l\u0026rsquo;impact des changements d\u0026rsquo;exigences ? | | | | Existe-t-il un processus formel de contrôle des changements ? | | | | Les changements à tout niveau sont-ils remontés jusqu\u0026rsquo;au niveau système et descendus jusqu\u0026rsquo;au niveau de test ? | | | | Une analyse adéquate est-elle effectuée lors de l\u0026rsquo;ajout de nouvelles exigences au système ? | | | | Avez-vous un moyen de suivre les interfaces ? | | | | Les plans et procédures de test sont-ils mis à jour dans le cadre du processus de changement ? | | | |\nSystème de développement\nÉlément Oui Non NA Remarques Capacité Y a-t-il assez de postes de travail et de capacité de traitement pour tout le personnel ? Y a-t-il assez de capacité pour des phases superposées, comme le codage, l\u0026rsquo;intégration et les tests ? Adéquation Le système de développement soutient-il toutes les phases, activités et fonctions ? Facilité d\u0026rsquo;utilisation Les utilisateurs trouvent-ils le système de développement facile à utiliser ? La documentation du système de développement est-elle bonne ? Familiarité Les utilisateurs ont-ils déjà utilisé ces outils et méthodes ? Fiabilité Le système est-il considéré comme fiable ? Compilateur Outils de développement Page 5 sur 10 Version No.1.0 / Date : 21-01-2012 Copie de travail si imprimée\nFiche d\u0026rsquo;évaluation des risques\nMatériel Soutien système Les personnes sont-elles formées à l\u0026rsquo;utilisation des outils de développement ? | | | | Avez-vous accès à des experts dans l\u0026rsquo;utilisation du système ? | | | | Les fournisseurs répondent-ils rapidement aux problèmes ? | | | | Livraison | | | | Planification Le programme est-il géré selon le plan ? | | | | Le replanning est-il effectué en cas de perturbation ? | | | | Les personnes à tous les niveaux sont-elles impliquées dans la planification de leur propre travail ? | | | | Des plans de contingence existent-ils pour les risques connus ? | | | | Les problèmes à long terme sont-ils traités adéquatement ? | | | | Organisation du projet Les rôles et les relations hiérarchiques sont-ils clairs ? | | | | Expérience de gestion Les gestionnaires ont-ils de l\u0026rsquo;expérience en développement logiciel, gestion logicielle, domaine d\u0026rsquo;application, processus de développement ou sur de grands programmes ? | | | | Interfaces du programme (Interface avec le client, autres sous-traitants, gestionnaires supérieurs et/ou pairs) La gestion communique-t-elle les problèmes vers le haut et vers le bas ? | | | | Les conflits avec le client sont-ils documentés et résolus de manière opportune ? | | | | La gestion implique-t-elle les membres appropriés du programme lors des réunions avec le client ? Chefs techniques Développeurs Analystes | | | | La gestion veille-t-elle à ce que toutes les factions du client soient représentées dans les décisions concernant les fonctionnalités et l\u0026rsquo;opération ? | | | | Méthodes de gestion\nÉlément Oui Non NA Remarques Surveillance Des rapports structurés périodiques sont-ils établis ? L\u0026rsquo;information appropriée est-elle communiquée aux bonnes niveaux organisationnels ? Suivez-vous l\u0026rsquo;évolution par rapport au plan ? Gestion du personnel Les ressources humaines sont-elles formées et utilisées correctement ? Les membres du programme à tous les niveaux sont-ils conscients de leur situation par rapport au plan ? Assurance qualité Existe-t-il des procédures et des ressources adéquates pour assurer la qualité du produit ? Gestion de configuration Avez-vous un système de gestion de configuration adéquat ? La fonction de gestion de configuration est-elle suffisamment équipée ? Une coordination est-elle nécessaire avec un système installé ? (Si oui) La gestion de configuration du système installé est-elle adéquate ? Le système de gestion de configuration synchronise-t-il votre travail avec les modifications du site ? Environnement de travail\nÉlément Oui Non NA Remarques Attitude qualité Tous les niveaux du personnel sont-ils orientés vers les procédures qualité ? Le planning interfère-t-il avec la qualité ? Coopération Les personnes travaillent-elles ensemble de manière coopérative à travers les frontières fonctionnelles ? Les personnes travaillent-elles efficacement vers des objectifs communs ? L\u0026rsquo;intervention de la gestion est-elle parfois nécessaire pour faire travailler ensemble les personnes ? Communication Existe-t-il une mauvaise conscience de la mission ou des objectifs ; communication médiocre de l\u0026rsquo;information technique entre pairs et gestionnaires ? Moral Existe-t-il un environnement non productif, non créatif ? Les personnes ressentent-elles qu\u0026rsquo;il n\u0026rsquo;y a pas de reconnaissance ou de récompense pour un travail exceptionnel ? Contraintes du programme Ressources\nÉlément Oui Non NA Remarques Planning Le planning est-il stable ? Le planning est-il réaliste ? Y a-t-il quelque chose pour lequel un planning adéquat n\u0026rsquo;a pas été prévu ? Y a-t-il des dépendances externes susceptibles d\u0026rsquo;impacter le planning ? Personnel Y a-t-il des domaines où les compétences techniques requises sont absentes ? Avez-vous un personnel suffisant pour gérer le programme ? Le personnel est-il stable ? Avez-vous accès aux bonnes personnes quand vous en avez besoin ? Budget Le budget est-il stable ? Le budget est-il basé sur une estimation réaliste ? Y a-t-il quelque chose pour lequel un budget adéquat n\u0026rsquo;a pas été alloué ? Les changements de budget accompagnent-ils les changements d\u0026rsquo;exigences ? Installations Les installations de développement sont-elles adéquates ? L\u0026rsquo;environnement d\u0026rsquo;intégration est-il adéquat ? Contrat\nÉlément Oui Non NA Remarques Type de contrat Le type de contrat est-il une source de risque pour le programme ? (prix fixe, coût plus prime, etc.) La documentation requise est-elle lourde ? (quantité excessive, client exigeant, cycle d\u0026rsquo;approbation long) Restrictions Y a-t-il des problèmes liés aux droits sur les données ? Logiciel COTS ? Logiciel de développement ? Articles non développés ? Dépendances Le programme dépend-il de produits ou services externes ? Interfaces du programme Élément Oui Non NA Remarques \u0026mdash; \u0026mdash; \u0026mdash; \u0026mdash; \u0026mdash; Client Le cycle d\u0026rsquo;approbation du client est-il opportun ? Le client comprend-il les aspects techniques du système ? Le client comprend-il le logiciel ? Le client interfère-t-il avec le processus ou les personnes ? Quelle est l\u0026rsquo;efficacité de vos mécanismes pour parvenir à des accords avec le client ? La gestion présente-t-elle une image réaliste ou optimiste au client ? Direction d\u0026rsquo;entreprise Élément Oui Non NA Remarques \u0026mdash; \u0026mdash; \u0026mdash; \u0026mdash; \u0026mdash; Manque de soutien ou microgestion de la direction supérieure ? Fournisseurs Élément Oui Non NA Remarques \u0026mdash; \u0026mdash; \u0026mdash; \u0026mdash; \u0026mdash; Dépendez-vous des fournisseurs pour des livraisons de composants critiques ? (compilateurs, matériel, COTS) Politique Élément Oui Non NA Remarques \u0026mdash; \u0026mdash; \u0026mdash; \u0026mdash; \u0026mdash; La politique affecte-t-elle le programme ? (Entreprise, client) La politique affecte-t-elle les décisions techniques ? Autres Présence sur site Élément Oui Non NA Remarques \u0026mdash; \u0026mdash; \u0026mdash; \u0026mdash; \u0026mdash; Logistique Contraintes personnelles Visa Contrat Type de contrat Restrictions Chef de projet Chef de SQA du projet Chef de programme Date ","permalink":"https://www.shafiq.in/fr/blog/risk-assessment-checklist/","summary":"\u003cp\u003eLien de téléchargement : \u003ca href=\"/wp-content/uploads/2012/04/risk-assessment-checklist.doc\"\u003eFiche d\u0026rsquo;évaluation des risques\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eFiche d\u0026rsquo;évaluation des risques\u003c/p\u003e\n\u003cp\u003eNom du projet :\u003c/p\u003e\n\u003cp\u003eCode du projet :\u003c/p\u003e\n\u003cp\u003eChef de programme :\u003c/p\u003e\n\u003cp\u003eChef de projet :\u003c/p\u003e\n\u003cp\u003eProcessus d\u0026rsquo;ingénierie\nExigences\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003eÉlément\u003c/th\u003e\n          \u003cth\u003eOui\u003c/th\u003e\n          \u003cth\u003eNon\u003c/th\u003e\n          \u003cth\u003eNA\u003c/th\u003e\n          \u003cth\u003eRemarques\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eStabilité\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eLes exigences sont-elles stables ?\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eLes interfaces externes évoluent-elles ?\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eComplétude\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eY a-t-il des exigences que vous savez devoir figurer dans la spécification mais qui ne sont pas présentes ?\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e(Si oui) Pourrez-vous intégrer ces exigences dans le système ?\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eLe client a-t-il des exigences ou des attentes non écrites ?\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eLes interfaces externes sont-elles entièrement définies ?\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eClarté\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003ePouvez-vous comprendre les exigences telles qu\u0026rsquo;écrites ?\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eN\u0026rsquo;existe-t-il aucune ambiguïté ou problème d\u0026rsquo;interprétation ?\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eValidité\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eY a-t-il des exigences qui ne précisent pas ce que le client veut réellement ?\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eVous et le client comprenez-vous la même chose par les exigences ?\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eComment validez-vous les exigences ?\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eFaisabilité\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eY a-t-il des exigences techniques difficiles à implémenter ?\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003ePrécédent\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eLes exigences spécifient-elles quelque chose d\u0026rsquo;inédit ou que votre entreprise n\u0026rsquo;a jamais fait auparavant ?\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eÉchelle\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n      \u003ctr\u003e\n          \u003ctd\u003eLa taille et la complexité du système sont-elles préoccupantes ?\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003ePage 1 sur 10\nVersion No.1.0 / Date : 21-01-2012\nCopie de travail si imprimée\u003c/p\u003e","title":"Risk Assessment Checklist"},{"content":"Script Perl basique \u0026ldquo;Hello World\u0026rdquo; (hello.pl) Commençons par le commencement. Voici un script simple \u0026ldquo;Hello World\u0026rdquo; rédigé en Perl. Créez un nouveau fichier et nommez-le hello.pl.\n#!/usr/bin/perl use strict; use warnings; use diagnostics; print \u0026#34;-----------\\n\u0026#34;, \u0026#34;Hello World\\n\u0026#34;, \u0026#34;-----------\\n\u0026#34;; Dans ce script, nous utilisons les modules intégrés de Perl pour la gestion des erreurs (use strict; use warnings; use diagnostics;) afin de garantir que le code est robuste.\nPrésentation des liaisons Expect avec Perl (test.pl) Passons maintenant au sujet principal : comment utiliser les liaisons Expect dans un script Perl. Créez un autre fichier, test.pl, et ajoutez le code suivant :\n#!/usr/bin/perl use strict; use warnings; use diagnostics; use Expect; my $timeout = 5; # définir le délai d\u0026#39;attente à 5 secondes for my $i (1..20) { # boucle 20 fois my $exp = Expect-\u0026gt;spawn(\u0026#34;./hello.pl\u0026#34;) # exécuter le script hello.pl or die \u0026#34;Impossible de lancer le processus : $!\\n\u0026#34;; $exp-\u0026gt;expect($timeout); # attendre que le processus se termine } Dans cet exemple, la ligne Expect-\u0026gt;spawn(\u0026quot;./hello.pl\u0026quot;) exécute le script hello.pl, et nous utilisons la méthode expect pour attendre la fin de son exécution. Nous avons également défini un délai d\u0026rsquo;attente pour le script, afin d\u0026rsquo;éviter qu\u0026rsquo;il ne reste bloqué indéfiniment.\n","permalink":"https://www.shafiq.in/fr/blog/a-beginners-guide-to-perl-expect-bindings-a-simple-walkthrough/","summary":"\u003ch2 id=\"script-perl-basique-hello-world-hellopl\"\u003eScript Perl basique \u0026ldquo;Hello World\u0026rdquo; (hello.pl)\u003c/h2\u003e\n\u003cp\u003eCommençons par le commencement. Voici un script simple \u0026ldquo;Hello World\u0026rdquo; rédigé en Perl. Créez un nouveau fichier et nommez-le \u003ccode\u003ehello.pl\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-perl\" data-lang=\"perl\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"ch\"\u003e#!/usr/bin/perl\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003euse\u003c/span\u003e \u003cspan class=\"nn\"\u003estrict\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003euse\u003c/span\u003e \u003cspan class=\"nn\"\u003ewarnings\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003euse\u003c/span\u003e \u003cspan class=\"nn\"\u003ediagnostics\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eprint\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;-----------\\n\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"s\"\u003e\u0026#34;Hello World\\n\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e      \u003cspan class=\"s\"\u003e\u0026#34;-----------\\n\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eDans ce script, nous utilisons les modules intégrés de Perl pour la gestion des erreurs (\u003ccode\u003euse strict; use warnings; use diagnostics;\u003c/code\u003e) afin de garantir que le code est robuste.\u003c/p\u003e\n\u003ch2 id=\"présentation-des-liaisons-expect-avec-perl-testpl\"\u003ePrésentation des liaisons Expect avec Perl (test.pl)\u003c/h2\u003e\n\u003cp\u003ePassons maintenant au sujet principal : comment utiliser les liaisons Expect dans un script Perl. Créez un autre fichier, \u003ccode\u003etest.pl\u003c/code\u003e, et ajoutez le code suivant :\u003c/p\u003e","title":"A Beginner's Guide to Perl Expect Bindings - A Simple Walkthrough"},{"content":"Nokia 8800 Sirocco Ce téléphone est un véritable classique. Reconnu pour son design élégant en acier inoxydable et son mécanisme de glissement fluide, le Nokia 8800 Sirocco était autant une déclaration de style qu’un téléphone portable.\nNokia 8600 Luna Le Nokia 8600 Luna éblouissait les utilisateurs grâce à son extérieur en verre fumé et à son clavier illuminé. Il incarnait parfaitement la fusion entre art et technologie, donnant un aperçu de ce qu’un téléphone design devrait être.\nLG KE850 Prada Avant que les smartphones ne dominent le marché, le LG KE850 Prada était en avance sur son époque grâce à son interface tactile. Conçu en collaboration avec la maison de couture Prada, ce téléphone était l’incarnation même du style et de l’innovation.\nNokia 8800 Arte Le Nokia 8800 Arte affichait un cadre en acier résistant aux rayures et un écran OLED époustouflant. Ce téléphone n’était pas seulement beau : il offrait une expérience utilisateur exceptionnelle grâce à son interface intuitive.\nSamsung Armani Conçu en partenariat avec Giorgio Armani, ce téléphone était tout entier consacré à la luxure. Avec son design élégant et ses matériaux de haute qualité, le Samsung Armani était un téléphone qui faisait tourner les têtes.\nO2 Cocoon L’O2 Cocoon se distinguait par son design futuriste et son écran externe LED pouvant afficher des notifications, voire servir d’horloge de chevet. C’était un téléphone qui pensait en dehors des sentiers battus, pour le moins.\nLG KF750 Secret Le LG KF750 Secret alliait style et substance grâce à son corps en fibre de carbone et à son clavier numérique coulissant. Il était également l’un des premiers téléphones à intégrer un appareil photo de 5 mégapixels, ce qui était alors un véritable événement.\nNokia 8800 Carbon Arte Suite au Arte, le Carbon Arte améliorait son prédécesseur en ajoutant une plaque arrière en fibre de carbone, le rendant à la fois léger et robuste.\nNokia 8800 Gold Arte Plaqué or et extravagant, le Nokia 8800 Gold Arte était le symbole ultime du statut. Ce n’était pas seulement un téléphone ; c’était une pièce d’art.\nMotorola Aura Le Motorola Aura a bousculé les conventions avec son écran circulaire et ses engrenages de montre fabriqués en Suisse. Ce n’était pas seulement un téléphone ; c’était une œuvre d’art.\nLG BL40 New Chocolate Avec sa forme allongée et son écran large, le LG BL40 New Chocolate était conçu pour les amateurs de multimédia souhaitant une expérience visuelle unique sur leur téléphone.\nSony Ericsson XPERIA Pureness Le XPERIA Pureness a attiré l’attention grâce à son écran transparent, faisant de ce téléphone une merveille de conception et d’ingénierie.\nNokia 7900 Prism Connu pour ses motifs géométriques distinctifs et ses lumières LED personnalisables, le Nokia 7900 Prism se démarquait par son esthétique unique.\nSamsung Serenata En collaboration avec Bang \u0026amp; Olufsen, le Samsung Serenata était conçu pour les audiophiles, offrant une qualité sonore premium accompagnée d’un design original avec sa molette de défilement.\nSamsung M7500 Emporio Armani Pour clore la liste, voici un autre partenariat Samsung-Armani, le M7500 Emporio Armani. Ce téléphone combinait fonctionnalité et mode, offrant aux utilisateurs un appareil élégant et pratique.\n","permalink":"https://www.shafiq.in/fr/blog/some-of-my-favourite-cell-phones/","summary":"\u003ch3 id=\"nokia-8800-sirocco\"\u003eNokia 8800 Sirocco\u003c/h3\u003e\n\u003cp\u003eCe téléphone est un véritable classique. Reconnu pour son design élégant en acier inoxydable et son mécanisme de glissement fluide, le Nokia 8800 Sirocco était autant une déclaration de style qu’un téléphone portable.\u003c/p\u003e\n\u003ch3 id=\"nokia-8600-luna\"\u003eNokia 8600 Luna\u003c/h3\u003e\n\u003cp\u003eLe Nokia 8600 Luna éblouissait les utilisateurs grâce à son extérieur en verre fumé et à son clavier illuminé. Il incarnait parfaitement la fusion entre art et technologie, donnant un aperçu de ce qu’un téléphone design devrait être.\u003c/p\u003e","title":"Some of my favourite cell phones"},{"content":"Maîtriser l\u0026rsquo;art de la livraison continue, c\u0026rsquo;est bien plus que de simplement déployer du code sur un serveur. C\u0026rsquo;est un équilibre délicat entre gérer sa technologie et les personnes qui interagissent avec elle. Un obstacle majeur ? Les petites différences entre machines qui surviennent quand quelqu\u0026rsquo;un décide de faire des modifications ad hoc. Ces différences peuvent sembler anodines, mais elles peuvent provoquer de sérieux problèmes lors du débogage et du dépannage.\nL\u0026rsquo;objectif final est clair : créer un système si optimisé qu\u0026rsquo;il n\u0026rsquo;y a plus besoin de se connecter manuellement pour apporter des modifications. Atteindre cet objectif signifie moins de bogues, des déploiements plus rapides, et en fin de compte, une équipe plus heureuse.\n","permalink":"https://www.shafiq.in/fr/blog/navigating-the-obstacles-of-continuous-delivery/","summary":"\u003cp\u003eMaîtriser l\u0026rsquo;art de la livraison continue, c\u0026rsquo;est bien plus que de simplement déployer du code sur un serveur. C\u0026rsquo;est un équilibre délicat entre gérer sa technologie et les personnes qui interagissent avec elle. Un obstacle majeur ? Les petites différences entre machines qui surviennent quand quelqu\u0026rsquo;un décide de faire des modifications ad hoc. Ces différences peuvent sembler anodines, mais elles peuvent provoquer de sérieux problèmes lors du débogage et du dépannage.\u003c/p\u003e","title":"Navigating the Obstacles of Continuous Delivery"},{"content":"vmstat -s -SM | grep \u0026#34;mémoire libre\u0026#34; | awk -F\u0026#34; \u0026#34; \u0026#39;{print$1}\u0026#39; ","permalink":"https://www.shafiq.in/fr/blog/one-liner-to-get-available-virtual-memory/","summary":"\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003evmstat -s -SM \u003cspan class=\"p\"\u003e|\u003c/span\u003e grep \u003cspan class=\"s2\"\u003e\u0026#34;mémoire libre\u0026#34;\u003c/span\u003e \u003cspan class=\"p\"\u003e|\u003c/span\u003e awk -F\u003cspan class=\"s2\"\u003e\u0026#34; \u0026#34;\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;{print$1}\u0026#39;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","title":"One liner: To get available virtual memory"},{"content":"Abstract L\u0026rsquo;utilisation de la conception d\u0026rsquo;écran et des systèmes est influencée par divers facteurs, tels que la quantité d\u0026rsquo;information présentée, l\u0026rsquo;organisation de l\u0026rsquo;écran, le langage utilisé et la distinction des composants d\u0026rsquo;écran. Cet article explore les principes de conception d\u0026rsquo;écran et propose d\u0026rsquo;améliorer l\u0026rsquo;interaction homme-machine grâce à la biométrie cognitive et aux technologies neuronales.\nIntroduction L\u0026rsquo;interaction homme-machine est essentielle dans divers secteurs et dans la vie quotidienne. Elle se concentre sur la manière dont les humains interagissent et contrôlent les systèmes informatiques, en vue de rendre cette interaction plus confortable et efficace. L\u0026rsquo;interface ou l\u0026rsquo;écran joue un rôle crucial dans cette interaction, et concevoir un écran permettant aux utilisateurs de terminer leurs tâches confortablement est vital. Un écran bien conçu reflète les capacités, les besoins et les tâches des utilisateurs, tout en tenant compte des contraintes matérielles et en atteignant les objectifs commerciaux. Comprendre les principes de conception d\u0026rsquo;écran est essentiel pour les concepteurs afin d\u0026rsquo;atteindre ces objectifs.\nProblème Bien que l\u0026rsquo;interaction homme-machine a évolué pour permettre une interaction tactile directe, elle nécessite encore un travail moteur impliquant les mains. Cet article traite du problème des normes actuelles qui reposent sur les mains ou le travail moteur, ce qui n\u0026rsquo;est pas toujours souhaitable.\nMon idée Pour réduire ou éliminer le besoin de travail moteur dans l\u0026rsquo;interaction homme-machine, on peut utiliser des techniques de biométrie cognitive. Cet article propose d\u0026rsquo;utiliser une interface cerveau-machine, où les utilisateurs interagissent avec l\u0026rsquo;ordinateur par leurs pensées. En combinant les techniques de biométrie cognitive avec les principes de conception d\u0026rsquo;écran, les utilisateurs peuvent interagir efficacement avec le système de manière sans main. Comprendre les principes de conception d\u0026rsquo;écran est essentiel pour mettre en œuvre cette idée.\nObjectifs de conception d\u0026rsquo;écran Pour créer une interface facile et agréable, les objectifs de conception doivent se concentrer sur la réduction du travail visuel, intellectuel, mémoire et moteur. En atteignant ces objectifs, la productivité et la satisfaction des utilisateurs peuvent être améliorées.\nOrganisation claire et significative des éléments d\u0026rsquo;écran La clarté visuelle est obtenue lorsque les éléments d\u0026rsquo;écran sont organisés de manière significative et compréhensible. Cela implique une cohérence dans la conception, une composition visuellement agréable, un ordre logique, une présentation de la quantité appropriée d\u0026rsquo;information, ainsi qu\u0026rsquo;un regroupement et un alignement corrects. Il faut éviter le désordre visuel pour assurer des éléments clairs et distincts.\nOrdre des données et du contenu de l\u0026rsquo;écran Les informations doivent être organisées de manière logique et sensée, en tenant compte des relations entre elles. Les unités d\u0026rsquo;écran doivent être ordonnées selon les attentes et les besoins des utilisateurs. Il faut faciliter la comparaison des informations et éviter les informations inutiles.\nNavigation et flux de l\u0026rsquo;écran La navigation sur l\u0026rsquo;écran doit être intuitive et simple. L\u0026rsquo;alignement des éléments de contrôle et l\u0026rsquo;utilisation de bordures peuvent guider l\u0026rsquo;œil de l\u0026rsquo;utilisateur. L\u0026rsquo;attention doit être attirée sur les parties les plus importantes de l\u0026rsquo;écran en utilisant diverses techniques d\u0026rsquo;affichage.\nComposition visuellement agréable Une composition visuellement agréable aide à attirer l\u0026rsquo;attention et à transmettre un message positif. L\u0026rsquo;équilibre, la symétrie et les lignes visuelles contribuent à l\u0026rsquo;attractivité et à l\u0026rsquo;efficacité d\u0026rsquo;une composition.\nQuantité d\u0026rsquo;information Présenter la quantité appropriée d\u0026rsquo;information est crucial. Trop peu d\u0026rsquo;information peut être inefficace, tandis que trop d\u0026rsquo;information peut être accablant. Les informations importantes doivent être présentées de manière marquée, et la taille de la page doit être limitée.\nTaille de la page web La taille de la page web doit être réduite au minimum, en limitant le contenu à deux ou trois écrans. Les informations critiques doivent être placées en haut de la page pour une visibilité facile.\nDéfilement et pagination Le défilement doit être minimisé, et des indices contextuels doivent indiquer le besoin de défiler pour accéder à tout le contenu. Des structures de page claires et des indications cohérentes à la fin de la page doivent être fournies.\nDistinction Les contrôles d\u0026rsquo;écran et les groupes doivent être visuellement distincts. Des bordures doivent séparer les contrôles d\u0026rsquo;écran, et les éléments adjacents doivent avoir un contraste suffisant. La distinction peut être renforcée par la séparation et le contraste.\nFocus et mise en évidence Les éléments importants et les idées centrales doivent être mis en évidence visuellement en utilisant des techniques comme la luminosité, la taille de police, le soulignement, les couleurs contrastées et le positionnement. Il faut éviter de surméticuler les éléments ou d\u0026rsquo;utiliser trop de techniques.\nTransmettre la profondeur des niveaux ou un aspect tridimensionnel Créer une apparence tridimensionnelle en utilisant la perspective, l\u0026rsquo;ombrage et le surbrillance peut améliorer l\u0026rsquo;aspect visuel. Afficher les boutons de commande au-dessus du plan de l\u0026rsquo;écran et les contrôles d\u0026rsquo;écran au-dessous du plan de l\u0026rsquo;écran peut ajouter de la profondeur.\nPrésentation de l\u0026rsquo;information de manière simple et significative L\u0026rsquo;information doit être présentée de manière lisible et compréhensible. L\u0026rsquo;utilisation de caractéristiques d\u0026rsquo;affichage contrastées, la création de lignes visuelles, la maintien de la cohérence et la fourniture d\u0026rsquo;une structure améliorent l\u0026rsquo;utilité de l\u0026rsquo;information.\nLignes directrices pour l\u0026rsquo;organisation et la structure Des lignes directrices spécifiques pour les types d\u0026rsquo;écran, tels que les écrans d\u0026rsquo;entrée et de modification, les documents sources dédiés et les écrans d\u0026rsquo;affichage/lecture seule, nécessitent des directives d\u0026rsquo;organisation et de structure adaptées à leur objectif.\nLecture, navigation et recherche sur le web Les pages web sont généralement parcourues dans le sens horaire, les utilisateurs se concentrant sur le contenu plutôt que sur les éléments périphériques. Des lignes directrices pour le balayage, la navigation et la recherche peuvent améliorer l\u0026rsquo;expérience utilisateur et la récupération d\u0026rsquo;information.\nInteraction via une interface cerveau-machine Cet article explore le concept d\u0026rsquo;une interface cerveau-machine, où les utilisateurs contrôlent les systèmes à l\u0026rsquo;aide de leurs pensées. Cette interface détecte les signaux cérébraux à l\u0026rsquo;aide d\u0026rsquo;électrodes fixées sur le crâne ou implantées dans la matière grise. Les signaux sont traités par un logiciel informatique, permettant aux utilisateurs d\u0026rsquo;interagir avec le système sans effort. L\u0026rsquo;interface doit être pratique, confortable et accessible aux personnes handicapées physiquement.\nAvantages Concevoir une interface basée sur une interface cerveau-machine offre plusieurs avantages. Elle offre une méthode d\u0026rsquo;interaction pratique pour les personnes handicapées physiquement et réduit le temps nécessaire pour accomplir des tâches par rapport aux méthodes d\u0026rsquo;entrée traditionnelles. Elle réduit également le stress, la charge mémoire et la frustration causées par des temps de réponse lents.\nL\u0026rsquo;interaction homme-machine joue un rôle crucial dans divers secteurs et dans la vie quotidienne. Une interaction efficace est essentielle pour le confort des utilisateurs et le succès des entreprises. Concevoir des logiciels et des sites web en appliquant des principes de conception d\u0026rsquo;écran efficaces est crucial. Combiner la biométrie cognitive et les technologies neuronales à l\u0026rsquo;interaction homme-machine peut considérablement améliorer l\u0026rsquo;expérience utilisateur. L\u0026rsquo;interface cerveau-machine offre un moyen facile et pratique d\u0026rsquo;interagir avec les systèmes. Cette combinaison de technologies et de principes crée une méthode d\u0026rsquo;interaction puissante et efficace.\n","permalink":"https://www.shafiq.in/fr/blog/effective-human-computer-interaction-through-cognitive-biometrics/","summary":"\u003ch1 id=\"abstract\"\u003eAbstract\u003c/h1\u003e\n\u003cp\u003eL\u0026rsquo;utilisation de la conception d\u0026rsquo;écran et des systèmes est influencée par divers facteurs, tels que la quantité d\u0026rsquo;information présentée, l\u0026rsquo;organisation de l\u0026rsquo;écran, le langage utilisé et la distinction des composants d\u0026rsquo;écran. Cet article explore les principes de conception d\u0026rsquo;écran et propose d\u0026rsquo;améliorer l\u0026rsquo;interaction homme-machine grâce à la biométrie cognitive et aux technologies neuronales.\u003c/p\u003e\n\u003ch2 id=\"introduction\"\u003eIntroduction\u003c/h2\u003e\n\u003cp\u003eL\u0026rsquo;interaction homme-machine est essentielle dans divers secteurs et dans la vie quotidienne. Elle se concentre sur la manière dont les humains interagissent et contrôlent les systèmes informatiques, en vue de rendre cette interaction plus confortable et efficace. L\u0026rsquo;interface ou l\u0026rsquo;écran joue un rôle crucial dans cette interaction, et concevoir un écran permettant aux utilisateurs de terminer leurs tâches confortablement est vital. Un écran bien conçu reflète les capacités, les besoins et les tâches des utilisateurs, tout en tenant compte des contraintes matérielles et en atteignant les objectifs commerciaux. Comprendre les principes de conception d\u0026rsquo;écran est essentiel pour les concepteurs afin d\u0026rsquo;atteindre ces objectifs.\u003c/p\u003e","title":"Effective human-computer interaction through cognitive biometrics"},{"content":"Téléchargez le guide complet : Document complet sur le flux OTC\nLa gestion d’un processus Order-to-Cash (OTC) peut s’avérer complexe, mais elle constitue un élément essentiel de toute opération commerciale. Dans le monde d’SAP, comprendre comment gérer efficacement ce flux peut considérablement améliorer vos processus métier. Voici un guide étape par étape pour naviguer à travers les étapes de commande de vente, livraison et facturation dans SAP.\n1. Création d\u0026rsquo;une commande de vente Détails essentiels :\nCode société : 4700 Type de document de vente : ZOR Zone de vente : 4700/10/10 Étapes :\nAu niveau de l’en-tête :\nRemplir le champ \u0026ldquo;Vendu à\u0026rdquo; avec 1000991 Remplir le champ \u0026ldquo;Expédié à\u0026rdquo; avec 1000991 Pour le numéro de bon de commande, vous pouvez entrer « Test » Le mode de paiement doit être saisi comme 0001 Au niveau de l’article :\nSaisir le code matière : 1000309 Saisir la quantité commandée : 1 Entrer le code usine : 4702 Appuyer sur la touche « Entrée » Passer à la facturation article :\nSpécifier les conditions INCOTerms comme CFR (Coût et Frais) Enregistrer vos modifications 2. Gestion de la livraison Détails essentiels :\nType de document de livraison : ZLF T-Code : VL01N Étapes :\nSaisir le point d’expédition : 4702\nSaisir le numéro de document de vente précédemment généré\nRemarque : Assurez-vous de définir la date de livraison. (Cette date doit être extraite des lignes d’horaire de la commande de vente.)\nAppuyer sur « Entrée », puis :\nSaisir la quantité de prélèvement et l’emplacement de stockage Cliquer sur « Enregistrer l’émission des marchandises » 3. Gestion de la facturation Détails essentiels :\nType de document de facturation : F2 T-Code : VF01 Étapes :\nSaisir le numéro du document de livraison généré précédemment Cliquer sur « Entrée », puis enregistrer Pour afficher le document de facturation, accéder à T-Code : VF03 Saisir le numéro du document de facturation (il doit être visible à partir des étapes précédentes) Accéder à l’onglet « Document comptable » pour obtenir une vue complète Pour plus de précisions, vous pouvez consulter les captures d’écran disponibles ici.\n","permalink":"https://www.shafiq.in/fr/blog/a-comprehensive-guide-to-otc-flow-in-sap/","summary":"\u003cp\u003eTéléchargez le guide complet : \u003ca href=\"/wp-content/uploads/2011/11/otc-flow.doc\"\u003eDocument complet sur le flux OTC\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eLa gestion d’un processus Order-to-Cash (OTC) peut s’avérer complexe, mais elle constitue un élément essentiel de toute opération commerciale. Dans le monde d’SAP, comprendre comment gérer efficacement ce flux peut considérablement améliorer vos processus métier. Voici un guide étape par étape pour naviguer à travers les étapes de commande de vente, livraison et facturation dans SAP.\u003c/p\u003e\n\u003ch3 id=\"1-création-dune-commande-de-vente\"\u003e1. Création d\u0026rsquo;une commande de vente\u003c/h3\u003e\n\u003cp\u003e\u003cstrong\u003eDétails essentiels :\u003c/strong\u003e\u003c/p\u003e","title":"A Comprehensive Guide to OTC Flow in SAP"},{"content":"Téléchargez le guide : Guide PDF Order to Cash\nIntroduction au processus Order-to-Cash (OTC) Order-to-Cash, souvent abrégé en OTC, est un processus commercial essentiel qui commence lorsque le client passe une commande et se termine lorsque le paiement est reçu et enregistré. Il englobe une série d\u0026rsquo;étapes telles que la création de commande, la livraison, la facturation et la collecte de paiement. Décomposons-le en ces sept sous-processus clés :\nEngagement client : La manière dont vous interagissez avec vos clients. Saisie de commande : La prise et la journalisation de la commande du client. Exécution de commande : La livraison de la commande, soit numériquement, soit physiquement. Distribution : La logistique et l\u0026rsquo;expédition de la commande. Facturation : La génération d\u0026rsquo;une facture pour le client. Collecte de paiement : La réception de l\u0026rsquo;argent du client. Enregistrement du règlement : La documentation du paiement reçu. Pourquoi le processus Order-to-Cash est-il important ? Le processus OTC est crucial pour de nombreuses entreprises car il représente l\u0026rsquo;expérience client complète, de la première interaction au paiement final. Les entreprises utilisent souvent des systèmes ERP comme SAP pour simplifier ce processus. Ces systèmes automatisent non seulement diverses tâches, mais effectuent également des fonctions essentielles telles que les vérifications de crédit, les contrôles de disponibilité, etc.\nWorkflow détaillé OTC Pour mieux comprendre, examinons les étapes clés :\nDevis commercial : Proposition de prix et de conditions initiales. Commande standard : Le client passe une commande basée sur le devis. Expédition : Préparation de l’expédition. Livraison : Envoi des produits. Prélèvement : Sélection des articles appropriés dans le stock. Émission de marchandises : Enregistrement du départ des articles du entrepôt. Facturation : Création et envoi de la facture. Paiement client : Réception et enregistrement du paiement. Domaines impactés par OTC Cinq domaines fonctionnels interagissent généralement avec le cycle OTC :\nRelations clients : La manière dont vous acquérez et fidélisez vos clients. Gestion des commandes : Les aspects administratifs de la prise de commande. Chaîne d’approvisionnement : La manière dont le produit passe de vous au client. Gestion financière : La facturation et la collecte de paiement. Comptabilité : La conciliation et la production de rapports financiers. Automatisation et systèmes ERP Une manière d\u0026rsquo;améliorer le processus OTC consiste à automatiser certaines étapes. Les solutions ERP, comme SAP, aident les entreprises à fluidifier leur processus OTC en intégrant différentes fonctionnalités telles que la saisie de commande, la gestion des stocks et la comptabilité financière. Automatiser vos processus OTC conduit à une réduction des erreurs humaines, une exécution plus rapide et une meilleure efficacité opérationnelle.\nIndicateurs de performance Les entreprises cherchent toujours à améliorer leur processus OTC. Les indicateurs clés de performance (KPI) peuvent inclure des métriques liées à la précision des commandes, à la livraison à temps, ainsi que des chiffres financiers comme les Jours de Ventes Impayées (DSO).\nFonctionnalités techniques des plateformes OTC Si vous envisagez une plateforme OTC solide, recherchez :\nAutomatisation des processus : Réduction des tâches manuelles et des erreurs. Gestion des données : Traitement intelligent des données et des exceptions. Gestion d\u0026rsquo;état : Suivi de chaque étape de la transaction. Gestion des exceptions : Traitement efficace des erreurs et des annulations. Analyse coût-bénéfice : Un scénario hypothétique Imaginez une entreprise dépensant environ 200 heures-homme par an pour tester manuellement le processus OTC. Automatiser ce processus pourrait nécessiter 80 heures de configuration initiale, mais réduire les heures-homme annuelles à 35. C’est clairement un avantage pour l’automatisation.\nExemple rapide de processus OTC (technique) Voici un exemple rapide pour ceux intéressés par les détails techniques :\nCréation d\u0026rsquo;une commande de vente dans SAP Code société : 4700\nType de document de vente : ZOR\nSaisissez les informations du client et de la commande. Gestion de la livraison Type de document de livraison : ZLF Saisissez le point d’expédition et d’autres détails pertinents. Facturation Type de document de facturation : F2 Générez la facture et terminez la transaction financière. Ce guide vise à fournir une compréhension complète du processus OTC, de son importance et de la manière dont l’automatisation et les systèmes ERP peuvent le rendre plus efficace. Les entreprises souhaitant rester compétitives devraient continuellement analyser et améliorer leurs processus Order-to-Cash.\n","permalink":"https://www.shafiq.in/fr/blog/the-comprehensive-guide-to-order-to-cash-otc-process/","summary":"\u003cp\u003eTéléchargez le guide : \u003ca href=\"/wp-content/uploads/2011/11/12order-to-cash.pdf\"\u003eGuide PDF Order to Cash\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"introduction-au-processus-order-to-cash-otc\"\u003eIntroduction au processus Order-to-Cash (OTC)\u003c/h2\u003e\n\u003cp\u003eOrder-to-Cash, souvent abrégé en OTC, est un processus commercial essentiel qui commence lorsque le client passe une commande et se termine lorsque le paiement est reçu et enregistré. Il englobe une série d\u0026rsquo;étapes telles que la création de commande, la livraison, la facturation et la collecte de paiement. Décomposons-le en ces sept sous-processus clés :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eEngagement client\u003c/strong\u003e : La manière dont vous interagissez avec vos clients.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSaisie de commande\u003c/strong\u003e : La prise et la journalisation de la commande du client.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eExécution de commande\u003c/strong\u003e : La livraison de la commande, soit numériquement, soit physiquement.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDistribution\u003c/strong\u003e : La logistique et l\u0026rsquo;expédition de la commande.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFacturation\u003c/strong\u003e : La génération d\u0026rsquo;une facture pour le client.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCollecte de paiement\u003c/strong\u003e : La réception de l\u0026rsquo;argent du client.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEnregistrement du règlement\u003c/strong\u003e : La documentation du paiement reçu.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"pourquoi-le-processus-order-to-cash-est-il-important-\"\u003ePourquoi le processus Order-to-Cash est-il important ?\u003c/h2\u003e\n\u003cp\u003eLe processus OTC est crucial pour de nombreuses entreprises car il représente l\u0026rsquo;expérience client complète, de la première interaction au paiement final. Les entreprises utilisent souvent des systèmes ERP comme SAP pour simplifier ce processus. Ces systèmes automatisent non seulement diverses tâches, mais effectuent également des fonctions essentielles telles que les vérifications de crédit, les contrôles de disponibilité, etc.\u003c/p\u003e","title":"The Comprehensive Guide to Order-to-Cash (OTC) Process"},{"content":"Naviguer les méthodologies dans les projets SAP Dans l\u0026rsquo;évolution du développement logiciel, particulièrement pour les systèmes d\u0026rsquo;entreprise comme SAP, comprendre la méthodologie qui pilote votre projet est essentiel. Des acteurs majeurs comme Deloitte Consulting et IBM proposent des cadres propriétaires comme Thread Manager et Ascendant™ pour vous guider. SAP elle-même offre sa méthodologie Roadmap via sa plateforme Solution Manager. Ces cadres sont également soutenus par des normes établies comme celles de l\u0026rsquo;IEEE et du Département de la Défense des États-Unis.\nLes petites entreprises sans méthodologie définie peuvent également trouver des repères dans des modèles classiques du développement logiciel comme les approches en cascade, en spirale ou évolutive. Ces modèles sont assez souples pour s\u0026rsquo;adapter à différentes portées de projet et à divers niveaux de stabilité des exigences. Si votre organisation a déjà une expérience réussie dans d\u0026rsquo;autres projets logiciels à grande échelle, cette expérience peut s\u0026rsquo;avérer précieuse pour façonner votre mise en œuvre SAP.\nL\u0026rsquo;essentiel ? Assurez-vous que votre méthodologie choisie offre une orientation suffisante pour tester votre système ERP. Certains cadres conçus pour développer des logiciels de zéro peuvent ne pas convenir aux solutions « clés en main » comme SAP. Le test en phase avec les méthodologies projet Quelle que soit la présence ou non d\u0026rsquo;une méthodologie formelle dans votre projet, une attention méticuleuse doit être portée à l\u0026rsquo;alignement de vos activités de test avec votre approche globale. Les responsables de test doivent se concentrer sur la création de plans de test complets qui respectent la méthodologie générale du projet afin de répondre efficacement aux critères de test.\nLes limites du test manuel Bien que le test manuel soit une option courante pour de nombreux projets, il présente toutefois des inconvénients :\nTemps consommateur : La documentation et l\u0026rsquo;exécution de chaque test manuellement peuvent allonger les délais. Complexité croissante : La complexité croissante des environnements informatiques exige une couverture de test plus poussée, poussant les équipes vers le test automatisé. Globalisation : Les équipes réparties géographiquement exigent des processus standardisés que le test manuel peine à fournir. Problèmes de documentation : Sans automatisation, maintenir la documentation synchronisée avec le processus de test devient une tâche colossale. Prone aux erreurs : Les tests manuels sont plus sujets aux erreurs humaines que les tests automatisés. Enregistrement et lecture : pas une solution miracle Les outils automatisés de test par enregistrement et lecture peuvent sembler être une solution rapide, mais ils déçoivent souvent à long terme. Ces scripts sont étroitement liés à des fonctionnalités ou éléments spécifiques de l\u0026rsquo;application, ce qui les rend fragiles et difficiles à maintenir à mesure de l\u0026rsquo;évolution du logiciel. L\u0026rsquo;effort initial nécessaire pour adapter et annoter ces scripts bruts dépasse souvent les bénéfices attendus, contredisant ainsi l\u0026rsquo;objectif même de l\u0026rsquo;automatisation.\nTrouver l\u0026rsquo;équilibre : des questions à se poser Avant d\u0026rsquo;automatiser tout, demandez-vous :\nVos tests manuels actuels sont-ils rentables ? Pourrait-on simplifier ou réviser certains tests pour les rendre plus gérables ? L\u0026rsquo;ajout de testeurs supplémentaires soulagerait-il la charge ? Les procédures de test sont-elles claires et bien comprises par l\u0026rsquo;équipe ? Utiliser des outils pour comparer les résultats de test Des utilitaires de comparaison sont disponibles non seulement dans des outils dédiés au test, mais aussi dans la plupart des systèmes d\u0026rsquo;exploitation. Ces outils peuvent être d\u0026rsquo;une grande aide pour évaluer les résultats de test et constituent une étape intermédiaire vers une automatisation plus poussée.\nLa documentation des tests : un aspect négligé La tenue d\u0026rsquo;un registre détaillé est indispensable. La documentation des tests varie du plan de test de niveau management aux scripts de test très précis. Les outils automatisés peuvent offrir des solutions aux problèmes de documentation, mais l\u0026rsquo;élément essentiel reste d\u0026rsquo;avoir un processus bien défini dès le départ.\nQuand automatiser ? Aucune crise organisationnelle en cours Une personne dédiée chargée du choix et de la mise en œuvre des outils Une insatisfaction vis-à-vis des pratiques de test actuelles Un soutien clair de la direction pour l\u0026rsquo;investissement dans les outils et l\u0026rsquo;amélioration des processus Si ces conditions ne sont pas réunies, cela ne signifie pas que l\u0026rsquo;automatisation est impossible. Cela indique simplement que vous devrez peut-être vous investir davantage pour la réussite de sa mise en œuvre.\nBien que les outils automatisés puissent grandement aider le processus de test, ils ne sont pas une panacée. Une approche équilibrée, alignée sur les besoins propres à votre organisation et les spécificités de votre mise en œuvre SAP, est essentielle pour une réussite à long terme.\n","permalink":"https://www.shafiq.in/fr/blog/evaluating-modern-testing-practices-a-comprehensive-look/","summary":"\u003ch2 id=\"naviguer-les-méthodologies-dans-les-projets-sap\"\u003eNaviguer les méthodologies dans les projets SAP\u003c/h2\u003e\n\u003cp\u003eDans l\u0026rsquo;évolution du développement logiciel, particulièrement pour les systèmes d\u0026rsquo;entreprise comme SAP, comprendre la méthodologie qui pilote votre projet est essentiel. Des acteurs majeurs comme Deloitte Consulting et IBM proposent des cadres propriétaires comme Thread Manager et Ascendant™ pour vous guider. SAP elle-même offre sa méthodologie Roadmap via sa plateforme Solution Manager. Ces cadres sont également soutenus par des normes établies comme celles de l\u0026rsquo;IEEE et du Département de la Défense des États-Unis.\u003c/p\u003e","title":"Evaluating Modern Testing Practices: A Comprehensive Look"},{"content":"Lien de téléchargement : [Staying Online print 1.doc][1]\nINTRODUCTION\nRester en ligne\nDans les années 80, les Bee Gees chantaient « Staying\u0026rsquo; Alive ». Dans le langage d’aujourd’hui, cela s’exprimerait mieux par « Staying\u0026rsquo; Online » ! À part les références un peu clichées, le fait est que rester connecté et créer une forte empreinte numérique sont les deux éléments les plus importants pour des gains personnels et professionnels.\nQu’est-ce qu’une empreinte numérique ? S’agit-il simplement d’obtenir une adresse e-mail ? De créer un site ? De son comportement en ligne ? En réalité, c’est tout cela et bien plus encore. C’est presque comme créer son identité en ligne, tout comme dans le monde hors ligne.\nTout comme dans le monde réel, Internet vous offre diverses plates-formes pour vous exprimer, interagir, débattre et apprendre. Certaines de ces plates-formes sont faciles à trouver, d’autres nécessitent de faire partie d’un réseau qui n’est possible qu’après avoir passé une quantité substantielle de temps avec les membres de ces réseaux. Les avantages ici sont énormes.\nTout comme dans la vie personnelle, votre vie professionnelle peut aussi bénéficier considérablement d’une bonne empreinte numérique. Être membre de sites de réseautage créés à des fins professionnelles, voire obtenir du travail en ligne, sont des façons d’utiliser correctement votre identité en ligne.\nMais comment faire cela ? Quel est le bon comportement en ligne ? Comment créer mon site ? N’est-ce pas coûteux ? Des questions comme celles-ci doivent sans doute vous traverser l’esprit. Ne vous inquiétez pas ! Nous avons tenté ici de répondre à presque tout ce que vous pourriez vouloir savoir.\nLes sujets de notre projet vont de la création de votre empreinte numérique à la manière dont vous pouvez l’utiliser au mieux, en passant par l’adhésion à des forums, la raison de créer votre propre blog et les bénéfices qu’il peut vous apporter.\nQuelle est la bonne manière de communiquer ? Comment rédiger un e-mail ? Existe-t-il une mauvaise façon de le faire ? Oui, il y en a. Les netiquettes (règles de politesse à suivre en ligne) sont essentielles. En outre, des sujets comme la mise en place et la conception de votre propre site web vous permettront de créer une empreinte numérique professionnelle.\nMais rappelez-vous, comme dans le monde réel, vous n’êtes bon que de la réputation que vous avez. Travaillez dur pour la maintenir. Et vous serez accueilli à bras ouverts dans le monde du web.\nVous et l’Internet\nQu’il soit possible de vivre dans l’espace ou sur Mars est encore débattu. Mais la vie dans l’espace numérique est déjà une réalité. Comme dans le monde réel, pour exister dans le monde virtuel, il est important que vous créiez votre identité, un historique, une réputation, et que vous la mainteniez. Dans ce chapitre, nous tentons de trouver des moyens de faire exactement cela.\n1.1 Créer votre empreinte numérique\nL’espace numérique est une vaste mer de personnes… des personnes réelles dans le monde virtuel. Tout le monde est le bienvenu, mais qui faire confiance est quelque chose que personne ne peut dire avec certitude. « Des moutons en habits de loups » est plus vrai qu’on ne le pense ici. La clé pour créer votre empreinte numérique est de vous assurer de ne pas devenir l’un de ces moutons : que vous parveniez à déclarer et définir honnêtement qui vous êtes.\nIl existe plusieurs façons de faire savoir votre arrivée dans l’espace numérique : e-mail, identifiants de messagerie instantanée, votre propre site web ou blog, ou en devenant membre d’une communauté ou d’un forum qui correspond à vos centres d’intérêt.\nLe défi à devenir membre d’un forum ou d’une communauté est de trouver un forum qui vous intéresse, puis de façon progressive et constante faire ressentir votre présence. Traitez-le comme un nouveau collège où vous venez d’être admis. Naturellement, vous êtes préoccupé parce que vous ne connaissez personne. Vous ne savez pas où aller… mais vous vous promenez et vous familiarisez avec votre environnement et le campus.\nUne communauté en ligne est juste cela : un campus. Prenez votre temps à découvrir tout ce qui existe et les activités qui ont lieu ici. Découvrez les membres existants et leurs goûts et leurs dégoûts. Sachez ce qui peut offenser les autres membres et évitez de le faire.\nAu fur et à mesure que vous passez plus de temps, plus de membres commenceront à vous remarquer et à venir vers vous… tout comme cela s’est produit au collège. Vous avez ainsi votre premier cercle d’amis. À partir de là, c’est à vous de faire évoluer les choses.\nPlus sur les communautés en ligne et les forums dans certains chapitres ultérieurs.\n1.2 Messagerie instantanée pour les contacts et les affaires\nLa messagerie instantanée (IM) s’est transformée en outil de communication et d’affaires. Vous devez vous inscrire pour utiliser un service particulier — par exemple, vous ne pouvez pas utiliser Yahoo! Messenger avec un compte Hotmail et inversement. Bien qu’il existe des clients de messagerie instantanée qui permettent d’utiliser n’importe quel compte, ceux-ci ne sont pas les meilleurs.\nAinsi, deux options s’offrent à vous : s’inscrire à toutes les IMs disponibles, ou choisir celle que vous voulez utiliser et vous y tenir. Nous recommandons la première option car cela ne coûte rien, et il ne fait pas de mal d’avoir un ID même si vous l’utilisez rarement.\nLa messagerie instantanée est un excellent outil pour communiquer avec des amis, qu’ils soient assis à quelques bureaux ou à plusieurs continents de distance ! Assurez-vous simplement de correspondre à leur fuseau horaire ! La messagerie instantanée vous permet aussi de partager des fichiers et des photos pendant que vous discutez et de jouer à des jeux avec l’autre personne. C’est presque comme y être. Honnêtement, vous y êtes — c’est juste virtuel.\nUne messagerie instantanée peut aussi être un bon outil d’affaires, et inclure votre ID sur votre carte de visite est une bonne idée. Que vous soyez un professionnel indépendant, un homme d’affaires ou un employé d’une entreprise, utiliser la messagerie instantanée pour les affaires peut vous faire économiser beaucoup d’argent pour la communication. Mais pourquoi est-ce mieux que l’e-mail ? Car la messagerie instantanée se fait en temps réel. Si vous devez coordonner avec un client situé dans une autre ville ou un autre pays, vous pourriez économiser des appels à longue distance en utilisant une messagerie instantanée.\nParmi les messageries instantanées populaires, on trouve MSN Messenger et Yahoo! Messenger. Pour pouvoir les utiliser, tout ce que vous avez à faire est de vous inscrire. Les services sont gratuits, et vous obtenez aussi une adresse e-mail lors de votre inscription. Dans le cas de MSN, c’est Hotmail qui vous donne initialement une boîte aux lettres de 25 Mo (environ 250 Mo si vous êtes aux États-Unis), et Yahoo! vous donne un compte de 1 Go. Logiquement, vous vous précipitez pour vous inscrire à Yahoo!, mais il est utile de vérifier laquelle des deux est plus utilisée par vos contacts.\n1.3 Utilisation de l’e-mail\nL’e-mail est un excellent outil pour rester en contact et élargir vos affaires. Mais il y a une ligne fine entre le spam et l’insistance lors de l’envoi d’e-mails.\nLe spam est illégal dans la plupart des pays, et si votre compte e-mail est découvert comme étant un spammeur, vous pourriez bien être bloqué par le serveur de messagerie du destinataire, rendant vos efforts vains. Pire encore, votre propre fournisseur d’e-mail pourrait vous bloquer.\nUne définition largement acceptée du spam est « l’utilisation de tout moyen de communication électronique pour envoyer des messages non sollicités en masse ». Bien que cette définition soit normalement limitée à l’envoi massif de courrier électronique et non à tout marketing ciblé, le terme « spam » peut désigner tout envoi massif à caractère commercial, non sollicité, perçu comme excessif, et surtout, indésirable.\nDans l’opinion populaire, la forme la plus courante de spam est celle envoyée par e-mail comme forme de publicité commerciale. Cependant, au cours de l’histoire brève des médias électroniques, des choses comparables au spam ont également été enregistrées dans des médias autres que l’e-mail.\nAu fil des ans, une variété de techniques de spam a été développée. Ces techniques varient selon le média : spam par e-mail, spam de messagerie instantanée, spam de groupe de nouvelles Usenet, spam de moteur de recherche web, spam de blogs, spam de messagerie mobile.\nIl est important que vous renonciez à toutes les formes ci-dessus, et que vous compreniez ce qui pourrait qualifier comme spam avant de décider d’envoyer un courrier massif annonçant votre entreprise — ou même votre arrivée sur le WWW.\nParce que la barrière d’entrée pour le spam est si faible, le volume de courrier non sollicité a produit d’autres coûts supportés par le public (en termes de perte de productivité et de fraude) et par les fournisseurs de services Internet, qui doivent ajouter une capacité supplémentaire pour faire face à la marée.\nLe spam est généralement détesté, et a été l’objet de législation dans un certain nombre de juridictions, y compris la loi CAN-SPAM des États-Unis de 2003.\n1.4 Netiquette\nLorsque vous communiquez avec d’autres personnes sur Internet, observez les règles de bon sens suivantes. Ces « netiquettes » doivent être observées, que vous écriviez un message e-mail, participiez à une session de discussion ou postiez un message sur un tableau d’affichage.\nVoici quelques bases auxquelles vous devez être au moins familier pour être pris au sérieux dans vos communications en ligne.\nNe tapez pas en majuscules. Taper en majuscules est considéré comme crier ou hurler en ligne. Ceux qui tapent en majuscules sont perçus comme paresseux et peu respectueux de ceux qui devront lire leur e-mail. Des études variées sur le sujet montrent qu’il est plus difficile et prend plus de temps de lire un texte tapé en majuscules.\nNe laissez pas le champ « Objet » vide. Remplissez-le avec une brève et concise description du contenu de votre e-mail. C’est très important pour aider ceux avec qui vous communiquez à organiser et gérer leur e-mail. Évitez d’utiliser toutes majuscules ou toutes minuscules, des termes comme « Salut », « Aide », « S’il vous plaît répondez », ou le nom du destinataire dans le champ objet, car vous pourriez être mal identifié comme un spammeur, et votre e-mail supprimé automatiquement.\nÉvitez de formater votre e-mail avec du texte coloré et des arrière-plans colorés ou des images dans vos communications quotidiennes. Vos choix de couleur et de mise en page peuvent rendre vos e-mails illisibles. En outre, la mise en page peut rendre la réponse à vos e-mails difficile, sans avoir à passer par une procédure pour convertir votre e-mail en texte brut.\nSouvent, quand les gens cliquent sur « Répondre », ils doivent gérer votre mise en page qui s’étend à leur réponse, ce qui rend la communication avec vous inutilement plus difficile. Pourquoi attendriez-vous que les gens convertissent votre e-mail juste pour lire et répondre à vous ? Ils ne le feront probablement pas !\nUtiliser de grands graphiques d’arrière-plan qui prennent des heures à télécharger, surtout si vous avez une connexion par modem (ce qui est encore plus courant que la plupart d’entre nous ne le souhaitent croire), est tout simplement irrespectueux. Si vous ressentez le besoin irrésistible d’utiliser un type de mise en page dans vos communications quotidiennes, faites-le avec parcimonie.\nÀ ces rares occasions où il est nécessaire d’envoyer le même e-mail à un groupe de personnes, en signe de courtoisie envers ceux à qui vous envoyez le mail, indiquez tous les adresses e-mail des destinataires dans le champ CCI (Copie invisible). Lorsqu’une adresse e-mail est indiquée dans le champ CCI, le destinataire recevra une copie du mail tout en restant invisible aux autres destinataires du mail — certains ou tous desquels ils connaissent ou non.\nLes longues listes d’adresses e-mail au début d’un e-mail sont un signe immédiat que l’expéditeur est soit un débutant/naïf — soit qu’il ne se soucie pas de respecter la vie privée des autres. Aucune de ces perceptions, nous sommes sûrs que vous l’accepterez, n’est flatteuse ! Les adresses e-mail sont comme les numéros de téléphone. Seul le propriétaire de l’adresse e-mail ou du numéro de téléphone devrait être en mesure d’autoriser qui il veut avoir son adresse et de la rendre publique.\nLa plupart des gens préfèrent décider eux-mêmes qui aura leur adresse e-mail. En envoyant des e-mails massifs à une liste, vous avez pris cette décision pour eux — et c’est une violation de la vie privée supposée lors de la communication. Laissez ceux avec qui vous correspondez décider eux-mêmes qui ils veulent faire connaître leur adresse e-mail — ne leur faites pas cette décision !\nSi vous êtes nouveau en ligne, levez votre main droite et répétez :\nA. « Je ne transmettrai pas de bêtises, de lettres en chaîne ou d’e-mails inutiles à mes amis sans leur permission. »\nB. « Je comprends que, en faisant cela, je pourrais remplir leur boîte de réception, utiliser inutilement les ressources d’autrui, et provoquer d’autres e-mails importants à rebondir. »\nC. « Je comprends que la plupart des gens ont déjà vu ces e-mails un million de fois et les trouvent ennuyeux. »\nD. « Je sais que, en transmettant ces e-mails supposés drôles, je pourrais offenser ou contrarier des personnes qui ne partagent pas mon sens de l’humour, ou qui sont malades de recevoir des e-mails stupides chaque fois qu’un nouveau venu se connecte. »\nVoilà ! Ce n’était pas si terrible, n’est-ce pas ? Espérons que vous ne serez plus tenté de transmettre ces blagues, ces e-mails non fondés ou frivoles qui vous disent de les transmettre à vos amis ! Et vous éviterez de paraître ridicule et informé dans le processus. Lisez-les si vous le devez, puis cliquez sur « Supprimer ». Vous ne croyez pas ces e-mails qui disent que certaines choses arriveront simplement parce que vous les avez transmises à 10 amis, n’est-ce pas ?\nEn outre, beaucoup de ces e-mails sont des farces ou tout simplement faux. Avant de transmettre un e-mail qui semble bien intentionné avec une histoire incroyable qui vous dit de « lire et partager » avec tout le monde que vous connaissez, vous pourriez vouloir d’abord vérifier \u0026lt;www.snopes.com\u0026gt; pour savoir si l’histoire est légitime dès le départ. Ne pas le faire peut vous faire manger de la crotte quand tout le monde que vous avez envoyé un e-mail saura que vous avez transmis une farce sans savoir mieux. Et n’en voulez pas à quelqu’un si il vous fait remarquer que vous étiez informé en perpétuant une farce ! Si vous ne savez pas avec certitude que l’e-mail que vous transmettez est exact et spécifiquement adapté à la personne à qui vous l’envoyez, et que vous savez qu’elle voudra le recevoir — tout ce que vous avez à faire est de demander d’abord.\nNe donnez jamais de numéros de téléphone ou d’informations personnelles sans confirmer que vous communiquez avec un parti digne de confiance. Ne donnez jamais d’informations personnelles d’autrui sans leur permission explicite. Faites un effort raisonnable pour rechercher sur un site web les informations que vous cherchez — les sections « Questions fréquentes » ou « À propos » peuvent vous donner les réponses que vous cherchez avant de gaspiller le temps du propriétaire du site en lui envoyant un e-mail pour des informations facilement disponibles sur son site.\nSi un propriétaire de site web prend le temps de fournir des informations, lisez-les. Le temps d’une personne n’est pas plus important que celui d’une autre, et le courtoisie commune inclut le respect de ce fait. Si vous ne trouvez pas ce que vous cherchez, recherchez la section de contact appropriée à votre question. N’allez pas simplement cliquer sur le premier lien e-mail que vous trouvez et lancer votre question(s). Si vous le faites, ne vous étonnez pas si votre e-mail reste sans réponse si l’information est facilement trouvable sur le site.\nIl est important de comprendre l’objectif de chaque site web également. Chaque site ne peut pas être tout pour tout le monde, ou être ce que vous pensez qu’il devrait être. Assurez-vous de consulter les informations fournies pour vérifier que ce que vous cherchez serait même couvert par le site que vous visitez. Ne pas utiliser la demande de réception de retour (RR) pour chaque e-mail personnel que vous envoyez parce que vous aimez « savoir » quand quelqu’un ouvre votre e-mail. Non seulement c’est ennuyeux pour le destinataire, mais cette fonctionnalité est intrusive ! Comment vous sentiriez-vous si chaque fois que vous entendiez un message vocal, un message de répondeur ou ouvriez une lettre postale d’un ami, il était immédiatement signalé à eux que vous aviez entendu/ouvert leurs communications ? Le destinataire devrait avoir la liberté de déterminer quand ou si il veut ouvrir, lire et répondre — point final. Les RR devraient être réservés à des cas où il est crucial de savoir si l’e-mail a été ouvert. Ces cas incluent des questions juridiques et des affaires importantes. Gardez à l’esprit que ouvert ne signifie pas lu, et que le destinataire peut refuser une demande de RR, donc vous ne serez pas averti. Comprenez que vous serez constamment en apprentissage. Nous sommes tous dans ce cas. Le monde en ligne évolue constamment. La seule constante est le changement ! Si vous n’avez pas le désir d’apprendre et que vous ne faites pas d’effort pour comprendre la « culture » de la technologie dans laquelle vous participez, vous ne serez pas pris au sérieux par vos pairs sur le Net. Vous pourriez aussi recevoir des e-mails brusques de vos pairs sur le Net qui pointent ces problèmes — certains pourraient ne pas être aussi gentils que les autres. Ne répondez pas immédiatement ! Utilisez ces situations comme une opportunité pour apprendre ce que vous faites de mal afin de ne pas contrarier les autres. Si vous recevez un e-mail désagréable, ne répondez pas immédiatement — si vous répondez du tout. Les gens sont audacieux et trop critiques du côté de l’écran. Ils ont tendance à ne pas hésiter à pointer ce qu’ils pensent que vous devez améliorer, sans se soucier des points positifs sur le même sujet.\nSouvent, ces personnes essaient simplement de provoquer une réaction (c’est ce qu’on appelle le troll) ou cherchent à se sentir importantes. Souvent, elles sont simplement des imbéciles. Si vous n’avez rien de gentil ou de constructif à dire, ou au moins un ton professionnel sévère — cliquez simplement sur « Supprimer ». Gardez à l’esprit que tout e-mail privé est considéré comme étant protégé par le droit d’auteur de l’auteur. Si vous publiez un e-mail privé sur une liste publique ou un tableau, ou si vous l’envoyez à une tierce partie, en totalité ou en partie, vous devez inclure la permission de l’auteur pour publier le matériel publiquement. Ne pas le faire peut vous mettre en difficulté légalement ou avec vos amis et collègues. Compressez toujours les fichiers volumineux avant de les envoyer. Beaucoup de personnes qui commencent sur le web ne réalisent pas à quel point les documents, les graphiques ou les fichiers photo sont grands. Devinez quoi ? Ils sont assez grands pour remplir la boîte aux lettres de quelqu’un et faire rebondir les autres courriels ! Adoptez la habitude de compresser tout fichier de plus de 200 000 octets. (Vous pouvez voir la taille des fichiers dans l’Explorateur Windows. Cliquez droit sur le nom du fichier et choisissez « Propriétés ».) Il existe plusieurs types de logiciels de compression de fichiers disponibles à cet effet. Ne envoyez pas de pièces jointes volumineuses sans prévenir les destinataires, car vous pensez que la photo ou le fichier est mignonne ou cool. Demandez d’abord ! Plus important encore, lors de l’envoi de fichiers professionnels, faites-le uniquement pendant les heures de travail — et compressez toujours, demandez toujours la permission d’abord !\nBeaucoup d’utilisateurs en ligne doivent encore attendre jusqu à 30 minutes ou plus pour ouvrir des fichiers trop volumineux en raison de leur vitesse de connexion. La plupart des utilisateurs n’ont pas de connexion câblée ou DSL, ils sont sur connexion par modem — beaucoup seulement à 28,8 Kbps !\nUne autre façon de réduire la taille de vos pièces jointes est de les manipuler à l’aide de logiciels graphiques. Réduisez la taille physique d’une photo ou d’un graphique à pas plus de 600 pixels de largeur, ce qui les rende électroniquement transmissibles — rien n’a besoin d’être plus grand que cette taille pour être visualisé. Ou vous pourriez être vraiment courtois et apprendre à utiliser l’espace Web gratuit offert par votre FAI pour télécharger des photos, et envoyer simplement le lien à vos amis et famille pour les voir. Et si vous ne savez pas comment faire l’une ou l’autre de ces choses, tout ce que vous avez à faire est d’apprendre !\nEnvoyer de grands fichiers qui prennent longtemps à télécharger peut ne pas respecter le temps de l’autre personne ; les fichiers peuvent ne pas refléter leur sens de l’humour ou leur point de vue, et peuvent même remplir complètement leur boîte aux lettres. C’est être inconsideré et paresseux.\nLes soucis liés à l’e-mail\nMalheureusement, l’avancement de la technologie a ses inconvénients. Il est maintenant possible de contracter un virus sans même ouvrir un e-mail — cela a commencé avec W32.Nimda.A@mm (ou simplement Nimda) en septembre 2001, qui nécessitait simplement que vous cliquiez sur le sujet de l’e-mail dans votre logiciel de messagerie (ou dans certains clients de messagerie, avoir la fenêtre d’aperçu activée).\nPlusieurs des derniers virus utilisent effectivement des e-mails provenant de votre carnet d’adresses ou de votre boîte de réception pour envoyer le virus et le propager à tous les destinataires listés, avec votre nom dans le champ « De ». Les derniers virus peuvent envoyer eux-mêmes des e-mails avec les noms de vos amis dans le champ « De », ou toute combinaison d’adresses e-mail trouvées sur votre système !\nLa nécessité d’un logiciel de protection antivirus en temps réel 24/7 n’est plus une option — c’est votre responsabilité de rester sans virus. Vous devrez également mettre à jour régulièrement vos fichiers antivirus. Vérifiez les mises à jour chaque fois que vous vous connectez afin que votre ordinateur soit protégé avec les dernières définitions antivirus.\nLes bases de la protection antivirus\no Obtenez un programme actif qui est toujours « allumé ». Cela capturera tout virus au moment du téléchargement, de sorte qu’il puisse immédiatement être mis en quarantaine et ne pas infecter votre système.\no Mettez à jour vos définitions antivirus quotidiennement, ou chaque fois que vous vous connectez. Ces mises à jour peuvent être téléchargées depuis le site web de votre fabricant de logiciel antivirus. La plupart ont un planificateur pour indiquer à votre ordinateur de le faire automatiquement.\nVous devez vous assurer que votre système est protégé contre tout virus qui aurait été découvert depuis votre dernière connexion en ligne. De nouveaux virus sont identifiés chaque jour !\no Ne cliquez jamais sur une pièce jointe ou un fichier .exe (exemples : \u0026ldquo;Happy99.exe\u0026rdquo;, \u0026ldquo;cadeau gratuit\u0026rdquo;, \u0026ldquo;cliquez ici\u0026rdquo; ou \u0026ldquo;ILOVEYOU\u0026rdquo;) dans un e-mail sans vous assurer que la pièce jointe a été vérifiée pour les virus. Cela vaut même si le mail semble provenir de quelqu’un que vous connaissez bien ! La pièce jointe pourrait être générée par un virus, et avoir extrait l’adresse e-mail de votre ami à partir d’un ordinateur infecté par quelqu’un avec qui il a communiqué. Ou votre ami pourrait être inconsciemment infecté sans savoir qu’il y a un virus sur son système, qui a juste généré un e-mail avec son nom dessus et qui est adressé à vous. L’e-mail pourrait sembler venir de votre ami juste pour vous inciter à l’ouvrir, alors qu’en fait il est généré par un virus.\nLes avantages d’être en ligne\nÊtre en ligne aujourd’hui est plus une norme qu’une tendance. La plupart des gens, y compris les professionnels et les étudiants, énoncent leurs adresses e-mail juste après leurs numéros de téléphone. L’un des plus grands avantages d’être en ligne est la possibilité de toucher le monde entier — littéralement. C’est un peu comme mettre votre enseigne à l’extérieur d’un bureau ; la seule différence est que les passants incluent le monde entier.\n2.1 Gains personnels d’être en ligne\nNos vies tournent désormais autour de nos objectifs professionnels, et cela commence dès le lycée ou l’université. Nous sommes tellement submergés par le travail, les soumissions et d’autres choses liées que nous n’avons pas de temps pour les amis, et nous nous éloignons lentement — nous laissant avec seulement nos collègues comme amis.\nMais être en ligne et être actif peut signifier que vous n’êtes plus séparé de vos amis. Ce qui est encore mieux, vous pourriez même en faire de nouveaux. Vous pourriez aussi reprendre contact avec vos amis du lycée ou de l’université et ne plus vous sentir isolé. Comment pouvez-vous faire cela ? Les sites spécialisés dans le « réseautage » sont la réponse.\n7.\n2.1.1 Réseautage social en ligne\nVous avez peut-être entendu certains de vos amis ou connaissances parler de sites tels qu’Orkut, Hi5,\nFriendster, ou Yahoo! 360. Ce sont ce qu’on appelle couramment des sites de réseautage social en ligne.\nBien qu’ils prétendent tous avoir le « réseau le plus actif » ou le « plus large » au monde, vous devez d’abord vérifier où sont vos amis. Dernière chose que vous voudriez, c’est d’être dans un endroit tandis que vos amis sont dans un autre ! Cela peut être comparé à vos amis étant au cinéma tandis que vous attendez pour eux au café.\nS’inscrire sur presque tous ces sites de réseautage social est aussi simple qu’une inscription gratuite et une inscription. Dans le cas de certains sites comme Yahoo! 360, vous pourriez avoir besoin d’une invitation d’un membre existant.\n2.1.2 Comment cela fonctionne-t-il ?\nLa plupart de ces sites fonctionnent sur un principe simple. Vous pouvez rechercher des personnes selon des centres d’intérêt communs, des loisirs, un emplacement, un âge, et tout autre critère qui vous convient ! L’un des plus grands avantages de cela est d’éliminer les frontières géographiques. Vous pouvez aussi faire de nouveaux amis et rester en contact via le même forum.\nTout comme tout ce qui est en ligne, cependant, il y a des pièges dans le jeu des amitiés en ligne. Il y a beaucoup de fraudeurs qui pourraient gagner votre confiance et ensuite tenter de l’exploiter.\nUne fois inscrit sur un site de réseautage social, vous pouvez envoyer des invitations à des non-membres pour qu’ils rejoignent et restent en contact avec eux via le site. De plus, vous pouvez aussi trouver des membres existants et leur demander de « se connecter » avec vous et partager des informations et des goûts.\nAu fil du temps, votre réseau grandira, et avant que vous ne vous en rendiez compte, vous ferez partie d’une communauté où les membres partagent des centres d’intérêt communs et restent en contact. Ainsi, ne pas avoir de temps en dehors du bureau n’est plus une excuse pour ne pas avoir d’amis.\nDans de nombreux cas, les membres se rencontrent en dehors de la présence en ligne s’il existe une communauté suffisamment nombreuse dans une zone géographique donnée et se connaissent mieux.\n2.1.3 Télétravail\nBien que certains considèrent cela comme une nouvelle manière de travailler, le télétravail existe depuis un certain temps et offre une excellente nouvelle façon de travailler pour les meilleures entreprises du monde. En tant que professionnel ambitieux, vous devez rester vigilant pour tout emploi à distance. Ces emplois vous permettent de travailler depuis chez vous, et vous payent bien. Dans certains cas, l’employeur met également en place l’infrastructure, y compris la connexion Internet et les nécessités, afin que l’employé soit à niveau avec l’infrastructure du bureau.\nPour cela, vous devez vraiment être conscient de ce qui vous est offert et ne pas le manquer. Avoir votre propre site/blog pourrait également vous aider dans cette recherche.\n8.\n2.1.4 Votre bureau mondial\nChaque professionnel et homme d’affaires rêve de réussir. Mais comment faire ? En tant qu’entreprise en démarrage ou en croissance, vous n’aurez pas toujours les financements requis ou la main-d’œuvre nécessaire pour rencontrer tous vos clients potentiels. De plus, tous vos clients potentiels ne seront pas dans votre ville.\nLe Web et d’autres outils en ligne (e-mails, forums, etc.) permettent à votre entreprise d’atteindre de nouveaux marchés. Imaginez-vous comme un revendeur d’artisanat indien : votre plus grand marché potentiel est le monde occidental, mais combien de courriers pouvez-vous envoyer ? Combien d’appels téléphoniques et d’échantillons pouvez-vous envoyer ? Des centaines, pour avoir un impact et justifier les frais d’envoi des courriers dès le départ.\nDes options comme eBay sont maintenant disponibles, vous permettant de lister vos produits dans tous les pays anglophones tout en restant en Inde. N’est-ce pas un monde qui s’ouvre à vous ? D’autres services similaires sont tout aussi efficaces et peuvent avoir un impact très positif sur votre entreprise. Il s’agit simplement de vous connecter et de trouver la bonne solution pour vous.\nEn résumé, avoir une présence en ligne peut vous aider à éliminer les coûts, attirer un marché plus large, et favoriser vos causes personnelles et professionnelles.\nC’est la nouvelle mode pour le moment, mais les blogs — abréviation de Web log — sont la chose à avoir aujourd’hui. Et c’est sûr, presque tout le monde en a un (ou plus !). Mais qu’est-ce que le blogging et quels sont ses avantages ? En quoi est-il différent d’un site web ? Ne vous inquiétez pas… nous répondrons à tout cela et bien plus encore.\nQu’est-ce qu’un blog ?\nEn bref, un blog est une compilation de pensées, d’idées, de faits, de nouvelles ou de tout ce que quelqu’un a décidé de mettre en ligne ! Appelés « posts », chaque article sur un blog peut être lié au précédent ou non. C’est justement cela. Il n’y a pas de règles et pas de restrictions. C’est votre terrain de jeu pour expérimenter.\nLes blogs sont généralement structurés, organisés par catégories et mis à jour fréquemment ; dans la plupart des cas, quotidiennement. Le propriétaire (et parfois les modérateurs) du blog a le droit de contrôler le contenu.\nLe terme « blog » a été inventé en 1999, et depuis, les blogs ont captivé les internautes. Au dernier décompte, il y avait environ 10 millions de blogs sur Internet !\nCréer un blog\nIl n’est pas nécessaire que vous connaissiez parfaitement le HTML si vous voulez créer un blog. Vous devez juste savoir vous déplacer dans l’espace numérique et connaître les bases de la navigation sur Internet.\nDisponibles gratuitement, il existe de nombreux outils que vous pouvez utiliser pour créer un blog. Vous pouvez utiliser un éditeur HTML comme Dreamweaver ou FrontPage Express pour créer l’apparence et le style de votre blog et pour créer des articles. Vous pouvez ensuite envoyer le contenu via FTP vers un serveur web.\nCependant, si vous n’êtes pas familier avec les éditeurs HTML ou les programmes FTP, il existe de nombreux services qui offrent gratuitement des outils de création de blog. Certains des plus populaires sont Blogger (. blogger.com),\nBlogsome (\u0026lt;www.blogsome.com\u0026gt;), et Typepad (\u0026lt;www.typepad.com\u0026gt;), pour n’en citer que quelques-uns.\nLorsque vous créez un blog, vous devez créer un nom d’utilisateur et un mot de passe (similaire à la création d’un compte e-mail), sélectionner un modèle qui abritera vos informations, et créer un surnom (facultatif) pour signer tous vos articles. Une fois votre blog configuré, vous pouvez poster toute information que vous souhaitez, à tout moment et aussi souvent que vous le souhaitez.\n3.1 Les avantages et les bénéfices des blogs\nFacile à entretenir et facile à commencer\nSi vous ne connaissez pas le HTML, utiliser un modèle fourni par l’un des nombreux outils disponibles vous permet de commencer facilement. Vous postez simplement vos informations dans le modèle et votre compte est créé.\nDans la plupart des cas, les options offertes par le modèle du service sont étendues et vous permettent de catégoriser vos articles. Vous pouvez également lier votre blog à d’autres blogs ou sites pour annoncer votre arrivée et populariser votre espace.\nPubliez aussi souvent que vous le souhaitez\nPubliez autant et aussi souvent que vous le souhaitez. Aucun des outils de blog gratuits ne limite le nombre d’articles que vous pouvez publier ou la longueur d’un article. À présent, ils offrent même des fonctionnalités gratuites pour télécharger des photos afin d’égayer votre blog !\nLes blogs sont très interactifs\nInteractivité et rapidité ! La plupart des articles, selon le nombre de visiteurs réguliers de votre blog, auront un ou deux commentaires très rapidement après la publication.\nLes blogs peuvent également utiliser un système « TrackBack » qui permet à un visiteur de voir qui a écrit l\u0026rsquo;article original et tout autre article concernant celui-ci. Certains blogs peuvent également vous alerter lorsqu\u0026rsquo;un nouveau contenu ou un contenu mis à jour est ajouté.\nLe blogging donne à un écrivain toute la liberté qu’il pourrait souhaiter. Bien qu’il n’y ait pas de censure sur Internet, rappelez-vous d’être responsable dans votre écriture. Prenez également la responsabilité de ce que vous écrivez, car vos lecteurs commenteront votre écriture et s’attendront à des clarifications ou des explications. C’est précisément ce fil qui définit le blogging, et si vous ne souhaitez pas qu’il soit interactif, désactivez les commentaires sur votre blog.\nL’option « TrackBack » apparaît généralement en bas d’un article de blog, et montre un résumé de ce qui a été écrit sur le blog ciblé, accompagné d’un URL et du nom du blog.\nAucune liste ou filtre spam à gérer\nLes filtres spam ne bloquent pas les blogs car ils ne sont pas une communication par e-mail. Avec l’avènement des filtres spam et l’amélioration continue de la manière dont ils filtrent les e-mails, la livraison de newsletters et de e-zines est devenue difficile.\nLes blogs ne sont pas livrés dans une boîte de réception et, par conséquent, aucune méthode pour contourner les filtres n’est nécessaire. En résumé, personne ne peut vous exclure simplement parce qu’ils vous cherchent maintenant !\nLe nombre de blogs que vous pouvez créer est illimité\nVous pouvez créer autant de blogs que vous le souhaitez, sur autant de sujets que vous le désirez.\nAlors, si votre intérêt a soudainement changé vers la musique classique indienne, allez-y, écrivez-y. Vous pourriez même télécharger des extraits de musique. Qui sait combien de personnes pourraient être intéressées par ce que vous avez à dire ou à chanter !\nIls sont favorables aux moteurs de recherche\nLes moteurs de recherche cherchent constamment du nouveau contenu, et les blogs correspondent parfaitement à cette exigence grâce à leur contenu en constante évolution quotidienne.\nIl existe de nombreuses webpages qui agissent comme des « moteurs de recherche de blogs ». N’oubliez pas de soumettre vos blogs à ces sites afin d’augmenter votre visibilité. Cela aidera également à améliorer votre classement sur les moteurs de recherche généraux.\nVoici quelques endroits où vous pouvez lister votre blog :\no Technorati : \u0026lt;www.technorati.com\u0026gt;\no Moteurs de recherche de blogs : \u0026lt;www.blogstreet.com\u0026gt;\no Globe of Blogs : \u0026lt;www.globeofblogs.com\u0026gt;\no Blog Universe : \u0026lt;www.bloguniverse.corn\u0026gt;\no Moteur de recherche de blogs : \u0026lt;www.blogsearchengine.com\u0026gt;\nIls sont économiques\nEn réalité, vous pouvez les obtenir gratuitement ! Puisqu’aucune liste n’a besoin d’être entretenue, il n’y a aucun coût de liste serveur. Les logiciels et services de blogging sont également très abordables.\nDans la plupart des cas, ils sont gratuits, mais vous devez alors leur laisser un lien vers eux sur votre page. Si vous ne voulez pas cela, vous pouvez choisir un service payant et faire ce que vous voulez avec la page tout en continuant d’utiliser leur module de gestion de contenu.\nCertains services de blogging facturent les lecteurs, d’autres facturent les auteurs, mais globalement, les frais mensuels sont plutôt minimes dans les deux cas.\nIls sont éducatifs\nOui, il y en a qui sont centrés et peuvent être très éducatifs. Il existe une telle diversité de blogs informatifs et éducatifs disponibles maintenant que la recherche pour n’importe quel sujet vous donne généralement des centaines d’offres.\nLa moyenne de lecture est de 200 mots par minute — le record de lecture rapide est de 1347 mots par minute. En 96 secondes, ils liront 320 mots. Alors gardez les choses courtes et concises. Cela peut sembler fou, mais ces statistiques montrent que les articles longs sont souvent ignorés.\nDisponible maintenant, il y a une grande variété de blogs informatifs et éducatifs.\nPour une vue d’ensemble des blogs populaires dans de nombreuses catégories, rendez-vous simplement sur \u0026lt;www.blogit.com\u0026gt; ou faites une recherche sur \u0026lt;www.technorati.com\u0026gt;.\nVous pouvez obtenir une syndication\nLa syndication (RSS) est un excellent moyen de s’assurer que votre écriture et vos opinions sont exposées au plus grand nombre possible du public.\nDans la plupart des cas, la syndication est maintenant incluse dans les services de blogging, ce qui attire un grand nombre d’écrivains vers ce nouveau média.\nPour un exemple de service de blog qui propose la syndication, rendez-vous sur \u0026lt;www.typepad.com\u0026gt; ou \u0026lt;www.blogger.com\u0026gt;\nLire un blog\no Aucun outil spécial n’est nécessaire pour visiter un blog, lire un article ou laisser un commentaire. Vous pouvez utiliser votre navigateur Web existant comme Firefox, Opera, Mozilla, Netscape ou Internet Explorer. Les blogs ont généralement des adresses comme où blogname est le nom du blog tel que défini par le propriétaire du blog et blogservice est l’hôte ou l’outil utilisé pour maintenir ce blog. Ainsi, un blog sur Blogger aurait une adresse comme http://digit.blogspot.com.\no Utilisez un lecteur RSS (Really Simple Syndication). Vous pouvez vous abonner aux blogs que vous souhaitez et ils deviennent immédiatement disponibles dans le lecteur. Utiliser un lecteur RSS vous permet d’avoir tous les blogs qui vous intéressent en un seul endroit — vous n’avez pas à naviguer partout sur Internet pour les lire.\nCe qui est encore mieux, chaque fois qu’un nouvel article est publié, vous serez averti dans le lecteur et un lien vers l’article complet sera également disponible. À quel point c’est pratique, non ?\nUne page « Yahoo 360 » en exemple.\n12.\nUne page « MSN spaces » en exemple.\n3.2 Les blogs et votre entreprise\nSi les blogs sont tout simplement une manière d’exprimer et de faire valoir une opinion, comment pourraient-ils s’intégrer dans une entreprise ? Voici comment :\nLes blogs fournissent un contenu complémentaire excellent et attirent directement l’attention sur les domaines de votre entreprise que vous souhaitez mettre en valeur ou mettre en évidence. Plus encore, les blogs s’adaptent à de nombreuses autres utilisations telles que :\no Communiquer avec vos collègues, partenaires, fournisseurs, et clients existants ou potentiels\no Mettre en valeur les actualités de votre secteur ou de votre entreprise, présenter de nouveaux produits, services ou promotions marketing, et donner des conseils\no Établir la réputation ou la marque d’une entreprise ou d’un individu\no Améliorer les opérations (par exemple, gestion de projet ou partage de connaissances en assistance technique)\no Démontrer votre expertise\no Établir une différence concurrentielle\no Simplifier et accélérer le processus de publication !\nLe potentiel marketing\nLes blogs peuvent être utilisés comme des outils stratégiques très performants qui sont là pour le long terme. En plus de poser vos pensées et de créer une présence d’entreprise, pensez au potentiel de vos stratégies de newsletter :\no Les articles dans les newsletters peuvent être liés à un blog, prolongeant leur vie et créant une vaste conversation, vous donnant une idée plus claire de ce que votre client pense réellement\no Vous pouvez offrir un forum bidirectionnel aux clients pour obtenir des opinions personnelles et réelles sur vos produits et services ; quelque chose que aucun sondage basé uniquement sur des chiffres ne pourrait garantir\no Des experts de l’entreprise peuvent commencer un blog et devenir des experts de leur domaine, aidant votre entreprise à dépasser la concurrence. Cependant, cela nécessitera un grand travail à faire derrière les scènes.\no Vous pouvez superposer votre blog avec des contrôles éditoriaux et vous assurer que rien de ce que vous ne voudriez jamais ne monte là-haut !\n3.3 Exploitation des blogs\nDepuis sa naissance et au cours des dernières années où il a gagné en importance et en portée, Internet est devenu tout-puissant au point que nous sommes plus susceptibles de dire « Googlez-le » que « allons consulter la bibliothèque » si nous cherchons de l’information.\nMalgré cela, nous n’avons pas encore imaginé toutes les façons dont nous allons l’utiliser dans cinq ans. Mais il y a certainement des signes que nous devrons être vigilants pour distinguer les pratiques commerciales honnêtes de la mauvaise utilisation du web.\nAvec les blogs, puisque tout le monde a des opinions, et que nous avons maintenant la chance d’offrir nos opinions à une inspection mondiale, nous avons reconnu qu’il s’offrait à nous une voie facile pour obtenir nos 15 minutes de célébrité ! Garanti ? Pas tout à fait.\nLa plupart des gens utilisent leur reconnaissance récente pour offrir leur meilleur : leurs opinions intéressantes, leurs théories secrètes, leurs pensées créatives. Les passionnés et les opinions fortes ont maintenant une voie pour s’exprimer.\nNous trouvons ces personnes à travers des centres d’intérêt communs — nous pouvons faire une recherche et les trouver, ou aller sur les sites standard de répertoires de blogs et choisir notre obsession préférée pour la lire ou ajouter du matériel.\nDans les deux cas, nous nous sentons comme faisant partie d’une communauté de gens partageant les mêmes idées. Sur un blog de cinéma, nous pouvons nous énerver et nous déchaîner sur les mérites de pourquoi Sarkar est meilleur que Black ou si Saif Ali Khan méritait vraiment le Prix National pour un rôle banal dans Hum Turn. C’est votre terrain de jeu. Dites ce que vous voulez !\nMais nous appartenons à cette communauté parce que nous avons une connaissance substantielle dans le domaine, notre amour des idées ou du genre, et nos croyances en tant qu’experts amateurs.\nDans tous les cas, nous sommes dans de bonnes — bien que peut-être ennuyeuses — compagnies. Il devient amusant de trouver des gens et des idées que nous n’aurions jamais rencontrées autrement, mais que nous pouvons immédiatement lier.\nMalheureusement, il y a un revers à cela aussi. Il y a des personnes qui utilisent le monde du blogging pour la célébrité et les gains — et nous n’avons aucun moyen de savoir la différence entre des opinions et des déchets.\nLier à d’autres blogs. Vos lecteurs pourraient apprécier d’être présentés aux blogs que vous aimez le plus. Le Web est un médium démocratique et les blogueurs amplifient les voix les uns des autres lorsqu’ils lient entre eux. Lier généreusement à d’autres blogs agrandit le réseau de partage d’information et les alliances sociales que nous créons ensemble sur le Web.\nNous vous l’avons dit\u0026hellip;\nIl y a des gens qui attendent rien de moins du Net. Leur croyance est que personne sur le Net ne peut être fait confiance, que chaque commentaire, idée ou opinion est égoïste — et donc non fiable. Ces personnes se contentent de hausser les épaules à l’évocation du « marketing sale ». Bien sûr, disent-elles. Tout Internet est du marketing sale.\nEst-ce vrai ? Comme dans le monde hors ligne, il y a des éléments sans scrupules qui nuisent à l’utilisabilité et à la crédibilité d’Internet. Malheureusement, ceux-ci sont plus souvent mentionnés et sont toujours au centre de l’attention, même si pour de mauvaises raisons, ce qui donne une image négative d’Internet.\nMais pas tout le monde croit cela. Pour certains d’entre nous, Internet est un arène mondiale qui englobe l’esprit collectif, où nous pouvons trouver des réponses à des questions que nous n’avons pas posées, des idées que nous n’avons pas encore pensées, des retours dans des domaines que nous n’avons jamais mis en question. C’est notre ami, notre ennemi, notre conscience, notre professeur et notre capacité à entrer en contact avec des personnes que nous n’aurions jamais pu rencontrer ou connaître autrement.\n14.\nBien sûr, toutes les données disponibles ne sont pas exactes, consciencieuses ou sages. Mais comme dans le monde hors ligne où vous évitez les personnages douteux et vous associez aux bons, le Web est un lieu pour exercer votre jugement.\nLes blogs sont supposés être un nouveau média révolutionnaire, et de plus en plus difficile à ignorer pour ceux qui passent du temps en ligne. Ils sont de plus en plus reconnus par les entreprises comme un outil de communication puissant. En fait, le média est devenu si important que Bill Gates a un site web à lui !\nSoyez patient. La plupart des auditoires de webtoys sont petits, mais avec le temps et des mises à jour régulières, votre auditoire grandira. Vous n’aurez peut-être jamais plus de quelques centaines de lecteurs, mais les personnes qui reviennent régulièrement à votre site le feront parce qu’elles s’intéressent à ce que vous avez à dire.\nRechercher des informations, trouver des réponses et établir des contacts sont les principales raisons pour lesquelles les personnes dans les affaires se connectent à Internet. Un blog peut aider à ce processus, entraînant des opportunités de réseautage en ligne. Avoir un blog d’entreprise peut être une bonne façon pour vos clients de communiquer avec vous, ainsi qu’entre eux-mêmes, et, en cours de route, former de nouvelles relations. Bien que cela puisse sembler trop abstrait, cela se produit en ce moment même sur le .\nLe blogging est rapide, peu coûteux et offre un outil très efficace de publication, de marketing et de gestion de contenu. Cependant, avant d’ajouter le « blogging » à votre mix marketing, assurez-vous d’être clair sur pourquoi vous bloguez et ce que vous voulez en tirer. Voulez-vous les opinions de vos clients sur certains sujets ? Voulez-vous encourager la communication entre vos clients et votre entreprise ?\nUne fois ces questions traitées, vous devez trouver quelqu’un pour héberger votre blog. C’est un processus simple, et presque gratuit.\nSi vous recherchez simplement « blogging » dans Google, vous pourriez avoir du mal à choisir !\nBien que nouveau, le succès du blogging a donné naissance à une nouvelle industrie ; des entreprises entrepreneuriales ont introduit le « suivi de blogs », où elles fouillent le net pour conseiller les marques sur la manière dont leur nom est discuté en ligne, loin des médias imprimés et diffusés traditionnels.\nL’idée derrière ce nouveau secteur est simple. Bien qu’il y ait eu seulement 130 000 blogs il y a quatre ans, aujourd’hui, il y en a environ 10 millions. Ces pages web peuvent faire ou détruire la réputation d’une entreprise car elles s’entrelacent entre elles et permettent aux gens de commenter les publications — en d’autres termes, le blog est un immense réseau de création d’image qui ne peut être ignoré. Même si vous, en tant qu’entreprise, l’ignorez, d’autres qui utilisent vos produits ou services peuvent en parler sur leur blog. Ne voudriez-vous pas le savoir ?\nToutefois, ce n’est pas seulement les grandes entreprises qui peuvent bénéficier des blogs. Les blogs sont un outil utile pour les entreprises de toutes tailles. En particulier pour les plus petites.\nPourquoi ne pas commencer par un blog privé, interne, protégé par mot de passe, afin qu’il ne soit visible que par certains utilisateurs, par exemple une équipe de projet ou une division d’entreprise ? Le personnel peut utiliser des blogs internes ou basés sur intranet pour la gestion du journal, le suivi de projet, l’organisation de réunions, la collecte de commentaires et la publication de documents.\nLa clé du succès est de choisir les domaines de votre entreprise où les blogs peuvent résoudre des problèmes de communication, puis former les propriétaires de blogs à anticiper et à traiter les problèmes à l’avance. Avec de nombreux blogs atteignant des milliers de personnes chaque jour, dont beaucoup sont aussi des blogueurs, il est temps que le blogging soit pris au sérieux dans le mix marketing.\nAlors, quel est votre URL ?\n15.\nForums\nL’utilité des communautés en ligne est le mieux illustrée en examinant divers forums. C’est le moyen le plus simple pour des personnes ayant des centres d’intérêt communs de se réunir et d’échanger leurs pensées et opinions — dans le style en ligne, sans avoir à se rencontrer réellement. Ce chapitre examinera les forums pour voir quels avantages ils peuvent apporter à vous en tant qu’individu, et nous utiliserons notre propre forum (\u0026lt;www.thinkdigit.com/\u0026gt; forum) comme exemple.\n4.1 L’importance des forums\nLes forums sont simples à comprendre, et, à certains égards, très proches des communautés dans la vie réelle. Le fait qu’ils soient très faciles à utiliser augmente également leur popularité — quiconque qui parvient à se connecter à Internet, ouvre un navigateur et tape une URL trouvera facilement à cliquer sur un lien vers un forum, puis s’inscrire et poster ses pensées.\nLes forums, contrairement aux blogs, existent grâce à un groupe de personnes, et ont tendance à refléter les sentiments de la communauté dans son ensemble. Bien que beaucoup pensent qu’une personne perd son individualité sur un forum, le fait est que les forums forment de meilleures personnes. Prenons l’exemple d’une école, où les élèves sont encore plus séparés en groupes selon la classe qu’ils fréquentent. À un étranger, tous les élèves de l’école semblent identiques — ils portent le même uniforme, et sont généralement vus au même endroit. Aucun individu n’est visible à l’étranger. Une fois que l’étranger rejoint l’école, il découvre qu’il existe divers groupes qui l’intéressent, et au sein de ces groupes, il y a des personnes intelligentes, des personnes drôles, et même certaines qui semblent tout simplement bêtes ! C’est exactement comment fonctionnent les forums.\nPrenons l’exemple du forum Digit (\u0026lt;www.thinkdigit\u0026gt;.com/forum) : c’est un endroit où les membres sont aussi divers que possible. Des personnes de toutes les régions du monde — partout en Inde, aux États-Unis et au Royaume-Uni — se rassemblent avec un lien commun : ils lisent tous, ou ont lu, Digit ! Tous les membres du forum aiment la technologie, et la plupart des membres aiment le magazine Digit. Oui, tout comme dans la vie, il y a une minorité dissidente ici, mais ils sont aussi bienvenus que les autres, simplement parce qu’il s’agit d’une communauté, une société en ligne, où l’acceptation est une nécessité.\nCertains iraient jusqu’à dire que seuls les forums et les communautés en ligne peuvent imiter la vie réelle dans l’ailleurs fantasme qu’est le Web. En fait, certains pourraient opiner que c’est même mieux que la vie réelle, car tout le monde s’exprime ouvertement, simplement parce qu’ils n’ont pas peur de la moquerie, comme « Alors, quelques personnes en ligne détestent mon âme… et alors ? »\nQue les forums aident à former de meilleures personnes est quelque chose qui dépasse le cadre de ce livre, et peut-être une conclusion laissée aux psychiatres et aux membres du forum pour débattre. Cependant, il ne fait aucun doute que le bon forum peut vous aider à développer vos compétences.\n4.2 Activité sur les forums\nLes forums ne sont pas seulement des endroits où les personnes qui aiment discuter se réunissent pour jouer à un jeu de supériorité. Oui, cela arrive souvent, et un bon nombre de membres sur chaque forum sont là spécifiquement pour renforcer leur ego en gagnant des arguments, ou pour montrer leur connaissance supérieure, mais ils ne sont pas la majorité.\nLes membres d’un forum peuvent être globalement classés en les groupes suivants :\nVisiteurs ponctuels Navigateurs occasionnels Contribuables réguliers Dépendants du forum Troublemakers (troubles) Modérateurs / Administrateurs\nLisez la suite pour découvrir à quel groupe vous appartenez probablement, et auquel vous « devriez » appartenir. Visiteurs ponctuels\nCe groupe est simple à comprendre : ils trouvent votre site via Google ou d’un ami. Ils décident de le visiter quand ils s’ennuient, ou quand ils ont besoin de réponses rapides, visitent le forum quelques fois, puis oublient tout de son existence.\nSur le forum Digit, ces membres représentent environ 15 pour cent des membres inscrits. Ils s’inscrivent uniquement parce qu’ils ont accidentellement découvert le site et que cela a piqué leur intérêt, mais cette étincelle était éphémère. D’autres utilisateurs qui composent ce groupe sont ceux ayant des problèmes informatiques ou technologiques : ils sont bloqués et ont besoin d’une solution rapidement. Ils visitent des forums technologiques connus, s’inscrivent, postent leur question et attendent un moment.\nIl n’y a rien de vraiment mal à être un visiteur ponctuel, et on ne peut pas reprocher aux gens d’essayer de trouver des solutions à leurs problèmes. Cependant, les netiquettes exigent que les utilisateurs reviennent sur leurs questions quelques jours plus tard et voient s’il y a des réponses. Même si vous n’avez pas trouvé la réponse à votre question sur un forum, et que vous l’avez trouvée ailleurs, revenez à tous les endroroits où vous avez posé votre question et donnez la réponse à ces personnes. Cela enrichit au moins les autres forums avec les bonnes réponses.\nNavigateurs occasionnels\nCe sont généralement des utilisateurs qui ne sont pas particulièrement intéressés par un forum, mais aiment revenir pour voir s’il y a quelque chose d’intéressant. La raison de leurs visites fréquentes peut être le manque de temps. Cependant, il existe deux personnalités très distinctes de personnes qui rentrent dans cette catégorie — celles qui viennent apprendre quelques astuces de temps en temps, et celles qui viennent transmettre des connaissances quand elles s’ennuient.\nAu forum Digit, ce groupe représente moins de cinq pour cent de la population totale des membres. La raison est simple : parce que nous sommes un magazine mensuel, presque tous les membres ont quelque chose de nouveau à dire chaque mois. Cela donne une vie fraîche à chaque doigt du clavier des contributeurs réguliers — que ce soit pour critiquer ou pour louer, cela n’a pas d’importance.\nAu forum Digit, la plupart des membres tombent dans l’un des autres catégories : ils n’ont pas d’intérêt et sont ponctuels, ou sont accros et reviennent au moins quelques fois par mois.\nContribuables réguliers\nCes membres sont les fondations de tout forum réussi, et visitent et contribuent au moins quelques fois par semaine. Ils ont un intérêt authentique pour les sujets discutés sur le forum, et aiment la compagnie de leurs pairs.\nSur le forum Digit, la majorité des membres (environ 60 pour cent) tombent dans cette catégorie. La plupart des membres de cette catégorie cherchent à développer leurs compétences en technologie, et aident également ceux qui ont besoin de réponses. Ce sont ces membres qui contribuent le plus à la croissance de popularité d’un forum, et les nouvelles se répandent généralement par eux.\nIl va sans dire qu’il est vital que la majorité des membres du forum tombent dans cette catégorie pour qu’un forum devienne réussi ou populaire. Un décalage dans l’équilibre vers toute autre catégorie signifierait certaine fin pour tout forum.\nDépendants\nIl est difficile de commencer quoi que ce soit en ligne aujourd’hui sans que quelques milliers de personnes ne deviennent dépendants, et les forums ne font pas exception. Il y a toujours un groupe de personnes qui peuvent tirer assez de plaisir de n’importe quoi pour devenir dépendants.\nCe sont des personnes qui postent plusieurs fois par jour — autant que mille messages par un membre en deux semaines sur notre forum ! Ces personnes attendent avec impatience de rentrer chez eux et de se connecter au forum tout comme certaines personnes ont besoin de café ou de thé chaque matin.\nIl peut sembler que ces membres contribuent le plus à un forum, et donc sont peut-être significativement responsables de sa croissance, mais en réalité, c’est l’inverse. Les dépendants ont tellement besoin de poster leurs opinions qu’ils ne se soucient parfois pas si leurs opinions seront appréciées.\nSur notre forum, par exemple, les dépendants ne sont pas nécessairement les membres les plus techniquement compétents, et finissent souvent par poster des messages frivoles sur des sujets futiles qui font crier les autres membres d’incrédulité. Souvent, de tels messages mènent à des discussions passionnées et à des insultes.\nLes dépendants sont généralement surnommés « spammeurs », « lamer » et « nOOb » (abr. de newbie). D’autres noms très colorés et des variantes de ces noms sont également lancés au hasard par la majorité. Cela arrive parce que les membres voient les mêmes personnes qui interviennent partout avec des commentaires ou des questions, très souvent dans des fils ou des sujets qu’ils ne connaissent rien, alors qu’ils seraient mieux avisés d’attendre et de lire les messages des membres qui ont les connaissances pour répondre.\nTout comme nous détestons les bavards dans la vie réelle, qui ne nous laissent jamais terminer une phrase et nous interrompent tout le temps, les dépendants sont généralement détestés par la majorité.\nTroublemakers\nLes terroristes du monde en ligne, les trouble-fête ont une seule mission : perturber la vie quotidienne sur un forum. Ces personnes feront absolument tout pour choquer et répugner les membres, et même apprécier les abus lancés contre eux.\nContrairement à la vie réelle, où de telles personnes peuvent être arrêtées et punies, l’anonymat sur Internet n’est pas difficile à obtenir. Les forums ne sont pas conçus pour être des forteresses, et toutes les mesures de sécurité prises sont à peine un frein pour un trouble-fête.\nVers la fin de 2004, le forum Digit a été attaqué par quelques trouble-fête : certains étaient déterminés à répandre la haine, d’autres essayaient de pirater le forum, et un même a osé poster des abus et de la pornographie. Heureusement, nos membres étaient assez matures pour ignorer tout cela, et ont reconnu l’immaturité et l’absurdité des trouble-fête.\nPeu importe le nombre d’IPs bannies, et le nombre d’adresses e-mail bloquées, les trouble-fête sont revenus. À la fin, ce sont les membres du forum qui se sont débarrassés de ces quelques intrus. Comment ? Juste en ignorant tout ce qu’ils faisaient. Rien ne faisait plus mal que le manque de confrontation et l’indifférence totale qu’ils ont montrée.\nDes forums du monde entier ont trouvé la même brillante solution. La vie en ligne, du moins, prouve que si vous l’ignorez assez longtemps, il disparaîtra !\nModérateurs / Administrateurs\nC’est un groupe que tout le monde veut rejoindre — jusqu’à ce qu’ils le fassent réellement ! Le poste de « modérateur de forum » ou d’« administrateur de forum » est souvent très convoité, surtout car ils détiennent une aura de pouvoir. Cependant, pour dire franchement, comme le dit une bande dessinée populaire, « avec un grand pouvoir vient une grande responsabilité », et ces postes de pouvoir peuvent être ingrats.\nNon, nous ne voulons pas comparer les membres du forum à des super-héros, mais comme on le sait bien, quand un passe-temps devient un travail, il cesse d’être amusant !\nLe forum Digit a quelques membres qui ont été élevés au poste convoité de modérateur, et qui étaient initialement ravis de l’opportunité. Cependant, ils ont rapidement compris que ce qui était amusant autrefois était devenu une source d’exaspération.\nPeut-être la meilleure chose qu’un membre d’un forum puisse faire est de reconnaître la quantité de travail que des inconnus mettent simplement pour développer la communauté. Ils répondent à chaque petite question, règlent les conflits, assurent que les règles du forum sont respectées, et, dans l’ensemble, améliorent la qualité du forum.\nMême les membres qui aspirent à devenir modérateurs, ou les personnes qui veulent lancer leur propre forum, doivent se souvenir qu’ils doivent mener par l’exemple. Si vous pouvez gagner le respect sans avoir de pouvoir, alors vous êtes digne de le possééder. Si vous voulez simplement faire une course au pouvoir, vous serez ostracisé par votre communauté en ligne, et évincé comme un politicien impopulaire !\nSi vous lancez un forum, n’attribuez le pouvoir qu’aux méritants. Souvenez-vous que vous pourriez avoir un cent amis, mais que tous ne conviendront pas comme modérateurs pour votre forum.\nAvant de lancer un forum, ou, pour tout dire, de vous inscrire à un forum, posez-vous les questions suivantes :\no Quels sont mes centres d’intérêt ?\no Voulez-vous d’autres opinions et pensées sur ces centres d’intérêt ?\no Serai-je bénéficié de rencontrer des gens partageant les mêmes centres d’intérêt ?\no Que faire des personnes qui ne partagent pas mon point de vue ?\no Puis-je gérer les critiques ?\no Puis-je consacrer du temps régulièrement à visiter un forum ?\no Puis-je aider les gens à acquérir des connaissances ?\nVos réponses devraient vous conduire à la bonne décision.\nCONCLUSION\nGagner du respect\nÊtre en ligne aujourd’hui est plus une norme qu’une tendance. La plupart des gens, y compris les professionnels et les étudiants, énoncent leurs adresses e-mail juste après leurs numéros de téléphone. L’un des plus grands avantages d’être en ligne est la possibilité de toucher le monde entier — littéralement. C’est un peu comme mettre votre enseigne à l’extérieur d’un bureau ; la seule différence est que les passants incluent le monde entier.\nL’envie de se connecter est, du moins pour l’instant, terminée, ce qui est prouvé par le plateau de croissance du Web public. Maintenir une présence en ligne est devenu une routine, et dans de nombreux cas, une activité nécessaire pour les organisations de toutes sortes.\nQui dois-je être ? Il n’y a pas de réponse fixe à cette question : qui vous êtes largement détermine qui vous serez dans une communauté en ligne. Selon lequel des catégories mentionnées précédemment vous décrit le mieux, ou vous intéresse le plus, vous pouvez être n’importe qui. Peut-être la meilleure façon de contribuer à une communauté est de rejoindre un forum qui vous intéresse. Non seulement vous pourrez acquérir des connaissances à partir d’un forum, mais vous devriez aussi être qualifié et disposé à en transmettre.\nAfin d’améliorer vos compétences et connaissances, vous devez gagner du respect et être poli. Traitez un forum et ses membres comme vous le feriez si tout cela se passait dans le « monde réel ». Tout comme vous seriez poli lors d’une réunion, et ne couperiez pas une intervention, vous devez lire et comprendre d’abord, puis poser des questions plus tard. Peut-être le rôle d’un contributeur régulier est idéal, et c’est là que vous devriez viser à rester !\nSi vous prévoyez lancer un forum, ou avez récemment été donné des pouvoirs de modérateur, rappelez-vous ce que vous avez ressenti en tant que nouveau membre. Exercez de la patience et de la compréhension, et surtout, menez par l’exemple.\nLes règles sont importantes, et bien que l’Internet a prospéré grâce au fait qu’il n’en a pas, votre forum en aura besoin. Une fois que vous rejoignez ou lancez un forum qui cible un segment d’intérêt humain, tenez-vous-y. Changer fréquemment de focus mène à quelque chose qui n’est ni ici ni là, et par conséquent, n’est pas trop populaire. Établir des règles est la première étape pour garder votre focus, et les appliquer est encore plus important.\nLes cinq dernières années ont vu une validation extraordinaire du Web comme « preuve de concept ». Espérons que les cinq prochaines années verront une progression tout aussi remarquable dans le raffinement du Web afin d’améliorer à la fois l’étendue de ses utilisateurs, et la pertinence de son contenu.\nBibliographie\nIl existe des livres sur tout. Et ces dernières années, des livres ont également été écrits sur des sujets tels que l’hébergement web, le blogging, etc. Si vous êtes intéressé par l’un de ces sujets — par exemple, si vous voulez concevoir un blog vraiment professionnel — vous feriez bien de lire un livre à ce sujet. Cela ne veut pas dire qu’il n’y a pas de bons sites web offrant des informations précieuses sur ces sujets. C’est pourquoi, dans ce chapitre, nous avons sélectionné quelques livres et sites web pour votre référence.\nGérer son e-mail : Penser en dehors de la boîte\npar Christina Cavanagh\nL’e-mail est l’une des applications d’affaires les plus utiles et efficaces jamais développées. Cependant, beaucoup de gens aujourd’hui redoutent la tâche de trier une boîte de réception remplie de messages qui ne les concernent pas et de spam qu’ils ne veulent pas. Ce livre est un guide direct dédié à aider les travailleurs et les organisations à maîtriser le monstre e-mail et à reprendre leur temps.\nGérer son e-mail est une référence simple et accessible pour les travailleurs et les organisations qui souhaitent tirer le meilleur parti de cette méthode de communication omniprésente et parfois envahissante. Avec de nouvelles stratégies pour gérer les inefficacités liées à l’e-mail et des conseils pratiques pour s’organiser et rester organisé, il libérera des heures chaque semaine pour ce qui est vraiment important. Il examine les catégories et les schémas d’abus de l’e-mail et présente des explications, des solutions et des conseils rapides basés sur des recherches sur des sujets tels que les meilleures pratiques pour répondre à l’e-mail, quand choisir des méthodes de communication plus traditionnelles à l’e-mail, comment structurer un e-mail pour un impact élevé, comment rédiger des messages plus lisibles et compréhensibles, les pièges juridiques à éviter, et bien plus encore.\nLe Manuel du Weblog : Conseils pratiques pour créer et entretenir votre blog\npar Rebecca Blood\nLes weblogs — fréquemment mis à jour, indépendamment produits, et curieusement addictifs — sont devenus certains des sites les plus populaires sur le Web aujourd’hui. Le Manuel du Weblog est le premier livre à expliquer comment les weblogs fonctionnent et à explorer leur impact sur le paysage médiatique.\nIl n’y a pas de formule pour créer un excellent webblog — mais il y a des leçons à tirer de son entretien. Dans Le Manuel du Weblog, Rebecca Blood s’appuie sur son expérience en tant qu’ancien participant de la communauté des weblogs pour partager ce qu’elle a appris en trois ans de « vie en ligne ».\nAvec une voix claire et engageante, Rebecca explique comment choisir parmi les outils disponibles, même en guidant le débutant à travers le processus de création de son premier webblog. Le long du chemin, elle répond aux questions fréquemment posées sur les règles de politesse des weblogs, comment attirer des lecteurs, et les qualités qui font qu’un webblog se démarque, alertant le débutant sur les considérations — et les pièges — dont il ne savait pas poser la question.\nEnfin, l’auteure examine comment la communauté des weblogs a grandi et évolué, les dangers qui la menacent, et les façons dont les weblogs influencent et sont influencés par la culture en ligne et hors ligne.\n","permalink":"https://www.shafiq.in/fr/blog/staying-online/","summary":"\u003cp\u003eLien de téléchargement : [Staying Online print 1.doc][1]\u003c/p\u003e\n\u003cp\u003eINTRODUCTION\u003c/p\u003e\n\u003cp\u003eRester en ligne\u003c/p\u003e\n\u003cp\u003eDans les années 80, les \u003ca class=\"zem_slink\" title=\"Bee Gees\" href=\"http://www.beegees.com\" rel=\"homepage\"\u003eBee Gees\u003c/a\u003e chantaient « Staying\u0026rsquo; Alive ». Dans le langage d’aujourd’hui, cela s’exprimerait mieux par « Staying\u0026rsquo; Online » ! À part les références un peu clichées, le fait est que rester connecté et créer une forte \u003ca class=\"zem_slink\" title=\"Empreinte numérique\" href=\"http://en.wikipedia.org/wiki/Digital_footprint\" rel=\"wikipedia\"\u003eempreinte numérique\u003c/a\u003e sont les deux éléments les plus importants pour des gains personnels et professionnels.\u003c/p\u003e\n\u003cp\u003eQu’est-ce qu’une empreinte numérique ? S’agit-il simplement d’obtenir une adresse e-mail ? De créer un site ? De son comportement en ligne ? En réalité, c’est tout cela et bien plus encore. C’est presque comme créer son identité en ligne, tout comme dans le monde hors ligne.\u003c/p\u003e","title":"Staying Online"},{"content":"Lien de téléchargement : scrum-tmpl-100212\n","permalink":"https://www.shafiq.in/fr/blog/sample-scrum-template/","summary":"\u003cp\u003eLien de téléchargement : \u003ca href=\"/wp-content/uploads/2011/10/scrum-tmpl-100212.xls\"\u003escrum-tmpl-100212\u003c/a\u003e\u003c/p\u003e","title":"Sample Scrum Template"},{"content":"Lien de téléchargement : proposal-template.doc\n\u0026lt;Logo de l\u0026rsquo;entreprise\u0026gt; [Proposition] À Pour \u0026lt;Services proposés / Nom du projet\u0026gt; \u0026lt;Nom de l\u0026rsquo;entreprise\u0026gt; \u0026lt;Adresse de l\u0026rsquo;entreprise\u0026gt; \u0026lt;Téléphone\u0026gt; \u0026lt;Télécopie\u0026gt; [Table des matières]\nRéponse à la [APC].. 3 [Résumé exécutif].. 3 Profil de l\u0026rsquo;entreprise.. 3 Champ d\u0026rsquo;application du travail.. 3 Architecture.. 3 Hypothèses. 3 Estimation du travail.. 3 Estimation des coûts.. 3 Conditions générales. 3 Expérience de l\u0026rsquo;entreprise.. 3 \u0026lt;Suivi des sections spécifiques au document\u0026gt; Réponse à l\u0026rsquo;APC \u0026lt;Souligner le numéro d\u0026rsquo;identification de l\u0026rsquo;APC / appel d\u0026rsquo;offres et une brève introduction au document\u0026gt;\nRésumé exécutif \u0026lt;Cette section doit donner un aperçu global de la proposition et mentionner brièvement les points forts de chaque section\u0026gt;\nProfil de l\u0026rsquo;entreprise provide information about the company\u0026gt;\nChamp d\u0026rsquo;application du travail \u0026lt;Cette section doit détailler la solution ou les services proposés. Elle peut inclure les éléments suivants :\ni) Notre compréhension du problème\nii) Solution proposée\niii) Modules logiciels à développer\niv) Fonctionnalités du système \u0026gt;\nArchitecture \u0026lt;Cette section doit décrire en détail l\u0026rsquo;architecture proposée pour le système\u0026gt;\nHypothèses \u0026lt;Cette section doit lister les hypothèses formulées lors de la rédaction de la proposition\u0026gt;\nEstimation du travail \u0026lt;Cette section doit décrire l\u0026rsquo;estimation du travail nécessaire à l\u0026rsquo;exécution du projet\u0026gt;\nEstimation des coûts \u0026lt;Cette section doit décrire l\u0026rsquo;estimation des coûts liés à l\u0026rsquo;exécution du projet\u0026gt;\nConditions générales \u0026lt;Cette section doit lister les conditions générales établies par \u0026ldquo;Nom de l\u0026rsquo;entreprise\u0026rdquo; pour exécuter le projet\u0026gt;\nExpérience de l\u0026rsquo;entreprise \u0026lt;Cette section doit décrire l\u0026rsquo;expérience passée de \u0026ldquo;Nom de l\u0026rsquo;entreprise\u0026rdquo; dans la gestion de projets similaires\u0026gt;\nEn plus des sections ci-dessus, la proposition peut également inclure des sections spécifiques au projet / au client ainsi que des annexes.\nJ\u0026rsquo;espère que cela vous aide dans la création de votre document. Bonne journée ! 😊\n","permalink":"https://www.shafiq.in/fr/blog/project-proposal-template/","summary":"\u003cp\u003eLien de téléchargement : \u003ca href=\"/wp-content/uploads/2011/10/proposal-template.doc\" title=\"Modèle de proposition\"\u003eproposal-template.doc\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u0026lt;Logo de l\u0026rsquo;entreprise\u0026gt; [Proposition] À \u003cLogo du client\u003e \u003cNom du client\u003e Pour \u0026lt;Services proposés / Nom du projet\u0026gt; \u003cDate : jj-mm-aaaa\u003e \u0026lt;Nom de l\u0026rsquo;entreprise\u0026gt; \u0026lt;Adresse de l\u0026rsquo;entreprise\u0026gt; \u0026lt;Téléphone\u0026gt; \u0026lt;Télécopie\u0026gt; \u003cSite web\u003e [Table des matières]\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eRéponse à la [APC].. 3\u003c/li\u003e\n\u003cli\u003e[Résumé exécutif].. 3\u003c/li\u003e\n\u003cli\u003eProfil de l\u0026rsquo;entreprise.. 3\u003c/li\u003e\n\u003cli\u003eChamp d\u0026rsquo;application du travail.. 3\u003c/li\u003e\n\u003cli\u003eArchitecture.. 3\u003c/li\u003e\n\u003cli\u003eHypothèses. 3\u003c/li\u003e\n\u003cli\u003eEstimation du travail.. 3\u003c/li\u003e\n\u003cli\u003eEstimation des coûts.. 3\u003c/li\u003e\n\u003cli\u003eConditions générales. 3\u003c/li\u003e\n\u003cli\u003eExpérience de l\u0026rsquo;entreprise.. 3\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch1 id=\"suivi-des-sections-spécifiques-au-document\"\u003e\u0026lt;Suivi des sections spécifiques au document\u0026gt;\u003c/h1\u003e\n\u003col\u003e\n\u003cli\u003eRéponse à l\u0026rsquo;APC\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e\u003cem\u003e\u0026lt;Souligner le numéro d\u0026rsquo;identification de l\u0026rsquo;APC / appel d\u0026rsquo;offres et une brève introduction au document\u0026gt;\u003c/em\u003e\u003c/p\u003e","title":"Project Proposal Template"},{"content":"Lien de téléchargement : Procédure des propositions et contrats_1\nPropositions et Contrats – Procédure Version 1.0\nN° Description Numéro de version Demandeur Approbateur 1. Version initiale 1.0 NA Objectifs\nL\u0026rsquo;objectif de cette procédure est de définir et d\u0026rsquo;établir le processus de création et de soumission des propositions, ainsi que de la révision et de la finalisation des contrats.\nChamp d\u0026rsquo;application\nLe champ d\u0026rsquo;application de cette procédure s\u0026rsquo;applique à toutes les propositions soumises aux prospects et aux contrats finalisés avec les clients.\nRéférences\n[Procédure de gestion des exigences] [Procédure de gestion de projet] [Procédure d\u0026rsquo;audit] [Procédure de revue] Problèmes en suspens\nAucun Responsabilités\nIl incombe au [Chef de projet] en charge de ce compte de rédiger la proposition commerciale/entreprise sous la direction du [Directeur du développement des affaires] (BDM).\nLe [Directeur général (CEO)] / Vice-président (VP) / Responsable du développement des affaires selon le cas, est responsable de la politique de tarification des projets et applications de l\u0026rsquo;entreprise, qui sera révisée de temps à autre. En cas d\u0026rsquo;exceptions nécessitant une sanction spéciale pour déroger aux tarifs standards et aux spécifications techniques, l\u0026rsquo;un d\u0026rsquo;entre eux, selon le cas, donnera l\u0026rsquo;approbation finale.\nL\u0026rsquo;équipe BD est responsable de :\nLa collecte des RFP pour tout projet requis La vente des produits/projets de l\u0026rsquo;entreprise La génération de leads dans la ligne d\u0026rsquo;affaires de l\u0026rsquo;entreprise La coordination avec le client pendant la phase initiale du projet et à tout moment requis durant le cycle de vie du projet La collecte des exigences primaires du client L\u0026rsquo;équipe BD doit maintenir une liste des clients et effectuer un suivi de tous les projets avec l\u0026rsquo;aide du chef de projet ou du [Chef de projet]. Le Chef de projet / Chef de projet est responsable de :\nLa préparation de la proposition du projet, de l\u0026rsquo;estimation et de la transmission au VP pour révision et approbation La coordination entre le client et le VP pendant la préparation de la proposition L\u0026rsquo;allocation initiale des ressources du projet L\u0026rsquo;analyse des exigences du client à un niveau granulaire avant le démarrage du projet La collecte et l\u0026rsquo;analyse des exigences des utilisateurs finaux du projet La gestion des demandes de changement du client durant l\u0026rsquo;exécution du projet Le suivi de la rentabilité du projet et sa soumission à la direction Le VP prépare le contrat sur la base des informations fournies par le PM/PL et par l\u0026rsquo;équipe BD\nLe Chef de projet est responsable de nommer une [équipe de projet] affectée à chaque projet client en cours d\u0026rsquo;exécution.\nPendant la période du contrat, le VP/PM est responsable de collecter les retours du client à intervalles réguliers.\nL\u0026rsquo;équipe centrale du projet doit analyser les retours du client et les rapporter au responsable ou au chef de projet concerné.\nEntrées\n[Demande de proposition] Sorties\nContrat signé Mécanisme de contrôle\nLe VP approuve tous les contrats, le cas échéant, entre l\u0026rsquo;entreprise et les clients externes. Un mécanisme approprié de partage de l\u0026rsquo;information doit être établi pour combler les lacunes de communication entre le VP/PM et l\u0026rsquo;équipe de développement, afin que le VP/PM puisse résoudre les problèmes liés au client (état du projet, problèmes techniques). Procédure\nPropositions\nUne proposition détaillée sera préparée par le Chef de projet / Chef de projet concerné. La proposition traite des points suivants : L\u0026rsquo;outil proposé par l\u0026rsquo;entreprise pour le matériel spécifique et le système d\u0026rsquo;exploitation réseau, ainsi que le back-end, selon le cas, et suggéré par le client. Des informations techniques supplémentaires, si nécessaire, concernant la topologie, le réseau, l\u0026rsquo;architecture, etc., selon le cas et la nécessité. Description brève de la situation actuelle et des besoins commerciaux Critères d\u0026rsquo;acceptation du client pour le projet Liste des écarts connus, si présents, des déviations majeures par rapport aux modèles existants Prix de l\u0026rsquo;outil de développement / licence logicielle utilisée (version runtime ou version de développement selon le besoin) Prix du matériel, du système d\u0026rsquo;exploitation et d\u0026rsquo;autres logiciels si l\u0026rsquo;entreprise prévoit de les fournir Formation gratuite ou payante et son prix, le cas échéant Support d\u0026rsquo;implémentation gratuit ou payant, si requis Organisation des déplacements, hébergement et pension du personnel du projet si une inspection sur site est prévue Prix des autres services, tels que les services de saisie de données, si l\u0026rsquo;entreprise prévoit de les fournir, conditions de paiement Toute exclusion Frais de garantie et AMC Validité de l\u0026rsquo;offre Taux et taxes applicables Les équipes de projet, ainsi que les équipes de soutien, si applicable et requis, mèneront une analyse des risques basée sur les paramètres connus et l\u0026rsquo;interaction avec les prospects. Elles pourront, si nécessaire et applicable, proposer les estimations de temps et de coût à intégrer dans la proposition. Le PM/PL concerné soumettra la proposition et la suivra périodiquement. L\u0026rsquo;analyse complète des risques et l\u0026rsquo;étude de faisabilité cumulée étude commerciale seront menées par l\u0026rsquo;équipe de projet. L\u0026rsquo;étude de faisabilité cumulée étude commerciale sera effectuée afin de s\u0026rsquo;assurer que les exigences de l\u0026rsquo;application du prospect, telles que comprises à ce stade, sont dans les capacités de l\u0026rsquo;entreprise pour les réaliser. Elle peut également couvrir le flux métier, les besoins en système d\u0026rsquo;information de gestion (MIS), les groupes d\u0026rsquo;utilisateurs et les types d\u0026rsquo;utilisateurs fonctionnels, les interfaces avec d\u0026rsquo;autres systèmes et le flux documentaire, selon le cas. L\u0026rsquo;étendue de l\u0026rsquo;étude dépendra des technologies impliquées ainsi que des risques (financiers, techniques, ressources humaines, calendrier). Il est nécessaire de mener l\u0026rsquo;étude de faisabilité cumulée étude commerciale avant d\u0026rsquo;accepter la commande, la méthode d\u0026rsquo;estimation, dans les cas où l\u0026rsquo;entreprise ne dispose pas de modèles d\u0026rsquo;applications. Le rapport de l\u0026rsquo;étude de faisabilité cumulée étude commerciale devrait mettre en évidence : La faisabilité d\u0026rsquo;exécution du projet/activité au sein de l\u0026rsquo;organisation. Les risques impliqués dans le projet proposé. Les nouvelles fonctionnalités (celles qui ne sont pas disponibles dans les modèles existants). Une plateforme matérielle et/ou logicielle où l\u0026rsquo;expérience au sein de l\u0026rsquo;entreprise est jugée insuffisante et où une formation supplémentaire est requise. Cadre temporel estimé et estimations. Livrables. Le VP, accompagné du Chef de projet, effectue une revue des contrats et propositions avant leur livraison. Il est dans l\u0026rsquo;intérêt de l\u0026rsquo;entreprise et du client de repérer les risques. Toutefois, l\u0026rsquo;entreprise peut choisir d\u0026rsquo;exclure certains risques internes du contrat. L\u0026rsquo;accord final pour procéder sera donné initialement par le VP, après la présentation formelle de la proposition et la revue des risques. Le PM/VP valide les actions de revue et lance les actions nécessaires pour modifier le contrat en conséquence. Le VP approuve le dossier final de revue du contrat. Le VP maintient le fichier des contrats et envoie une copie avec l\u0026rsquo;état pour chaque revue au chef de projet concerné. Si une modification est reçue par l\u0026rsquo;équipe du projet, elle sera informée et discutée par les équipes concernées afin d\u0026rsquo;examiner l\u0026rsquo;aspect commercial. Tous les changements affectant la documentation du projet seront contrôlés dans le système de gestion de configuration. L\u0026rsquo;entreprise, pour toute modification ou amendement au contrat, considérera les comptes rendus de la réunion de revue approuvés par le client comme une acceptation par le client. ","permalink":"https://www.shafiq.in/fr/blog/proposals-and-contracts-sample/","summary":"\u003cp\u003e\u003cstrong\u003eLien de téléchargement : \u003ca href=\"/wp-content/uploads/2011/10/proposals-and-contracts-procedure_1.doc\"\u003eProcédure des propositions et contrats_1\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003ch1 id=\"propositions-et-contrats--procédure\"\u003e\u003ca href=\"http://en.wikipedia.org/wiki/Proposal_%28business%29\"\u003ePropositions\u003c/a\u003e et \u003ca href=\"http://en.wikipedia.org/wiki/Contract\"\u003eContrats\u003c/a\u003e – Procédure\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003eVersion 1.0\u003c/strong\u003e\u003c/p\u003e\n\u003ctable\u003e\n  \u003cthead\u003e\n      \u003ctr\u003e\n          \u003cth\u003e\u003cstrong\u003eN°\u003c/strong\u003e\u003c/th\u003e\n          \u003cth\u003e\u003cstrong\u003eDescription\u003c/strong\u003e\u003c/th\u003e\n          \u003cth\u003e\u003cstrong\u003eNuméro de version\u003c/strong\u003e\u003c/th\u003e\n          \u003cth\u003e\u003cstrong\u003eDemandeur\u003c/strong\u003e\u003c/th\u003e\n          \u003cth\u003e\u003cstrong\u003eApprobateur\u003c/strong\u003e\u003c/th\u003e\n      \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n      \u003ctr\u003e\n          \u003ctd\u003e1.\u003c/td\u003e\n          \u003ctd\u003eVersion initiale\u003c/td\u003e\n          \u003ctd\u003e1.0\u003c/td\u003e\n          \u003ctd\u003eNA\u003c/td\u003e\n          \u003ctd\u003e\u003c/td\u003e\n      \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eObjectifs\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eL\u0026rsquo;objectif de cette procédure est de définir et d\u0026rsquo;établir le processus de création et de soumission des propositions, ainsi que de la révision et de la finalisation des contrats.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eChamp d\u0026rsquo;application\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eLe champ d\u0026rsquo;application de cette procédure s\u0026rsquo;applique à toutes les propositions soumises aux prospects et aux contrats finalisés avec les clients.\u003c/p\u003e","title":"Proposals and Contracts [Sample]"},{"content":"Lien de téléchargement : tableur de suivi des problèmes exemple\n","permalink":"https://www.shafiq.in/fr/blog/sample-issue-tracker-spreadsheet/","summary":"\u003cp\u003eLien de téléchargement : \u003ca href=\"/wp-content/uploads/2011/10/sample-issue-tracker-spreadsheet1.xls\"\u003etableur de suivi des problèmes exemple\u003c/a\u003e\u003c/p\u003e","title":"Sample Issue Tracker Spreadsheet"},{"content":"Il y a quelques mois, j\u0026rsquo;ai acheté un disque dur portable Prestige chez IT dot COM, un revendeur basé à Margao, en Goa, en Inde. Cependant, ma satisfaction a été de courte durée ; le disque a commencé à présenter des dysfonctionnements sans prévenir. La lumière indicatrice clignotait sans fin, et il n’a pas été reconnu sur plusieurs systèmes que j’ai essayés.\nJ’étais à Hyderabad lorsque j’ai d’abord rencontré ce problème. À ma grande surprise, il n’y avait pas le moindre centre d’assistance agréé dans l’ensemble des deux villes jumelles qu’Hyderabad et Secunderabad. J’ai donc attendu de revenir au Goa pour remettre le disque défectueux au revendeur.\nAprès deux semaines de silence total de la part du magasin, j’ai pris l’initiative de suivre l’affaire. Leur réponse m’a laissé abasourdi : ils ont affirmé qu’il y avait « des dommages physiques » sur le disque dur. Ils ont spécifiquement mentionné la présence de Feviquick (un adhésif) et ont suggéré que le disque avait été manipulé, ce qui annulait la garantie.\nL’absurdité de la situation est difficile à ignorer — je n’ai ni l’expertise ni l’envie de jouer avec les composants internes d’un disque dur, puis de le recoller avec de la colle. Ce n’est pas seulement une grave distortion de la vérité, mais cela soulève des questions sur leurs politiques de garantie et de service.\nEn prime, ils se sont refusés à fournir des coordonnées de service client. Le numéro qu’ils m’ont finalement donné était incorrect. En outre, trouver leur numéro de service client pour l’Inde en ligne revient à chercher une aiguille dans une botte de foin, une différence encore plus criante lorsqu’on la compare à l’option de chat en direct qu’ils offrent librement à leurs clients américains.\nNuméro du produit : KCAA130310\nJe suis profondément déçu par les barrières que Iomega semble mettre en place pour ses clients indiens. Cette expérience m’a laissé un goût amer, et je repense désormais à l’endroit où je place ma confiance, et surtout, à l’endroit où j’investis mon argent.\n","permalink":"https://www.shafiq.in/fr/blog/the-ups-and-downs-of-iomega-customer-service-in-india/","summary":"\u003cp\u003eIl y a quelques mois, j\u0026rsquo;ai acheté un disque dur portable Prestige chez IT dot COM, un revendeur basé à Margao, en Goa, en Inde. Cependant, ma satisfaction a été de courte durée ; le disque a commencé à présenter des dysfonctionnements sans prévenir. La lumière indicatrice clignotait sans fin, et il n’a pas été reconnu sur plusieurs systèmes que j’ai essayés.\u003c/p\u003e\n\u003cp\u003eJ’étais à Hyderabad lorsque j’ai d’abord rencontré ce problème. À ma grande surprise, il n’y avait pas le moindre centre d’assistance agréé dans l’ensemble des deux villes jumelles qu’Hyderabad et Secunderabad. J’ai donc attendu de revenir au Goa pour remettre le disque défectueux au revendeur.\u003c/p\u003e","title":"The Ups and Downs of Iomega Customer Service in India"},{"content":"La commande suivante recherchera un motif d\u0026rsquo;adresse IP dans le fichier spécifié et le remplacera par celle fournie :\nsed \u0026#39;s/[0-9]\\{1,3\\}.[0-9]\\{1,3\\}.[0-9]\\{1,3\\}.[0-9]\\{1,3\\}/**IPADDRESS-COMES-HERE**/g\u0026#39; /SourceFilename \u0026gt; /DestinationFilename ","permalink":"https://www.shafiq.in/fr/blog/howto-replace-ip-address-using-sed/","summary":"\u003cp\u003eLa commande suivante recherchera un motif d\u0026rsquo;adresse IP dans le fichier spécifié et le remplacera par celle fournie :\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esed \u003cspan class=\"s1\"\u003e\u0026#39;s/[0-9]\\{1,3\\}.[0-9]\\{1,3\\}.[0-9]\\{1,3\\}.[0-9]\\{1,3\\}/**IPADDRESS-COMES-HERE**/g\u0026#39;\u003c/span\u003e /SourceFilename \u0026gt; /DestinationFilename\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","title":"[HowTo] Replace ip address using sed"},{"content":"Pour désactiver un service, vous devez être root ou disposer de privilèges sudo.\nPar exemple, pour désactiver le service Puppet, vous exécuteriez la commande suivante :\nsvcadm disable network/cswpuppetd:default Cela désactivera le service Puppet et empêchera son exécution.\nPour vérifier que le service a bien été désactivé, vous pouvez exécuter la commande suivante :\nsvcs | grep puppet Cela affichera tous les services en cours d\u0026rsquo;exécution, et si le service Puppet est désactivé, il n\u0026rsquo;apparaîtra pas dans la liste.\nVoici quelques conseils supplémentaires pour désactiver des services :\nVous pouvez utiliser l\u0026rsquo;option -s avec la commande svcadm disable pour désactiver le service de manière synchrone. Cela signifie que la commande ne retournera pas avant que le service n\u0026rsquo;ait été entièrement désactivé. Vous pouvez utiliser l\u0026rsquo;option -T avec la commande svcadm disable pour spécifier un délai d\u0026rsquo;attente en secondes. Cela signifie que la commande ne retournera pas avant que le service n\u0026rsquo;ait été désactivé ou que le délai d\u0026rsquo;attente n\u0026rsquo;ait été atteint. Si vous souhaitez désactiver un service temporairement, vous pouvez utiliser la commande svcadm disable -t. Cela désactivera le service, mais il pourra être redémarré en exécutant la commande svcadm enable. ","permalink":"https://www.shafiq.in/fr/blog/disable-services-in-solaris-10/","summary":"\u003cp\u003ePour désactiver un service, vous devez être root ou disposer de privilèges sudo.\u003c/p\u003e\n\u003cp\u003ePar exemple, pour désactiver le service Puppet, vous exécuteriez la commande suivante :\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esvcadm disable network/cswpuppetd:default\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eCela désactivera le service Puppet et empêchera son exécution.\u003c/p\u003e\n\u003cp\u003ePour vérifier que le service a bien été désactivé, vous pouvez exécuter la commande suivante :\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esvcs \u003cspan class=\"p\"\u003e|\u003c/span\u003e grep puppet\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eCela affichera tous les services en cours d\u0026rsquo;exécution, et si le service Puppet est désactivé, il n\u0026rsquo;apparaîtra pas dans la liste.\u003c/p\u003e","title":"Disable services in Solaris 10"},{"content":"/var/svc/log/network-cswpuppetd:default.log\n/var/svc/log/network-cswpuppetmasterd:default.log\nutilisez tail -f \u0026lt;nom du fichier de journal\u0026gt;\n","permalink":"https://www.shafiq.in/fr/blog/puppet-logs-on-solaris-10/","summary":"\u003cp\u003e/var/svc/log/network-cswpuppetd:default.log\u003cbr\u003e\n/var/svc/log/network-cswpuppetmasterd:default.log\u003c/p\u003e\n\u003cp\u003eutilisez \u003ccode\u003etail -f \u0026lt;nom du fichier de journal\u0026gt;\u003c/code\u003e\u003c/p\u003e","title":"Puppet logs on solaris 10"},{"content":"Subversion est bien plus qu\u0026rsquo;un simple outil pour suivre les modifications de votre code. Il peut devenir un pilier d\u0026rsquo;une stratégie efficace de génie logiciel, en offrant des fonctionnalités qui facilitent la transition fluide du code du développement à la production. Dans cet article, nous allons explorer deux techniques que vous pouvez utiliser : l\u0026rsquo;utilisation des numéros de révision et la création de balises (tags).\nLa plupart des personnes ayant déjà expérimenté Subversion connaissent les numéros de révision. Imaginons que vous effectuiez un commit et que votre code devienne « révision 1234 ». Vous pouvez alors exporter cette révision spécifique dans votre environnement de développement pour le tester. Une fois qu’elle a passé vos vérifications rigoureuses, elle est envoyée vers l’environnement de qualification (QA) pour une analyse plus approfondie.\nMais que faire si vous souhaitez une méthode plus fiable pour gérer votre base de code ? Voici l’intérêt des « balises » (tags).\nLes numéros de révision comme « 1234 » sont un peu difficiles à retenir et ne disent pas grand-chose sur le code. Les balises, en revanche, offrent une manière plus humaine d’identifier des versions spécifiques de votre code. Pour créer une balise, vous copiez simplement votre code — par exemple, depuis le répertoire « /trunk/ » vers un nouveau répertoire comme « /tags/release-Jan11_3PM ». Ce qui est génial avec les balises dans Subversion, c’est qu’elles sont faciles à gérer. Vous pouvez en créer autant que nécessaire, par exemple « /tags/build-Jan11_4PM » ou « /tags/version-1.2.3 ».\nL’avantage des balises réside dans leurs noms explicites, qui simplifient le processus d’exportation de versions spécifiques vers différents environnements comme Développement, QA ou Production. Cela ajoute non seulement une couche supplémentaire de clarté, mais rend aussi la vie des testeurs et des professionnels de la qualité beaucoup plus facile.\nQue vous choisissiez les numéros de révision simples ou la méthode plus descriptive basée sur les balises, Subversion propose des options solides pour gérer votre base de code, du développement à la production. Choisissez la stratégie qui convient le mieux à votre projet et à votre équipe, et éliminez les tracas liés à la gestion des versions.\n","permalink":"https://www.shafiq.in/fr/blog/a-practical-guide-to-release-engineering-mastering-version-control-with-subversion/","summary":"\u003cp\u003eSubversion est bien plus qu\u0026rsquo;un simple outil pour suivre les modifications de votre code. Il peut devenir un pilier d\u0026rsquo;une stratégie efficace de génie logiciel, en offrant des fonctionnalités qui facilitent la transition fluide du code du développement à la production. Dans cet article, nous allons explorer deux techniques que vous pouvez utiliser : l\u0026rsquo;utilisation des numéros de révision et la création de balises (\u003cem\u003etags\u003c/em\u003e).\u003c/p\u003e\n\u003cp\u003eLa plupart des personnes ayant déjà expérimenté Subversion connaissent les numéros de révision. Imaginons que vous effectuiez un commit et que votre code devienne « révision 1234 ». Vous pouvez alors exporter cette révision spécifique dans votre environnement de développement pour le tester. Une fois qu’elle a passé vos vérifications rigoureuses, elle est envoyée vers l’environnement de qualification (QA) pour une analyse plus approfondie.\u003c/p\u003e","title":"A Practical Guide to Release Engineering - Mastering Version Control with Subversion"},{"content":"disableHLJS: false Lorsqu\u0026rsquo;il s\u0026rsquo;agit du développement logiciel, un script de construction solide et efficace peut faire toute la différence. Que vous travailliez sur un projet Java ou tout autre type d\u0026rsquo;application, un bon script de construction peut simplifier l\u0026rsquo;ensemble du processus et rendre la vie bien plus facile aux développeurs. Voici un aperçu des meilleures pratiques à garder à l\u0026rsquo;esprit lors de l\u0026rsquo;écriture de votre script de construction :\nIndépendance de la plateforme Choisissez un langage de programmation compatible avec plusieurs plateformes, surtout si vous travaillez sur un projet Java. Cette flexibilité vous évitera bien des soucis plus tard, notamment lors de la gestion de différents systèmes d\u0026rsquo;exploitation.\nL\u0026rsquo;automatisation, c\u0026rsquo;est ton allié Essayez d\u0026rsquo;automatiser le plus de tâches possible. Commencez par une nettoyage complète des builds précédents, puis instaurez des processus de construction et de déploiement entièrement automatisés. Ce niveau d\u0026rsquo;automatisation garantira une cohérence et aidera à éliminer les erreurs humaines.\nRedémarrage du serveur Cela peut sembler une petite chose, mais automatiser le redémarrage du serveur peut faire une grande différence pour accélérer le cycle de développement. Cela supprime une étape manuelle, augmentant ainsi l\u0026rsquo;efficacité globale du développeur.\nRecompilation et mise à jour À chaque déclenchement d\u0026rsquo;une construction, assurez-vous que toutes les classes sont recompilées, et, de manière optionnelle, récupérez le code le plus récent depuis votre dépôt. Cela maintient tout à jour et garantit que vous travaillez toujours sur la dernière version du code.\nImposer la discipline Les références obsolètes peuvent causer des désordres. Votre script de construction doit rechercher ces références et les signaler afin qu\u0026rsquo;elles puissent être traitées. Pensez à votre script de construction comme à un arbitre qui aide à maintenir un certain niveau de discipline dans l\u0026rsquo;écriture du code par vos développeurs.\nRaccourcis intelligents Pendant la rédaction de votre script de construction, envisagez d\u0026rsquo;intégrer des raccourcis ou des fonctionnalités qui facilitent des constructions et déploiements plus rapides. Le temps économisé ici peut être réaffecté à des aspects plus critiques du développement.\nOptions de déploiement Pensez à proposer plusieurs options de déploiement dans votre script. Par exemple, vous pouvez souhaiter :\nDéployer uniquement les fichiers HTML et JSP Déployer uniquement les classes Java compilées Effectuer uniquement un redémarrage du serveur Déployer uniquement les fichiers de propriétés Cette flexibilité n\u0026rsquo;est pas nécessairement un élément indispensable au départ. Toutefois, au fur et à mesure que votre projet grandit, ces options deviendront de plus en plus utiles pour des améliorations itératives de votre processus de construction.\n","permalink":"https://www.shafiq.in/fr/blog/best-practices-for-crafting-an-efficient-build-script/","summary":"\u003ch2 id=\"disablehljs-false\"\u003edisableHLJS: false\u003c/h2\u003e\n\u003cp\u003eLorsqu\u0026rsquo;il s\u0026rsquo;agit du développement logiciel, un script de construction solide et efficace peut faire toute la différence. Que vous travailliez sur un projet Java ou tout autre type d\u0026rsquo;application, un bon script de construction peut simplifier l\u0026rsquo;ensemble du processus et rendre la vie bien plus facile aux développeurs. Voici un aperçu des meilleures pratiques à garder à l\u0026rsquo;esprit lors de l\u0026rsquo;écriture de votre script de construction :\u003c/p\u003e\n\u003ch3 id=\"indépendance-de-la-plateforme\"\u003eIndépendance de la plateforme\u003c/h3\u003e\n\u003cp\u003eChoisissez un langage de programmation compatible avec plusieurs plateformes, surtout si vous travaillez sur un projet Java. Cette flexibilité vous évitera bien des soucis plus tard, notamment lors de la gestion de différents systèmes d\u0026rsquo;exploitation.\u003c/p\u003e","title":"Best Practices for Crafting an Efficient Build Script"},{"content":"Lorsqu\u0026rsquo;il s\u0026rsquo;agit du développement logiciel, l\u0026rsquo;une des étapes clés pour s\u0026rsquo;assurer que votre code se transforme en une application fonctionnelle est le « processus de construction ». Chaque plateforme logicielle, qu\u0026rsquo;il s\u0026rsquo;agisse de Unix, de Windows ou d\u0026rsquo;une autre, propose sa propre manière de scripter ce processus. Vous avez peut-être déjà entendu parler des scripts shell Unix, des fichiers batch Windows ou des fichiers make qui servent de scripts de construction. Ces scripts sont essentiellement une liste de contrôle que l\u0026rsquo;ordinateur suit pour compiler votre code en un programme exécutable.\nVous vous demandez peut-être : « N\u0026rsquo;existe-t-il pas une méthode plus universelle pour cela ? » C’est là qu\u0026rsquo;interviennent des outils comme Apache Ant. Ant permet d’abstraire votre script de construction des détails spécifiques à la plateforme en utilisant un simple fichier XML. Ce fichier XML définit les étapes que doit suivre votre processus de construction. N\u0026rsquo;allez pas croire qu\u0026rsquo;Ant est une entité magique. Il s\u0026rsquo;agit en réalité d\u0026rsquo;un ensemble de notations XML qui définissent l\u0026rsquo;ordre des tâches à exécuter. Ces tâches dépendent toujours du code réel, du framework et des binaires SDK pour effectuer le travail lourd.\nEn bref, peu importe le langage ou la syntaxe que vous choisissez, l\u0026rsquo;objectif reste le même : automatiser la séquence d\u0026rsquo;actions nécessaires pour compiler votre code en un logiciel fonctionnel. Que vous soyez un développeur expérimenté ou simplement en train de découvrir le monde de l\u0026rsquo;ingénierie logicielle, savoir rédiger un script de construction efficace est une compétence que vous ne devriez pas négliger.\n","permalink":"https://www.shafiq.in/fr/blog/demystifying-release-engineering-a-guide-to-build-scripts/","summary":"\u003cp\u003eLorsqu\u0026rsquo;il s\u0026rsquo;agit du développement logiciel, l\u0026rsquo;une des étapes clés pour s\u0026rsquo;assurer que votre code se transforme en une application fonctionnelle est le « processus de construction ». Chaque plateforme logicielle, qu\u0026rsquo;il s\u0026rsquo;agisse de Unix, de Windows ou d\u0026rsquo;une autre, propose sa propre manière de scripter ce processus. Vous avez peut-être déjà entendu parler des scripts shell Unix, des fichiers batch Windows ou des fichiers make qui servent de scripts de construction. Ces scripts sont essentiellement une liste de contrôle que l\u0026rsquo;ordinateur suit pour compiler votre code en un programme exécutable.\u003c/p\u003e","title":"Demystifying Release Engineering - A Guide to Build Scripts"},{"content":"Apprendre à partir de ses propres expériences est inestimable. Nous avons tous commis notre part d\u0026rsquo;erreurs, moi compris. Partager des récits de nos maladresses peut procurer un certain amusement, mais la véritable valeur réside dans les leçons tirées. On n\u0026rsquo;oublie pas une erreur quand on a dû en supporter les conséquences.\nPar expérience directe, il n\u0026rsquo;est pas rare que des développeurs déployent du code en production, souvent à la hâte, pour répondre à des délais commerciaux urgents. L\u0026rsquo;urgence prime souvent sur toute considération quant au chaos potentiel que cela pourrait provoquer dans un environnement de production. Ces situations se produisent plus souvent qu\u0026rsquo;on ne le croit.\nPourquoi cela arrive-t-il ? Il est probable que les développeurs ressentent un risque plus grand à refuser une demande commerciale qu\u0026rsquo;à affronter les conséquences techniques. Ils craignent que dire « non » mette leur emploi en danger, tandis que la faute pour tout dysfonctionnement après le lancement sera partagée.\nCe comportement met en lumière une divergence cruciale entre les rôles. Les administrateurs, en revanche, agissent souvent avec prudence. Après tout, ils sont les gardiens, chargés de maintenir un environnement stable. La perspective de hâter des changements qui pourraient compromettre la stabilité du système est leur pire cauchemar.\nAlors où cela nous place-t-il ? Au cœur d\u0026rsquo;un équilibre délicat qui définit la frontière entre développeurs et administrateurs. Les développeurs sont motivés par le besoin d\u0026rsquo;innover et de satisfaire les exigences commerciales, tandis que les administrateurs sont guidés par la nécessité de préserver la stabilité et l\u0026rsquo;intégrité. Trouver le bon équilibre entre ces priorités concurrentes est essentiel pour toute opération commerciale réussie.\nEn bref, les deux rôles sont indispensables, chacun confronté à ses propres défis et responsabilités. La clé de la harmonie réside dans la compréhension des pressions uniques auxquelles chaque partie est soumise, et dans la recherche d\u0026rsquo;un terrain d\u0026rsquo;entente qui répond aux besoins de l\u0026rsquo;entreprise tout en minimisant les risques. Il ne s\u0026rsquo;agit pas seulement de tracer des lignes, mais de les franchir avec réflexion.\n","permalink":"https://www.shafiq.in/fr/blog/the-fine-line-between-developers-and-administrators-a-balancing-act/","summary":"\u003cp\u003eApprendre à partir de ses propres expériences est inestimable. Nous avons tous commis notre part d\u0026rsquo;erreurs, moi compris. Partager des récits de nos maladresses peut procurer un certain amusement, mais la véritable valeur réside dans les leçons tirées. On n\u0026rsquo;oublie pas une erreur quand on a dû en supporter les conséquences.\u003c/p\u003e\n\u003cp\u003ePar expérience directe, il n\u0026rsquo;est pas rare que des développeurs déployent du code en production, souvent à la hâte, pour répondre à des délais commerciaux urgents. L\u0026rsquo;urgence prime souvent sur toute considération quant au chaos potentiel que cela pourrait provoquer dans un environnement de production. Ces situations se produisent plus souvent qu\u0026rsquo;on ne le croit.\u003c/p\u003e","title":"The Fine Line Between Developers and Administrators - A Balancing Act"},{"content":" ","permalink":"https://www.shafiq.in/fr/blog/opensuse-11.4-screenshots/","summary":"\u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-33-52_hu_66b6fa1ebf8e64de.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-36-48_hu_e277e3d9964efe3e.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-36-51_hu_6d0dac0f3c0cf6c9.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-37-02_hu_2247bf7b9ab0c1d6.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-37-15_hu_d45252da9063a85a.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-38-00_hu_d90dbf0df0c08152.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-38-26_hu_6f54664af4fb0bb2.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-38-30_hu_3cffecfb43b6eab7.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-38-34_hu_93e8e7f03a2daad6.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-38-45_hu_62fbcf69e82ebe3a.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-39-22_hu_8948e39a2b152720.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-39-26_hu_1fa0bbbaa3fbf61c.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-39-33_hu_a59b706ce72adf2.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-39-47_hu_a7f23d1aafed46d5.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-40-52_hu_af0b0bd96b004b91.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-41-01_hu_36c836ed91ad63c.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-41-09_hu_1abcb402df164371.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-41-21_hu_cb88d9b3efb28e66.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-41-41_hu_7c6410ad055b3cbf.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-41-49_hu_67c3bbaab98d7929.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-42-04_hu_1d6f55cd5e168696.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-42-37_hu_290022ac261f449a.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-45-42_hu_823a24a4f8ea79f0.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-46-14_hu_90504fa34b9f0920.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-46-44_hu_351db3446e74eb73.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-47-23_hu_7529eeb07012da21.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-47-35_hu_e73008122eb0877.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-50-21_hu_9a75897861e6f062.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-50-38_hu_69e2375d44a5e597.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-56-35_hu_5c5e34a05ffcc4df.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-56-53_hu_7183ee5bfdd1dfd.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-57-31_hu_2938b0d452ff9764.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-57-48_hu_75de428faf39614b.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-10-58-14_hu_c357093ee5ee1ce0.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-12-35-34_hu_93d4b3341c5481e7.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-12-38-49_hu_3c81ed02d07be8d6.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-12-46-38_hu_108133e55cbe04af.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-12-46-46_hu_95a1e5d8853889a9.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-12-46-59_hu_d45252da9063a85a.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-12-47-46_hu_4a353ee75b9cd785.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-12-48-44_hu_f7fd77be6ec34541.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-12-49-00_hu_82b34be2cbfdb2c7.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-12-54-12_hu_475f3373404cbb89.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-12-54-20_hu_c3f484ac0a5ad6.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-12-54-35_hu_eb4c5906e57ceffe.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-12-58-59_hu_959cf6cc17cf6032.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-12-59-27_hu_56bdceb759e342c4.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-13-00-13_hu_e2d76441eaeae006.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-13-02-05_hu_dbcb8646ce56870e.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-13-02-52_hu_709b95e310fd03e2.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-13-02-59_hu_8c64e551d0340b01.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-13-03-25_hu_ab3b7e0e2e1fb300.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-13-04-36_hu_38c56d85f105d5af.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-13-15-29_hu_e14f5f05ec11d308.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-13-17-50_hu_e91598eccf27b093.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-13-18-51_hu_e6f7e418021d4d2d.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-13-19-31_hu_de3743146fc0095b.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-13-21-03_hu_ce96a92f96495779.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-13-21-04_hu_c2a321f1bda0b0ea.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-13-21-58_hu_23b5bb0230ebe00c.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-13-26-19_hu_59e31faa46df0d25.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2011/03/opensuse-64-bit-2011-03-13-13-26-44_hu_5cf81d72ff3a0d2a.png\" alt=\"OpenSUSE 11.4 screenshot\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e","title":"OpenSuse 11.4 [screenshots]"},{"content":"Étape 1 : Ajouter le dépôt PPA Mozilla Daily Ouvrez d\u0026rsquo;abord votre fenêtre de terminal. Une fois celle-ci ouverte, saisissez la commande ci-dessous pour ajouter le dépôt PPA Mozilla Daily Ubuntu à votre système :\nsudo add-apt-repository ppa:ubuntu-mozilla-daily/ppa Vous serez invité à entrer votre mot de passe. Procédez à cette opération, puis appuyez sur Entrée pour confirmer l’ajout du dépôt.\nÉtape 2 : Mettre à jour la liste des paquets Après avoir ajouté le dépôt, il est essentiel de mettre à jour la liste des paquets afin d’obtenir les dernières versions logicielles. Tapez la commande suivante :\nsudo apt-get update Étape 3 : Installer Firefox 4 Passons maintenant à l’installation elle-même. Pour installer Firefox 4, exécutez la commande suivante dans votre terminal :\nsudo apt-get install firefox-4.0 Étape 4 : Installer Firefox 3 Si vous souhaitez également installer Firefox 3, vous pouvez le faire en exécutant cette commande :\nsudo apt-get install firefox Étape 5 : Lancer la version de Firefox de votre choix Une fois les installations terminées, vous pouvez lancer la version de Firefox de votre choix. Vous les trouverez dans votre menu d\u0026rsquo;applications, ou vous pouvez les lancer directement depuis le terminal en tapant firefox-4.0 pour Firefox 4 ou firefox pour Firefox 3.\n","permalink":"https://www.shafiq.in/fr/blog/a-simple-guide-to-installing-both-firefox-4-and-firefox-3-on-ubuntu/","summary":"\u003ch3 id=\"étape-1--ajouter-le-dépôt-ppa-mozilla-daily\"\u003eÉtape 1 : Ajouter le dépôt PPA Mozilla Daily\u003c/h3\u003e\n\u003cp\u003eOuvrez d\u0026rsquo;abord votre fenêtre de terminal. Une fois celle-ci ouverte, saisissez la commande ci-dessous pour ajouter le dépôt PPA Mozilla Daily Ubuntu à votre système :\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esudo add-apt-repository ppa:ubuntu-mozilla-daily/ppa\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eVous serez invité à entrer votre mot de passe. Procédez à cette opération, puis appuyez sur Entrée pour confirmer l’ajout du dépôt.\u003c/p\u003e\n\u003ch3 id=\"étape-2--mettre-à-jour-la-liste-des-paquets\"\u003eÉtape 2 : Mettre à jour la liste des paquets\u003c/h3\u003e\n\u003cp\u003eAprès avoir ajouté le dépôt, il est essentiel de mettre à jour la liste des paquets afin d’obtenir les dernières versions logicielles. Tapez la commande suivante :\u003c/p\u003e","title":"A Simple Guide to Installing Both Firefox 4 and Firefox 3 on Ubuntu"},{"content":"Comment résoudre l\u0026rsquo;erreur Puppet : Impossible de trouver la classe dans l\u0026rsquo;espace de noms Parfois, en travaillant avec Puppet, vous pouvez rencontrer un message d\u0026rsquo;erreur qui ne reflète pas précisément le problème réel. Par exemple, si vous voyez cet erreur :\nerr : Impossible de récupérer le catalogue : Impossible de trouver la classe php dans les espaces de noms standardbuild à /etc/puppet/manifests/templates.pp:15 sur domain.internal.com\nUne des causes possibles pourrait être un crochet manquant dans votre code. Cela peut être difficile à repérer et peut vous faire perdre beaucoup de temps. Pour éviter cela, assurez-vous de vérifier soigneusement la syntaxe de votre code et utilisez un éditeur de code qui peut vous signaler les erreurs automatiquement.\n","permalink":"https://www.shafiq.in/fr/blog/puppet-error-could-not-file-class-in-namespace-solved/","summary":"\u003ch2 id=\"comment-résoudre-lerreur-puppet--impossible-de-trouver-la-classe-dans-lespace-de-noms\"\u003eComment résoudre l\u0026rsquo;erreur Puppet : Impossible de trouver la classe dans l\u0026rsquo;espace de noms\u003c/h2\u003e\n\u003cp\u003eParfois, en travaillant avec Puppet, vous pouvez rencontrer un message d\u0026rsquo;erreur qui ne reflète pas précisément le problème réel. Par exemple, si vous voyez cet erreur :\u003c/p\u003e\n\u003cp\u003eerr : Impossible de récupérer le catalogue : Impossible de trouver la classe php dans les espaces de noms standardbuild à /etc/puppet/manifests/templates.pp:15 sur domain.internal.com\u003c/p\u003e\n\u003cp\u003eUne des causes possibles pourrait être un crochet manquant dans votre code. Cela peut être difficile à repérer et peut vous faire perdre beaucoup de temps. Pour éviter cela, assurez-vous de vérifier soigneusement la syntaxe de votre code et utilisez un éditeur de code qui peut vous signaler les erreurs automatiquement.\u003c/p\u003e","title":"Puppet Error – Could not file class in namespace – [solved]"},{"content":"Comment installer les fichiers de développement PHP\nSi vous souhaitez exécuter phpize sur votre système, vous devez d\u0026rsquo;abord installer les fichiers de développement de PHP. Sinon, vous risquez d\u0026rsquo;obtenir un message d\u0026rsquo;erreur comme celui-ci :\nsh: phpize: not found ERROR: `phpize\u0026#39; failed Pour installer les fichiers de développement PHP sur Ubuntu/Debian, vous pouvez utiliser la commande suivante dans le terminal :\napt-get install php5-dev Cela devrait résoudre le problème. 🙂\n","permalink":"https://www.shafiq.in/fr/blog/error-phpize-failed-solved/","summary":"\u003cp\u003e\u003cstrong\u003eComment installer les fichiers de développement PHP\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSi vous souhaitez exécuter \u003ccode\u003ephpize\u003c/code\u003e sur votre système, vous devez d\u0026rsquo;abord installer les fichiers de développement de PHP. Sinon, vous risquez d\u0026rsquo;obtenir un message d\u0026rsquo;erreur comme celui-ci :\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003esh: phpize: not found\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eERROR: \u003cspan class=\"sb\"\u003e`\u003c/span\u003ephpize\u003cspan class=\"err\"\u003e\u0026#39;\u003c/span\u003e failed\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003ePour installer les fichiers de développement PHP sur Ubuntu/Debian, vous pouvez utiliser la commande suivante dans le terminal :\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eapt-get install php5-dev\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eCela devrait résoudre le problème. 🙂\u003c/p\u003e","title":"ERROR: phpize failed [solved]"},{"content":"En tant que responsable de projet, j\u0026rsquo;ai vu le modèle freemium devenir de plus en plus populaire dans la communauté du développement logiciel. L\u0026rsquo;idée est simple : offrir une version basique de votre produit gratuitement, puis facturer des fonctionnalités premium ou des fonctionnalités supplémentaires. Ce modèle a bien fonctionné pour certaines entreprises, mais je pense qu\u0026rsquo;il constitue une proposition risquée pour la plupart des startups.\nVoici quelques raisons pour lesquelles :\nIl est difficile d’attirer suffisamment d’utilisateurs pour générer un flux de revenus fiable. Dans l’écosystème surchargé des applications et des webapps, il devient de plus en plus difficile de se démarquer. Même si vous parvenez à attirer un grand nombre d’utilisateurs, rien ne garantit qu’ils seront prêts à payer pour vos fonctionnalités premium. Il est difficile d’inciter les utilisateurs à passer à un abonnement premium. Une fois que les utilisateurs sont habitués à bénéficier de votre produit gratuitement, ils peuvent hésiter à payer, même s’ils en tirent beaucoup de valeur. Il est difficile de fournir un bon support client. Lorsque vous avez un grand nombre d’utilisateurs gratuits, il peut être difficile de leur offrir le niveau de soutien dont ils ont besoin. Cela peut entraîner des avis négatifs et une mauvaise expérience utilisateur.\nJe pense que les startups ont intérêt à se concentrer sur la création d’un excellent produit et à le facturer. Cela peut sembler contre-intuitif, mais c’est en réalité le meilleur moyen d’assurer un succès à long terme.\nLorsque vous facturez votre produit, vous validez immédiatement sa valeur. Vous obtenez également des retours précieux de la part des utilisateurs payants, qui sont plus enclins à s’intéresser à la réussite du produit. Enfin, facturer votre produit vous donne un flux de revenus fiable que vous pouvez réinvestir dans le produit et faire croître votre entreprise.\nSi vous envisagez d’utiliser le modèle freemium, je vous encourage à peser soigneusement les risques et les avantages avant de prendre une décision. Mais si vous êtes sérieux sur la construction d’une entreprise logicielle réussie, je vous recommande de vous concentrer sur la création d’un excellent produit et à le facturer.\n","permalink":"https://www.shafiq.in/fr/blog/make-it-free-or-fail/","summary":"\u003cp\u003eEn tant que responsable de projet, j\u0026rsquo;ai vu le modèle freemium devenir de plus en plus populaire dans la communauté du développement logiciel. L\u0026rsquo;idée est simple : offrir une version basique de votre produit gratuitement, puis facturer des fonctionnalités premium ou des fonctionnalités supplémentaires. Ce modèle a bien fonctionné pour certaines entreprises, mais je pense qu\u0026rsquo;il constitue une proposition risquée pour la plupart des startups.\u003c/p\u003e\n\u003cp\u003eVoici quelques raisons pour lesquelles :\u003c/p\u003e","title":"Make it free or fail"},{"content":"Nous ne t\u0026rsquo;avons pas vu depuis un moment Il y a eu 7 jours, 4 heures, 13 minutes et 2 secondes depuis ta dernière connexion, et nous commençons à nous inquiéter sérieusement.\nNous venions tout juste à nous connaître. Tu as créé 1 site, 1 page, fait glisser 1 élément, puis\u0026hellip; plus rien.\nNous étions vraiment enthousiastes à l’idée de ton nouveau site web, il avait tellement de potentiel !\nSi tu as rencontré des difficultés en cours de route, nous sommes là pour t’aider. Créer ton propre site web, c’est amusant, rapide et facile avec Weebly. Et surtout, tu auras un site web personnel à montrer à tes clients, à tes clients, à ta famille ou à tes amis.\nAlors, nous allons vraiment te rendre la reprise de ton site Weebly facile, très facile : clique simplement ici !\nSi tu as des questions, nous serons ravis de t’aider. N’hésite pas à visiter notre Centre d’aide ou à nous envoyer un courriel à support@weebly.com.\nSincèrement,\nL’équipe Weebly\n","permalink":"https://www.shafiq.in/fr/blog/awesome-and-slightly-hilarious-email-from-weebly/","summary":"\u003ch2 id=\"nous-ne-tavons-pas-vu-depuis-un-moment\"\u003eNous ne t\u0026rsquo;avons pas vu depuis un moment\u003c/h2\u003e\n\u003cp\u003eIl y a eu 7 jours, 4 heures, 13 minutes et 2 secondes depuis ta dernière connexion, et nous commençons à nous inquiéter sérieusement.\u003c/p\u003e\n\u003cp\u003eNous venions tout juste à nous connaître. Tu as créé 1 site, 1 page, fait glisser 1 élément, puis\u0026hellip; plus rien.\u003c/p\u003e\n\u003cp\u003eNous étions vraiment enthousiastes à l’idée de ton nouveau site web, il avait tellement de potentiel !\u003c/p\u003e\n\u003cp\u003eSi tu as rencontré des difficultés en cours de route, nous sommes là pour t’aider. Créer ton propre site web, c’est amusant, rapide et facile avec Weebly. Et surtout, tu auras un site web personnel à montrer à tes clients, à tes clients, à ta famille ou à tes amis.\u003c/p\u003e","title":"Awesome ( and slightly hilarious ) email from Weebly"},{"content":" Vous avez oublié de modifier le chemin des développeurs Google !\nlien -\u0026gt; https://web.archive.org/web/2014/http://code.google.com/chrome/extensions/apps.html\n","permalink":"https://www.shafiq.in/fr/blog/bug-found-on-google-chrome-extension-labs-website/","summary":"\u003cimg src=\"/wp-content/uploads/2010/12/google-bug_hu_fe020c17a86fbe75.png\" alt=\"bug sur le site web des extensions Chrome Labs\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\u003cp\u003eVous avez oublié de modifier le chemin des développeurs Google !\u003c/p\u003e\n\u003cp\u003elien -\u0026gt; \u003ca href=\"https://web.archive.org/web/2014/http://code.google.com/chrome/extensions/apps.html\"\u003ehttps://web.archive.org/web/2014/http://code.google.com/chrome/extensions/apps.html\u003c/a\u003e\u003c/p\u003e","title":"Bug found on Google Chrome Extension Labs Website"},{"content":"Vous n\u0026rsquo;aimez pas Google Analytics ? Rendez-vous sur http://tools.google.com/dlpage/gaoptout et installez une extension navigateur pour désactiver Google Analytics.\n","permalink":"https://www.shafiq.in/fr/blog/how-to-disable-google-analytics/","summary":"\u003ch3 id=\"vous-naimez-pas-google-analytics-\"\u003e\u003cspan style=\"font-weight:normal;font-size:13px;\"\u003eVous n\u0026rsquo;aimez pas Google Analytics ?\u003c/h3\u003e\n\u003cp\u003eRendez-vous sur \u003ca href=\"http://tools.google.com/dlpage/gaoptout\" target=\"_blank\"\u003ehttp://tools.google.com/dlpage/gaoptout\u003c/a\u003e et installez une extension navigateur pour désactiver Google Analytics.\u003c/p\u003e","title":"How To Disable Google Analytics"},{"content":" PHP PostgreSQL powershell Python ruby shell sql server unix Unix Timestamp vbscript \u0026mdash;- Perl : time PHP : time() Ruby : Time.now # (ou Time.new). Pour afficher l\u0026#39;époque : Time.now.to_i Python : import time # tout d\u0026#39;abord, puis int(time.time()) Java : long epoch = System.currentTimeMillis()/1000; Microsoft .NET C# : epoch = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000; VBScript/ASP : DateDiff(\u0026#34;s\u0026#34;, \u0026#34;01/01/1970 00:00:00\u0026#34;, Now()) Erlang : calendar:datetime_to_gregorian_seconds(calendar:now_to_universal_time( now()))-719528*24*3600. # OU element(1, now()) * 10000 + element(2, now()). MySQL : SELECT unix_timestamp(now()) PostgreSQL : SELECT extract(epoch FROM now()); Oracle PL/SQL : SELECT (SYSDATE - TO_DATE(\u0026#39;01-01-1970 00:00:00\u0026#39;, \u0026#39;DD-MM-YYYY HH24:MI:SS\u0026#39;)) * 24 * 60 * 60 FROM DUAL SQL Server : SELECT DATEDIFF(s, \u0026#39;1970-01-01 00:00:00\u0026#39;, GETUTCDATE()) JavaScript : Math.round(new Date().getTime()/1000.0) // getTime() renvoie le temps en millisecondes. Unix/Linux Shell : date +%s PowerShell : Get-Date -UFormat \u0026#34;%s\u0026#34; # Produit : 1279152364.63599 Actionscript : (new Date()).time Autres lignes de commande des systèmes d\u0026rsquo;exploitation : perl -e \u0026#34;print time\u0026#34; # (Si Perl est installé sur votre système) ColdFusion (CFML) MX 6.1+ : #int( getTickCount() / 1000 )# Ligne de commande Bash : date +%s ","permalink":"https://www.shafiq.in/fr/blog/how-to-get-the-current-epoch-time-unix-timestamp/","summary":"\u003cul\u003e\n\u003cli\u003ePHP\u003c/li\u003e\n\u003cli\u003ePostgreSQL\u003c/li\u003e\n\u003cli\u003epowershell\u003c/li\u003e\n\u003cli\u003ePython\u003c/li\u003e\n\u003cli\u003eruby\u003c/li\u003e\n\u003cli\u003eshell\u003c/li\u003e\n\u003cli\u003esql server\u003c/li\u003e\n\u003cli\u003eunix\u003c/li\u003e\n\u003cli\u003eUnix Timestamp\u003c/li\u003e\n\u003cli\u003evbscript\n\u0026mdash;- Perl :\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-perl\" data-lang=\"perl\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003etime\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003ePHP :\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-php\" data-lang=\"php\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nx\"\u003etime\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003eRuby :\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-ruby\" data-lang=\"ruby\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"no\"\u003eTime\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003enow\u003c/span\u003e \u003cspan class=\"c1\"\u003e# (ou Time.new). Pour afficher l\u0026#39;époque : Time.now.to_i\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003ePython :\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-python\" data-lang=\"python\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kn\"\u003eimport\u003c/span\u003e \u003cspan class=\"nn\"\u003etime\u003c/span\u003e \u003cspan class=\"c1\"\u003e# tout d\u0026#39;abord, puis int(time.time())\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003eJava :\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-java\" data-lang=\"java\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"kt\"\u003elong\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"n\"\u003eepoch\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"n\"\u003eSystem\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"na\"\u003ecurrentTimeMillis\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\u003cspan class=\"o\"\u003e/\u003c/span\u003e\u003cspan class=\"n\"\u003e1000\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003eMicrosoft .NET C# :\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-csharp\" data-lang=\"csharp\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"n\"\u003eepoch\u003c/span\u003e \u003cspan class=\"p\"\u003e=\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eDateTime\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eNow\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eToUniversalTime\u003c/span\u003e\u003cspan class=\"p\"\u003e().\u003c/span\u003e\u003cspan class=\"n\"\u003eTicks\u003c/span\u003e \u003cspan class=\"p\"\u003e-\u003c/span\u003e \u003cspan class=\"m\"\u003e621355968000000000\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e/\u003c/span\u003e \u003cspan class=\"m\"\u003e10000000\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003eVBScript/ASP :\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-fallback\" data-lang=\"fallback\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eDateDiff(\u0026#34;s\u0026#34;, \u0026#34;01/01/1970 00:00:00\u0026#34;, Now())\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003eErlang :\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-erlang\" data-lang=\"erlang\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nn\"\u003ecalendar\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"nf\"\u003edatetime_to_gregorian_seconds\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"nn\"\u003ecalendar\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e\u003cspan class=\"nf\"\u003enow_to_universal_time\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e \u003cspan class=\"n\"\u003enow\u003c/span\u003e\u003cspan class=\"p\"\u003e()))\u003c/span\u003e\u003cspan class=\"o\"\u003e-\u003c/span\u003e\u003cspan class=\"mi\"\u003e719528\u003c/span\u003e\u003cspan class=\"o\"\u003e*\u003c/span\u003e\u003cspan class=\"mi\"\u003e24\u003c/span\u003e\u003cspan class=\"o\"\u003e*\u003c/span\u003e\u003cspan class=\"mi\"\u003e3600\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e \u003cspan class=\"err\"\u003e#\u003c/span\u003e \u003cspan class=\"nv\"\u003eOU\u003c/span\u003e \u003cspan class=\"nb\"\u003eelement\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e1\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003enow\u003c/span\u003e\u003cspan class=\"p\"\u003e())\u003c/span\u003e \u003cspan class=\"o\"\u003e*\u003c/span\u003e \u003cspan class=\"mi\"\u003e10000\u003c/span\u003e \u003cspan class=\"o\"\u003e+\u003c/span\u003e \u003cspan class=\"nb\"\u003eelement\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"mi\"\u003e2\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"n\"\u003enow\u003c/span\u003e\u003cspan class=\"p\"\u003e()).\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003eMySQL :\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sql\" data-lang=\"sql\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eSELECT\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"n\"\u003eunix_timestamp\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003enow\u003c/span\u003e\u003cspan class=\"p\"\u003e())\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003ePostgreSQL :\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sql\" data-lang=\"sql\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eSELECT\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"k\"\u003eextract\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eepoch\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"k\"\u003eFROM\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"n\"\u003enow\u003c/span\u003e\u003cspan class=\"p\"\u003e());\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003eOracle PL/SQL :\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sql\" data-lang=\"sql\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eSELECT\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eSYSDATE\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"o\"\u003e-\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"n\"\u003eTO_DATE\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;01-01-1970 00:00:00\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;DD-MM-YYYY HH24:MI:SS\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"o\"\u003e*\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"mi\"\u003e24\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"o\"\u003e*\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"mi\"\u003e60\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"o\"\u003e*\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"mi\"\u003e60\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"k\"\u003eFROM\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"n\"\u003eDUAL\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003eSQL Server :\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-sql\" data-lang=\"sql\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003eSELECT\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"n\"\u003eDATEDIFF\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003es\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"s1\"\u003e\u0026#39;1970-01-01 00:00:00\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e\u003cspan class=\"w\"\u003e \u003c/span\u003e\u003cspan class=\"n\"\u003eGETUTCDATE\u003c/span\u003e\u003cspan class=\"p\"\u003e())\u003c/span\u003e\u003cspan class=\"w\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003eJavaScript :\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-javascript\" data-lang=\"javascript\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eMath\u003c/span\u003e\u003cspan class=\"p\"\u003e.\u003c/span\u003e\u003cspan class=\"nx\"\u003eround\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"k\"\u003enew\u003c/span\u003e \u003cspan class=\"nb\"\u003eDate\u003c/span\u003e\u003cspan class=\"p\"\u003e().\u003c/span\u003e\u003cspan class=\"nx\"\u003egetTime\u003c/span\u003e\u003cspan class=\"p\"\u003e()\u003c/span\u003e\u003cspan class=\"o\"\u003e/\u003c/span\u003e\u003cspan class=\"mf\"\u003e1000.0\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"c1\"\u003e// getTime() renvoie le temps en millisecondes.\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003eUnix/Linux Shell :\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003edate +%s\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003ePowerShell :\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-powershell\" data-lang=\"powershell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eGet-Date\u003c/span\u003e \u003cspan class=\"n\"\u003e-UFormat\u003c/span\u003e \u003cspan class=\"s2\"\u003e\u0026#34;%s\u0026#34;\u003c/span\u003e \u003cspan class=\"c\"\u003e# Produit : 1279152364.63599\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003eActionscript :\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-actionscript\" data-lang=\"actionscript\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"k\"\u003enew\u003c/span\u003e \u003cspan class=\"nb\"\u003eDate\u003c/span\u003e\u003cspan class=\"p\"\u003e()).\u003c/span\u003e\u003cspan class=\"nx\"\u003etime\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003eAutres lignes de commande des systèmes d\u0026rsquo;exploitation :\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003eperl -e \u003cspan class=\"s2\"\u003e\u0026#34;print time\u0026#34;\u003c/span\u003e \u003cspan class=\"c1\"\u003e# (Si Perl est installé sur votre système)\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003eColdFusion (CFML) MX 6.1+ :\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-fallback\" data-lang=\"fallback\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e#int( getTickCount() / 1000 )#\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cul\u003e\n\u003cli\u003eLigne de commande Bash :\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003edate +%s\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","title":"How To Get The Current Epoch Time (Unix Timestamp)"},{"content":"Disposez toujours d\u0026rsquo;une seule source officielle pour votre schéma\nTout le monde devrait savoir où se trouve le schéma officiel, et pouvoir obtenir une configuration de base de données fraîche sans aucun obstacle. Une personne devrait pouvoir s’approcher d’un ordinateur, récupérer la dernière version depuis le contrôle de version, construire, puis exécuter un outil simple pour initialiser la base de données (dans de nombreux cas, le processus de construction peut même initialiser la base de données si elle n’existe pas, ce qui raccourcit le processus à une seule étape).\nToujours versionner votre base de données\nL’objectif principal est de propager les modifications du développement, vers le test, puis vers la production de manière contrôlée et cohérente. Un deuxième objectif est de pouvoir recréer une base de données à tout moment. Ce deuxième objectif est particulièrement important si vous distribuez des logiciels à des clients. Si quelqu’un découvre un bug dans la version 20100612.1 de votre application, vous devez être en mesure de recréer l’application exactement comme elle était à ce moment-là — base de données comprise.\n","permalink":"https://www.shafiq.in/fr/blog/database-integration-some-points-to-keep-in-mind/","summary":"\u003cp\u003e\u003cstrong\u003eDisposez toujours d\u0026rsquo;une seule source officielle pour votre schéma\u003c/strong\u003e\u003cbr\u003e\nTout le monde devrait savoir où se trouve le schéma officiel, et pouvoir obtenir une configuration de base de données fraîche sans aucun obstacle. Une personne devrait pouvoir s’approcher d’un ordinateur, récupérer la dernière version depuis le contrôle de version, construire, puis exécuter un outil simple pour initialiser la base de données (dans de nombreux cas, le processus de construction peut même initialiser la base de données si elle n’existe pas, ce qui raccourcit le processus à une seule étape).\u003c/p\u003e","title":"Database Integration – some points to keep in mind"},{"content":"Comme beaucoup de commodités en développement logiciel, une base de données partagée est un piège à sable attendant de fossiliser un projet. Les développeurs écrasent les modifications les uns des autres. Les modifications que je fais sur le serveur cassent le code sur votre machine de développement. Le développement à distance est lent et difficile. Évitez absolument d\u0026rsquo;utiliser une base de données partagée, car elles finissent par gaspiller du temps et contribuent à produire des bogues.\n","permalink":"https://www.shafiq.in/fr/blog/never-use-a-shared-database-server-for-development-work./","summary":"\u003cp\u003eComme beaucoup de commodités en développement logiciel, une base de données partagée est un piège à sable attendant de fossiliser un projet. Les développeurs écrasent les modifications les uns des autres. Les modifications que je fais sur le serveur cassent le code sur votre machine de développement. Le développement à distance est lent et difficile. Évitez absolument d\u0026rsquo;utiliser une base de données partagée, car elles finissent par gaspiller du temps et contribuent à produire des bogues.\u003c/p\u003e","title":"Never use a shared database server for development work."},{"content":"Nous parlons sans cesse de la qualité améliorée du logiciel et de la réduction des risques, mais un logiciel déployable est bien l\u0026rsquo;actif le plus concret pour les \u0026ldquo;extérieurs\u0026rdquo;, tels que les clients ou les utilisateurs. L\u0026rsquo;importance de ce point ne peut être trop soulignée.\n","permalink":"https://www.shafiq.in/fr/blog/one-perspective-on-improved-software-quality-and-reduced-risks/","summary":"\u003cp\u003eNous parlons sans cesse de la qualité améliorée du logiciel et de la réduction des risques, mais un logiciel déployable est bien l\u0026rsquo;actif le plus concret pour les \u0026ldquo;extérieurs\u0026rdquo;, tels que les clients ou les utilisateurs. L\u0026rsquo;importance de ce point ne peut être trop soulignée.\u003c/p\u003e","title":"One Perspective on Improved Software Quality and Reduced Risks"},{"content":"Vous pouvez mieux gérer les délais, les coûts et la qualité en vous appuyant sur un logiciel fonctionnel avec des retours et des métriques réels, et non pas uniquement sur des tâches figurant dans un planning de projet.\n","permalink":"https://www.shafiq.in/fr/blog/note-to-self-project-management/","summary":"\u003cp\u003eVous pouvez mieux gérer les délais, les coûts et la qualité en vous appuyant sur un logiciel fonctionnel avec des retours et des métriques réels, et non pas uniquement sur des tâches figurant dans un planning de projet.\u003c/p\u003e","title":"Note to Self – Project Management"},{"content":"Pour trouver la charge système, utilisez le snippet Perl suivant :\nCharge système des dernières minutes : my $system_load = exec(\u0026#39;\u0026lt;a class=\u0026#34;zem_slink\u0026#34; title=\u0026#34;Uptime\u0026#34; rel=\u0026#34;wikipedia\u0026#34; href=\u0026#34;http://en.wikipedia.org/wiki/Uptime\u0026#34;\u0026gt;uptime\u0026lt;/a\u0026gt; | awk -F \u0026#34;load average: \u0026#34; \\\u0026#39;{ print $2 }\\\u0026#39; | cut -d, -f1\u0026#39;); my $system_load = qx(\u0026#39;uptime | awk -F \u0026#34;load average: \u0026#34; \\\u0026#39;{ print $2 }\\\u0026#39; | cut -d, -f1\u0026#39;); `` 2) Charge système des dernières 5 minutes : ```perl my $system_load = exec(\u0026#39;uptime | awk -F \u0026#34;load average: \u0026#34; \\\u0026#39;{ print $2 }\\\u0026#39; | cut -d, -f2\u0026#39;); my $system_load = qx(\u0026#39;uptime | awk -F \u0026#34;load average: \u0026#34; \\\u0026#39;{ print $2 }\\\u0026#39; | cut -d, -f2\u0026#39;); `` 3) Charge système des dernières 15 minutes : ```perl my $system_load = exec(\u0026#39;uptime | awk -F \u0026#34;load average: \u0026#34; \\\u0026#39;{ print $2 }\\\u0026#39; | cut -d, -f3\u0026#39;); my $system_load = qx(\u0026#39;uptime | awk -F \u0026#34;load average: \u0026#34; \\\u0026#39;{ print $2 }\\\u0026#39; | cut -d, -f3\u0026#39;); ","permalink":"https://www.shafiq.in/fr/blog/perl-system-load/","summary":"\u003cp\u003ePour trouver la charge système, utilisez le snippet Perl suivant :\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ca class=\"zem_slink\" title=\"Charge (informatique)\" rel=\"wikipedia\" href=\"http://en.wikipedia.org/wiki/Load_%28computing%29\"\u003eCharge système\u003c/a\u003e des dernières minutes :\u003c/li\u003e\n\u003c/ol\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-perl\" data-lang=\"perl\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003emy\u003c/span\u003e \u003cspan class=\"nv\"\u003e$system_load\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"nb\"\u003eexec\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#39;\u0026lt;a class=\u0026#34;zem_slink\u0026#34; title=\u0026#34;Uptime\u0026#34; rel=\u0026#34;wikipedia\u0026#34; href=\u0026#34;http://en.wikipedia.org/wiki/Uptime\u0026#34;\u0026gt;uptime\u0026lt;/a\u0026gt; | awk -F \u0026#34;load average: \u0026#34; \\\u0026#39;{ print $2 }\\\u0026#39; | cut -d, -f1\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003emy\u003c/span\u003e \u003cspan class=\"nv\"\u003e$system_load\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"sx\"\u003eqx(\u0026#39;uptime | awk -F \u0026#34;load average: \u0026#34; \\\u0026#39;{ print $2 }\\\u0026#39; | cut -d, -f1\u0026#39;)\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"sb\"\u003e``\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"mi\"\u003e2\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"n\"\u003eCharge\u003c/span\u003e \u003cspan class=\"n\"\u003esystème\u003c/span\u003e \u003cspan class=\"n\"\u003edes\u003c/span\u003e \u003cspan class=\"n\"\u003edernières\u003c/span\u003e \u003cspan class=\"mi\"\u003e5\u003c/span\u003e \u003cspan class=\"n\"\u003eminutes\u003c/span\u003e \u003cspan class=\"p\"\u003e:\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"sb\"\u003e```perl\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"sb\"\u003emy $system_load = exec(\u0026#39;uptime | awk -F \u0026#34;load average: \u0026#34; \\\u0026#39;{ print $2 }\\\u0026#39; | cut -d, -f2\u0026#39;);\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"sb\"\u003emy $system_load = qx(\u0026#39;uptime | awk -F \u0026#34;load average: \u0026#34; \\\u0026#39;{ print $2 }\\\u0026#39; | cut -d, -f2\u0026#39;);\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"sb\"\u003e``\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"sb\"\u003e3) Charge système des dernières 15 minutes :\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"sb\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"sb\"\u003e```\u003c/span\u003e\u003cspan class=\"n\"\u003eperl\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003emy\u003c/span\u003e \u003cspan class=\"nv\"\u003e$system_load\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"nb\"\u003eexec\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#39;uptime | awk -F \u0026#34;load average: \u0026#34; \\\u0026#39;{ print $2 }\\\u0026#39; | cut -d, -f3\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003emy\u003c/span\u003e \u003cspan class=\"nv\"\u003e$system_load\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"sx\"\u003eqx(\u0026#39;uptime | awk -F \u0026#34;load average: \u0026#34; \\\u0026#39;{ print $2 }\\\u0026#39; | cut -d, -f3\u0026#39;)\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","title":"Perl – system load"},{"content":"Si vous obtenez l\u0026rsquo;erreur suivante en exécutant le code client :\nImpossible d\u0026rsquo;appeler la méthode « syswrite » sur une valeur non définie à /usr/local/share/perl/5.10.1/Gearman/Taskset.pm ligne 202.\n\u0026hellip; alors changez ceci\n$client-\u0026gt;job_servers('127.0.0.1');\nen\n$client-\u0026gt;job_servers('127.0.0.1:4730');\nc\u0026rsquo;est tout !\n🙂\n","permalink":"https://www.shafiq.in/fr/blog/gearman-cant-call-method-syswrite-on-an-undefined-value-at-/usr/local/share/perl/5.10.1/gearman/taskset.pm-line-202./","summary":"\u003cp\u003eSi vous obtenez l\u0026rsquo;erreur suivante en exécutant le code client :\u003c/p\u003e\n\u003cp\u003eImpossible d\u0026rsquo;appeler la méthode « syswrite » sur une valeur non définie à /usr/local/share/perl/5.10.1/Gearman/Taskset.pm ligne 202.\u003c/p\u003e\n\u003cp\u003e\u0026hellip; alors changez ceci\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e$client-\u0026gt;job_servers('127.0.0.1');\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003een\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e$client-\u0026gt;job_servers('127.0.0.1:4730');\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003ec\u0026rsquo;est tout !\u003c/p\u003e\n\u003cp\u003e🙂\u003c/p\u003e","title":"Gearman – Can't call method \"syswrite\" on an undefined value at /usr/local/share/perl/5.10.1/Gearman/Taskset.pm line 202."},{"content":"Un ensemble de exigences est complet s\u0026rsquo;il décrit, et seulement s\u0026rsquo;il décrit, toutes les exigences importantes concernant l\u0026rsquo;utilisateur, y compris les exigences liées à la fonctionnalité, aux performances, aux contraintes de conception, aux attributs ou aux interfaces externes.\n","permalink":"https://www.shafiq.in/fr/blog/completeness-of-the-requirements-set/","summary":"\u003cp\u003eUn ensemble de exigences est complet s\u0026rsquo;il décrit, et seulement s\u0026rsquo;il décrit, toutes les exigences importantes concernant l\u0026rsquo;utilisateur, y compris les exigences liées à la fonctionnalité, aux performances, aux contraintes de conception, aux attributs ou aux interfaces externes.\u003c/p\u003e","title":"Completeness of the Requirements Set"},{"content":"Tout comme il n’existe pas un seul langage de programmation idéal pour chaque application, il n’existe pas une seule méthode idéale pour rédiger les spécifications plus détaillées. Des environnements différents exigent des techniques différentes, et les gestionnaires de besoins ainsi que les rédacteurs de spécifications devront probablement développer un mélange de compétences adaptées à diverses situations.\n","permalink":"https://www.shafiq.in/fr/blog/requirements-gathering/","summary":"\u003cp\u003eTout comme il n’existe pas un seul langage de programmation idéal pour chaque application, il n’existe pas une seule méthode idéale pour rédiger les spécifications plus détaillées. Des environnements différents exigent des techniques différentes, et les gestionnaires de besoins ainsi que les rédacteurs de spécifications devront probablement développer un mélange de compétences adaptées à diverses situations.\u003c/p\u003e","title":"Requirements Gathering"},{"content":"Le processus de développement de l\u0026rsquo;équipe définit qui fait quoi, quand et comment.\nDans le modèle en cascade, les activités logicielles s\u0026rsquo;effectuent selon une suite d\u0026rsquo;étapes, chacune étant basée sur les activités de l\u0026rsquo;étape précédente.\nLe modèle en spirale commence par une série de prototypes pilotés par les risques, suivie d\u0026rsquo;un processus structuré semblable à la cascade.\nL\u0026rsquo;approche itérative, hybride des modèles en cascade et en spirale, déconnecte les phases du cycle de vie des activités logicielles qui ont lieu à chaque phase.\nQuel que soit le modèle utilisé, vous devez obligatoirement développer au moins un prototype précoce afin d\u0026rsquo;obtenir des retours de la part du client.\n","permalink":"https://www.shafiq.in/fr/blog/software-development-process/","summary":"\u003cp\u003eLe processus de développement de l\u0026rsquo;équipe définit qui fait quoi, quand et comment.\u003cbr\u003e\nDans le modèle en cascade, les activités logicielles s\u0026rsquo;effectuent selon une suite d\u0026rsquo;étapes, chacune étant basée sur les activités de l\u0026rsquo;étape précédente.\u003cbr\u003e\nLe modèle en spirale commence par une série de prototypes pilotés par les risques, suivie d\u0026rsquo;un processus structuré semblable à la cascade.\u003cbr\u003e\nL\u0026rsquo;approche itérative, hybride des modèles en cascade et en spirale, déconnecte les phases du cycle de vie des activités logicielles qui ont lieu à chaque phase.\u003cbr\u003e\nQuel que soit le modèle utilisé, vous devez obligatoirement développer au moins un prototype précoce afin d\u0026rsquo;obtenir des retours de la part du client.\u003c/p\u003e","title":"Software Development Process"},{"content":"Certaines personnes pensent que la meilleure façon d\u0026rsquo;estimer un projet est d\u0026rsquo;avoir des exigences détaillées et des informations de conception pour chaque fonctionnalité. Elles peuvent soutenir que c\u0026rsquo;est la manière la plus professionnelle et précise d\u0026rsquo;aborder le problème. Toutefois, je ne partage pas cet avis. Je pense qu\u0026rsquo;il est plus important de pouvoir prendre rapidement des décisions concernant le périmètre du projet sans passer trop de temps et de ressources à faire des estimations détaillées. Pourquoi ? Parce que les estimations détaillées se révèlent souvent fausses ou sans pertinence plus tard, et elles créent un « inventaire gaspillé » qui aurait pu être utilisé pour des activités plus valorisantes. Je vous suggère de ne faire des estimations détaillées que lorsque le calendrier le permet, et lorsque vous avez une compréhension claire de la valeur et de la priorité de chaque fonctionnalité.\n","permalink":"https://www.shafiq.in/fr/blog/why-can-we-not-allow-for-a-process-that-creates-detailed-requirements-and-design-information-for-each-feature-so-that-we-can-create-more-meaningful-estimates/","summary":"\u003cp\u003eCertaines personnes pensent que la meilleure façon d\u0026rsquo;estimer un projet est d\u0026rsquo;avoir des exigences détaillées et des informations de conception pour chaque fonctionnalité. Elles peuvent soutenir que c\u0026rsquo;est la manière la plus professionnelle et précise d\u0026rsquo;aborder le problème. Toutefois, je ne partage pas cet avis. Je pense qu\u0026rsquo;il est plus important de pouvoir prendre rapidement des décisions concernant le périmètre du projet sans passer trop de temps et de ressources à faire des estimations détaillées. Pourquoi ? Parce que les estimations détaillées se révèlent souvent fausses ou sans pertinence plus tard, et elles créent un « inventaire gaspillé » qui aurait pu être utilisé pour des activités plus valorisantes. Je vous suggère de ne faire des estimations détaillées que lorsque le calendrier le permet, et lorsque vous avez une compréhension claire de la valeur et de la priorité de chaque fonctionnalité.\u003c/p\u003e","title":"Why can we not allow for a process that creates detailed requirements and design information for each feature so that we can create more meaningful estimates?"},{"content":"Dans de nombreux projets, afin de fournir une probabilité raisonnable de succès, il faudra réduire l\u0026rsquo;ampleur du travail d\u0026rsquo;autant que d\u0026rsquo;un facteur deux.\n","permalink":"https://www.shafiq.in/fr/blog/project-scope-and-success/","summary":"\u003cp\u003eDans de nombreux projets, afin de fournir une probabilité raisonnable de succès, il faudra réduire l\u0026rsquo;ampleur du travail d\u0026rsquo;autant que d\u0026rsquo;un facteur deux.\u003c/p\u003e","title":"Project Scope and Success"},{"content":"L\u0026rsquo;une des problèmes les plus frustrants, les plus répandus et apparemment tout simplement sinistres dans le développement d\u0026rsquo;applications est le « syndrome du \u0026ldquo;Oui, mais\u0026rdquo; », observation de la réaction des utilisateurs à chaque logiciel que j\u0026rsquo;ai jamais développé.\nPour une raison quelconque, j\u0026rsquo;observe toujours deux réactions immédiates, distinctes et séparées lorsque les utilisateurs voient pour la première fois l\u0026rsquo;implémentation du système :\n• « Wahou, c\u0026rsquo;est super cool ; on peut vraiment l\u0026rsquo;utiliser, quel beau travail, bon boulot, etc. » • « Oui, mais, hum, maintenant que je le vois, et si on faisait\u0026hellip; ? N\u0026rsquo;aurait-il pas été bien si\u0026hellip; ? Que s\u0026rsquo;est-il passé avec\u0026hellip; ? »\nLes racines du « syndrome du \u0026ldquo;Oui, mais\u0026rdquo; » semblent être profondément ancrées dans la nature même du logiciel, processus intellectuel intangible.\n","permalink":"https://www.shafiq.in/fr/blog/the-yes-but-syndrome/","summary":"\u003cp\u003eL\u0026rsquo;une des problèmes les plus frustrants, les plus répandus et apparemment tout simplement sinistres dans le développement d\u0026rsquo;applications est le « syndrome du \u0026ldquo;Oui, mais\u0026rdquo; », observation de la réaction des utilisateurs à chaque logiciel que j\u0026rsquo;ai jamais développé.\u003c/p\u003e\n\u003cp\u003ePour une raison quelconque, j\u0026rsquo;observe toujours deux réactions immédiates, distinctes et séparées lorsque les utilisateurs voient pour la première fois l\u0026rsquo;implémentation du système :\u003c/p\u003e\n\u003cp\u003e• « Wahou, c\u0026rsquo;est super cool ; on peut vraiment l\u0026rsquo;utiliser, quel beau travail, bon boulot, etc. »\n• « Oui, mais, hum, maintenant que je le vois, et si on faisait\u0026hellip; ? N\u0026rsquo;aurait-il pas été bien si\u0026hellip; ? Que s\u0026rsquo;est-il passé avec\u0026hellip; ? »\u003c/p\u003e","title":"The \"Yes, But\" Syndrome"},{"content":"Le développement logiciel est un processus complexe et collaboratif qui exige une bonne collaboration et une communication efficace. Toutefois, de nombreuses équipes logicielles rencontrent des problèmes de productivité et échouent à livrer des produits de haute qualité dans les délais et le budget prévus. Dans ce billet, je vais expliquer pourquoi la productivité d\u0026rsquo;une équipe est plus importante que celle d’un individu, et comment vous pouvez améliorer la performance de votre équipe logicielle en appliquant des stratégies éprouvées et des bonnes pratiques.\nL\u0026rsquo;importance de la productivité d\u0026rsquo;équipe Selon Boehm, le modèle d\u0026rsquo;estimation de coût COCOMO montre que la capacité de l\u0026rsquo;équipe a l\u0026rsquo;impact le plus important sur la production logicielle. Cela signifie que la qualité et l\u0026rsquo;efficacité du produit logiciel dépendent largement de la manière dont l\u0026rsquo;équipe travaille ensemble. Davis partage cette conclusion et affirme que « optimiser la productivité de tous les individus n’implique pas nécessairement optimiser la productivité de l’équipe ». Autrement dit, avoir une équipe composée d’individus hautement qualifiés et productifs ne garantit pas un projet logiciel réussi. D\u0026rsquo;autres facteurs influencent la productivité d\u0026rsquo;équipe, tels que la communication, la coordination, la collaboration, la motivation et la confiance.\nLes défis de la collaboration logicielle La collaboration au sein des équipes logicielles n\u0026rsquo;est pas aisée. Elle implique de nombreux défis et difficultés pouvant entraver la productivité de l’équipe. Certains de ces défis sont :\nCommunication : Les équipes logicielles doivent communiquer efficacement entre elles et avec d\u0026rsquo;autres parties prenantes, comme les clients, les gestionnaires ou les utilisateurs. Elles doivent partager des informations, des idées, des retours et des opinions de manière claire et en temps voulu. Elles doivent aussi éviter les malentendus, les conflits et les ambiguïtés qui peuvent entraîner de la confusion et des retards. Coordination : Les équipes logicielles doivent coordonner leurs tâches, rôles, responsabilités et plannings. Elles doivent planifier, organiser, surveiller et contrôler leurs processus de travail. Elles doivent aussi synchroniser leurs efforts et aligner leurs objectifs et leurs attentes. Collaboration : Les équipes logicielles doivent collaborer entre elles et avec d\u0026rsquo;autres équipes. Elles doivent coopérer, s’appuyer, aider et apprendre les unes des autres. Elles doivent aussi intégrer leurs produits de travail et garantir la cohérence et la compatibilité. Motivation : Les équipes logicielles doivent être motivées pour travailler dur et performer correctement. Elles doivent ressentir un sens, une appartenance et un sentiment d’accomplissement. Elles doivent aussi disposer d’incitations, de récompenses, de reconnaissance et de retours. Confiance : Les équipes logicielles doivent faire confiance les unes aux autres et à leurs dirigeants. Elles doivent avoir de la confiance, du respect et de l’honnêteté. Elles doivent aussi avoir une culture d’équipe positive et soutenante. Les bénéfices de la collaboration logicielle La collaboration au sein des équipes logicielles peut apporter de nombreux avantages tant aux membres de l’équipe qu’au produit logiciel. Certains de ces bénéfices sont :\nQualité : La collaboration peut améliorer la qualité du produit logiciel en réduisant les erreurs, les bogues, les défauts et le travail redondant. Elle peut aussi améliorer la fonctionnalité, l’utilisabilité, la fiabilité, la sécurité et les performances du produit logiciel. Efficacité : La collaboration peut améliorer l’efficacité de la production logicielle en augmentant la vitesse, la productivité, le volume de sortie et la livraison. Elle peut aussi réduire les coûts, les ressources, les pertes et les frais généraux. Innovation : La collaboration peut favoriser l’innovation en encourageant la créativité, la diversité, l’expérimentation et l’apprentissage. Elle peut aussi générer de nouvelles idées, solutions, fonctionnalités et améliorations pour le produit logiciel. Satisfaction : La collaboration peut augmenter la satisfaction des membres de l’équipe ainsi que celle des clients. Elle peut aussi renforcer le moral, l’engagement, la fidélité, la rétention et la réputation. Comment améliorer la productivité de votre équipe logicielle Il existe de nombreuses façons d’améliorer la productivité de votre équipe logicielle en traitant les défis et en renforçant les bénéfices de la collaboration logicielle. Voici quelques conseils et techniques que vous pouvez utiliser :\nCommunication : Utilisez des outils et méthodes de communication efficaces adaptés aux besoins et préférences de votre équipe. Par exemple, vous pouvez utiliser l’e-mail, les messageries instantanées, les appels vidéo, des plateformes de partage de documents ou des logiciels de gestion de projet. Vous pouvez aussi organiser des réunions régulières ou des stand-ups pour informer les membres de vos progrès, problèmes ou préoccupations. Vous pouvez également organiser des sessions de feedback ou de revue pour partager vos opinions ou suggestions sur vos produits ou processus de travail. Coordination : Utilisez des mécanismes de coordination clairs qui définissent les tâches, rôles, responsabilités ou plannings de votre équipe. Par exemple, vous pouvez utiliser des listes de tâches, des diagrammes de Gantt, des tableaux Kanban ou des tableaux Scrum pour attribuer ou suivre vos éléments de travail ou délais. Vous pouvez aussi utiliser des méthodologies agiles comme Scrum ou Kanban pour organiser vos processus ou cycles de travail. Collaboration : Utilisez des outils ou techniques collaboratifs qui facilitent la coopération ou l’intégration de votre équipe. Par exemple, vous pouvez utiliser des systèmes de contrôle de version, des outils de revue de code, des outils de test ou des outils de débogage pour gérer ou améliorer la qualité ou la cohérence de votre code. Vous pouvez aussi utiliser le programmation en binôme, la programmation en groupe ou des code katas pour apprendre ou pratiquer vos compétences de codage ensemble. Motivation : Utilisez des stratégies ou pratiques motivantes qui inspirent ou récompensent les efforts ou les réalisations de votre équipe. Par exemple, vous pouvez utiliser la gamification, des badges, des classements ou des points pour rendre votre travail plus amusant ou compétitif. Vous pouvez aussi utiliser des félicitations, de la reconnaissance, des retours ou des primes pour reconnaître ou apprécier le travail ou les performances de votre équipe. Confiance : Utilisez des activités ou exercices de renforcement de la confiance qui renforcent la confiance, le respect ou l’honnêteté au sein de votre équipe. Par exemple, vous pouvez utiliser des jeux de glissement, des jeux de cohésion, des tests de personnalité ou des exercices de chute de confiance pour mieux se connaître ou s’entraider. Vous pouvez aussi utiliser la transparence, la responsabilité, la délégation ou l’autonomisation pour montrer votre confiance ou votre soutien envers les membres de l’équipe. La productivité d’équipe est essentielle pour un développement logiciel réussi. En suivant quelques conseils simples et en appliquant des techniques éprouvées, vous pouvez améliorer la performance de votre équipe logicielle et livrer des produits de haute qualité qui répondent aux besoins et aux attentes de vos clients. Si vous souhaitez en savoir plus sur la manière d’améliorer la productivité de votre équipe logicielle, contactez-nous dès aujourd’hui et nous serons heureux de vous aider.\n","permalink":"https://www.shafiq.in/fr/blog/productivity-of-all-individuals-vs.-team-productivity/","summary":"\u003cp\u003eLe développement logiciel est un processus complexe et collaboratif qui exige une bonne collaboration et une communication efficace. Toutefois, de nombreuses équipes logicielles rencontrent des problèmes de productivité et échouent à livrer des produits de haute qualité dans les délais et le budget prévus. Dans ce billet, je vais expliquer pourquoi la productivité d\u0026rsquo;une équipe est plus importante que celle d’un individu, et comment vous pouvez améliorer la performance de votre équipe logicielle en appliquant des stratégies éprouvées et des bonnes pratiques.\u003c/p\u003e","title":"Productivity of all Individuals vs. Team Productivity"},{"content":" Ipad est un \u0026hellip; ?\n","permalink":"https://www.shafiq.in/fr/blog/ipad-is-a/","summary":"\u003cp\u003e\u003ca href=\"/wp-content/uploads/2010/07/www-google-com-screen-capture-2010-7-10-14-17-311.png\"\u003e\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2010/07/www-google-com-screen-capture-2010-7-10-14-17-311_hu_d321c34a02afd4d5.png\" alt=\"Ipad est un ... ?\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cem\u003eIpad est un \u0026hellip; ?\u003c/em\u003e\u003c/p\u003e","title":"Ipad is a … ?"},{"content":"Chaque problème cache une opportunité en attendant d\u0026rsquo;être découverte. C\u0026rsquo;est particulièrement vrai dans l\u0026rsquo;industrie informatique, où le défi d\u0026rsquo;une personne est la chance d\u0026rsquo;innovation pour une autre. La clé consiste à adopter une perspective positive et créative qui perçoit les problèmes comme des possibilités.\n","permalink":"https://www.shafiq.in/fr/blog/how-to-turn-problems-into-opportunities/","summary":"\u003cp\u003eChaque problème cache une opportunité en attendant d\u0026rsquo;être découverte. C\u0026rsquo;est particulièrement vrai dans l\u0026rsquo;industrie informatique, où le défi d\u0026rsquo;une personne est la chance d\u0026rsquo;innovation pour une autre. La clé consiste à adopter une perspective positive et créative qui perçoit les problèmes comme des possibilités.\u003c/p\u003e","title":"How to turn problems into opportunities"},{"content":"Voici la commande :\ncp -p /aaa/bbb /ccc/ddd\n","permalink":"https://www.shafiq.in/fr/blog/preserve-file-permissions-while-copying-files-in-linux/","summary":"\u003cp\u003eVoici la commande :\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ecp -p /aaa/bbb /ccc/ddd\u003c/p\u003e\n\u003c/blockquote\u003e","title":"Preserve File Permissions While Copying Files in Linux"},{"content":"Je suis ravi de vous partager mon premier extension typo3.\nIl s\u0026rsquo;agit d\u0026rsquo;une extension front-end qui vous permet d\u0026rsquo;afficher un moteur de recherche Google personnalisé sur votre site web. Le moteur de recherche utilise la technologie ajax et dispose d\u0026rsquo;une fonctionnalité d\u0026rsquo;onglets, vous permettant de passer d\u0026rsquo;un type de résultat à un autre sans recharger la page.\nVous pouvez télécharger l\u0026rsquo;extension depuis la page du projet sur le forge typo3. Vous pouvez également accéder au dépôt svn et contribuer au code. 🙂\nLien du dépôt SVN : svn.typo3.org/TYPO3v4/Extensions/ajax_google_search (no longer available)\nPage du projet sur le forge typo3 : forge.typo3.org/projects/show/extension-ajax_google_search (no longer available)\n","permalink":"https://www.shafiq.in/fr/blog/ajax-tabbed-google-search-a-typo3-extension/","summary":"\u003cp\u003eJe suis ravi de vous partager \u003cem\u003emon premier\u003c/em\u003e extension typo3.\u003c/p\u003e\n\u003cp\u003eIl s\u0026rsquo;agit d\u0026rsquo;une extension front-end qui vous permet d\u0026rsquo;afficher un moteur de recherche Google personnalisé sur votre site web. Le moteur de recherche utilise la technologie ajax et dispose d\u0026rsquo;une fonctionnalité d\u0026rsquo;onglets, vous permettant de passer d\u0026rsquo;un type de résultat à un autre sans recharger la page.\u003c/p\u003e\n\u003c!-- Lien de téléchargement : --\u003e\n\u003cp\u003eVous pouvez télécharger l\u0026rsquo;extension depuis la page du projet sur le forge typo3. Vous pouvez également accéder au dépôt svn et contribuer au code. 🙂\u003c/p\u003e","title":"Ajax Tabbed Google Search – A Typo3 Extension"},{"content":"jordanlund 4 points il y a 1 an[-] Confession time\u0026hellip; Je me perds toujours pour savoir lequel est la barre oblique et lequel est la barre inverse. Je finis par les appeler \u0026ldquo;celui sur le point d\u0026rsquo;interrogation\u0026rdquo; et \u0026ldquo;celui pas sur le point d\u0026rsquo;interrogation\u0026rdquo;. Ou / et \\ pour faire court.\nzem 45 points il y a 1 an[-] Voici une astuce simple : \\ penche vers l\u0026rsquo;arrière / penche vers l\u0026rsquo;avant\ngrantrules 27 points il y a 1 an[-] _ est une barre oblique qui s\u0026rsquo;est lassée et s\u0026rsquo;est allongée.\njmkogut 23 points il y a 1 an[-] | est une barre oblique qui se tient droite.\n[supprimé] 27 points il y a 1 an* [-] ( est une barre oblique qui s\u0026rsquo;est tordue. ^ est une barre oblique qui a été écrasée au milieu. % est une barre oblique avant avec deux points dessus. # est quatre barres obliques qui ont croisé leurs chemins. ~ est une barre oblique qui a trop bu.\ngaoshan 24 points il y a 1 an*[-] ! est une barre oblique qui porte un chapeau et une chaussette. i est la même barre oblique qui fait une mainstand. ? est la même barre oblique mais très âgée et ridée. . est une barre oblique qui s\u0026rsquo;est effondrée en point. `. est une barre oblique qui a perdu son âme. {*} est quelque chose que vous ne voulez pas voir. Pas une barre oblique du tout.\njmkogut 2 points il y a 1 an[-] Les points du signe pourcentage \u0026lt;3 ET LES QUATRE BARRES OBLIQUES QUI ONT CROISÉ LEUR CHEMIN \u0026lt;3\nknome 8 points il y a 1 an* [-] T est une barre oblique horizontale qui a besoin d\u0026rsquo;une barre verticale pour s\u0026rsquo;appuyer.\njmkogut 0 points il y a 1 an[-] Wow. Je n\u0026rsquo;avais jamais remarqué ça avant\nembretr 9 points il y a 12 mois* [-] barre oblique, vue par l\u0026rsquo;extrémité pointue\n","permalink":"https://www.shafiq.in/fr/blog/how-to-tell-the-difference-between-slash-and-backslash/","summary":"\u003cp\u003ejordanlund 4 points il y a 1 an[-]\nConfession time\u0026hellip;\nJe me perds toujours pour savoir lequel est la barre oblique et lequel est la barre inverse.\nJe finis par les appeler \u0026ldquo;celui sur le point d\u0026rsquo;interrogation\u0026rdquo; et \u0026ldquo;celui pas sur le point d\u0026rsquo;interrogation\u0026rdquo;.\nOu / et \\ pour faire court.\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003ezem 45 points il y a 1 an[-]\nVoici une astuce simple :\n\\ penche vers l\u0026rsquo;arrière\n/ penche vers l\u0026rsquo;avant\u003c/p\u003e","title":"How to tell the difference between slash and backslash"},{"content":"Je suis heureux de vous partager mon premier extension Google Chrome.\nIl s\u0026rsquo;agit d\u0026rsquo;une collection de manuels de référence Typo3 que j\u0026rsquo;ai compilés à partir du site typo3.org.\nElle n\u0026rsquo;est peut-être pas la plus cool disponible, mais elle m\u0026rsquo;a été utile. 🙂\nCette extension Google Chrome est destinée à :\n• Ceux qui ont une connexion Internet lente ou instable. Par exemple, en Inde. • Et à ceux qui préfèrent rester dans le navigateur tout en lisant ou en recherchant quelque chose dans les manuels de référence Typo3.\nJ\u0026rsquo;avais envie de publier cette extension sur le Google Chrome Extension Directory, mais je n\u0026rsquo;ai pas pu. La taille du fichier est de 19,86 Mo, et Google impose une limite de 10 Mo pour les extensions. Si vous connaissez une solution, n\u0026rsquo;hésitez pas à me le faire savoir.\nAstuce : utilisez ctrl+F ou F3 pour rechercher.\n","permalink":"https://www.shafiq.in/fr/blog/typo3-reference-manuals-a-google-chrome-extension/","summary":"\u003cp\u003eJe suis heureux de vous partager mon premier extension Google Chrome.\u003c/p\u003e\n\u003cp\u003eIl s\u0026rsquo;agit d\u0026rsquo;une collection de manuels de référence Typo3 que j\u0026rsquo;ai compilés à partir du site typo3.org.\u003c/p\u003e\n\u003cp\u003eElle n\u0026rsquo;est peut-être pas la plus cool disponible, mais elle m\u0026rsquo;a été utile. 🙂\u003c/p\u003e\n\u003cp\u003eCette extension Google Chrome est destinée à :\u003c/p\u003e\n\u003cp\u003e• Ceux qui ont une connexion Internet lente ou instable. Par exemple, en Inde.\n• Et à ceux qui préfèrent rester dans le navigateur tout en lisant ou en recherchant quelque chose dans les manuels de référence Typo3.\u003c/p\u003e","title":"Typo3 Reference Manuals – A Google Chrome Extension"},{"content":"Si vous utilisez un système d\u0026rsquo;exploitation basé sur Linux et que vous souhaitez connaître la distribution et la version spécifiques que vous avez installées, il existe une commande simple qui peut vous aider. Ouvrez simplement une fenêtre de terminal et saisissez la commande suivante :\ncat /etc/issue Cela affichera le nom et le numéro de version de votre distribution Linux. Par exemple, si vous utilisez Debian 4.0, la sortie ressemblera à ceci :\nDebian GNU/Linux 4.0 \\n \\l Les caractères spéciaux \\n et \\l représentent respectivement la date actuelle et le nom de l\u0026rsquo;appareil terminal. Ils ne font pas partie du nom de la distribution.\nCette commande fonctionne pour la plupart des distributions Linux, mais certaines peuvent avoir des méthodes différentes ou supplémentaires pour afficher leurs informations. Par exemple, Debian dispose également d\u0026rsquo;un fichier appelé /etc/os-release qui contient des détails plus complets sur la distribution. Vous pouvez afficher son contenu avec cette commande :\ncat /etc/os-release La sortie ressemblera à quelque chose comme ceci :\nPRETTY_NAME=\u0026#34;Debian GNU/Linux 4.0 (etch)\u0026#34; NAME=\u0026#34;Debian GNU/Linux\u0026#34; VERSION_ID=\u0026#34;4.0\u0026#34; VERSION=\u0026#34;4.0 (etch)\u0026#34; ID=debian Vous pouvez également utiliser la commande hostnamectl pour obtenir certaines informations sur votre système, telles que la version du noyau, l\u0026rsquo;architecture ou l\u0026rsquo;identifiant de machine. Par exemple, pour n\u0026rsquo;obtenir que la version du noyau, vous pouvez utiliser cette commande :\nhostnamectl | grep Kernel La sortie sera la suivante :\nKernel: Linux 2.6.18-6-686 Pour voir toutes les informations disponibles avec hostnamectl, vous pouvez l\u0026rsquo;utiliser sans arguments, ou lire sa page de manuel avec man hostnamectl.\n","permalink":"https://www.shafiq.in/fr/blog/how-to-identify-your-linux-distribution-and-version-with-simple-commands/","summary":"\u003cp\u003eSi vous utilisez un système d\u0026rsquo;exploitation basé sur Linux et que vous souhaitez connaître la distribution et la version spécifiques que vous avez installées, il existe une commande simple qui peut vous aider. Ouvrez simplement une fenêtre de terminal et saisissez la commande suivante :\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003ecat /etc/issue\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eCela affichera le nom et le numéro de version de votre distribution Linux. Par exemple, si vous utilisez Debian 4.0, la sortie ressemblera à ceci :\u003c/p\u003e","title":"How to Identify Your Linux Distribution and Version with Simple Commands"},{"content":"Scrum est un modèle de développement agile qui permet aux équipes de livrer des produits logiciels plus rapidement et avec une qualité supérieure. Scrum consiste à décomposer le produit en petites parties gérables appelées éléments de backlog, et à y travailler en itérations courtes appelées sprints. Voici les 8 étapes à suivre pour mettre en œuvre Scrum avec succès :\nÉtape 1 : Préparez votre backlog produit. Le backlog produit est une liste de fonctionnalités et de exigences que vous souhaitez inclure dans votre produit. Vous devez impliquer les parties prenantes, telles que les clients, utilisateurs ou gestionnaires, afin de créer et prioriser cette liste. Vous devez également obtenir l\u0026rsquo;approbation du propriétaire produit, la personne chargée de définir et de gérer la vision et les objectifs du produit.\nÉtape 2 : Estimez votre backlog produit. En tant qu\u0026rsquo;équipe, vous devez fournir une estimation approximative du temps et de l\u0026rsquo;effort nécessaires à la réalisation de chaque élément de backlog. Cela vous aidera à planifier et prioriser vos sprints. Vous pouvez utiliser différentes techniques, telles que le poker d\u0026rsquo;organisation ou les tailles de T-shirt, pour estimer vos éléments de backlog.\nÉtape 3 : Planifiez votre sprint. Un sprint est une période fixe, généralement d\u0026rsquo;une à deux semaines, pendant laquelle vous travaillez sur un sous-ensemble du backlog produit. Pour planifier votre sprint, vous devez organiser une réunion de planification du sprint avec toute l\u0026rsquo;équipe et le propriétaire produit. Dans cette réunion, vous devez décider des éléments suivants :\nLa durée du sprint et son objectif Les éléments de backlog sur lesquels vous allez travailler durant ce sprint Les exigences et les critères d\u0026rsquo;acceptation pour chaque élément de backlog Les tâches et sous-tâches que vous devez réaliser pour chaque élément de backlog Les heures que vous allez consacrer à chaque tâche et sous-tâche Le backlog du sprint, qui est la liste finale des tâches et sous-tâches sur lesquelles vous vous engagez à terminer durant ce sprint Étape 4 : Créez un espace de travail collaboratif. Pour travailler efficacement en équipe, vous avez besoin d’un espace partagé où vous pouvez communiquer et suivre vos progrès. Vous pouvez utiliser un outil logiciel ou un tableau physique pour créer votre espace de travail. Vous devez inclure les éléments suivants dans votre espace :\nLe backlog produit Le backlog du sprint Le graphique de combustion quotidien Le graphique de combustion du sprint Étape 5 : Exécutez votre sprint. Pendant le sprint, vous devez travailler sur les tâches et sous-tâches que vous vous êtes engagé à terminer. Vous devez respecter les règles suivantes :\nLa durée du sprint est fixe et ne peut pas être modifiée Si vous terminez plus tôt, vous pouvez ajouter d\u0026rsquo;autres éléments de backlog au sprint Si vous êtes en retard, vous pouvez supprimer ou reporter certains éléments de backlog du sprint Vous devez terminer un élément de backlog à la fois et vous assurer qu’il est entièrement testé et conforme aux critères d’acceptation Étape 6 : Organisez des réunions quotidiennes (Scrums). Une réunion quotidienne est une réunion brève et ciblée que vous organisez chaque jour avec vos membres d’équipe. L’objectif de cette réunion est de synchroniser votre travail et d’identifier tout problème ou obstacle qui bloque votre progression. Pendant cette réunion, chaque membre de l’équipe doit répondre aux trois questions suivantes :\nQu’avez-vous fait depuis la dernière réunion quotidienne ? Qu’allez-vous faire d’ici la prochaine réunion quotidienne ? Avez-vous des blocages ou des obstacles qui vous empêchent de progresser ? Le chef d’équipe (Scrum Master), la personne chargée de faciliter et d’accompagner l’équipe, doit s’assurer que la réunion est brève et productive. Le Scrum Master doit également aider à éliminer tout obstacle affectant l’équipe.\nÉtape 7 : Suivez votre progression à l’aide des graphiques de combustion. Un graphique de combustion est une représentation graphique du travail accompli et du travail restant durant votre sprint. Il vous aide à surveiller votre progression et à ajuster votre plan en conséquence. Vous devez mettre à jour votre graphique de combustion quotidiennement en entrant le temps estimé pour la complétion (ETC) de chaque tâche et sous-tâche. Vous pouvez utiliser un outil logiciel ou un tableur pour créer votre graphique de combustion.\nÉtape 8 : Révisez et améliorez. À la fin du sprint, vous devez organiser deux réunions : une réunion de revue du sprint et une réunion de rétrospective du sprint. Dans la réunion de revue, vous devez démontrer le logiciel développé durant ce sprint au propriétaire produit et aux autres parties prenantes. Vous devez également examiner le graphique de combustion et discuter de ce qui s’est bien passé et de ce qui pourrait être amélioré en termes de qualité, de portée, de temps et de coût. Dans la réunion de rétrospective, vous devez réfléchir à la manière dont vous avez travaillé en équipe et identifier ce qui a bien fonctionné et ce qui n’a pas fonctionné, en matière de collaboration, de communication, de processus, d’outils, etc. Vous devez également élaborer des points d’action pour l’amélioration du prochain sprint.\n","permalink":"https://www.shafiq.in/fr/blog/how-to-implement-scrum-development-model-in-8-steps/","summary":"\u003cp\u003eScrum est un modèle de développement agile qui permet aux équipes de livrer des produits logiciels plus rapidement et avec une qualité supérieure. Scrum consiste à décomposer le produit en petites parties gérables appelées éléments de backlog, et à y travailler en itérations courtes appelées sprints. Voici les 8 étapes à suivre pour mettre en œuvre Scrum avec succès :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eÉtape 1 : Préparez votre backlog produit.\u003c/strong\u003e Le backlog produit est une liste de fonctionnalités et de exigences que vous souhaitez inclure dans votre produit. Vous devez impliquer les parties prenantes, telles que les clients, utilisateurs ou gestionnaires, afin de créer et prioriser cette liste. Vous devez également obtenir l\u0026rsquo;approbation du propriétaire produit, la personne chargée de définir et de gérer la vision et les objectifs du produit.\u003c/p\u003e","title":"How to Implement Scrum Development Model in 8 Steps"},{"content":"L\u0026rsquo;apprentissage et les connaissances sont essentiels pour votre croissance professionnelle et votre évolution de carrière. Mais comment pouvez-vous démontrer vos compétences et votre expertise à des employeurs potentiels ? Voici quelques conseils pour vous aider à mettre en valeur votre apprentissage continu sur votre CV :\nObtenez une certification délivrée par une organisation professionnelle réputée. Cela montrera que vous avez atteint les normes et exigences de votre secteur d\u0026rsquo;activité. Les certifications peuvent également vous aider à vous démarquer parmi d\u0026rsquo;autres candidats ayant des qualifications similaires. Rédigez des publications, des livres, des ebooks, des articles et des rapports blancs. Être publié ajoute de la crédibilité à votre CV et montre que vous avez des connaissances et des idées précieuses à partager. Vous pouvez également utiliser vos publications comme exemples de votre travail ou comme portfolio. Faites des présentations dans des universités, des écoles ou des organisations à but non lucratif. Cela vous permettra de démontrer vos compétences en communication et en présentation, ainsi que votre capacité à éduquer et à influencer. Vous pouvez également enregistrer vos présentations, les éditer pour mettre en évidence les points clés, et les publier sur votre site web, blog ou chaîne YouTube. Faites du bénévolat ou du service communautaire dans un domaine pertinent à votre profession. Cela montrera que vous êtes passionné par votre travail et que vous vous souciez de faire une différence positive dans la société. Vous pouvez également mentionner votre engagement bénévole comme expérience professionnelle ou accomplissement sur votre CV. Listez toutes vos formations et cours techniques suivis. Vous devez inclure vos formations professionnelles et vos cours techniques dans la section Éducation ou Formation de votre CV. Obtenez des certifications pour les compétences informatiques, logicielles et informatiques auprès de Microsoft et d\u0026rsquo;autres organismes reconnus. Si vous travaillez dans le secteur informatique ou tout autre domaine exigeant des compétences informatiques ou logicielles, vous pouvez renforcer votre CV en obtenant des certifications qui prouvent votre maîtrise et votre compétence. De nombreux employeurs recherchent des candidats possédant des certifications spécifiques pour certains logiciels ou systèmes. Apprenez une langue étrangère à l’aide de Rosetta Stone et de DVD avec des sous-titres alternés en anglais en bas de l’écran, et affichez-le fièrement sur votre CV. Apprendre une langue étrangère peut vous ouvrir de nombreuses portes sur le marché mondial. Vous pouvez également impressionner les employeurs en montrant que vous êtes conscient de la culture et adaptable. ","permalink":"https://www.shafiq.in/fr/blog/how-to-boost-your-resume-with-lifelong-learning/","summary":"\u003cp\u003eL\u0026rsquo;apprentissage et les connaissances sont essentiels pour votre croissance professionnelle et votre évolution de carrière. Mais comment pouvez-vous démontrer vos compétences et votre expertise à des employeurs potentiels ? Voici quelques conseils pour vous aider à mettre en valeur votre apprentissage continu sur votre CV :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eObtenez une certification délivrée par une organisation professionnelle réputée.\u003c/strong\u003e Cela montrera que vous avez atteint les normes et exigences de votre secteur d\u0026rsquo;activité. Les certifications peuvent également vous aider à vous démarquer parmi d\u0026rsquo;autres candidats ayant des qualifications similaires.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRédigez des publications, des livres, des ebooks, des articles et des rapports blancs.\u003c/strong\u003e Être publié ajoute de la crédibilité à votre CV et montre que vous avez des connaissances et des idées précieuses à partager. Vous pouvez également utiliser vos publications comme exemples de votre travail ou comme portfolio.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFaites des présentations dans des universités, des écoles ou des organisations à but non lucratif.\u003c/strong\u003e Cela vous permettra de démontrer vos compétences en communication et en présentation, ainsi que votre capacité à éduquer et à influencer. Vous pouvez également enregistrer vos présentations, les éditer pour mettre en évidence les points clés, et les publier sur votre site web, blog ou chaîne YouTube.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eFaites du bénévolat ou du service communautaire dans un domaine pertinent à votre profession.\u003c/strong\u003e Cela montrera que vous êtes passionné par votre travail et que vous vous souciez de faire une différence positive dans la société. Vous pouvez également mentionner votre engagement bénévole comme expérience professionnelle ou accomplissement sur votre CV.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eListez toutes vos formations et cours techniques suivis.\u003c/strong\u003e Vous devez inclure vos formations professionnelles et vos cours techniques dans la section Éducation ou Formation de votre CV.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eObtenez des certifications pour les compétences informatiques, logicielles et informatiques auprès de Microsoft et d\u0026rsquo;autres organismes reconnus.\u003c/strong\u003e Si vous travaillez dans le secteur informatique ou tout autre domaine exigeant des compétences informatiques ou logicielles, vous pouvez renforcer votre CV en obtenant des certifications qui prouvent votre maîtrise et votre compétence. De nombreux employeurs recherchent des candidats possédant des certifications spécifiques pour certains logiciels ou systèmes.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eApprenez une langue étrangère à l’aide de Rosetta Stone et de DVD avec des sous-titres alternés en anglais en bas de l’écran, et affichez-le fièrement sur votre CV.\u003c/strong\u003e Apprendre une langue étrangère peut vous ouvrir de nombreuses portes sur le marché mondial. Vous pouvez également impressionner les employeurs en montrant que vous êtes conscient de la culture et adaptable.\u003c/li\u003e\n\u003c/ul\u003e","title":"How to Boost Your Resume with Lifelong Learning"},{"content":"\u0026hellip;oui, juste 2 lignes Pour Ubuntu x64 sudo su\ncd /tmp \u0026amp;\u0026amp; mkdir php53 \u0026amp;\u0026amp; cd php53 \u0026amp;\u0026amp; wget \u0026amp;\u0026amp; wget \u0026amp;\u0026amp; dpkg -i *.deb \u0026amp;\u0026amp; echo \u0026quot;deb http://php53.dotdeb.org stable all\u0026quot; \u0026gt;\u0026gt; /etc/apt/sources.list \u0026amp;\u0026amp; aptitude update \u0026amp;\u0026amp; aptitude install libapache2-mod-php5=5.3.1 apache2\nPour Ubuntu 32 bits i386 sudo su\ncd /tmp \u0026amp;\u0026amp; mkdir php53 \u0026amp;\u0026amp; cd php53 \u0026amp;\u0026amp; wget \u0026amp;\u0026amp; wget \u0026amp;\u0026amp; dpkg -i *.deb \u0026amp;\u0026amp; echo \u0026quot;deb http://php53.dotdeb.org stable all\u0026quot; \u0026gt;\u0026gt; /etc/apt/sources.list \u0026amp;\u0026amp; aptitude update \u0026amp;\u0026amp; aptitude install libapache2-mod-php5=5.3.1 apache2\n","permalink":"https://www.shafiq.in/fr/blog/how-to-install-php-5.3.1-on-ubuntu-64-bit-and-32-bit/","summary":"\u003ch2 id=\"oui-juste-2-lignes\"\u003e\u0026hellip;oui, juste 2 lignes\u003c/h2\u003e\n\u003ch3 id=\"pour-ubuntu-x64\"\u003ePour Ubuntu x64\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003esudo su\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003ecd /tmp \u0026amp;\u0026amp; mkdir php53 \u0026amp;\u0026amp; cd php53 \u0026amp;\u0026amp; wget \u0026amp;\u0026amp; wget \u0026amp;\u0026amp; dpkg -i *.deb \u0026amp;\u0026amp; echo \u0026quot;deb http://php53.dotdeb.org stable all\u0026quot; \u0026gt;\u0026gt; /etc/apt/sources.list \u0026amp;\u0026amp; aptitude update \u0026amp;\u0026amp; aptitude install libapache2-mod-php5=5.3.1 apache2\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch3 id=\"pour-ubuntu-32-bits-i386\"\u003ePour Ubuntu 32 bits i386\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003esudo su\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003ecd /tmp \u0026amp;\u0026amp; mkdir php53 \u0026amp;\u0026amp; cd php53 \u0026amp;\u0026amp; wget \u0026amp;\u0026amp; wget \u0026amp;\u0026amp; dpkg -i *.deb \u0026amp;\u0026amp; echo \u0026quot;deb http://php53.dotdeb.org stable all\u0026quot; \u0026gt;\u0026gt; /etc/apt/sources.list \u0026amp;\u0026amp; aptitude update \u0026amp;\u0026amp; aptitude install libapache2-mod-php5=5.3.1 apache2\u003c/code\u003e\u003c/p\u003e","title":"How to Install PHP 5.3.1 on Ubuntu 64 bit and 32 bit"},{"content":"6 façons de lire un fichier texte dans une variable\nSi vous travaillez avec des fichiers volumineux, vous pourriez envisager d\u0026rsquo;utiliser File::Slurp.\nIl est bien plus rapide que la méthode conventionnelle :\n{ local $/=undef; open FILE, \u0026#34;myfile\u0026#34; or die \u0026#34;Couldn\u0026#39;t open file: $!\u0026#34;; binmode FILE; $string = \u0026lt;FILE\u0026gt;; close FILE; } { local $/=undef; open FILE, \u0026#34;myfile\u0026#34; or die \u0026#34;Couldn\u0026#39;t open file: $!\u0026#34;; $string = \u0026lt;FILE\u0026gt;; close FILE; } open FILE, \u0026#34;myfile\u0026#34; or die \u0026#34;Couldn\u0026#39;t open file: $!\u0026#34;; $string = join(\u0026#34;\u0026#34;, \u0026lt;FILE\u0026gt;); close FILE; open FILE, \u0026#34;myfile\u0026#34; or die \u0026#34;Couldn\u0026#39;t open file: $!\u0026#34;; while (\u0026lt;FILE\u0026gt;) { $string .= $_; } close FILE; open( FH, \u0026#34;sample.txt\u0026#34;) || die(\u0026#34;Error: $!\\n\u0026#34;); read(FH, $data, 2000); close FH; Le format de la fonction read est :\nread(filehandle, destination, size/length);\nL\u0026rsquo;exemple ci-dessus lit 2000 octets dans la variable scalaire $data.\nmy $file = \u0026#39;sample.txt\u0026#39;; { local *FH; -f FH and sysread FH, my $file, -s FH; } ","permalink":"https://www.shafiq.in/fr/blog/perl-how-to-read-a-text-file-into-a-variable-6-ways-to-do-it/","summary":"\u003cp\u003e6 façons de lire un fichier texte dans une variable\u003c/p\u003e\n\u003cp\u003eSi vous travaillez avec des fichiers volumineux, vous pourriez envisager d\u0026rsquo;utiliser File::Slurp.\u003cbr\u003e\nIl est bien plus rapide que la méthode conventionnelle :\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-perl\" data-lang=\"perl\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003elocal\u003c/span\u003e \u003cspan class=\"vg\"\u003e$/\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"nb\"\u003eundef\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003eopen\u003c/span\u003e \u003cspan class=\"n\"\u003eFILE\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;myfile\u0026#34;\u003c/span\u003e \u003cspan class=\"ow\"\u003eor\u003c/span\u003e \u003cspan class=\"nb\"\u003edie\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;Couldn\u0026#39;t open file: $!\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003ebinmode\u003c/span\u003e \u003cspan class=\"n\"\u003eFILE\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nv\"\u003e$string\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"sr\"\u003e\u0026lt;FILE\u0026gt;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003eclose\u003c/span\u003e \u003cspan class=\"n\"\u003eFILE\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003elocal\u003c/span\u003e \u003cspan class=\"vg\"\u003e$/\u003c/span\u003e\u003cspan class=\"o\"\u003e=\u003c/span\u003e\u003cspan class=\"nb\"\u003eundef\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003eopen\u003c/span\u003e \u003cspan class=\"n\"\u003eFILE\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;myfile\u0026#34;\u003c/span\u003e \u003cspan class=\"ow\"\u003eor\u003c/span\u003e \u003cspan class=\"nb\"\u003edie\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;Couldn\u0026#39;t open file: $!\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nv\"\u003e$string\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"sr\"\u003e\u0026lt;FILE\u0026gt;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \u003cspan class=\"nb\"\u003eclose\u003c/span\u003e \u003cspan class=\"n\"\u003eFILE\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eopen\u003c/span\u003e \u003cspan class=\"n\"\u003eFILE\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;myfile\u0026#34;\u003c/span\u003e \u003cspan class=\"ow\"\u003eor\u003c/span\u003e \u003cspan class=\"nb\"\u003edie\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;Couldn\u0026#39;t open file: $!\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nv\"\u003e$string\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"nb\"\u003ejoin\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"sr\"\u003e\u0026lt;FILE\u0026gt;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eclose\u003c/span\u003e \u003cspan class=\"n\"\u003eFILE\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eopen\u003c/span\u003e \u003cspan class=\"n\"\u003eFILE\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;myfile\u0026#34;\u003c/span\u003e \u003cspan class=\"ow\"\u003eor\u003c/span\u003e \u003cspan class=\"nb\"\u003edie\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;Couldn\u0026#39;t open file: $!\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003ewhile\u003c/span\u003e \u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"sr\"\u003e\u0026lt;FILE\u0026gt;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e \u003cspan class=\"nv\"\u003e$string\u003c/span\u003e \u003cspan class=\"o\"\u003e.=\u003c/span\u003e \u003cspan class=\"nv\"\u003e$_\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eclose\u003c/span\u003e \u003cspan class=\"n\"\u003eFILE\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eopen\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e \u003cspan class=\"n\"\u003eFH\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s\"\u003e\u0026#34;sample.txt\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e)\u003c/span\u003e \u003cspan class=\"o\"\u003e||\u003c/span\u003e \u003cspan class=\"nb\"\u003edie\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"s\"\u003e\u0026#34;Error: $!\\n\u0026#34;\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eread\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003eFH\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"nv\"\u003e$data\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"mi\"\u003e2000\u003c/span\u003e\u003cspan class=\"p\"\u003e);\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nb\"\u003eclose\u003c/span\u003e \u003cspan class=\"n\"\u003eFH\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eLe format de la fonction read est :\u003c/p\u003e","title":"Perl – How to Read a Text File into a Variable – 6 ways to do it"},{"content":"Pourquoi les programmeurs veulent recommencer à zéro\nVous avez déjà ressenti l\u0026rsquo;envie d\u0026rsquo;abandonner votre code et de le réécrire depuis le début ? Si c\u0026rsquo;est le cas, vous n\u0026rsquo;êtes pas seul. Beaucoup de programmeurs éprouvent cette tentation, et il y a une raison cachée derrière cela. La raison n\u0026rsquo;est pas que le code ancien est mauvais, mais qu\u0026rsquo;il est difficile à comprendre. Il existe un principe fondamental du développement qui explique cela : lire du code est plus difficile que d\u0026rsquo;écrire du code. C’est pourquoi réutiliser du code est si difficile. C’est pourquoi chaque développeur de votre équipe a sa propre façon préférée de séparer une chaîne en tableau. Ils créent leur propre fonction parce que c’est plus agréable et plus simple que d’apprendre comment fonctionne celle existante.\n","permalink":"https://www.shafiq.in/fr/blog/restarting-a-project-from-scratch/","summary":"\u003cp\u003e\u003cstrong\u003ePourquoi les programmeurs veulent recommencer à zéro\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eVous avez déjà ressenti l\u0026rsquo;envie d\u0026rsquo;abandonner votre code et de le réécrire depuis le début ? Si c\u0026rsquo;est le cas, vous n\u0026rsquo;êtes pas seul. Beaucoup de programmeurs éprouvent cette tentation, et il y a une raison cachée derrière cela. La raison n\u0026rsquo;est pas que le code ancien est mauvais, mais qu\u0026rsquo;il est difficile à comprendre. Il existe un principe fondamental du développement qui explique cela : lire du code est plus difficile que d\u0026rsquo;écrire du code. C’est pourquoi réutiliser du code est si difficile. C’est pourquoi chaque développeur de votre équipe a sa propre façon préférée de séparer une chaîne en tableau. Ils créent leur propre fonction parce que c’est plus agréable et plus simple que d’apprendre comment fonctionne celle existante.\u003c/p\u003e","title":"Restarting a Project from Scratch !"},{"content":"J\u0026rsquo;ai été en déplacement quotidien de Margao à Bambolim pour le travail, et je dois dire que la construction routière en cours près de Verna me rend fou. Cela fait quatre jours qu\u0026rsquo;ils déterrent la route, mais je ne vois aucun progrès. Ce qui est pire, c\u0026rsquo;est qu\u0026rsquo;ils semblent ne pas tenir compte des heures de pointe sur cette route. Ils commencent leur travail vers 9h30 et continuent jusqu\u0026rsquo;au soir tard, provoquant de gros embouteillages et des retards pour tout le monde.\nSi vous connaissez cette route, vous savez que les heures les plus chargées sont de 9h00 à 11h00 et de 18h00 à 19h30, quand les gens vont au travail ou en reviennent. On pourrait penser que les autorités planifieraient les travaux en conséquence, afin d\u0026rsquo;éviter de perturber le flux de circulation à ces moments-là. Mais non, elles semblent totalement inconscientes de l\u0026rsquo;inconfort et de la frustration qu\u0026rsquo;elles causent à des milliers de voyageurs chaque jour.\nAujourd\u0026rsquo;hui, il m’a fallu une heure et quarante minutes pour aller de Margao à Bambolim, ce qui est normalement un trajet de 30 minutes. J\u0026rsquo;ai été en retard pour une réunion importante et j\u0026rsquo;ai dû m\u0026rsquo;excuser profusément auprès de mon patron et de mes clients. Je me demande combien de jours encore je devrai endurer cette torture avant que les travaux routiers ne soient terminés.\nsoupir\n","permalink":"https://www.shafiq.in/fr/blog/road-construction-in-goa-a-nightmare-for-commuters/","summary":"\u003cp\u003eJ\u0026rsquo;ai été en déplacement quotidien de Margao à Bambolim pour le travail, et je dois dire que la construction routière en cours près de Verna me rend fou. Cela fait quatre jours qu\u0026rsquo;ils déterrent la route, mais je ne vois aucun progrès. Ce qui est pire, c\u0026rsquo;est qu\u0026rsquo;ils semblent ne pas tenir compte des heures de pointe sur cette route. Ils commencent leur travail vers 9h30 et continuent jusqu\u0026rsquo;au soir tard, provoquant de gros embouteillages et des retards pour tout le monde.\u003c/p\u003e","title":"Road construction in Goa - A nightmare for commuters"},{"content":"Le but de l\u0026rsquo;utilisation du chiffrement et d\u0026rsquo;autres méthodes cryptographiques n\u0026rsquo;est pas de créer un système à 100 % infaillible et inviolable. Le seul système véritablement invulnérable est un ordinateur éteint, et même cela n\u0026rsquo;est pas une garantie, car quelqu\u0026rsquo;un pourrait physiquement s\u0026rsquo;approcher de l\u0026rsquo;appareil, l\u0026rsquo;allumer et le pirater. Le but de tout ce travail est de rendre l\u0026rsquo;accès aux données sensibles si difficile que les pirates n\u0026rsquo;essaient même pas, ou bien qu\u0026rsquo;ils abandonnent après quelques tentatives infructueuses.\n","permalink":"https://www.shafiq.in/fr/blog/hack-proof-encryption-read-on/","summary":"\u003cp\u003eLe but de l\u0026rsquo;utilisation du chiffrement et d\u0026rsquo;autres méthodes cryptographiques n\u0026rsquo;est pas de créer un système à 100 % infaillible et inviolable. Le seul système véritablement invulnérable est un ordinateur éteint, et même cela n\u0026rsquo;est pas une garantie, car quelqu\u0026rsquo;un pourrait physiquement s\u0026rsquo;approcher de l\u0026rsquo;appareil, l\u0026rsquo;allumer et le pirater. Le but de tout ce travail est de rendre l\u0026rsquo;accès aux données sensibles si difficile que les pirates n\u0026rsquo;essaient même pas, ou bien qu\u0026rsquo;ils abandonnent après quelques tentatives infructueuses.\u003c/p\u003e","title":"Hack Proof Encryption ? read on…"},{"content":"Beaucoup de gens se demandent si le collège représente un bon investissement pour leur avenir. Ils ont pu entendre parler de diplômés qui peinent à trouver un emploi ou à rembourser leurs prêts étudiants. Ils peuvent aussi douter de la qualité et de la pertinence de l’éducation reçue à l’université. Le collège vaut-il vraiment la peine ?\nLa réponse n’est pas simple. Le collège peut être une expérience précieuse pour certaines personnes, mais il peut aussi représenter un surinvestissement pour d’autres. Tout dépend de nombreux facteurs, tels que vos objectifs personnels, vos centres d’intérêt, vos compétences, votre situation financière et le marché du travail. Le collège n’est pas une garantie de succès, et il peut également comporter des risques et des coûts importants.\nAinsi, avant de décider de poursuivre des études supérieures, vous devriez soigneusement peser les avantages et les inconvénients du collège. Vous devriez également explorer d\u0026rsquo;autres alternatives, telles que la formation professionnelle, les cours en ligne, les apprentissages ou l’entrepreneuriat. Choisissez le parcours qui correspond le mieux à vos besoins et à vos aspirations.\nL’éducation ne se limite pas à obtenir un diplôme. Elle consiste à apprendre de nouvelles choses, à développer son potentiel et à découvrir sa passion. L’éducation peut avoir lieu de nombreuses façons et dans de nombreux lieux, pas seulement à l’université. Ce qui compte le plus, c’est de continuer à apprendre et à grandir tout au long de sa vie.\n","permalink":"https://www.shafiq.in/fr/blog/what-is-education-is-college-worth-it/","summary":"\u003cp\u003eBeaucoup de gens se demandent si le collège représente un bon investissement pour leur avenir. Ils ont pu entendre parler de diplômés qui peinent à trouver un emploi ou à rembourser leurs prêts étudiants. Ils peuvent aussi douter de la qualité et de la pertinence de l’éducation reçue à l’université. Le collège vaut-il vraiment la peine ?\u003c/p\u003e\n\u003cp\u003eLa réponse n’est pas simple. Le collège peut être une expérience précieuse pour certaines personnes, mais il peut aussi représenter un surinvestissement pour d’autres. Tout dépend de nombreux facteurs, tels que vos objectifs personnels, vos centres d’intérêt, vos compétences, votre situation financière et le marché du travail. Le collège n’est pas une garantie de succès, et il peut également comporter des risques et des coûts importants.\u003c/p\u003e","title":"What is Education? Is College Worth It?"},{"content":"Dealing with Change\n…my friend told me we were going through too many changes in our lives. I felt overwhelmed and confused by his words. So I did something silly and reverted my fb profile picture to an old one. I guess I was trying to hold on to something familiar and stable. But I don\u0026rsquo;t think that really helped me cope with change. Maybe I need to find a better way to embrace it.\n","permalink":"https://www.shafiq.in/fr/blog/too-much-change/","summary":"\u003cp\u003eDealing with Change\u003c/p\u003e\n\u003cp\u003e…my friend told me we were going through too many changes in our lives. I felt overwhelmed and confused by his words. So I did something silly and reverted my fb profile picture to an old one. I guess I was trying to hold on to something familiar and stable. But I don\u0026rsquo;t think that really helped me cope with change. Maybe I need to find a better way to embrace it.\u003c/p\u003e","title":"Too Much Change?"},{"content":"Google came up with a new programming language called Go, which is supposed to be super fast and awesome and stuff.\nBut do we really need another language? I mean, come on. It\u0026rsquo;s hard enough to keep up with the ones we already have.\nGo has some cool things going on, like goroutines, channels and interfaces. But it also has some weird things, like no generics, no exceptions and no inheritance. So it\u0026rsquo;s not for everyone.\nIf you\u0026rsquo;re curious about Go, you can check it out and see if it works for you. Or you can just stick to what you know and love. Either way, Go is something new to code with.\n","permalink":"https://www.shafiq.in/fr/blog/go-programming-language-whats-the-deal/","summary":"\u003cp\u003eGoogle came up with a new programming language called Go, which is supposed to be super fast and awesome and stuff.\u003c/p\u003e\n\u003cp\u003eBut do we really need another language? I mean, come on. It\u0026rsquo;s hard enough to keep up with the ones we already have.\u003c/p\u003e\n\u003cp\u003eGo has some cool things going on, like goroutines, channels and interfaces. But it also has some weird things, like no generics, no exceptions and no inheritance. So it\u0026rsquo;s not for everyone.\u003c/p\u003e","title":"Go Programming Language - What's the Deal?"},{"content":"As a CMS developer, I have learned some valuable lessons over the years. Here are some of the most important ones that I want to share with you:\nNever use the Root directory for your website; “forward” requests to a secondary directory. This will make your website more secure and easier to manage. You can use .htaccess files or other methods to redirect requests from the root directory to a subdirectory where your CMS files are located. Giving credit is nice; hackers will love you! While it is good to acknowledge the developers and contributors of the CMS you are using, you should avoid displaying their names and links on your website. This will only attract hackers who can exploit the vulnerabilities of your CMS or plugins. You can still give credit in your source code or in a private page that only you can access. “Everything isn’t always BETA.” STABLE works. It is tempting to use the latest and greatest features of your CMS, but sometimes they are not fully tested or compatible with your existing setup. You should always backup your website before updating or installing new plugins, and stick to stable versions that have been proven to work well. CMS do not equate to no web-editing or scripting—just less of it! A CMS can make your life easier by providing you with a user-friendly interface and ready-made templates for creating and managing your website content. However, you still need some basic web-editing and scripting skills to customise your website according to your needs and preferences. You should also learn how to troubleshoot and fix any errors or issues that may arise with your CMS or plugins. Commercial Hosting Services offer the Fantastico program for installing OS Applications. Why not? Fantastico is a convenient tool that allows you to install various open source applications, including CMS, with just a few clicks. However, it may not always be the best option for your website. Some of the drawbacks of using Fantastico are: it may not install the latest version of the application, it may not allow you to choose your own database name or prefix, it may not update the application automatically, and it may not be compatible with some plugins or themes. You should always check the compatibility and requirements of the application before using Fantastico, and consider installing it manually if possible. ","permalink":"https://www.shafiq.in/fr/blog/lessons-learned-from-a-cms-developer/","summary":"\u003cp\u003eAs a CMS developer, I have learned some valuable lessons over the years. Here are some of the most important ones that I want to share with you:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eNever use the Root directory for your website; “forward” requests to a secondary directory.\u003c/strong\u003e This will make your website more secure and easier to manage. You can use .htaccess files or other methods to redirect requests from the root directory to a subdirectory where your CMS files are located.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eGiving credit is nice; hackers will love you!\u003c/strong\u003e While it is good to acknowledge the developers and contributors of the CMS you are using, you should avoid displaying their names and links on your website. This will only attract hackers who can exploit the vulnerabilities of your CMS or plugins. You can still give credit in your source code or in a private page that only you can access.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e“Everything isn’t always BETA.” STABLE works.\u003c/strong\u003e It is tempting to use the latest and greatest features of your CMS, but sometimes they are not fully tested or compatible with your existing setup. You should always backup your website before updating or installing new plugins, and stick to stable versions that have been proven to work well.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCMS do not equate to no web-editing or scripting—just less of it!\u003c/strong\u003e A CMS can make your life easier by providing you with a user-friendly interface and ready-made templates for creating and managing your website content. However, you still need some basic web-editing and scripting skills to customise your website according to your needs and preferences. You should also learn how to troubleshoot and fix any errors or issues that may arise with your CMS or plugins.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eCommercial Hosting Services offer the Fantastico program for installing OS Applications. Why not?\u003c/strong\u003e Fantastico is a convenient tool that allows you to install various open source applications, including CMS, with just a few clicks. However, it may not always be the best option for your website. Some of the drawbacks of using Fantastico are: it may not install the latest version of the application, it may not allow you to choose your own database name or prefix, it may not update the application automatically, and it may not be compatible with some plugins or themes. You should always check the compatibility and requirements of the application before using Fantastico, and consider installing it manually if possible.\u003c/li\u003e\n\u003c/ul\u003e","title":"Lessons Learned – from a cms developer"},{"content":"Scheduled for November 3rd, 2009, the new release of Mandriva Linux 2010 offers exceptional innovations. As simple to use as usual, you will find applications such as: KDE 4.3.1, GNOME 2.28, kernel 2.6.31.1, Xorg 1.6.4 RC 1 with the last driver for Intel graphical card. Moblin 2 can be tested on the new Mandriva\u0026rsquo;s distribution.\n","permalink":"https://www.shafiq.in/fr/blog/the-launch-of-mandriva-linux-2010/","summary":"\u003cp\u003eScheduled for November 3rd, 2009, the new release of Mandriva Linux 2010 offers exceptional innovations. As simple to use as usual, you will find applications such as: KDE 4.3.1, GNOME 2.28, kernel 2.6.31.1, Xorg 1.6.4 RC 1 with the last driver for Intel graphical card. Moblin 2 can be tested on the new Mandriva\u0026rsquo;s distribution.\u003c/p\u003e","title":"The launch of Mandriva Linux 2010"},{"content":"Basic Software Development Process:\nDefining the requirements. Approval. Template designs. Template approval. Coding. Internal release. Testing. Alpha release. Beta release. Project goes live. This is the process I follow.\n","permalink":"https://www.shafiq.in/fr/blog/basic-software-development-process-points/","summary":"\u003cp\u003eBasic Software Development Process:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eDefining the requirements.\u003c/li\u003e\n\u003cli\u003eApproval.\u003c/li\u003e\n\u003cli\u003eTemplate designs.\u003c/li\u003e\n\u003cli\u003eTemplate approval.\u003c/li\u003e\n\u003cli\u003eCoding.\u003c/li\u003e\n\u003cli\u003eInternal release.\u003c/li\u003e\n\u003cli\u003eTesting.\u003c/li\u003e\n\u003cli\u003eAlpha release.\u003c/li\u003e\n\u003cli\u003eBeta release.\u003c/li\u003e\n\u003cli\u003eProject goes live.\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003eThis is the process I follow.\u003c/p\u003e","title":"Basic Software Development Process – Points"},{"content":"SALES \u0026amp; DISTRIBUTION (SD) Table of Contents Definition of Sales \u0026amp; Distribution. 2 Enterprise Structure. 3 Client 5 Company. 5 Company Code. 6 Create a Fiscal Year Variant 7 Maintain Fiscal Year Variant 7 Assign Company Code to Fiscal Year Variant 8 Posting Periods. 9 Define Variants for Open Posting Periods. 9 Open and Close Posting Periods. 9 Assign Variants to Company Code. 10 Define Document Number Ranges. 10 Define Document Types. 11 Define Tolerance Groups for Employees. 12 Assign User/Tolerance Group. 13 Plant 13 Assign plant to Company Code. 14 Location. 14 Division. 15 Sales Organisation. 15 Assign Sales Organisation to Company Code. 16 Distribution Channel 16 Assign Distribution Channel to Sales Organisation. 17 Set up Sales Area. 18 Assign sales organisation - distribution channel – plant 19 Define Shipping Points. 20 Assign Shipping point to plant 20 Shipping point and goods receiving point determination: Assign Shipping Point 3. Customer Master Creation of Customer Account Group. Create Number Ranges for Customer Accounts. Assign Number Ranges to Customer Account Groups. Define Incompleteness Procedures. Define Order Type. Define Item Category. Definition of Sales \u0026amp; Distribution For the representation of your company structures in the SAP System, different organizational units are available for the areas of sales, shipping and billing. First analyse the structure and process organisation in your company and then compare them with the SAP structures. In the standard version, different organizational elements are defined as examples. In general, these elements are not sufficient for individual demands. Extend the elements accordingly.\nDuring the clarification phase, work with the structures delivered by SAP. Change the names if necessary in order to achieve a high degree of identification and acceptance with project members and user departments from the beginning. After having defined the organizational units, allocate the elements to each other in the menu option \u0026ldquo;Allocation\u0026rdquo;. Then check the defined organizational units in the menu option \u0026ldquo;Check\u0026rdquo;. Only a limited number of users should be given authorization to maintain organizational elements. Determine the authorization profiles accordingly. As soon as the processing of the menu item is completed, access should be blocked so that no further changes can be made.\nThe organizational units set up the framework of sales processing with the SD system. The master records of sales and distribution (for example, customer master records and pricing elements) as well as the documents used in processing (for example, orders and delivery documents) are entered in dependency with the organizational structures. The data in a master record is only valid within a certain part of the organisation. The sales and distribution documents are entered in the respective sub area of the organisation. The master data valid there is automatically included in the sales \u0026amp; distribution documents. Different control criteria are specified for the management and processing of the master data depending on the organizational units. In order to simplify master record and document entry, the organizational units can be stored as user parameters in the user master record. It is not necessary to specify the organizational units since the values are proposed automatically.\n** **\n2 Enterprise Structure\nü This helps us to portray the specific organizational structure of your business in the R/3 System.\nü To portray your company structure, different Accounting, Logistics, and Human Resources organisation units are provided.\nü In the SAP R/3 system, organizational levels are structures that represent the legal or organizational views of a company. Defining organizational levels is an essential step in the project and is vital for all subsequent activities.\nü First analyse the structures and procedures in your company, and then match them to the SAP structures. As soon as your organisation units are ready, access should be locked.\nSD is integrated in the R/3 system in the following way:\nThe following is the Organizational structure from SD perspective:\nShipping Point Plant Credit Control Area Controlling Area Sales Area Dist Channel Sales Org Loading Point Division ü One client can have ‘n\u0026rsquo; number of company codes\nü One company code can have ‘n\u0026rsquo; number of sales organizations\nü One sales organisation is assigned to exactly one company code\nü A sales organisation is assigned to one or more plants\nü Each sales organisation has its own master data. Eg. Its own Customer and Material master data as well as condition records.\nü A sales organisation can have ‘n\u0026rsquo; number of distribution channels (you can vary master data relevant to sales such as customer master data, sales master data, prices, and surcharges/discounts for each sales organisation/distribution channel.\nü Sales area is a combination of sales organisation, distribution channel, and\nü division\nü Sales document, delivery document, and billing documents are always assigned to a sales area.\nü Every sales process always takes in a specific sales area.\nü A sales office can be assigned to more than one sales area\nü Sales groups are assigned to sales offices\nü A sales group consists of a certain number of sales persons\nü A sales person is assigned to a sales office and group in the sales employee master record\nü One sales organisation can sell the goods from several plants.\nü A plant can be assigned to different sales organizations at any one-time all of which can sell from the plant.\nü A sales organisation can also sell products supplied by a plant which is assigned to a different company code0inter-complany sales processing.\nü A broad product range can be divided into divisions. In sap-system, you can also define a division-specific sales structure.\nü You can make customer-specific agreements for each division.\nFollowing organizational elements are required for the SD transactions:\nü Client\nü Company\nü Company Code\nü Plant\nü Location\nü Storage Location\nü Sales Organisation\nü Distribution Channel\nü Division\nü Sales Area\nü Shipping Point\n2.1 Client\nThe client is a commercial organizational unit within R/3 system, with its own data, master records, and set of tables. From the business perspective, the client forms a corporate group.\n2.2 Company\nü A company is an organizational unit in Accounting which represents a business organisation according to the requirements of commercial law in a particular country.\nü You store basic data for each company in company definition\nü A company can consist of one or more company codes.\nü All company codes within a company must use the same transaction chart of accounts and the same fiscal year breakdown.\nü The company code currencies can be different.\nü A company has one local currency in which its transaction figures are recorded.\nIMG\nDefinition\nFinancial Accounting\nDefine Company\nNew Entries\nCompany (Ex: 0002, Description – Test Company)\n2.3 Company Code\nü The company code is the smallest organizational unit for which you have an independent accounting department.\nü Balance sheets, profit and loss statements required by law are created at company code level**.**\nFollowing is the path to define a company Code:\nIMG\nEnterprise Structure\nDefinition\nFinancial Accounting\nEdit, Copy, Delete, Check Company Code\nClick Edit, Copy, Delete, Check Company Codeto enter new company code details.\nSteps to create a new company code:\nCopy Company Code Click or F2 Enter From (Ex: US01) \u0026 To Company Code (Ex: 9999). Enter the currency. Save. 2.3.1 Fiscal Year Variant ü Fiscal year is a period of usually 12 months, for which the company produces financial statements and takes inventory.\nü A fiscal year consists of several posting periods and if necessary, special periods that can be posted to after a temporary year-end closing.\nü You define how your fiscal year is set up in the SAP System by creating a fiscal year variant at client level. Each company code is assigned a fiscal year variant.\nü Several company codes can use the same fiscal year variant. Following is the path to maintain a Fiscal Year Variant:\n2.3.2 Maintain Fiscal Year Variant IMG\n****Financial Accounting\nFinancial Accounting Global Settings\nFiscal Year\nMaintain Fiscal Year Variant\nClick New Entries to create a new Fiscal Year Variant or Use the Existing Variant (Ex: Z4).\nSelect Z4 and click period texts under dialogue structure 2.3.3 Assign Company Code to Fiscal Year Variant For every company code, you must specify which fiscal year variant is to be used.\nIMG\n****Financial Accounting\nFinancial Accounting Global Settings\nFiscal Year\nAssign Company Code to Fiscal Year Variant\nSteps to assign company code to a fiscal year variant:\nEnter fiscal year variant against company code Save 2.3.4 Posting Periods It is possible to specify which company codes are open independent of a company code. Thus, as many company codes as required can use the same variants for open company codes. You make the necessary settings to be able to manage identical posting periods in several company codes. The following is the path to define, open, close and assign variants to posting periods:\nIMG\n****Financial Accounting\nFinancial Accounting Global Settings\nDocument\nPosting Periods\n2.3.5 Define Variants for Open Posting Periods Steps to define variants for open posting periods:\nNew Entries Enter the Variant and Name (Ex: 9999 - Fiscal Year Variant 9999) Save. 2.3.6 Open and Close Posting Periods Steps to open and close posting periods:\nCopy the existing periods by selecting the required periods. Click button to copy. Rename the Variant (Ex: 9999). Save. 2.3.7 Assign Variants to Company Code Steps to assign variants to company code:\nEnter the Variant against the Company Code (Ex: 9999 Variant to 9999 Company Code) Save 2.3.8 Define Document Number Ranges A number range is a range of numbers that you can assign to business objects (or their sub-objects) of the same type. The following is the path to define a number range:\nIMG\n****Financial Accounting\nFinancial Accounting Global Settings\nDocument\nDocument Number Ranges\nDefine Document Number Ranges\nCheck whether the number ranges are transported to company code 9999\n2.3.9 Define Document Types A document type is a classification for documents that can be stored using SAP Archive Link.\nFor example, incoming invoices can be of the following document types:\nIncoming invoice without invoice check (FIIINVOICE)\nIncoming credit memo without invoice check (FIICREDIT)\nIMG\n****Financial Accounting\nFinancial Accounting Global Settings\nDocument\nDocument Header\nDefine Document Types\nEx:Document Type - SA\n2.3.10 Define Tolerance Groups for Employees Predefine various amount limits for your employees with which you determine:\nü the maximum document amount the employee is authorised to post\nü the maximum amount the employee can enter as a line item in a customer or vendor account\nü the maximum cash discount percentage the employee can grant in a line item\nü the maximum acceptable tolerance for payment differences for the employee.\nPayment differences are posted automatically within certain tolerance groups. This way the system can post the difference by correcting the cash discount or by posting to a separate expense or revenue account. Following is the path to define tolerance groups for employees.\nIMG\n****Financial Accounting\nFinancial Accounting Global Settings\nDocument\nLine Item\nDefine Tolerance Groups for Employees\nSteps to define Tolerance Group\n1 Click New Entries.\n2 Give the Tolerance Group and Company Code.\n2.3.11 Assign User/Tolerance Group IMG\n****Financial Accounting\nFinancial Accounting Global Settings\nDocument\nLine Item\nAssign User/Tolerance Group\nSteps to assign user/tolerance groups\nAgainst user enter tolerance group Ex: User name – ABUSR01 and Tolerance Group – 9999.\nSave 2.4 Plant\nA plant is an operating area or branch within a company. Following is the path to define a Plant\nIMG\nEnterprise Structure\nDefinition\nLogistics general\nDefine, Copy, Delete, Check plant\nSteps for defining a plant:\n1. Click Define, copy, delete, check plant\nClick Define Plant New Entries Enter the data for plant Save 2.4.1 Assign plant to Company Code IMG\nEnterprise Structure\nAssignment\nLogistics General\nAssign plant to company code\nSteps to assign Plant to Company Code:\nDelete the default assignments Select the company code (eg:9999) Click Assign Check plant Save 2.5 Location\nA location allows a plant to be classified according to spatial or situation criteria. Following is the path to define a Location.\nIMG\nEnterprise Structure\nDefinition\nLogistics General\nDefine Location\nSteps to define a Location\nClick New Entries Enter Plant, Location, Name Save 2.6 Division\nAn organizational unit based on responsibility for sales or profits from saleable materials or services. A Division is a product group that can be defined for a wide-ranging spectrum of products. You can make customer-specific agreements for every division, such as partial deliveries, pricing, and terms of payment. Within a division you can carry out statistical analyses or set up separate marketing. Divisions are utilized in SD but they are defined and maintained under the following path.\nIMG\nEnterprise Structure\nDefinition\nLogistics General\nDefine, copy, delete, check division\nSteps to define Division:\nClick Define, copy, delete, check division Click on Define division New Entries Enter the values for Division and Name Save 2.7 Sales Organisation\nSales Organisation is an organizational unit in Logistics that structures the company according to its sales requirements. A sales organisation is responsible for selling materials \u0026amp; services and to negotiate terms of sale. Following is the path to define a Sales Organisation.\nIMG\nEnterprise Structure\nDefinition\nSales and Distribution\nDefine, Copy, Delete, Check Sales Organisation\nSteps to define a Sales Organisation:\nClick Define Sales Organisation Click New Entries Enter the values for Sales Organisation, Name (eg: 9999, Sales Organisation 9999) Save 2.7.1 Assign Sales Organisation to Company Code\nIMG\n****Enterprise Structure\nAssignment\nSales and Distribution\nAssign Sales Organisation to Company Code\nSteps to assign sales organisation to company code\nSelect company code (eg:9999) Click Assign Check Sales Organisation Save 2.8 Distribution Channel\nA channel through which saleable materials or services reach customers. Distribution channels include wholesale, retail, and direct sales. You can assign a distribution channel to one or more sales organizations.\nFollowing is the path to define a Distribution Channel.\nIMG\nEnterprise Structure\nDefinition\nSales and Distribution\nDefine, Copy, Delete, Check Distribution Channel\nSteps to define a Distribution Channel\nClick Define Distribution Channel New Entries Enter the data for Distribution channel and Name Save 2.8.1 Assign Distribution Channel to Sales Organisation\nIMG\n****Enterprise Structure\nAssignment\nSales and Distribution\nAssign Distribution Channel to Sales Organisation\nSteps to assign distribution channel to sales organisation:\nClick Assign distribution channel to sales organisation Select Sales organisation Click assign Check Distribution Channel Save 2.8.2 Assign Division to Sales Organisation\nIMG\n****Enterprise Structure\nAssignment\nSales and Distribution\nAssign division to sales organisation\nSteps to assign division to sales organisation:\nSelect sales organisation (eg:9999) Click assign Check division Save 2.8.3 Set up Sales Area\nSales Area is a combination of sales organisation, distribution channel, and division.\nFollowing is the path to set up sales area\nIMG\nEnterprise Structure\nAssignment\nSales and Distribution\nSet up sales area\nSteps to set up sales area:\nSelect Sales Organisation Click Assign Check Distribution Channel Select Distribution Channel Check Division Save 2.8.4 Assign sales organisation - distribution channel – plant IMG\nEnterprise Structure\nAssignment\nSales and Distribution\nAssign sales organisation - distribution channel – plant\nSteps to assign sales organisation-distribution channel-plant:\nSelect Sales Organisation Click Assign Check Plant Save 2.9 Define Shipping Points\nShipping point is an organizational unit in Logistics that performs shipping processing.\nThe shipping point is the part of the company responsible for the type of shipping, the necessary shipping materials and the means of transport. Deliveries are always initiated from exactly one shipping point. A shipping point is assigned one or more plants and can be subdividing into several loading points.\n**Example:**Shipping points are a company mail depot or plant rail station.\nA loading point is a voluntary entry. It is merely a subdivision of a shipping point. A loading point is manually entered into the header data of the delivery.\nFollowing is the path to define shipping point.\nIMG\nEnterprise Structure\nDefinition Logistics Execution Define, copy, delete, check shipping point\nSteps to define shipping point:\nClick Define shipping point Click New Entries Enter Shipping point, Description Save 2.9.1 Assign Shipping point to plant IMG\nEnterprise Structure\nAssignment\nLogistics Execution\nAssign Shipping Point to plant\nSteps to assign shipping point to plant:\nSelect the plant Click Assign Check Shipping point Save 2.9.2 Shipping point and goods receiving point determination: Assign Shipping Point IMG\nLogistics Execution\nShipping\nBasic Shipping functions\nShipping point and goods receiving point determination\nAssign shipping points\n3 Master Data in Sales and Distribution\nCustomer Master\nMaterial Master\nCustomer material Info Record\nItem Proposals\nBOM\nCustomer Master Record\nData record containing all the information necessary for any contact with a certain customer, in particular for carrying out business transactions.\nThis information includes, for example, address data and bank data.\nThe basic customer master records we create are\nü Sold-to party record\nü Ship-to party record\nü Bill-to party record\nü Payer record\nOther important Customers master records are inter-company customers, one-time customer\nCustomer Master Data configuration includes:\nA/C groups Number ranges Assign number ranges Partner Determination 3.1.1 Creation of Customer Account Group In this step, you determine the account groups for customers. You can also define reference account groups for one-time accounts. You can use these to control the fields of the one-time account screen so that, for example, certain fields are displayed as required fields or are hidden.\nWhen creating a customer account, you must specify an account group. You can specify a reference account group under \u0026ldquo;Control\u0026rdquo; in the \u0026ldquo;General data\u0026rdquo; part of a one-time account\u0026rsquo;s master data. If you do not specify a reference account group, then, as previously, all fields of the one-time account screen are ready for input during document entry.\nYou use the account group to determine:\nü the interval for the account numbers\nü whether the number is assigned internally by the system or externally by the user (type of number assignment)\nü whether it is a one-time account\nü which fields are ready for input or must be filled when creating and changing master records (field status)\nü fields can be turn on and off by using the assigned account group.\nYou determine the account number interval and the type of number assignment using the number ranges.\nThe Account group defines which fields are available in the customer master records.\nA sold-to party needs 3 views\nü General data view\nü Company Code data view\nü Sales data view\nA ship-to party needs 2 views\nü General data view\nü Sales data view\nA bill-to party needs 3 views\nü General data view\nü Company Code data view\nü Sales data view\nA payer needs 2 views\nü General data view\nü Company code data view\nThe following is the path to create customer account group:\nIMG\nFinancial Accounting\nAccounts receivable and accounts payable\nCustomer Accounts\nMaster Data\nPreparations for creating Customer Master Data\nDefine Account Groups with Screen Layout\nSteps to create customer account group:\nClick New Entries Enter Account group number starting with the letter Z (SAP uses prefix Z for all upgrades in order to ensure it does not overwrite client-specific entries) Enter Name eg. Z100 – Sold-to party\nSet the field status of general data, company code data, sales data Eg: Steps to set the field status\nSelect General Data under Field Status Click Edit field status Select the field eg: Address under ‘select group' Click magnifying glass button Name 1 – You can make the filed ‘Name1' Suppress or Required entry or Optional entry or Display\nSave Like wise create account groups for ship-to party, bill-to party, payer and Turn the fields on/off as per the requirement\nZ200 – Ship-to party\nZ300 – Bill-to party\nZ400 – Payer\n3.1.2 Create Number Ranges for Customer Accounts To do this, specify the following under a two-character key (number range interval key)\nA number interval from which the account number for the customer accounts is to be selected\nü The type of number assignment (internal or external number assignment)\nü Allocate the number ranges to the account groups for customers.\nThe type of number assignment is especially important. The following are possible:\nü Transferring the numbers of your customers/vendors from an existing system or a pre-system (external assignment: The system enables the user to specify the number in the number range he or she wishes to use).\nü Creating the master records under new numbers assigned by the SAP system (internal assignment: the system assigns a number when creating the master records).\nThe following is the path to create number ranges for customer accounts:\nIMG\nFinancial Accounting\nAccounts receivable and accounts payable\nCustomer Accounts\nMaster Data\nPreparations for creating Customer Master Data\nCreate Number Ranges for Customer Accounts\nSteps to create number ranges for customer accounts:\nClick Click Enter the number range \u0026lt;\np align=\u0026ldquo;centre\u0026rdquo;\u0026gt;\n\u0026lt;\np align=\u0026ldquo;centre\u0026rdquo;\u0026gt;\nSave 3.1.3 Assign Number Ranges to Customer Account Groups Assign the number ranges created in the preceding step to the account groups for customers. You can use one number range for several account groups. Following is the path to assign number ranges to customer account groups.\nIMG\nFinancial Accounting\nAccounts receivable and accounts payable\nCustomer Accounts\nMaster Data\nPreparations for creating Customer Master Data\nAssign Number Ranges to Customer Account Groups\nSteps to assign number ranges to customer account groups:\nClick Assign Number Ranges to Customer Account Groups Enter the number range key against group and save 3.1.4 Partner Determination When creating a customer master record, the SAP System proposes the allowed partner functions to be maintained. According to the rules defined here, the partners are adopted from the customer master records of the sold-to parties into the sales and distribution documents.\nPartners such as the sold-to party, the bill-to party, and the payer are a necessary in the majority of document processing. Automatic partner determination happens in the sales document, delivery and billing document, sales activities, and the customer master record.\nDefine Incompleteness Procedures In an incompleteness procedure you group together the fields that are to be checked for completeness. If you have not entered data in one of the fields in the document, the document is incomplete. Depending on the status group you can block certain subsequent activities for the document.\nFor every field in the procedure you also have to define whether a warning message should be issued during processing if no data is entered in this field. This function does not exist in delivery processing. When you select the control field, it has no further consequences.\nFollowing is the path to define incompleteness procedures:\nIMG\nSales \u0026amp; Distribution\nBasic Functions\nLog of Incomplete Items\nDefine Incompleteness Procedures\nSteps to Define incompleteness procedures:\nSelect A – Sales Header Click Procedures Select 11 Click Fields Define Order Type\nThe sales document types represent the different business transactions in Sales and perform a central controlling function for the entire sales order process. Following is the path to define sales document type:\nIMG\nSales \u0026amp; Distribution\nSales\nSales Documents\nSales document Header\nDefine Sales Document Types\nSteps to define sales document type:\nClick New Entries (or) copy the existing std. order type (ex: select OR -std. order type, click copy as icon, give a name to order type ex.: ZOR) Enter the data Save Define Item Category The item categories that are contained in the standard SAP R/3 System together with the sales document types represent the usual business transactions.\nYou have the following options for defining your own item categories:\nCopy an existing item category and change it according to your requirements. Create a new item category. Following is the path to define item category:\nIMG\nSales and Distribution\nSales\nSales document\nSales document Item Define item categories\nSteps to define item categories:\nClick New Entries Enter the data Save ","permalink":"https://www.shafiq.in/fr/blog/sales-and-distribution-module-sap/","summary":"\u003ch1 id=\"sales--distribution\"\u003eSALES \u0026amp; DISTRIBUTION\u003c/h1\u003e\n\u003ch2 id=\"sd\"\u003e(SD)\u003c/h2\u003e\n\u003ch3 id=\"table-of-contents\"\u003eTable of Contents\u003c/h3\u003e\n\u003col\u003e\n\u003cli\u003eDefinition of Sales \u0026amp; Distribution. 2\u003c/li\u003e\n\u003cli\u003eEnterprise Structure. 3\n\u003col\u003e\n\u003cli\u003eClient 5\u003c/li\u003e\n\u003cli\u003eCompany. 5\u003c/li\u003e\n\u003cli\u003eCompany Code. 6\n\u003col\u003e\n\u003cli\u003eCreate a Fiscal Year Variant 7\u003c/li\u003e\n\u003cli\u003eMaintain Fiscal Year Variant 7\u003c/li\u003e\n\u003cli\u003eAssign Company Code to Fiscal Year Variant 8\u003c/li\u003e\n\u003cli\u003ePosting Periods. 9\u003c/li\u003e\n\u003cli\u003eDefine Variants for Open Posting Periods. 9\u003c/li\u003e\n\u003cli\u003eOpen and Close Posting Periods. 9\u003c/li\u003e\n\u003cli\u003eAssign Variants to Company Code. 10\u003c/li\u003e\n\u003cli\u003eDefine Document Number Ranges. 10\u003c/li\u003e\n\u003cli\u003eDefine Document Types. 11\u003c/li\u003e\n\u003cli\u003eDefine Tolerance Groups for Employees. 12\u003c/li\u003e\n\u003cli\u003eAssign User/Tolerance Group. 13\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/li\u003e\n\u003cli\u003ePlant 13\n\u003col\u003e\n\u003cli\u003eAssign plant to Company Code. 14\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/li\u003e\n\u003cli\u003eLocation. 14\u003c/li\u003e\n\u003cli\u003eDivision. 15\u003c/li\u003e\n\u003cli\u003eSales Organisation. 15\n\u003col\u003e\n\u003cli\u003eAssign Sales Organisation to Company Code. 16\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/li\u003e\n\u003cli\u003eDistribution Channel 16\n\u003col\u003e\n\u003cli\u003eAssign Distribution Channel to Sales Organisation. 17\u003c/li\u003e\n\u003cli\u003eSet up Sales Area. 18\u003c/li\u003e\n\u003cli\u003eAssign sales organisation - distribution channel – plant 19\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/li\u003e\n\u003cli\u003eDefine Shipping Points. 20\n\u003col\u003e\n\u003cli\u003eAssign Shipping point to plant 20\u003c/li\u003e\n\u003cli\u003eShipping point and goods receiving point determination:\n\u003cul\u003e\n\u003cli\u003eAssign Shipping Point\n3. Customer Master\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cul\u003e\n\u003cli\u003eCreation of Customer Account Group.\u003c/li\u003e\n\u003cli\u003eCreate Number Ranges for Customer Accounts.\u003c/li\u003e\n\u003cli\u003eAssign Number Ranges to Customer Account Groups.\u003c/li\u003e\n\u003cli\u003eDefine Incompleteness Procedures.\u003c/li\u003e\n\u003cli\u003eDefine Order Type.\u003c/li\u003e\n\u003cli\u003eDefine Item Category.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch4 id=\"definition-of-sales--distribution\"\u003eDefinition of Sales \u0026amp; Distribution\u003c/h4\u003e\n\u003cp\u003eFor the representation of your company structures in the SAP System, different organizational units are available for the areas of sales, shipping and billing.\nFirst analyse the structure and process organisation in your company and then compare them with the SAP structures.\nIn the standard version, different organizational elements are defined as examples. In general, these elements are not sufficient for individual demands. Extend the elements accordingly.\u003c/p\u003e","title":"Sales and Distribution module (SAP)"},{"content":" ","permalink":"https://www.shafiq.in/fr/blog/designer-blue-page-website-template/","summary":"\u003cimg src=\"/wp-content/uploads/2009/08/screenshot_hu_f7b7e86d8d59a469.png\" alt=\"Modèle de site web page bleue design\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e","title":"Designer Blue Page Website Template"},{"content":" IP job market job offer Management outflow page views promise sed ships tens \u0026mdash;Rejoindre une startup peut être un choix de carrière passionnant et gratifiant, mais il comporte aussi des risques et des défis. Il est essentiel de bien faire ses recherches et de comprendre ce que l\u0026rsquo;on accepte. Voici 10 questions que vous devriez vous poser avant d\u0026rsquo;accepter une offre d\u0026rsquo;emploi dans une startup. Combien d\u0026rsquo;argent avez-vous en banque ? Il s\u0026rsquo;agit d\u0026rsquo;une question simple qui nécessite une réponse claire. Vous devez savoir combien d\u0026rsquo;argent la startup a réellement en banque, et non pas combien elle espère lever ou emprunter. Une promesse d\u0026rsquo;argent n\u0026rsquo;est pas équivalente à de l\u0026rsquo;argent en banque. Si la startup manque d\u0026rsquo;argent, elle cessera son activité.\nCombien dépensez-vous par mois ? Cette question vous aidera à estimer combien de temps la startup peut survivre avec ses fonds actuels. Vous pouvez diviser la réponse à la question 1 par celle à la question 2 pour obtenir le nombre de mois de marge de sécurité (runway). Si la réponse à la question 2 dépend d\u0026rsquo;objectifs de chiffre d\u0026rsquo;affaires ou de réductions de coûts, soyez sceptique. Le chiffre d\u0026rsquo;affaires est difficile à prévoir, et les coûts sont difficiles à réduire.\nQuel était votre dernier prix d\u0026rsquo;évaluation ? L\u0026rsquo;évaluation est la valeur de la startup après le dernier tour de financement. Elle reflète combien les investisseurs pensent que la startup vaut. Si la startup a un chiffre d\u0026rsquo;affaires faible ou nul, et que son évaluation est supérieure à 10 millions de dollars, elle pourrait avoir des attentes irréalistes pour elle-même et ses investisseurs. Cela pourrait rendre plus difficile le levée de fonds supplémentaires ou la sortie à profit à l\u0026rsquo;avenir.\nQuel est votre avantage unique ? Cette question vous aidera à évaluer la proposition de valeur et la différenciation de la startup. Vous devez savoir ce que la startup peut faire que ses concurrents ne peuvent pas, et pourquoi les clients choisiraient cette entreprise plutôt qu\u0026rsquo;une autre. Une startup sans avantage clair, ou qui ne se distingue que par le prix, est vulnérable à la concurrence et à la marchandisation.\nQuels sont vos points faibles ? Cette question vous aidera à mesurer l\u0026rsquo;honnêteté et la conscience de soi de la direction de la startup. Vous devez savoir ce que les concurrentes peuvent faire que la startup ne peut pas, et quels défis ou menaces elle affronte. Une startup qui nie ou minimise ses points faibles, ou qui rejette la faute sur les autres, est déconnectée ou mensongère. Une startup qui reconnaît et traite ses faiblesses est réaliste et résiliente.\nQui sont vos investisseurs ? Cette question vous aidera à évaluer la crédibilité et la réputation des soutiens financiers de la startup. Vous devez savoir s\u0026rsquo;il y a des capitalistes du risque ou des investisseurs angéliques bien connus qui ont investi dans la startup. Cela pourrait indiquer qu\u0026rsquo;ils ont fait leurs vérifications et croient au potentiel de la startup. À l’inverse, vous pouvez aussi préférer une startup sans investisseurs extérieurs, qui autofinance sa croissance grâce à ses propres revenus. Cela pourrait indiquer que la startup est agile et rentable.\nQui sont vos membres du conseil ? Cette question vous aidera à comprendre la gouvernance et le contrôle de la startup. Vous devez savoir s’il y a des membres indépendants ou expérimentés du conseil qui peuvent apporter un accompagnement et une responsabilité à la direction. Faites attention aux conseils composés uniquement de fondateurs et de leurs amis ou proches. Vous avez besoin d’au moins un « adulte » au conseil qui peut remettre en question et soutenir la direction.\nAvez-vous déjà livré un produit ? Cette question vous aidera à évaluer le parcours et les compétences de l\u0026rsquo;équipe technique de la startup. Vous devez savoir si elle a déjà réussi à livrer un produit sur le marché, et non pas seulement écrit du code. Livrer un produit demande bien plus que des compétences en programmation : il faut planifier, tester, déboguer, documenter, déployer et maintenir le code. Une équipe qui n’a jamais livré de produit auparavant pourrait manquer de ces compétences ou sous-estimer leur importance.\nComment allez-vous promouvoir votre produit sans budget ? Cette question vous aidera à juger de la créativité et de l\u0026rsquo;ingéniosité de l\u0026rsquo;équipe marketing. Vous devez savoir comment ils prévoient d\u0026rsquo;attirer et de fidéliser les clients sans dépenser beaucoup d\u0026rsquo;argent en publicité ou en promotion. Une bonne réponse impliquerait de créer un produit exceptionnel qui se vend tout seul, d\u0026rsquo;utiliser le bouche-à-oreille et les réseaux sociaux, ou de trouver des canaux peu coûteux ou gratuits pour atteindre les clients potentiels.\nQu\u0026rsquo;est-ce qui vous inquiète le plus ? Cette question vous aidera à identifier les principaux défis et risques auxquels la startup est confrontée. Vous devez savoir ce qui tient la direction éveillée la nuit, et comment elle compte surmonter ces problèmes. Une mauvaise réponse serait « Rien, nous sommes invincibles » ou « Tout, nous sommes condamnés ». Une bonne réponse serait : « Nous nous inquiétons de choses comme la trésorerie, les ventes, l’ingénierie, le support et le recrutement. Nous espérons que vous allez nous rejoindre et nous aider à résoudre certains de ces problèmes. »\n","permalink":"https://www.shafiq.in/fr/blog/some-questions-to-ask-before-you-join-a-startup/","summary":"\u003cul\u003e\n\u003cli\u003eIP\u003c/li\u003e\n\u003cli\u003ejob market\u003c/li\u003e\n\u003cli\u003ejob offer\u003c/li\u003e\n\u003cli\u003eManagement\u003c/li\u003e\n\u003cli\u003eoutflow\u003c/li\u003e\n\u003cli\u003epage views\u003c/li\u003e\n\u003cli\u003epromise\u003c/li\u003e\n\u003cli\u003esed\u003c/li\u003e\n\u003cli\u003eships\u003c/li\u003e\n\u003cli\u003etens\n\u0026mdash;Rejoindre une startup peut être un choix de carrière passionnant et gratifiant, mais il comporte aussi des risques et des défis. Il est essentiel de bien faire ses recherches et de comprendre ce que l\u0026rsquo;on accepte. Voici 10 questions que vous devriez vous poser avant d\u0026rsquo;accepter une offre d\u0026rsquo;emploi dans une startup.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"combien-dargent-avez-vous-en-banque-\"\u003eCombien d\u0026rsquo;argent avez-vous en banque ?\u003c/h2\u003e\n\u003cp\u003eIl s\u0026rsquo;agit d\u0026rsquo;une question simple qui nécessite une réponse claire. Vous devez savoir combien d\u0026rsquo;argent la startup a réellement en banque, et non pas combien elle espère lever ou emprunter. Une promesse d\u0026rsquo;argent n\u0026rsquo;est pas équivalente à de l\u0026rsquo;argent en banque. Si la startup manque d\u0026rsquo;argent, elle cessera son activité.\u003c/p\u003e","title":"Some Questions to Ask Before You Join a Startup"},{"content":"L\u0026rsquo;économie évolue rapidement, et les développeurs doivent suivre les dernières tendances et compétences pour rester pertinents et compétitifs. Voici une liste de 9 compétences que tout développeur devrait maîtriser ou au moins connaître au cours des cinq prochaines années. Cette liste n\u0026rsquo;est pas exhaustive, et elle ne couvre pas chaque niche ou spécialité de l\u0026rsquo;industrie. Toutefois, pour la plupart des scénarios de développement courants, ces compétences vous donneront un avantage sur les autres et vous aideront à concevoir de meilleures solutions. Vous devriez viser à bien maîtriser au moins sept de ces compétences pour pouvoir les utiliser avec confiance sur le terrain et les démontrer lors d’un entretien.\nL’un des « grands trois » (.NET, Java, PHP) Ces trois systèmes de développement sont les plus utilisés et soutenus dans l’industrie. Ils ne disparaîtront pas de sitôt, vous devez donc connaître au moins l’un d’eux. Et connaître les langages de base (VB.NET, C#, Java ou PHP) ne suffit pas. Vous devez également maîtriser les frameworks et bibliothèques qui les accompagnent et qui étendent leurs fonctionnalités.\nApplications Internet riches (RIAs) Les RIAs sont des applications web offrant une expérience utilisateur riche et interactive, similaire aux applications de bureau. Elles gagnent en popularité et en puissance grâce à des technologies comme Flash, Flex, AIR, JavaFx, Silverlight et HTML 5. Ces technologies vous permettent de créer des applications web dynamiques et engageantes, pouvant fonctionner sur diverses plateformes et appareils. Apprendre à développer des RIAs vous fera vous démarquer de la foule et augmentera votre valeur en tant que développeur web.\nDéveloppement web Le développement web reste une compétence fondamentale pour tout développeur. Vous ne pouvez pas compter uniquement sur votre framework ou outil pour tout faire à votre place. Vous devez savoir travailler avec les technologies sous-jacentes à un niveau bas. Cela signifie maîtriser JavaScript, CSS et HTML, ainsi que comprendre les normes web, l’accessibilité, l’ergonomie et la sécurité. Le développement web évolue constamment, vous devez donc suivre les dernières tendances et bonnes pratiques.\nServices web Les services web sont une manière de communiquer et d’échanger des données entre différentes applications ou systèmes sur le web. Ils sont omniprésents et essentiels pour le développement moderne. Vous devez savoir consommer et créer des services web en utilisant différents protocoles (REST ou SOAP) et formats (JSON ou XML). Vous devez aussi savoir gérer des problèmes tels que l’authentification, l’autorisation, le chiffrement, le cache, et la gestion des erreurs.\nCompétences douces Les compétences douces sont les compétences non techniques qui vous permettent de travailler efficacement avec les autres et d’atteindre vos objectifs. Elles incluent la communication, la collaboration, la résolution de problèmes, la pensée critique, la créativité et le leadership. À mesure que l’informatique devient plus visible et intégrée aux autres fonctions commerciales, les développeurs doivent posséder de fortes compétences douces pour interagir avec divers intervenants et contribuer au succès des projets. Les développeurs qui manquent de compétences douces auront du mal à progresser dans leur carrière ou même à garder leur emploi.\nUn langage de programmation dynamique et/ou fonctionnel Les langages de programmation dynamiques et/ou fonctionnels sont des langages qui offrent des paradigmes et des fonctionnalités différents des langages impératifs ou orientés objet traditionnels. Des exemples incluent Ruby, Python, F# et Groovy. Ces langages peuvent vous aider à écrire un code plus concis, expressif et élégant. Ils peuvent aussi vous apprendre de nouvelles façons de penser les problèmes et leurs solutions. De nombreux grands développeurs recommandent d’apprendre au moins un langage dynamique ou fonctionnel pour élargir vos horizons et améliorer vos compétences.\nConnaissance du domaine La connaissance du domaine est la compréhension du problème spécifique ou du secteur dans lequel vous travaillez ou pour lequel vous développez. Elle vous aide à comprendre les exigences, les attentes et les défis de vos clients et utilisateurs. Elle vous aide aussi à proposer des solutions qui ajoutent de la valeur et ont du sens dans le contexte du domaine. Les développeurs qui possèdent une connaissance du domaine communiquent mieux avec leurs clients et intervenants, et livrent des solutions plus pertinentes et efficaces.\nHygiène du développement L’hygiène du développement est la pratique d’utiliser des outils et des techniques qui vous aident à organiser, gérer, tester, déboguer, documenter et déployer votre code de manière cohérente et fiable. Cela inclut l’utilisation de systèmes de contrôle de version, de systèmes de suivi des bogues, de cadres de test, d’outils d’analyse de code, d’outils de formatage de code, d’outils de documentation, d’outils de déploiement, etc. L’hygiène du développement vous aide à améliorer la qualité de votre code, réduire les erreurs et les bogues, collaborer plus aisément avec d’autres développeurs, et livrer vos solutions plus rapidement.\nDéveloppement mobile Le développement mobile est le développement d’applications qui s’exécutent sur des appareils mobiles tels que les smartphones ou les tablettes. C’est l’une des zones de développement les plus dynamiques et passionnantes aujourd’hui. Il existe différentes approches pour le développement mobile : des applications web optimisées pour les navigateurs mobiles ; des RIAs qui s’exécutent sur les plateformes mobiles ; ou des applications natives qui s’exécutent directement sur les appareils. Quelle que soit l’approche choisie, vous devez apprendre à concevoir et développer des applications qui sont conviviales, réactives, sécurisées et compatibles avec différents appareils et systèmes d’exploitation.\n","permalink":"https://www.shafiq.in/fr/blog/9-skills-developers-will-need-in-the-next-five-years/","summary":"\u003cp\u003eL\u0026rsquo;économie évolue rapidement, et les développeurs doivent suivre les dernières tendances et compétences pour rester pertinents et compétitifs. Voici une liste de 9 compétences que tout développeur devrait maîtriser ou au moins connaître au cours des cinq prochaines années. Cette liste n\u0026rsquo;est pas exhaustive, et elle ne couvre pas chaque niche ou spécialité de l\u0026rsquo;industrie. Toutefois, pour la plupart des scénarios de développement courants, ces compétences vous donneront un avantage sur les autres et vous aideront à concevoir de meilleures solutions. Vous devriez viser à bien maîtriser au moins sept de ces compétences pour pouvoir les utiliser avec confiance sur le terrain et les démontrer lors d’un entretien.\u003c/p\u003e","title":"9 skills developers will need in the next five years"},{"content":"J\u0026rsquo;ai eu un problème avec un menu déroulant JavaScript qui se superposait à une vidéo flash. Le menu apparaissait toujours derrière la vidéo flash, quelle que soit l\u0026rsquo;ordre z. J\u0026rsquo;ai résolu le problème en :\nAjoutant le paramètre \u0026lt;param name=\u0026quot;wmode\u0026quot; value=\u0026quot;transparent\u0026quot;\u0026gt; dans l\u0026rsquo;élément OBJECT. Ajoutant le paramètre wmode=\u0026quot;transparent\u0026quot; dans l\u0026rsquo;élément EMBED. Ces paramètres ont permis au menu d\u0026rsquo;afficher correctement au-dessus de la vidéo flash.\n","permalink":"https://www.shafiq.in/fr/blog/flash-z-order-always-on-top/","summary":"\u003cp\u003eJ\u0026rsquo;ai eu un problème avec un menu déroulant JavaScript qui se superposait à une vidéo flash. Le menu apparaissait toujours derrière la vidéo flash, quelle que soit l\u0026rsquo;ordre z. J\u0026rsquo;ai résolu le problème en :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAjoutant le paramètre \u003ccode\u003e\u0026lt;param name=\u0026quot;wmode\u0026quot; value=\u0026quot;transparent\u0026quot;\u0026gt;\u003c/code\u003e dans l\u0026rsquo;élément OBJECT.\u003c/li\u003e\n\u003cli\u003eAjoutant le paramètre \u003ccode\u003ewmode=\u0026quot;transparent\u0026quot;\u003c/code\u003e dans l\u0026rsquo;élément EMBED.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eCes paramètres ont permis au menu d\u0026rsquo;afficher correctement au-dessus de la vidéo flash.\u003c/p\u003e","title":"Flash z-order — always on top?"},{"content":"Pour optimiser vos mots-clés dans les URL, utilisez toujours un trait d\u0026rsquo;union (-) entre les mots dans vos liens web. Google considère les traits d\u0026rsquo;union comme des espaces, mais pas les traits de soulignement. Les barres obliques (/) sont également traitées comme des espaces, mais elles ne sont pas recommandées pour les URLs. Toutefois, vous pouvez utiliser des barres obliques pour séparer les mots-clés dans vos textes.\n","permalink":"https://www.shafiq.in/fr/blog/choose-your-titles-wisely-for-better-urls/","summary":"\u003cp\u003ePour optimiser vos mots-clés dans les URL, utilisez toujours un trait d\u0026rsquo;union (-) entre les mots dans vos liens web. Google considère les traits d\u0026rsquo;union comme des espaces, mais pas les traits de soulignement. Les barres obliques (/) sont également traitées comme des espaces, mais elles ne sont pas recommandées pour les URLs. Toutefois, vous pouvez utiliser des barres obliques pour séparer les mots-clés dans vos textes.\u003c/p\u003e","title":"Choose your titles wisely for better URLs"},{"content":"Goan à Birmingham au Royaume-Uni, introverti, apprend en faisant, aime la lecture, l\u0026rsquo;écriture et la liberté.\nMes préférences Magazines Anime Otaku Anime Neo Technologie Digit Chip Loisirs Reliure de livres Livres Genres Référence Développement personnel Humour Films Séries télévisées Musique Jeux Quake 3 Unreal Tournament Road Rash Need For Speed Sports Formule 1 Contribution Donne à Cancer Research UK, West Bromwich Achète souvent à l\u0026rsquo;Armée du Salut, Oldbury Politique Je m\u0026rsquo;intéresse aux sujets suivants liés à la politique :\nUnion Européenne Royaume-Uni Logiciel write-good linter Docker/Podman Obsidian Visual Studio Code Ollama llama.cpp Git Homebrew Waterfox Hugo Opencore Bazzite Linux OS Fedora Aurora Linux OS ","permalink":"https://www.shafiq.in/fr/docs/about-me/","summary":"\u003cp\u003eGoan à Birmingham au Royaume-Uni, introverti, apprend en faisant, aime la lecture, l\u0026rsquo;écriture et la liberté.\u003c/p\u003e\n\u003ch2 id=\"mes-préférences\"\u003eMes préférences\u003c/h2\u003e\n\u003ch3 id=\"magazines\"\u003eMagazines\u003c/h3\u003e\n\u003ch4 id=\"anime\"\u003eAnime\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eOtaku\u003c/li\u003e\n\u003cli\u003eAnime\u003c/li\u003e\n\u003cli\u003eNeo\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4 id=\"technologie\"\u003eTechnologie\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eDigit\u003c/li\u003e\n\u003cli\u003eChip\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"loisirs\"\u003eLoisirs\u003c/h3\u003e\n\u003ch4 id=\"reliure-de-livres\"\u003eReliure de livres\u003c/h4\u003e\n\u003ch3 id=\"livres\"\u003eLivres\u003c/h3\u003e\n\u003ch4 id=\"genres\"\u003eGenres\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRéférence\u003c/li\u003e\n\u003cli\u003eDéveloppement personnel\u003c/li\u003e\n\u003cli\u003eHumour\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"films\"\u003eFilms\u003c/h3\u003e\n\u003ch3 id=\"séries-télévisées\"\u003eSéries télévisées\u003c/h3\u003e\n\u003ch3 id=\"musique\"\u003eMusique\u003c/h3\u003e\n\u003ch3 id=\"jeux\"\u003eJeux\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eQuake 3\u003c/li\u003e\n\u003cli\u003eUnreal Tournament\u003c/li\u003e\n\u003cli\u003eRoad Rash\u003c/li\u003e\n\u003cli\u003eNeed For Speed\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"sports\"\u003eSports\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFormule 1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"contribution\"\u003eContribution\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDonne à Cancer Research UK, West Bromwich\u003c/li\u003e\n\u003cli\u003eAchète souvent à l\u0026rsquo;Armée du Salut, Oldbury\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3 id=\"politique\"\u003ePolitique\u003c/h3\u003e\n\u003cp\u003eJe m\u0026rsquo;intéresse aux sujets suivants liés à la politique :\u003c/p\u003e","title":"À propos de moi"},{"content":"Pour éviter les incohérences entre différents navigateurs, utilisez toujours le code CSS suivant, sauf si vous spécifiez une valeur différente pour le padding et la marge. Certains navigateurs ne définissent pas ces propriétés à zéro par défaut.\nhtml { padding: 0px; margin: 0px; } body { padding: 0px; margin: 0px; } ","permalink":"https://www.shafiq.in/fr/blog/css-browser-compatibility-improvement-tip/","summary":"\u003cp\u003ePour éviter les incohérences entre différents navigateurs, utilisez toujours le code CSS suivant, sauf si vous spécifiez une valeur différente pour le padding et la marge. Certains navigateurs ne définissent pas ces propriétés à zéro par défaut.\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-css\" data-lang=\"css\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003ehtml\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003epadding\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"kt\"\u003epx\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003emargin\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"kt\"\u003epx\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003ebody\u003c/span\u003e \u003cspan class=\"p\"\u003e{\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003epadding\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"kt\"\u003epx\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"k\"\u003emargin\u003c/span\u003e\u003cspan class=\"p\"\u003e:\u003c/span\u003e \u003cspan class=\"mi\"\u003e0\u003c/span\u003e\u003cspan class=\"kt\"\u003epx\u003c/span\u003e\u003cspan class=\"p\"\u003e;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"p\"\u003e}\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","title":"CSS Browser Compatibility Improvement Tip"},{"content":"jamais utiliser\nposition: absolute; left: 99px; c’est une petite astuce pratique pour positionner un élément, mais elle ne fonctionne jamais jamais.\n","permalink":"https://www.shafiq.in/fr/blog/css-fail/","summary":"\u003cp\u003ejamais utiliser\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" class=\"chroma\"\u003e\u003ccode class=\"language-css\" data-lang=\"css\"\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eposition\u003c/span\u003e\u003cspan class=\"o\"\u003e:\u003c/span\u003e \u003cspan class=\"nt\"\u003eabsolute\u003c/span\u003e\u003cspan class=\"o\"\u003e;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003cspan class=\"line\"\u003e\u003cspan class=\"cl\"\u003e\u003cspan class=\"nt\"\u003eleft\u003c/span\u003e\u003cspan class=\"o\"\u003e:\u003c/span\u003e \u003cspan class=\"nt\"\u003e99px\u003c/span\u003e\u003cspan class=\"o\"\u003e;\u003c/span\u003e  \n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003ec’est une petite astuce pratique pour positionner un élément, mais elle ne fonctionne jamais jamais.\u003c/p\u003e","title":"CSS fail"},{"content":" ","permalink":"https://www.shafiq.in/fr/blog/backdrop-for-udbhav-2010/","summary":"\u003cimg src=\"/wp-content/uploads/2009/03/udbhav2010_110030_hu_e15959b14044313.jpg\" alt=\"udbhav2010_110030\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e","title":"Backdrop for Udbhav 2010"},{"content":" ","permalink":"https://www.shafiq.in/fr/blog/book-cover-for-udbhav-2009-souvenir/","summary":"\u003cimg src=\"/wp-content/uploads/2009/03/udbhav_souvenir_book_cover10029_hu_3e4a6f9c3d0f4bcd.jpg\" alt=\"udbhav_souvenir_book_cover10029\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e","title":"Book Cover for Udbhav 2009 Souvenir"},{"content":" ","permalink":"https://www.shafiq.in/fr/blog/backdrop-for-udbhav-2009/","summary":"\u003cimg src=\"/wp-content/uploads/2009/03/backdrop1-copy10009_hu_a2654c69987e8b73.jpg\" alt=\"backdrop1-copy10009\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e","title":"Backdrop for Udbhav 2009"},{"content":" ","permalink":"https://www.shafiq.in/fr/blog/posters-for-udbhav-2009/","summary":"\u003cp\u003e\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2009/03/red10024_hu_afc40b368fa56668.jpg\" alt=\"red10024\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2009/03/udbhav_have_a_sip_shafiq_issani-copy10028_hu_8c25ef79048ee5.jpg\" alt=\"udbhav_have_a_sip_shafiq_alibhai-copy10028\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2009/03/havent_you_heard10013_hu_370abb11eeea920e.jpg\" alt=\"havent_you_heard10013\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2009/03/orange10023_hu_1a7acad72a9cbc7.jpg\" alt=\"orange10023\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\u003c/p\u003e","title":"Posters for Udbhav 2009"},{"content":" ","permalink":"https://www.shafiq.in/fr/blog/udbhav-2009-stickers/","summary":"\u003cp\u003e\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2009/03/stiker_brown1-copy10026_hu_88f1e914ab72aea6.jpg\" alt=\"stiker_brown1-copy10026\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2009/03/stiker_sanskrit1-copy10027_hu_2f7f0b058a829c8b.jpg\" alt=\"stiker_sanskrit1-copy10027\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\u003c/p\u003e","title":"Udbhav 2009 Stickers"},{"content":" ","permalink":"https://www.shafiq.in/fr/blog/participation-certificate-for-udbhav-2009/","summary":"\u003cimg src=\"/wp-content/uploads/2009/03/certi-4-copy10010_hu_ed7cffb767427e74.jpg\" alt=\"certi-4-copy10010\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e","title":"Participation Certificate for Udbhav 2009"},{"content":" ","permalink":"https://www.shafiq.in/fr/blog/mini-banners-for-udbhav-2009-events/","summary":"\u003cimg src=\"/wp-content/uploads/2009/03/sound_of_music10025_hu_79e1e5a57918a7df.jpg\" alt=\"sound_of_music10025\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2009/03/antakshari10008_hu_13afee7764d1a78a.jpg\" alt=\"antakshari10008\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2009/03/dance_rockers10012_hu_f8a1df04e6142ffe.jpg\" alt=\"dance_rockers10012\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2009/03/on_the_spot_events10022_hu_5de57ed2c15bdbfb.jpg\" alt=\"on_the_spot_events10022\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e","title":"Mini Banners for Udbhav 2009 Events"},{"content":" ","permalink":"https://www.shafiq.in/fr/blog/participation-certificate-for-respograph-2009/","summary":"\u003cimg src=\"/wp-content/uploads/2009/03/certificate-copy10011_hu_851ef20097f9d402.jpg\" alt=\"certificate-copy10011-respograph\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e","title":"Participation Certificate for Respograph 2009"},{"content":" ","permalink":"https://www.shafiq.in/fr/blog/udbhav-2009-flyers/","summary":"\u003cimg src=\"/wp-content/uploads/2009/03/index10014_hu_fb01884a75757034.jpg\" alt=\"affiche udbhav 2009\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e","title":"Udbhav 2009 Flyers"},{"content":" ","permalink":"https://www.shafiq.in/fr/blog/logo-samples-for-we-the-migrants/","summary":"\u003cimg src=\"/wp-content/uploads/2009/03/610007_hu_2dbaef53e3f56c58.jpg\" alt=\"610007\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2009/03/110002_hu_911352bbed2fb440.jpg\" alt=\"110002\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e","title":"Logo Samples for \"We The Migrants\""},{"content":" ","permalink":"https://www.shafiq.in/fr/blog/logos-for-computer-science-and-engineering-association/","summary":"\u003cimg src=\"/wp-content/uploads/2009/03/logo-logo_2010017_hu_f04e3f6783074450.jpg\" alt=\"logo-logo_2010017\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2009/03/1100011_hu_dfbd0712df1932a8.jpg\" alt=\"1100011\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2009/03/2100031_hu_4c3f6280289d9654.jpg\" alt=\"2100031\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2009/03/3100041_hu_1c389e2c973bcf7e.jpg\" alt=\"3100041\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2009/03/4100051_hu_9b37e5fe34bc4248.jpg\" alt=\"4100051\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2009/03/5100061_hu_2e36e3fe362bfa2.jpg\" alt=\"5100061\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2009/03/logo-logo_2110018_hu_f81aa0026bda8bda.jpg\" alt=\"logo-logo_2110018\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2009/03/logo-logo_2310019_hu_738ddfa10da35cb2.jpg\" alt=\"logo-logo_2310019\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2009/03/logo-logo_2410020_hu_fa68df2b5f3f479b.jpg\" alt=\"logo-logo_2410020\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2009/03/logo-logo_2810021_hu_e059fb566727883d.jpg\" alt=\"logo-logo_2810021\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2009/03/logo-logo_1010016_hu_993dc2dd24b47c79.jpg\" alt=\"logo-logo_1010016\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e","title":"Logos for Computer Science and Engineering Association"},{"content":" ","permalink":"https://www.shafiq.in/fr/blog/welcome-banner-for-freshers/","summary":"\u003cimg src=\"/wp-content/uploads/2009/03/welcome_freshers_shafiq_issani_080922_hu_d8882b97b6553549.jpg\" alt=\"welcome_freshers_shafiq_alibhai_080922\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e","title":"Welcome Banner For Freshers"},{"content":" ","permalink":"https://www.shafiq.in/fr/blog/clean-and-modern-black-on-wood-website-template-that-can-be-used-for-any-type-of-business-or-personal-portfolio-site/","summary":"\u003cimg src=\"/wp-content/uploads/2009/03/slide1_hu_a11200147c442ceb.jpg\" alt=\"slide1\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\u003c!-- Cliquez ici pour afficher le modèle de site web HTML.\n\nTéléchargez le modèle de site web HTML. 255 Ko\n\nTéléchargez le fichier PSD. 14,99 Mo\n\nTéléchargez le fichier PSD compressé. 5,08 Mo --\u003e","title":"clean and modern black on wood website template that can be used for any type of business or personal portfolio site"},{"content":" ","permalink":"https://www.shafiq.in/fr/blog/sample-design-for-the-astra-college-magazine/","summary":"\u003cimg src=\"/wp-content/uploads/2009/03/astra_magazine_2009_2_hu_52f2f01b751cfe87.jpg\" alt=\"astra_magazine_2009_2\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2009/03/astra_magazine_2009_3_hu_77ad3e4582d5377d.jpg\" alt=\"Astra Magazine 2009 3\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2009/03/astra_magazine_2009_4_hu_363f83e7f0ee827.jpg\" alt=\"Astra Magazine 2009 4\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e\n\n\n\n\n\n\n\n  \n  \u003cimg src=\"/wp-content/uploads/2009/03/astra_magazine_2009_11_hu_d27780bb8a64624a.jpg\" alt=\"Astra Magazine 2009 11\" loading=\"lazy\" decoding=\"async\" class=\"\" /\u003e","title":"sample design for the ASTRA College Magazine"},{"content":"","permalink":"https://www.shafiq.in/fr/blog/","summary":"","title":""},{"content":" Ansible Préface Who is this book for? Introduction What is the purpose of Configuration Management What is Ansible Who Should Use Ansible Why you should use Ansible for Windows Configuration Management When to use Ansible for Windows Configuration Management How to Install Ansible: Step-by-step Guide to Setup Ansible on your development machine Windows MacOS Linux Local Infrastructure Development: Ansible and Vagrant Prototyping and testing with local virtual machines Your first local server: Setting up Vagrant Using Ansible with Vagrant Your first Ansible playbook Cleaning Up Summary Understanding Ansible Architecture Overview Diagram Playbook Introduction: Structure, Tasks, Plays and Handlers Writing Your First Playbook for Windows: Step-by-step Guide with Examples Running Playbooks on Windows Hosts: Execution, Debugging, and Error Handling Modules Roles Managing Secrets and Credentials Summary The Basics of Ansible for Windows Configuration Management Configuring Windows Hosts for Ansible AWS, Azure Configuring Ansible Inventory for Windows Hosts: Static and Dynamic Inventories Configuring Ansible Command Using Ad-hoc Commands for Quick Tasks Summary Windows Modules in Ansible Ansible.Windows: Ansible collection for core Windows plugins Community.Windows: Ansible collection for community Windows plugins Chocolatey.Chocolatey: Manage packages using Chocolatey Troubleshooting Common Issues Debugging Ansible Playbook Execution Errors Troubleshooting WinRM and Connectivity Problems Implementing DevOps Practices Summary Testing in Ansible Community Engagement and Contribution Paths Appendix Glossary of Terms References and Useful Links All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.\nEvery effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor DeployView Publishing or its dealers and distributors, will be held liable for any damages caused or alleged to have been caused directly or indirectly by this book.\nDeployView Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, DeployView Publishing cannot guarantee the accuracy of this information.\nFirst published: 2024\nPublished by\nDeployView Publishing\nBirmingham, United Kingdom\nISBN 978-1-3999-8635-9\nDedicated to My wife and my daughter.\nAcknowledgement I\u0026rsquo;d like to express my gratitude to everyone who has shown me unconditional love and encouragement throughout my personal and professional life. Your support was crucial to the completion of this book. I appreciate your help with this endeavour and your continued interest in my career.\nAbout the Author Shafiq Alibhai is a developer who has worked in web development and devops for companies with anywhere between one to thousands of servers. He also manages many virtual servers for services offered by DeployView Limited and has been using Ansible to manage infrastructure since 2016.\nDisclaimer Any opinions or personal views I express in this book are my own and not those of Red Hat Inc.\nAnsible®, Red Hat® Ansible® Automation Platform, Red Hat®, JBoss®, OpenShift®, Fedora®, Hibernate®, CloudForms®, RHCA®, RHCE®, RHCSA®, Ceph®, Gluster®, the Red Hat® logo and “A” logo in a shaded circle are trademarks or registered trademarks of Red Hat, Inc. or its subsidiaries in the United States and other countries. https://www.redhat.com/en/about/brand/standards/trademarks\nLinux is a registered trademark of Linus Torvalds.\nCertified Kubernetes®, Certified Kubernetes Administrator®, Certified Kubernetes Application Developer®, Certified Kubernetes Security Specialist®, CloudEvents®, CloudNativeCon®, CNCF®, containerd®, etcd®, KubeCon®, Kubernetes®, LSB®, Open Container Initiative®, Prometheus®, The Linux Foundation®, Xen Project®, Cloud Native Computing Foundation logo, Kubernetes and Cloud Native Associate and Design (colour), OpenTelemetry and Design (black and white), Fluentd and Design of a Carrier Pigeon (colour - horizontal) are registered trademarks of The Linux Foundation in the United States and/or other countries. The marks CRI-O™, LF™, LinuxCon™, Linux Foundation™, OpenGitOps™, OpenTelemetry™, Open Container Format™, Open Virtualization Alliance™, Virtual Kubelet™, World of Open Source™ have registrations pending or trademarks in use of The Linux Foundation in the United States and/or other countries. The Linux Foundation logo. US Reg. no. 5166331 (The Linux Foundation geometric design (black and white)), The Linux Foundation logo. US Reg. no. 5166330 (The Linux Foundation geometric design (colour)), Certified Kubernetes logo. US Reg. no. 5734733, Community Data Licence Agreement logo. US Reg. no. 5852265, fluentd logo. US Reg. no. 4734498, Kubernetes logo. US Reg. no. 4816320, Kubernetes and Cloud Native Associate and Design (colour) US Reg. 6949718, SupplyChainSecurity and Design (black and white) US Reg. No. 6949717 are registered trademarks for the following logo marks in the United States and/or other countries. https://www.linuxfoundation.org/trademark-usage/\nUNIX® is a registered trademark of The Open Group.\nPython, PyCon, PyLadies, and Python logos (in several variants) are registered trademarks of the Python Software Foundation. https://www.python.org/psf/trademarks/\nAzure, Microsoft®, Microsoft® 365, Microsoft Teams, PowerPoint®, Outlook®, OneDrive®, SharePoint®, The Microsoft ® Store, Windows® and Windows® 10, Windows, Vista, XP, NT are registered trademarks or trademarks of Microsoft Corporation in the U.S.A. and other countries. https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks\nApple, Mac, Mac OS, Macintosh, Pages, and TrueType are either registered trademarks or trademarks of Apple Computer, Inc. in the United States and/or other countries. https://www.apple.com/legal/intellectual-property/trademark/appletmlist.html\nIBM is a registered trademark of International Business Machines Corporation. https://www.ibm.com/legal/us/en/copytrade.shtml\nCeleron, Celeron Inside, Centrino, Centrino logo, Core Inside, Intel Core, Intel Inside, Intel Inside logo, Itanium, Itanium Inside, Pentium, Pentium Inside, VTune, Xeon, and Xeon Inside are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. https://www.intel.com/content/www/us/en/legal/trademarks.html\nAmazon Web Services, AWS, the Powered by AWS logo, and any other AWS Marks used in this book are trademarks of Amazon.com, Inc. or its affiliates. This book is not endorsed by or affiliated with Amazon in any way https://aws.amazon.com/trademark-guidelines/\nGoogle, Chrome™ browser, Chromium™ open source project, Cloud TPU™ integrated circuit, GCP™ infrastructure platform, GKE™ software service, Gmail™ email service, Google App Engine™ platform, Google Cloud Platform™ service, Google Cloud Storage™ service, Google Cloud™ enterprise services, Google Compute Engine™ service, Google Container Engine™ container management system, Google Dashboard™ interface, Google Photos™ photo storage and organising platform, Google™ search or search engine, Go™ programming language, Kubeflow™ open-source machine learning platform, Optimised Chip™ processor chip, SPDY™ protocol, YouTube™ video community, are trademarks of Google LLC and this book is not endorsed by or affiliated with Google in any way. https://about.google/brand-resource-center/\nHashiCorp®, Vagrant, Packer, Terraform, HashiCorp products, name \u0026amp; logo are trademarks of The HashiCorp, Inc. https://www.hashicorp.com/trademark-policy\nAll other trademarks are the property of their respective owners.\nPreface tbc\nWho is this book for? tbc\nDevelopment Environment The code provided in this book is compatible with any text editor or integrated development environment (IDE). An IDE is a software tool that offers comprehensive features for software development, such as code editing, debugging, compilation, and project management.\nThe base environment for reproducing the code examples of this book:\nA text editor: graphical (VS Code, Atom, Geany, etc.) or terminal (VIM, Emacs, Nano, Pico, etc.). A workstation with either the ansible or ansible-core installed packages. We recommend using Visual Studio Code as the preferred IDE, which can be freely downloaded at https://code.visualstudio.com.\nConventions Used in the Book Throughout the book, we encounter numerous examples and terminal commands. The Ansible language primarily utilizes YAML and INI formats for syntax. When not specified in the text, assume the file format is YAML. The code adheres to the latest YAML specification. YAML, known for its simplicity, readability, and broad compatibility with programming languages, allows for a concise representation of complex data structures. It is widely used for configuration files and data exchange, similar to JSON but with Python-style indentation and a more compact format for lists and dictionary statements.\nThe INI format is frequently used for inventory and the Ansible configuration file. It is a straightforward configuration file format utilizing key-value pairs and sections for storing settings and preferences in a human-readable manner.\nMany terminal commands are standard Linux commands, indicated inline (e.g., ansible [command]) or in a code block (with or without line numbers). For instance:\n$ echo Hello World\nThe provided terminal commands follow POSIX conventions and are compatible with Unix-like systems, including Linux, macOS, and BSD. Each command assumes usage by a standard user account when prefixed with the $ (dollar) symbol or by the root user when prefixed with the # (number sign) symbol.\nEach Ansible resource (playbook, role, plugin, and collection) adheres to the latest Ansible best practices, validated with the latest release of the Ansible Linter.\nHowever, it’s worth noting that specific code snippets intentionally diverge from best practices to reproduce specific behaviours or use cases accurately. This ensures a comprehensive understanding of Ansible, encompassing ideal techniques and real-world scenarios.\nCode Bundle and Coloured Images Please follow the link to download the\nCode Bundle and the Coloured Images of the book: github.com/deployview/Ansible-for-Windows (no longer available)\nThe code bundle for the book is also hosted on GitHub at github.com/deployview/Ansible-for-Windows (no longer available). In case there\u0026rsquo;s an update to the code, it will be updated on the existing GitHub repository. We have code bundles from our rich catalogue of books and videos available at https://github.com/deployview. Check them out!\nPlease help improve this book! We take immense pride in our work at DeployView Publishing and follow best practices to ensure the accuracy of our content to provide with an indulging reading experience to our subscribers. Our readers are our mirrors, and we use their inputs to reflect and improve upon human errors, if any, that may have occurred during the publishing processes involved. To let us maintain the quality and help us reach out to any readers who might be having difficulties due to any unforeseen errors, please write to us at : errata@deployview.com Your support, suggestions and feedbacks are highly appreciated by us.\nNew revisions of this book are published on a regular basis (see current book publication stats below). If you think a particular section needs improvement or find something missing, please post an issue in the Ansible for Windows issue queue (on GitHub) or contact me via Twitter (@deployview). All known issues with Ansible for Windows will be aggregated on the book’s online Errata page. Current Published Book Version Information • Current book version: 1.0 • Current Ansible version as of last publication: 9.6.0 (core 2.16.7) • Current Date as of last publication: June 17, 2024\nPiracy If you come across any illegal copies of our works in any form on the internet, we would be grateful if you would provide us with the location address or website name. Please contact us at business@deployview.com with a link to the material.\nReviews Please leave a review. Once you have read and used this book, why not leave a review on the site that you purchased it from? Potential readers can then see and use your unbiased opinion to make purchase decisions. We at DeployView Publishing can understand what you think about our products, and our authors can see your feedback on their book. Thank you!\nJoin our book’s Discord space Join the book’s Discord Workspace for Latest updates, Offers, Tech happenings around the world, New Release and Sessions with the Authors:\ndiscord.deployview.com (no longer available)\nIntroduction \u0026ldquo;Ansible for Windows: A Comprehensive Guide to Windows Configuration Management Using Ansible\u0026rdquo; is intended for readers who want to leverage the power of Ansible in their day-to-day IT tasks, particularly with regard to managing Windows environments. The book will delve into various aspects of using Ansible as a solution for configuration management on Windows, covering topics such as installation, setup, and usage, as well as advanced features and best practices.\nBy the end of this book, you will be equipped with all the necessary skills and knowledge required to manage your Windows infrastructure using Ansible. Whether you are a system administrator, developer, or simply someone looking for ways to improve their IT processes, this comprehensive guide is designed to meet your needs.\nWhat is the purpose of Configuration Management Define what a \u0026ldquo;push\u0026rdquo; model means in configuration management tbc.\nWhat is Ansible Ansible is an open-source automation tool developed by Red Hat, which focuses on configuration management, application deployment, and intricate IT tasks orchestration. It was created in 2013 by Michael DeHaan. It provides a simple, agentless, and idempotent approach to infrastructure management, allowing users to automate tasks such as application deployment, system configuration, and orchestration of complex workflows. With its intuitive design and powerful capabilities, Ansible has become one of the most popular tools in modern IT environments for Windows Configuration Management.\nCore Principles of Ansible Ansible operates based on several core principles that distinguish it from other automation tools:\nAgentless Architecture Unlike many other configuration management tools, Ansible does not require any software agents to be installed on the managed nodes. This agentless architecture is achieved by using standard SSH (Secure Shell) or WinRM (Windows Remote Management) for communication with the target machines. The agentless nature of Ansible simplifies setup and maintenance, reduces overhead, and enhances security by minimising the attack surface.\nDeclarative Language Ansible uses a declarative language called YAML (Yet Another Markup Language) to define system configurations and automation tasks. In a declarative approach, the user specifies the desired state of the system, and Ansible takes care of executing the necessary steps to achieve that state. This contrasts with imperative programming, where the user would need to explicitly define each step required to reach the desired state.\nIdempotency Ansible ensures idempotency, meaning that applying the same set of configurations multiple times will not produce unintended side effects. Each operation is designed to bring the system to the desired state without causing disruptions if the state is already achieved. This feature is crucial for maintaining consistency and reliability in large-scale environments.\nHuman Readability One of the key strengths of Ansible is its emphasis on human readability. Playbooks, which are collections of tasks written in YAML, are designed to be easily understood by both technical and non-technical users. This readability facilitates collaboration, as team members can quickly review and understand the automation scripts without needing to learn a complex programming language.\nExtensibility Ansible is highly extensible through the use of modules and plugins. Modules are discrete units of code that perform specific tasks, such as managing services, handling files, or interacting with APIs. Plugins extend Ansible\u0026rsquo;s functionality by allowing users to add custom logic, enhance inventory management, or integrate with external systems. This extensibility ensures that Ansible can adapt to a wide range of use cases and environments.\nAnsible Components To understand how Ansible works, it is essential to familiarise oneself with its key components:\nControl Node The control node is the machine where Ansible is installed and from which automation tasks are executed. This node contains the Ansible command-line tools, modules, and playbooks. The control node orchestrates the execution of tasks on the managed nodes, but it does not require any agents to be installed on those nodes.\nManaged Nodes Managed nodes are the target machines that Ansible manages. These nodes can be physical servers, virtual machines, or cloud instances. Ansible communicates with managed nodes using SSH for Unix-based systems or WinRM for Windows systems. The managed nodes do not require any special software other than standard remote access tools.\nInventory The inventory is a file or a dynamic source that lists the managed nodes and their grouping. The inventory file is written in a simple text format and can be static or dynamic. It allows users to organise nodes into groups, assign variables, and define host-specific configurations. Dynamic inventories are generated by scripts or external sources and are particularly useful for environments with frequently changing infrastructure.\nPlaybooks Playbooks are the heart of Ansible automation. Written in YAML, playbooks define a series of tasks that describe the desired state of the managed nodes. Each playbook consists of one or more plays, and each play targets a specific group of hosts. Tasks within a play are executed sequentially, ensuring that the system configuration progresses in a controlled manner.\nModules Modules are the building blocks of Ansible tasks. Each module performs a specific function, such as managing packages, services, files, or users. Ansible includes a wide range of built-in modules, and users can also create custom modules to extend functionality. Modules are executed on the managed nodes and return information about the task\u0026rsquo;s outcome, allowing Ansible to make decisions based on the results.\nRoles Roles are a way to organise playbooks and reusable sets of tasks. A role is a collection of tasks, variables, templates, and other components that can be easily shared and reused across different playbooks. By using roles, users can modularise their configurations, making them more maintainable and scalable.\nVariables Variables in Ansible are used to store dynamic values that can be referenced within playbooks, tasks, and templates. They allow users to customise configurations based on different environments, hosts, or other conditions. Variables can be defined in the inventory, playbooks, or external files, and they provide a flexible way to manage complex configurations.\nTemplates Templates in Ansible are files that contain placeholders for variables and are processed to generate dynamic content. Templates are written in Jinja2, a powerful templating engine for Python. They are commonly used to generate configuration files, scripts, and other text-based content that needs to be customised based on the variables defined in the playbooks.\nAnsible\u0026rsquo;s Approach to Windows Configuration Management Ansible\u0026rsquo;s support for Windows systems has evolved significantly, making it a powerful tool for managing Windows environments. Although initially designed for Unix-based systems, Ansible\u0026rsquo;s modular architecture and extensibility have enabled seamless integration with Windows.\nWinRM for Communication Ansible uses WinRM to communicate with Windows managed nodes. WinRM is a Microsoft technology that allows for remote management and automation of Windows systems using web services. By leveraging WinRM, Ansible can execute tasks on Windows nodes without the need for additional agents, maintaining its agentless architecture.\nWindows Modules Ansible includes a comprehensive set of modules specifically designed for managing Windows systems. These modules cover a wide range of tasks, including managing services, packages, users, groups, registry settings, and more. Some key Windows modules include:\nwin_feature: Manages Windows features and roles. win_service: Manages Windows services. win_package: Manages Windows packages using the built-in package management tools. win_user: Manages Windows user accounts. win_group: Manages Windows groups. win_regedit: Manages Windows registry settings. These modules provide the functionality needed to automate the configuration and management of Windows systems effectively.\nPowerShell Integration PowerShell is a powerful scripting language and automation framework for Windows. Ansible leverages PowerShell to execute commands and scripts on Windows managed nodes. By integrating with PowerShell, Ansible can take advantage of the extensive capabilities and libraries available in the Windows ecosystem. The win_shell and win_command modules allow users to run arbitrary PowerShell commands and scripts as part of their automation workflows.\nHandling Windows-specific Challenges Managing Windows systems presents unique challenges, such as dealing with different authentication mechanisms, managing registry settings, and handling the intricacies of Windows services and features. Ansible addresses these challenges through its dedicated Windows modules and features. For example, the win_credssp module allows for secure authentication using the Credential Security Support Provider (CredSSP) protocol, while the win_reboot module ensures proper handling of system reboots during automation tasks.\nUse Cases for Ansible Ansible\u0026rsquo;s versatility makes it suitable for a wide range of use cases in IT automation and configuration management. Here are some common scenarios where Ansible excels:\nConfiguration Management Ansible simplifies configuration management by providing a consistent and repeatable way to define and enforce system configurations. Whether managing Linux or Windows systems, Ansible ensures that configurations are applied uniformly across all managed nodes. This capability is crucial for maintaining compliance, reducing configuration drift, and ensuring that systems are configured according to organisational standards.\nApplication Deployment Deploying applications across multiple environments can be complex and error-prone. Ansible streamlines application deployment by automating the entire process, from setting up the infrastructure to installing and configuring the application. With Ansible, users can define the desired state of the application and its dependencies, ensuring that deployments are consistent, repeatable, and scalable.\nContinuous Integration and Continuous Deployment (CI/CD) Ansible plays a vital role in CI/CD pipelines by automating the steps involved in building, testing, and deploying software. By integrating with popular CI/CD tools such as Jenkins, GitLab CI, and GitHub Actions, Ansible enables seamless automation of the entire software delivery lifecycle. This integration helps teams achieve faster and more reliable deployments, reducing the time to market for new features and updates.\nCloud Provisioning With the increasing adoption of cloud services, provisioning and managing cloud infrastructure has become a critical task for IT teams. Ansible provides modules for interacting with major cloud providers such as AWS, Azure, and Google Cloud. These modules enable users to automate the creation, configuration, and management of cloud resources, making it easier to scale infrastructure, manage costs, and ensure consistency across cloud environments.\nSecurity and Compliance Ensuring the security and compliance of IT systems is a top priority for organisations. Ansible helps achieve this by automating security-related tasks such as patch management, user and access control, and configuration audits. By defining security policies as code, organisations can enforce security standards consistently across all systems and quickly respond to emerging threats.\nNetwork Automation Ansible extends its automation capabilities to network devices, allowing IT teams to manage network configurations\n, deploy changes, and ensure compliance. Network modules support a wide range of devices from different vendors, enabling users to automate tasks such as configuring interfaces, managing VLANs, and applying security policies. Network automation with Ansible reduces manual intervention, minimises configuration errors, and enhances network reliability.\nSummary Ansible is a powerful and versatile automation tool that has become an essential part of the modern IT landscape. Its simplicity, agentless architecture, and extensive feature set make it an ideal choice for configuration management, application deployment, and a wide range of automation tasks. With dedicated support for Windows systems and a growing ecosystem of modules and plugins, Ansible provides the capabilities needed to manage complex and diverse environments effectively.\nOrganisations that adopt Ansible can expect to achieve increased efficiency, improved collaboration, enhanced consistency, and significant cost savings. As IT environments continue to grow in complexity, the need for reliable and scalable automation solutions like Ansible will only become more critical. By leveraging Ansible\u0026rsquo;s strengths and embracing automation, organisations can stay ahead in the competitive landscape and drive innovation in their IT operations.\nIn the following chapters, we will delve deeper into how Ansible can be used for Windows configuration management, exploring advanced topics, best practices, and real-world examples to help you master the art of automating Windows environments with Ansible.\nWho Should Use Ansible Ansible is a versatile tool that can be used by a wide range of IT professionals and organizations looking to streamline their IT operations. Whether you are a system administrator, developer, or even a non-technical user looking for ways to simplify your IT tasks, Ansible offers a suitable solution. Here are some of the key groups who can benefit from using Ansible:\nSystem Administrators: System administrators are responsible for managing and maintaining IT infrastructure, including servers, networks, and workstations. Ansible can help automate tasks such as software installation, configuration management, and patch management, freeing up time for more strategic initiatives.\nDevOps Professionals: DevOps professionals work to bridge the gap between development and operations teams by promoting collaboration, communication, and continuous delivery of applications. Ansible\u0026rsquo;s ability to automate the entire software development lifecycle makes it an ideal choice for DevOps practitioners.\nDevelopers: Developers can use Ansible to automate their development processes, including application deployment, testing, and monitoring. This not only speeds up the delivery of applications but also helps ensure consistency and reliability across different environments.\nInfrastructure Architects: Infrastructure architects are responsible for designing and implementing scalable and resilient IT infrastructures. Ansible\u0026rsquo;s flexibility and ability to manage both physical and virtual infrastructure makes it an attractive choice for these professionals.\nSecurity Professionals: Security professionals can use Ansible to automate security tasks such as vulnerability scanning, patch management, and compliance auditing. This helps ensure that systems are kept up-to-date and secure against potential threats.\nCloud Architects: Cloud architects designing and implementing cloud-based solutions can use Ansible to manage infrastructure as code, ensuring consistency and repeatability across on-premises and cloud environments. This approach simplifies the migration of applications and services to public or private clouds, reducing costs and improving scalability.\nNetwork Engineers: Network engineers responsible for managing complex network infrastructures can utilise Ansible to automate configuration management, monitoring, and troubleshooting tasks. By streamlining these processes, network engineers can minimize downtime and ensure optimal performance.\nManaged Services Providers (MSPs): MSPs offer IT managed services to businesses of all sizes. Ansible can help these providers streamline their service delivery process by automating routine tasks such as software updates, backups, and security configuration.\nSmall and Medium-sized Enterprises (SMEs): SMEs often have limited IT resources and need cost-effective solutions to manage their infrastructure. Ansible\u0026rsquo;s simplicity and ease of use make it an ideal choice for these organizations.\nGovernment Agencies: Government agencies often have complex IT infrastructures that require stringent security measures. Ansible\u0026rsquo;s ability to automate compliance audits and vulnerability scans makes it an attractive choice for these organizations.\nSummary Ansible is a valuable tool for individuals and organizations across various industries. Its simplicity, powerful features, and ease of use make it an ideal choice for managing your IT infrastructure with minimal effort. Whether you are a system administrator, developer, or non-technical user, this book will equip you with the skills necessary to harness Ansible\u0026rsquo;s full potential in Windows configuration management.\nWhy you should use Ansible for Windows Configuration Management Configuration management is a vital aspect of modern IT infrastructure. It involves managing configurations, ensuring consistency across environments, and maintaining version control for the same. This process helps organizations reduce manual errors, save time, and improve overall efficiency. Ansible offers a comprehensive solution for Windows configuration management by allowing users to automate tasks related to software installation, configuration changes, updates, and more. Following are some benefits realised by using Ansible for configuration management:\nSimple Syntax and Easy Learning Curve Ansible\u0026rsquo;s syntax is simple and easy to learn, with a YAML-based playbook format. This makes it accessible for both experienced sysadmins and newcomers to automation. With just a few lines of code, you can create powerful scripts that automate complex tasks in your environments.\nIncreased Efficiency By automating repetitive and time-consuming tasks, Ansible frees up IT teams to focus on more strategic initiatives. This increased efficiency leads to faster deployments, reduced downtime, and quicker resolution of issues. Automation also minimises human errors, ensuring that tasks are executed consistently and accurately.\nImproved Collaboration Ansible\u0026rsquo;s human-readable playbooks facilitate collaboration between different teams, including developers, operations, and security. Playbooks can serve as a common language that all stakeholders understand, enabling better communication and alignment on configuration and deployment processes. This collaborative approach helps break down silos and promotes a culture of shared responsibility.\nEnhanced Consistency Consistency is crucial for maintaining stable and reliable IT environments. Ansible ensures that configurations are applied uniformly across all managed nodes, reducing the risk of configuration drift and inconsistencies. This consistency extends to deployments, where applications and services are deployed in the same manner across different environments, leading to predictable outcomes.\nScalability Ansible\u0026rsquo;s agentless architecture and modular design make it highly scalable. Organisations can manage thousands of nodes with a single Ansible control node, leveraging dynamic inventories and roles to handle complex and large-scale environments. This scalability ensures that Ansible can grow alongside the organisation\u0026rsquo;s infrastructure and automation needs.\nFlexibility Ansible\u0026rsquo;s flexibility allows it to adapt to a wide range of use cases and environments. Whether managing on-premises data centres, cloud infrastructure, or hybrid environments, Ansible provides the tools and modules needed to automate tasks effectively. Its extensibility through custom modules and plugins ensures that it can meet the unique requirements of any organisation.\nCost Savings By automating manual tasks and reducing the need for human intervention, Ansible helps organisations save on operational costs. Automation also reduces the risk of costly errors and downtime, contributing to overall cost savings. Additionally, Ansible is an open-source solution, which means it is free to use and distribute. This makes it a cost-effective choice for organizations of all sizes looking to automate their IT infrastructure management processes without breaking the bank.\nIdempotence Ansible ensures that tasks are executed in a consistent manner, regardless of whether they are run once or multiple times. This ensures that your infrastructure remains stable and reliable over time.\nIntegration with Other Tools Ansible supports various Windows versions, including Windows 7, 8, 10, Server 2003, 2008, 2012, 2016, and 2019. Ansible integrates seamlessly with other tools and technologies commonly used in IT environments, such as Git, Jenkins, Docker, etc. This allows you to create end-to-end automation workflows that span across multiple platforms and services, providing a unified solution for managing your entire IT infrastructure.\nCommunity Support and Continuous Development Ansible has a large and active community of users and developers who contribute to the project\u0026rsquo;s continuous development. This ensures that the platform remains up-to-date with the latest technologies and standards, providing you with the best possible tools for managing your Windows environment.\nCross-platform Support Ansible supports multiple operating systems, including Windows, Linux, macOS, and more. This allows administrators to manage their entire IT infrastructure from a single platform, reducing the need for separate tools and processes for different platforms.\nComprehensive Module Library Ansible provides a vast library of pre-built modules that can be used to automate various tasks in your Windows environment. These modules cover a wide range of functionalities, such as software installation, configuration changes, user management, and more. With this extensive module library, you can quickly and easily automate complex processes without writing custom scripts from scratch.\nSummary Ansible offers a powerful and versatile solution for Windows configuration management. Its agentless architecture, simple syntax, cross-platform support, comprehensive module library, integration capabilities, and community support make it an ideal choice for managing your IT infrastructure. By automating repetitive tasks and ensuring consistency across environments, Ansible can help you save time, reduce errors, and improve overall efficiency in your Windows environment. In the following chapters, we will dive deeper into using Ansible for Windows configuration management, exploring various modules, playbooks, and best practices to get the most out of this powerful automation platform.\nWhen to use Ansible for Windows Configuration Management The Need for Windows Configuration Management Traditionally, IT administrators have used tools like Group Policy, PowerShell, or System Centre Configuration Manager (SCCM) to manage configurations on Windows systems. However, as organizations adopt a more agile approach to IT infrastructure management, they require a more flexible and scalable solution that can automate repetitive tasks and streamline the configuration process across different platforms.\nThis is where Ansible comes into play. It offers a unified approach to managing configurations on both Windows and Linux systems, enabling organizations to manage their entire IT infrastructure using a single tool.\nWhile Ansible is a powerful tool for managing configurations on both Windows and Linux systems, there are certain scenarios where it may be particularly beneficial. These include:\nAutomating repetitive tasks: If your organisation performs routine configuration changes or deployments, using Ansible can help automate these processes and reduce manual effort. Managing complex environments: In large-scale deployments with multiple systems and applications, Ansible\u0026rsquo;s ability to manage configurations consistently across different platforms can be invaluable. Ensuring consistency: If maintaining consistency across your IT infrastructure is crucial, Ansible\u0026rsquo;s support for cross-platform configuration management can help ensure that all systems are configured identically. Scaling infrastructure: As your organisation grows and adds new systems or applications, using Ansible can help streamline the configuration process and enable you to scale your infrastructure efficiently. Improving security: If security is a top priority for your organisation, Ansible\u0026rsquo;s use of secure communication protocols like SSH or WinRM can help ensure that configurations are applied securely. Using Ansible for Windows Configuration Management offers numerous benefits, including reduced complexity, increased efficiency, improved scalability, and cost savings. By leveraging Ansible in the right scenarios, you can transform your IT infrastructure management process and take advantage of a unified, flexible, and scalable solution that supports both Windows and Linux systems.\nComparison of Ansible with Other Tools for Windows Configuration Management Ansible is not the only tool available for Windows Configuration Management. In this section, we will explore some popular alternatives to Ansible and compare their features and capabilities in managing Windows environments:\nMicrosoft System Centre Configuration Manager (SCCM) Microsoft System Centre Configuration Manager (SCCM), formerly known as Systems Management Server (SMS), is a comprehensive platform for Windows Configuration Management developed by Microsoft itself. It offers a wide range of features, including software deployment, patch management, hardware inventory, and user-based policies. SCCM can also integrate with other Microsoft products like Intune and Azure to provide a unified approach to managing Windows systems.\nSCCM is an excellent choice for organizations that heavily rely on the Microsoft ecosystem, as it offers deep integration with various Microsoft tools and services. However, its complexity and the need for a dedicated server infrastructure may make it less appealing for smaller organizations or those looking for a more lightweight solution.\nGroup Policy Group Policy is an essential component of Windows Server that provides centralized management of configuration settings and security policies for users and computers within a domain. It allows administrators to define and enforce specific settings, such as software installations, user preferences, and security restrictions, through the use of Group Policy Objects (GPOs).\nGroup Policy offers a straightforward way to manage Windows systems without the need for additional third-party tools. However, its scope is limited to managing configurations within Active Directory domains, which may not be suitable for organizations with a heterogeneous infrastructure or those requiring more advanced automation capabilities. Additionally, Group Policy can be challenging to troubleshoot and debug, as it often requires deep knowledge of the underlying Windows operating system.\nPowerShell Desired State Configuration (DSC) PowerShell Desired State Configuration (DSC) is a configuration management solution built into Microsoft\u0026rsquo;s PowerShell platform. It allows IT professionals to define and manage the desired state of Windows systems using PowerShell scripts and resource modules. DSC provides features such as configuration drift detection, remediation, and automated deployment through the use of pull or push servers.\nDSC offers a powerful and flexible way to automate Windows Configuration Management tasks using PowerShell, which is widely adopted and supported within the Microsoft community. However, its learning curve can be steep for those unfamiliar with PowerShell scripting, and its lack of support for non-Windows platforms may limit its applicability in modern, hybrid environments.\nPuppet Puppet is a popular configuration management tool that offers a declarative approach to managing Windows systems. It uses a domain-specific language (DSL) called Puppet DSL to define the desired state of resources and apply configurations through the use of manifests. Puppet also provides built-in support for modules, which can be shared and reused across different environments.\nPuppet offers a wide range of features and capabilities for Windows Configuration Management, including software installation, package management, user and group configuration, and security policies. Its modular architecture allows for easy customization and integration with other tools in the IT landscape. However, Puppet\u0026rsquo;s learning curve can be steep, and its agent-based approach may require additional resources to maintain and manage.\nChef Chef is another powerful configuration management tool that follows an imperative programming model to define and apply configurations for Windows systems. It uses a domain-specific language (DSL) called Chef DSL to describe the desired state of resources, which are then converted into executable code. Chef also provides built-in support for cookbooks, which can be used to encapsulate reusable configuration recipes.\nChef offers robust features and capabilities for Windows Configuration Management, including software deployment, package management, user and group configuration, and security policies. Its strong focus on automation and repeatability makes it an excellent choice for organizations looking to streamline their infrastructure management processes. However, Chef\u0026rsquo;s agent-based approach may require additional resources to maintain and manage.\nSaltStack SaltStack is a scalable and distributed configuration management tool that offers both imperative and declarative programming models for managing Windows systems. It uses a domain-specific language (DSL) called YAML to define configurations and applies them through the use of state files and executors. SaltStack also provides built-in support for modules, which can be shared and reused across different environments.\nSaltStack offers a flexible and powerful approach to Windows Configuration Management, with features such as software deployment, package management, user and group configuration, and security policies. Its distributed architecture allows for easy scalability and high availability, making it an excellent choice for organizations with large-scale deployments. However, SaltStack\u0026rsquo;s learning curve can be steep, and its extensive customization options may require additional time and effort to master.\nHow to Install Ansible: Step-by-step Guide to Setup Ansible on your development machine Windows MacOS Linux Ubuntu Fedora Arch Debian OpenSUSE Local Infrastructure Development: Ansible and Vagrant Prototyping and testing with local virtual machines Your first local server: Setting up Vagrant Using Ansible with Vagrant Your first Ansible playbook Cleaning Up Summary Understanding Ansible Architecture Overview Diagram Playbook What are Ansible playbooks used for? Introduction: Structure, Tasks, Plays and Handlers Writing Your First Playbook for Windows: Step-by-step Guide with Examples Running Playbooks on Windows Hosts: Execution, Debugging, and Error Handling Modules Roles Managing Secrets and Credentials Using Ansible Galaxy for Roles Summary The Basics of Ansible for Windows Configuration Management Configuring Windows Hosts for Ansible Enabling WinRM for Remote Management Bootstrapping on AWS and Azure Firewall and Security Considerations for Windows Hosts AWS, Azure Configuring Ansible Inventory for Windows Hosts: Static and Dynamic Inventories Configuring Ansible Command Ansible Configuration Guide\nConfiguration file Getting the latest configuration Environmental configuration Command line options Using Ad-hoc Commands for Quick Tasks List of all adhoc commands Ansible Ad-hoc Command Guide\nSummary Windows Modules in Ansible Ansible.Windows: Ansible collection for core Windows plugins System Modules: These modules relate to managing system settings and configurations win_acl module – Set file/directory/registry/certificate permissions for a system user or group win_acl_inheritance module – Change ACL inheritance win_certificate_store module – Manages the certificate store win_dns_client module – Configures DNS lookup on Windows hosts win_environment module – Modify environment variables on Windows hosts win_feature module – Installs and uninstalls Windows Features on Windows Server win_hostname module – Manages local Windows computer name win_optional_feature module – Manage optional Windows features win_owner module – Set owner win_path module – Manage Windows path environment variables win_reg_stat module – Get information about Windows registry keys win_regedit module – Add, change, or remove registry keys and values win_service module – Manage and query Windows services win_service_info module – Gather information about Windows services win_updates module – Download and install Windows updates win_user module – Manages local Windows user accounts win_user_right module – Manage Windows User Rights win_wait_for module – Waits for a condition before continuing win_dsc module – Invokes a PowerShell DSC configuration win_reboot module – Reboot a Windows machine File and Directory Management Modules: These modules involve managing files and directories slurp module – Slurps a file from remote nodes win_copy module – Copies files to remote locations on Windows hosts win_file module – Creates, touches, or removes files or directories win_find module – Return a list of files based on specific criteria win_get_url module – Downloads file from HTTP, HTTPS, or FTP to node win_share module – Manage Windows shares win_stat module – Get information about Windows files win_tempfile module – Creates temporary files and directories win_template module – Template a file out to a remote server Command Execution Modules: These modules focus on running commands and scripts on remote hosts async_status module – Obtain status of asynchronous task win_command module – Executes a command on a remote Windows node win_powershell module – Run PowerShell scripts win_shell module – Execute shell commands on target hosts Domain and Membership Modules: These modules deal with managing Windows domains and memberships win_domain module – Ensures the existence of a Windows domain win_domain_controller module – Manage domain controller/member server state for a Windows host win_domain_membership module – Manage domain/workgroup membership for a Windows host Network and Connectivity Modules: These modules are related to networking and connectivity win_ping module – A Windows version of the classic ping module win_uri module – Interacts with web services Package and Software Management Modules: These modules are used for managing software packages and features win_package module – Installs/uninstalls an installable package Information Gathering Modules: These modules are used to gather information about the system setup module – Gathers facts about remote hosts win_service_info module – Gather information about Windows services win_whoami module – Get information about the current user and process Community.Windows: Ansible collection for community Windows plugins Remote Management psexec module – Runs commands on a remote Windows host based on the PsExec model win_psexec module – Runs commands (remotely) as another (privileged) user Audit and Security win_audit_policy_system module – Used to make changes to the system wide Audit Policy win_audit_rule module – Adds an audit rule to files, folders, or registry keys win_security_policy module – Change local security policy settings Authentication and Credentials win_auto_logon module – Adds or Sets auto logon registry keys win_credential module – Manages Windows Credentials in the Credential Manager Certificate Management win_certificate_info module – Get information on certificates from a Windows Certificate Store System and Network Configuration win_computer_description module – Set windows description, owner and organisation win_data_deduplication module – Module to enable Data Deduplication on a volume win_defrag module – Consolidate fragmented files on local volumes win_disk_facts module – Show the attached disks and disk information of the target host win_disk_image module – Manage ISO/VHD/VHDX mounts on Windows hosts win_dns_record module – Manage Windows Server DNS records win_dns_zone module – Manage Windows Server DNS Zones win_http_proxy module – Manages proxy settings for WinHTTP win_inet_proxy module – Manages proxy settings for WinINet and Internet Explorer win_initialize_disk module – Initializes disks on Windows Server win_net_adapter_feature module – Enable or disable certain network adapters win_netbios module – Manage NetBIOS over TCP/IP settings on Windows win_pagefile module – Query or change pagefile configuration win_partition module – Creates, changes and removes partitions on Windows Server win_power_plan module – Changes the power plan of a Windows system win_product_facts module – Provides Windows product and licence information win_route module – Add or remove a static route win_timezone module – Sets Windows machine timezone win_webpicmd module – Installs packages using Web Platform Installer command-line Active Directory and Domain win_domain_computer module – Manage computers in Active Directory win_domain_group module – Creates, modifies or removes domain groups win_domain_group_membership module – Manage Windows domain group membership win_domain_object_info module – Gather information an Active Directory object win_domain_ou module – Manage Active Directory Organizational Units win_domain_user module – Manages Windows Active Directory user accounts IIS Management win_iis_virtualdirectory module – Configures a virtual directory in IIS win_iis_webapplication module – Configures IIS web applications win_iis_webapppool module – Configure IIS Web Application Pools win_iis_webbinding module – Configures a IIS Web site binding win_iis_website module – Configures a IIS Web site PowerShell Management win_psmodule module – Adds or removes a Windows PowerShell module win_psmodule_info module – Gather information about PowerShell Modules win_psrepository module – Adds, removes or updates a Windows PowerShell repository win_psrepository_copy module – Copies registered PSRepositories to other user profiles win_psrepository_info module – Gather information about PSRepositories win_psscript module – Install and manage PowerShell scripts from a PSRepository win_psscript_info module – Gather information about installed PowerShell Scripts win_pssession_configuration module – Manage PSSession Configurations RDS Management win_rds_cap module – Manage Connection Authorization Policies (CAP) on a Remote Desktop Gateway server win_rds_rap module – Manage Resource Authorization Policies (RAP) on a Remote Desktop Gateway server win_rds_settings module – Manage main settings of a Remote Desktop Gateway server Miscellaneous win_dotnet_ngen module – Runs ngen to recompile DLLs after .NET updates win_eventlog module – Manage Windows event logs win_eventlog_entry module – Write entries to Windows event logs win_feature_info module – Gather information about Windows features win_file_compression module – Alters the compression of files and directories on NTFS partitions win_file_version module – Get DLL or EXE file build version win_firewall module – Enable or disable the Windows Firewall win_firewall_rule module – Windows firewall automation win_format module – Formats an existing volume or a new volume on an existing partition on Windows win_hosts module – Manages hosts file entries on Windows win_hotfix module – Install and uninstalls Windows hotfixes win_listen_ports_facts module – Recopilates the facts of the listening ports of the machine win_mapped_drive module – Map network drives for users win_msg module – Sends a message to logged in users on Windows hosts win_nssm module – Install a service using NSSM win_pester module – Run Pester tests on Windows hosts win_regmerge module – Merges the contents of a registry file into the Windows registry win_robocopy module – Synchronizes the contents of two directories using Robocopy win_say module – Text to speech module for Windows to speak messages and optionally play sounds win_scheduled_task module – Manage scheduled tasks win_scheduled_task_stat module – Get information about Windows Scheduled Tasks win_scoop module – Manage packages using Scoop win_scoop_bucket module – Manage Scoop buckets win_shortcut module – Manage shortcuts on Windows win_snmp module – Configures the Windows SNMP service win_toast module – Sends Toast windows notification to logged in users on Windows 10 or later hosts win_unzip module – Unzips compressed files and archives on the Windows node win_user_profile module – Manages the Windows user profiles win_wait_for_process module – Waits for a process to exist or not exist before continuing win_wakeonlan module – Send a magic Wake-on-LAN (WoL) broadcast packet win_xml module – Manages XML file content on Windows hosts win_zip module – Compress file or directory as zip archive on the Windows node win_region module – Set the region and format settings Chocolatey.Chocolatey: Manage packages using Chocolatey win_chocolatey module – Manage packages using chocolatey win_chocolatey_config module – Manages Chocolatey config settings win_chocolatey_facts module – Create a facts collection for Chocolatey win_chocolatey_feature module – Manages Chocolatey features win_chocolatey_source module – Manages Chocolatey sources Troubleshooting Common Issues Debugging Ansible Playbook Execution Errors Troubleshooting WinRM and Connectivity Problems Implementing DevOps Practices Ansible Tower/AWX Gitlab Github Gitea Drone Jenkins Azure DevOps Summary Testing in Ansible Community Engagement and Contribution Paths Appendix Glossary of Terms Definitions of Key Ansible and Windows Terms\nReferences and Useful Links Curated List of Helpful Resources\nCommunity Resources and Support Channels for Windows Recommendations for Further Learning and Certification ","permalink":"https://www.shafiq.in/fr/docs/projects/writing/ansible-for-windows/","summary":"\u003c!-- markdownlint-disable-file siblings_only MD024 --\u003e\n\u003ch1 id=\"ansible\"\u003eAnsible \u003c!-- omit in toc --\u003e\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#pr%c3%a9face\"\u003ePréface\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#who-is-this-book-for\"\u003eWho is this book for?\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#introduction\"\u003eIntroduction\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#what-is-the-purpose-of-configuration-management\"\u003eWhat is the purpose of Configuration Management\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#what-is-ansible\"\u003eWhat is Ansible\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#who-should-use-ansible\"\u003eWho Should Use Ansible\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#why-you-should-use-ansible-for-windows-configuration-management\"\u003eWhy you should use Ansible for Windows Configuration Management\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#when-to-use-ansible-for-windows-configuration-management\"\u003eWhen to use Ansible for Windows Configuration Management\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#how-to-install-ansible-step-by-step-guide-to-setup-ansible-on-your-development-machine\"\u003eHow to Install Ansible: Step-by-step Guide to Setup Ansible on your development machine\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#windows\"\u003eWindows\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#macos\"\u003eMacOS\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#linux\"\u003eLinux\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#local-infrastructure-development-ansible-and-vagrant\"\u003eLocal Infrastructure Development: Ansible and Vagrant\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#prototyping-and-testing-with-local-virtual-machines\"\u003ePrototyping and testing with local virtual machines\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#your-first-local-server-setting-up-vagrant\"\u003eYour first local server: Setting up Vagrant\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#using-ansible-with-vagrant\"\u003eUsing Ansible with Vagrant\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#your-first-ansible-playbook\"\u003eYour first Ansible playbook\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#cleaning-up\"\u003eCleaning Up\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#summary-3\"\u003eSummary\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#understanding-ansible-architecture\"\u003eUnderstanding Ansible Architecture\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#overview-diagram\"\u003eOverview Diagram\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#playbook\"\u003ePlaybook\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#introduction-structure-tasks-plays-and-handlers\"\u003eIntroduction: Structure, Tasks, Plays and Handlers\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#writing-your-first-playbook-for-windows-step-by-step-guide-with-examples\"\u003eWriting Your First Playbook for Windows: Step-by-step Guide with Examples\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#running-playbooks-on-windows-hosts-execution-debugging-and-error-handling\"\u003eRunning Playbooks on Windows Hosts: Execution, Debugging, and Error Handling\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#modules-1\"\u003eModules\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#roles-1\"\u003eRoles\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#managing-secrets-and-credentials\"\u003eManaging Secrets and Credentials\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#summary-4\"\u003eSummary\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#the-basics-of-ansible-for-windows-configuration-management\"\u003eThe Basics of Ansible for Windows Configuration Management\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#configuring-windows-hosts-for-ansible\"\u003eConfiguring Windows Hosts for Ansible\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#aws-azure\"\u003eAWS, Azure\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#configuring-ansible-inventory-for-windows-hosts-static-and-dynamic-inventories\"\u003eConfiguring Ansible Inventory for Windows Hosts: Static and Dynamic Inventories\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#configuring-ansible-command\"\u003eConfiguring Ansible Command\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#using-ad-hoc-commands-for-quick-tasks\"\u003eUsing Ad-hoc Commands for Quick Tasks\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#summary-5\"\u003eSummary\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#windows-modules-in-ansible\"\u003eWindows Modules in Ansible\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#ansiblewindows-ansible-collection-for-core-windows-plugins\"\u003eAnsible.Windows: Ansible collection for core Windows plugins\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#communitywindows-ansible-collection-for-community-windows-plugins\"\u003eCommunity.Windows: Ansible collection for community Windows plugins\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#chocolateychocolatey-manage-packages-using-chocolatey\"\u003eChocolatey.Chocolatey: Manage packages using Chocolatey\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#troubleshooting-common-issues\"\u003eTroubleshooting Common Issues\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#debugging-ansible-playbook-execution-errors\"\u003eDebugging Ansible Playbook Execution Errors\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#troubleshooting-winrm-and-connectivity-problems\"\u003eTroubleshooting WinRM and Connectivity Problems\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#implementing-devops-practices\"\u003eImplementing DevOps Practices\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#summary-6\"\u003eSummary\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#testing-in-ansible\"\u003eTesting in Ansible\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#community-engagement-and-contribution-paths\"\u003eCommunity Engagement and Contribution Paths\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#appendix\"\u003eAppendix\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#glossary-of-terms\"\u003eGlossary of Terms\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"/fr/docs/projects/writing/ansible-for-windows/#references-and-useful-links\"\u003eReferences and Useful Links\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv style=\"page-break-after: always\"\u003e\u003c/div\u003e\n\u003cp\u003eAll rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.\u003c/p\u003e","title":"Ansible for Windows"},{"content":"Reliure de livres La reliure est un excellent passe-temps à prendre ! Voici quelques avantages :\nVous pouvez créer des cadeaux personnalisés pour vos amis et votre famille. C\u0026rsquo;est une activité saine qui peut améliorer votre santé mentale. La reliure vous permet de rester connecté avec les gens, que ce soit en créant des cadeaux ou en rejoignant une communauté de relieurs. Équipements et matériaux que j\u0026rsquo;utilise 50Pcs Hot Melt Glue Strips 285mm Card Making Thermal Sticky for Book Binding | eBay\nDétails techniques | Fabricant | SM SunniMix | | Numéro de pièce | 00230005300012582654 | | Référence fabricant | 00230005300012582654 | | Quantité du colis | 1 | Autres mentions : \u0026lt;https://www.aliexpress.com/item/32912816173.html\u0026gt; \u0026lt;https://www.aliexpress.com/item/32834423518.html?spm=a2g0o.productlist.main.33.186e35a8A8l95O\u0026amp;algo_pvid=e2ef4917-21ba-484a-b1fa-e57d71ec21b5\u0026amp;algo_exp_id=e2ef4917-21ba-484a-b1fa-e57d71ec21b5-16\u0026amp;pdp_npi=3%40dis%21GBP%214.94%214.44%21%21%21%21%21%402100b18f16837280878272765d078a%2165035366945%21sea%21UK%210\u0026amp;curPageLogUid=lvptJGFOLVCM\u0026gt; \u0026lt;https://www.aliexpress.com/item/33042461699.html?spm=a2g0o.productlist.main.5.186e35a8A8l95O\u0026amp;algo_pvid=e2ef4917-21ba-484a-b1fa-e57d71ec21b5\u0026amp;algo_exp_id=e2ef4917-21ba-484a-b1fa-e57d71ec21b5-2\u0026amp;pdp_npi=3%40dis%21GBP%210.07%210.07%21%21%21%21%21%402100b18f16837280878272765d078a%2167369346133%21sea%21UK%210\u0026amp;curPageLogUid=Qadiz7lxtRtN\u0026gt; \u0026lt;https://www.aliexpress.com/item/32834423518.html?spm=a2g0o.productlist.main.15.73ab73a94aswDw\u0026amp;algo_pvid=265cc693-e736-4091-b450-199829f931ff\u0026amp;algo_exp_id=265cc693-e736-4091-b450-199829f931ff-7\u0026amp;pdp_npi=3%40dis%21GBP%214.94%214.44%21%21%21%21%21%402100b18f16837996571315347d078a%2165035366945%21sea%21UK%210\u0026amp;curPageLogUid=eHuHeLKMkKUE\u0026gt; \u0026lt;https://www.aliexpress.com/item/1005005421841978.html?spm=a2g0o.productlist.main.7.73ab73a94aswDw\u0026amp;algo_pvid=265cc693-e736-4091-b450-199829f931ff\u0026amp;algo_exp_id=265cc693-e736-4091-b450-199829f931ff-3\u0026amp;pdp_npi=3%40dis%21GBP%2147.29%2135.47%21%21%21%21%21%402100b18f16837996571315347d078a%2112000032999667187%21sea%21UK%210\u0026amp;curPageLogUid=L7I0cISbhRWv\u0026gt; \u0026lt;https://www.aliexpress.com/item/1005002327147381.html?spm=a2g0o.productlist.main.5.73ab73a94aswDw\u0026amp;algo_pvid=265cc693-e736-4091-b450-199829f931ff\u0026amp;algo_exp_id=265cc693-e736-4091-b450-199829f931ff-2\u0026amp;pdp_npi=3%40dis%21GBP%2121.69%2113.01%21%21%21%21%21%402100b18f16837996571315347d078a%2112000020186243120%21sea%21UK%210\u0026amp;curPageLogUid=yviPvGTashf2\u0026gt; \u0026lt;https://www.aliexpress.com/item/32912816173.html?spm=a2g0o.productlist.main.3.73ab73a94aswDw\u0026amp;algo_pvid=265cc693-e736-4091-b450-199829f931ff\u0026amp;algo_exp_id=265cc693-e736-4091-b450-199829f931ff-1\u0026amp;pdp_npi=3%40dis%21GBP%214.7%214.22%21%21%21%21%21%402100b18f16837996571315347d078a%2165947185544%21sea%21UK%210\u0026amp;curPageLogUid=GyWjnENo8zlM\u0026gt; Artway Strong PVA Glue/Medium - 1 Litre, White : Amazon.co.uk: Home \u0026amp; Kitchen\nSpécifications pour ce produit | Marque | Artway | | Couleur | Blanc | | Matériau compatible | Tissu, Plastique | | Ean | 0660989637583 , 5060669631033 | | Volume du produit | 1 litre | | Numéro du modèle | 1 Litre | | Numéro de pièce | 2302686 | | UPC | 660989637583 | HFS (R) Heavy Duty Guillotine Paper Cutter Commercial Metal Base (A3-17\u0026rsquo;\u0026rsquo;-Black) : Amazon.co.uk: Stationery \u0026amp; Office Supplies\nDétails techniques | Fabricant | HFS | | Marque | HFS | | Numéro du modèle | 16167 | | Dimensions du produit | 76.2 x 53.34 x 30.48 cm; 20 Kilograms | | Type de matériau | Acier à alliage | | Nombre d'articles | 1 | | Taille | A3-17'' | | Numéro de pièce fabricant | 16167 | | Poids du produit | 20 kg | Rexel A3 Style Laminator, White : Amazon.co.uk\nDétails techniques | Fabricant | Rexel | | Marque | Rexel | | Numéro du modèle | 2104512 | | Dimensions du produit | 14 x 44.5 x 6 cm; 1.82 Kilograms | | Couleur | Blanc | | Taille | A3 | | Numéro de pièce fabricant | 2104512 | | Poids du produit | 1.82 kg | ","permalink":"https://www.shafiq.in/fr/docs/projects/writing/book-binding/","summary":"\u003ch1 id=\"reliure-de-livres\"\u003eReliure de livres\u003c/h1\u003e\n\u003cp\u003eLa reliure est un excellent passe-temps à prendre ! Voici quelques avantages :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVous pouvez créer des cadeaux personnalisés pour vos amis et votre famille.\u003c/li\u003e\n\u003cli\u003eC\u0026rsquo;est une activité saine qui peut améliorer votre santé mentale.\u003c/li\u003e\n\u003cli\u003eLa reliure vous permet de rester connecté avec les gens, que ce soit en créant des cadeaux ou en rejoignant une communauté de relieurs.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"équipements-et-matériaux-que-jutilise\"\u003eÉquipements et matériaux que j\u0026rsquo;utilise\u003c/h2\u003e\n\u003cp\u003e50Pcs Hot Melt Glue Strips 285mm Card Making Thermal Sticky for Book Binding | eBay\u003c/p\u003e","title":"Book Binding"},{"content":"","permalink":"https://www.shafiq.in/fr/docs/projects/software/linux-os/","summary":"","title":"Linux OS"},{"content":"Chapter 1: SaltStack Fundamentals\n1.1. Introduction to SaltStack 1.2. History of SaltStack 1.3. Key Features of SaltStack 1.4. Advantages of Using SaltStack 1.5. SaltStack Architecture 1.6. SaltStack Components 1.7. SaltStack Terminology 1.8. SaltStack Use Cases 1.9. SaltStack vs. Other Configuration Management Tools 1.10. Real-World Examples of SaltStack Implementation\nChapter 2: SaltStack Installation and Configuration\n2.1. Installing SaltStack on Linux 2.2. Installing SaltStack on Windows 2.3. Configuring SaltStack Master 2.4. Configuring SaltStack Minion 2.5. Setting up SaltStack Environment 2.6. Understanding SaltStack Configuration Files 2.7. Managing SaltStack Services 2.8. Troubleshooting SaltStack Installation Issues 2.9. Best Practices for SaltStack Configuration 2.10. Advanced SaltStack Configuration Options\nChapter 3: SaltStack Core Concepts\n3.1. Understanding SaltStack Grains 3.2. Understanding SaltStack Pillars 3.3. Understanding SaltStack States 3.4. Understanding SaltStack Modules 3.5. Understanding SaltStack Templates 3.6. Understanding SaltStack Context 3.7. Understanding SaltStack Targets 3.8. Understanding SaltStack Event System 3.9. Understanding SaltStack Reactor System 3.10. Understanding SaltStack Orchestration\nChapter 4: SaltStack CLI and API\n4.1. Introduction to SaltStack CLI 4.2. Basic SaltStack CLI Commands 4.3. Advanced SaltStack CLI Commands 4.4. SaltStack CLI Best Practices 4.5. Introduction to SaltStack API 4.6. Using SaltStack API for Automation 4.7. SaltStack API Security Considerations 4.8. Troubleshooting SaltStack API Issues 4.9. SaltStack API Performance Optimisation 4.10. Advanced SaltStack API Topics\nChapter 5: SaltStack Formula and States\n5.1. Introduction to SaltStack Formula 5.2. Writing SaltStack Formula 5.3. Best Practices for SaltStack Formula 5.4. Understanding SaltStack States 5.5. Writing SaltStack States 5.6. Advanced SaltStack States Topics 5.7. Troubleshooting SaltStack States Issues 5.8. SaltStack States Performance Optimisation 5.9. Using SaltStack Formula with States 5.10. Advanced SaltStack Formula and States Topics\nChapter 6: SaltStack Pillars and Grains\n6.1. Introduction to SaltStack Pillars 6.2. Configuring SaltStack Pillars 6.3. Best Practices for SaltStack Pillars 6.4. Introduction to SaltStack Grains 6.5. Configuring SaltStack Grains 6.6. Advanced SaltStack Grains Topics 6.7. Using SaltStack Pillars with Grains 6.8. Troubleshooting SaltStack Pillars and Grains Issues 6.9. SaltStack Pillars and Grains Performance Optimisation 6.10. Advanced SaltStack Pillars and Grains Topics\nChapter 7: SaltStack Modules and Templates\n7.1. Introduction to SaltStack Modules 7.2. Writing SaltStack Modules 7.3. Best Practices for SaltStack Modules 7.4. Introduction to SaltStack Templates 7.5. Writing SaltStack Templates 7.6. Advanced SaltStack Templates Topics 7.7. Using SaltStack Modules with Templates 7.8. Troubleshooting SaltStack Modules and Templates Issues 7.9. SaltStack Modules and Templates Performance Optimisation 7.10. Advanced SaltStack Modules and Templates Topics\nChapter 8: SaltStack Security and Authentication\n8.1. Introduction to SaltStack Security 8.2. SaltStack Authentication Options 8.3. Configuring SaltStack Authentication 8.4. Best Practices for SaltStack Security 8.5. SaltStack Encryption Options 8.6. Configuring SaltStack Encryption 8.7. Advanced SaltStack Security Topics 8.8. Troubleshooting SaltStack Security Issues 8.9. SaltStack Security Performance Optimisation 8.10. Advanced SaltStack Security Topics\nChapter 9: SaltStack Scalability and Performance\n9.1. Introduction to SaltStack Scalability 9.2. SaltStack Scalability Options 9.3. Configuring SaltStack Scalability 9.4. Best Practices for SaltStack Scalability 9.5. SaltStack Performance Optimisation 9.6. Advanced SaltStack Performance Topics 9.7. Troubleshooting SaltStack Performance Issues 9.8. SaltStack Performance Monitoring 9.9. SaltStack Performance Tuning 9.10. Advanced SaltStack Performance Topics\nChapter 10: SaltStack Troubleshooting and Debugging\n10.1. Introduction to SaltStack Troubleshooting 10.2. SaltStack Troubleshooting Tools 10.3. Troubleshooting SaltStack Common Issues 10.4. Advanced SaltStack Troubleshooting Topics 10.5. SaltStack Debugging Options 10.6. Configuring SaltStack Debugging 10.7. Best Practices for SaltStack Debugging 10.8. Troubleshooting SaltStack Debugging Issues 10.9. SaltStack Debugging Performance Optimisation 10.10. Advanced SaltStack Debugging Topics\nChapter 11: SaltStack Integration with Other Tools\n11.1. Introduction to SaltStack Integration 11.2. SaltStack Integration with Jenkins 11.3. SaltStack Integration with Docker 11.4. SaltStack Integration with Kubernetes 11.5. SaltStack Integration with Puppet 11.6. SaltStack Integration with Chef 11.7. SaltStack Integration with Ansible 11.8. SaltStack Integration with Other Tools 11.9. Best Practices for SaltStack Integration 11.10. Advanced SaltStack Integration Topics\nChapter 12: SaltStack Orchestration and Automation\n12.1. Introduction to SaltStack Orchestration 12.2. SaltStack Orchestration Options 12.3. Configuring SaltStack Orchestration 12.4. Best Practices for SaltStack Orchestration 12.5. SaltStack Automation Options 12.6. Configuring SaltStack Automation 12.7. Advanced SaltStack Automation Topics 12.8. Troubleshooting SaltStack Orchestration Issues 12.9. SaltStack Orchestration Performance Optimisation 12.10. Advanced SaltStack Orchestration Topics\nChapter 13: SaltStack Event and Reactor System\n13.1. Introduction to SaltStack Event System 13.2. SaltStack Event System Options 13.3. Configuring SaltStack Event System 13.4. Best Practices for SaltStack Event System 13.5. Introduction to SaltStack Reactor System 13.6. SaltStack Reactor System Options 13.7. Configuring SaltStack Reactor System 13.8. Advanced SaltStack Reactor System Topics 13.9. Troubleshooting SaltStack Event and Reactor System Issues 13.10. SaltStack Event and Reactor System Performance Optimisation\nChapter 15: SaltStack Network and Firewall\n15.1. Introduction to SaltStack Network 15.2. SaltStack Network Options 15.3. Configuring SaltStack Network 15.4. Best Practices for SaltStack Network 15.5. SaltStack Firewall Options 15.6. Configuring SaltStack Firewall 15.7. Advanced SaltStack Firewall Topics 15.8. Troubleshooting SaltStack Network and Firewall Issues 15.9. SaltStack Network and Firewall Performance Optimisation 15.10. Advanced SaltStack Network and Firewall Topics\nChapter 16: SaltStack Monitoring and Logging\n16.1. Introduction to SaltStack Monitoring 16.2. SaltStack Monitoring Options 16.3. Configuring SaltStack Monitoring 16.4. Best Practices for SaltStack Monitoring 16.5. SaltStack Logging Options 16.6. Configuring SaltStack Logging 16.7. Advanced SaltStack Logging Topics 16.8. Troubleshooting SaltStack Monitoring and Logging Issues 16.9. SaltStack Monitoring and Logging Performance Optimisation 16.10. Advanced SaltStack Monitoring and Logging Topics\nChapter 17: SaltStack Backup and Recovery\n17.1. Introduction to SaltStack Backup 17.2. SaltStack Backup Options 17.3. Configuring SaltStack Backup 17.4. Best Practices for SaltStack Backup 17.5. SaltStack Recovery Options 17.6. Configuring SaltStack Recovery 17.7. Advanced SaltStack Recovery Topics 17.8. Troubleshooting SaltStack Backup and Recovery Issues 17.9. SaltStack Backup and Recovery Performance Optimisation 17.10. Advanced SaltStack Backup and Recovery Topics\nChapter 18: SaltStack High Availability\n18.1. Introduction to SaltStack High Availability 18.2. SaltStack High Availability Options 18.3. Configuring SaltStack High Availability 18.4. Best Practices for SaltStack High Availability 18.5. SaltStack Load Balancing Options 18.6. Configuring SaltStack Load Balancing 18.7. Advanced SaltStack Load Balancing Topics 18.8. Troubleshooting SaltStack High Availability Issues 18.9. SaltStack High Availability Performance Optimisation 18.10. Advanced SaltStack High Availability Topics\nChapter 19: SaltStack Best Practices and Security\n19.1. Introduction to SaltStack Best Practices 19.2. SaltStack Security Best Practices 19.3. SaltStack Configuration Best Practices 19.4. SaltStack Deployment Best Practices 19.5. Salt Management Best Practices 19.6. SaltStack Monitoring Best Practices 19.7. SaltStack Troubleshooting Best Practices 19.8. SaltStack Performance Optimisation Best Practices 19.9. SaltStack Security and Compliance 19.10. Advanced SaltStack Best Practices and Security Topics\nChapter 22: SaltStack vs. Other Automation Tools\n22.1. Introduction to SaltStack vs. Other Automation Tools 22.2. SaltStack vs. Ansible 22.3. SaltStack vs. Puppet 22.4. SaltStack vs. Chef 22.5. SaltStack vs. Docker 22.6. SaltStack vs. Kubernetes 22.7. SaltStack vs. Other Configuration Management Tools 22.8. SaltStack vs. Other Orchestration Tools 22.9. SaltStack vs. Other Automation Tools 22.10. Advanced SaltStack vs. Other Automation Tools Topics\nChapter 24: SaltStack Interview Questions\n24.1. Introduction to SaltStack Expert Interview Questions 24.2. SaltStack Architecture Questions 24.3. SaltStack Configuration Questions 24.4. SaltStack Security Questions 24.5. SaltStack Scalability Questions 24.6. SaltStack Performance Questions 24.7. SaltStack Troubleshooting Questions 24.8. SaltStack Best Practices Questions 24.9. SaltStack Use Cases Questions 24.10. Advanced SaltStack Expert Interview Questions\naliases.get_target:\nReturn the target associated with an alias CLI Example: salt '*' aliases.get_target alias aliases.has_target:\nReturn true if the alias/target is set CLI Example: salt '*' aliases.has_target alias target aliases.list_aliases:\nReturn the aliases found in the aliases file in this format:: {'alias': 'target'} CLI Example: salt '*' aliases.list_aliases aliases.rm_alias:\nRemove an entry from the aliases file CLI Example: salt '*' aliases.rm_alias alias aliases.set_target:\nSet the entry in the aliases file for the given alias, this will overwrite any previous entry for the given alias or create a new one if it does not exist. CLI Example: salt '*' aliases.set_target alias target alternatives.auto:\nTrigger alternatives to set the path for \u0026lt;name\u0026gt; as specified by priority. CLI Example: salt '*' alternatives.auto name alternatives.check_exists:\nCheck if the given path is an alternative for a name. New in version 2015.8.4 CLI Example: salt '*' alternatives.check_exists name path alternatives.check_installed:\nCheck if the current highest-priority match for a given alternatives link is set to the desired path CLI Example: salt '*' alternatives.check_installed name path alternatives.display:\nDisplay alternatives settings for defined command name CLI Example: salt '*' alternatives.display editor alternatives.install:\nInstall symbolic links determining default commands CLI Example: salt '*' alternatives.install editor /usr/bin/editor /usr/bin/emacs23 50 alternatives.remove:\nRemove symbolic links determining the default commands. CLI Example: salt '*' alternatives.remove name path alternatives.set:\nManually set the alternative \u0026lt;path\u0026gt; for \u0026lt;name\u0026gt;. CLI Example: salt '*' alternatives.set name path alternatives.show_current:\nDisplay the current highest-priority alternative for a given alternatives link CLI Example: salt '*' alternatives.show_current editor alternatives.show_link:\nDisplay master link for the alternative New in version 2015.8.13,2016.3.4,2016.11.0 CLI Example: salt '*' alternatives.show_link editor archive.cmd_unzip:\nNew in version 2015.5.0 In versions 2014.7.x and earlier, this function was known as ``archive.unzip``. Uses the ``unzip`` command to unpack zip files. This command is part of the `Info-ZIP`_ suite of tools, and is typically packaged as simply ``unzip``. .. _`Info-ZIP`: http://www.info-zip.org/ zip_file Path of zip file to be unpacked dest The destination directory into which the file should be unpacked excludes : None Comma-separated list of files not to unpack. Can also be passed in a Python list. template : None Can be set to 'jinja' or another supported template engine to render the command arguments before execution: salt '*' archive.cmd_unzip template=jinja /tmp/zipfile.zip '/tmp/{{grains.id}}' excludes=file_1,file_2 options Optional when using ``zip`` archives, ignored when usign other archives files. This is mostly used to overwrite existing files with ``o``. This options are only used when ``unzip`` binary is used. New in version 2016.3.1 runas : None Unpack the zip file as the specified user. Defaults to the user under which the minion is running. New in version 2015.5.0 trim_output : False The number of files we should output on success before the rest are trimmed, if this is set to True then it will default to 100 password Password to use with password protected zip files Note: This is not considered secure. It is recommended to instead use :py:func:`archive.unzip \u0026lt;salt.modules.archive.unzip\u0026gt;` for password-protected ZIP files. If a password is used here, then the unzip command run to extract the ZIP file will not show up in the minion log like most shell commands Salt runs do. However, the password will still be present in the events logged to the minion log at the ``debug`` log level. If the minion is logging at ``debug`` (or more verbose), then be advised that the password will appear in the log. New in version 2016.11.0 CLI Example: salt '*' archive.cmd_unzip /tmp/zipfile.zip /home/strongbad/ excludes=file_1,file_2 archive.cmd_zip:\nNew in version 2015.5.0 In versions 2014.7.x and earlier, this function was known as ``archive.zip``. Uses the ``zip`` command to create zip files. This command is part of the `Info-ZIP`_ suite of tools, and is typically packaged as simply ``zip``. .. _`Info-ZIP`: http://www.info-zip.org/ zip_file Path of zip file to be created sources Comma-separated list of sources to include in the zip file. Sources can also be passed in a Python list. Changed in version 2017.7.0 Globbing is now supported for this argument template : None Can be set to 'jinja' or another supported template engine to render the command arguments before execution: salt '*' archive.cmd_zip template=jinja /tmp/zipfile.zip /tmp/sourcefile1,/tmp/{{grains.id}}.txt cwd : None Use this argument along with relative paths in ``sources`` to create zip files which do not contain the leading directories. If not specified, the zip file will be created as if the cwd was ``/``, and creating a zip file of ``/foo/bar/baz.txt`` will contain the parent directories ``foo`` and ``bar``. To create a zip file containing just ``baz.txt``, the following command would be used: salt '*' archive.cmd_zip /tmp/baz.zip baz.txt cwd=/foo/bar New in version 2014.7.1 runas : None Create the zip file as the specified user. Defaults to the user under which the minion is running. New in version 2015.5.0 CLI Example: salt '*' archive.cmd_zip /tmp/zipfile.zip /tmp/sourcefile1,/tmp/sourcefile2 # Globbing for sources (2017.7.0 and later) salt '*' archive.cmd_zip /tmp/zipfile.zip '/tmp/sourcefile*' archive.gunzip:\nUses the gunzip command to unpack gzip files template : None Can be set to 'jinja' or another supported template engine to render the command arguments before execution: salt '*' archive.gunzip template=jinja /tmp/{{grains.id}}.txt.gz runas : None The user with which to run the gzip command line options : None Pass any additional arguments to gzip New in version 2016.3.4 CLI Example: # Create /tmp/sourcefile.txt salt '*' archive.gunzip /tmp/sourcefile.txt.gz salt '*' archive.gunzip /tmp/sourcefile.txt options='--verbose' archive.gzip:\nUses the gzip command to create gzip files template : None Can be set to 'jinja' or another supported template engine to render the command arguments before execution: salt '*' archive.gzip template=jinja /tmp/{{grains.id}}.txt runas : None The user with which to run the gzip command line options : None Pass any additional arguments to gzip New in version 2016.3.4 CLI Example: # Create /tmp/sourcefile.txt.gz salt '*' archive.gzip /tmp/sourcefile.txt salt '*' archive.gzip /tmp/sourcefile.txt options='-9 --verbose' archive.is_encrypted:\nNew in version 2016.11.0 Changed in version 3005 Returns ``True`` if the zip archive is password-protected, ``False`` if not. If the specified file is not a ZIP archive, an error will be raised. name The path / URL of the archive to check. clean : False Set this value to ``True`` to delete the path referred to by ``name`` once the contents have been listed. This option should be used with care. Note: If there is an error listing the archive's contents, the cached file will not be removed, to allow for troubleshooting. saltenv : base Specifies the fileserver environment from which to retrieve ``archive``. This is only applicable when ``archive`` is a file from the ``salt://`` fileserver. source_hash If ``name`` is an http(s)/ftp URL and the file exists in the minion's file cache, this option can be passed to keep the minion from re-downloading the archive if the cached copy matches the specified hash. New in version 2018.3.0 use_etag If ``True``, remote http/https file sources will attempt to use the ETag header to determine if the remote file needs to be downloaded. This provides a lightweight mechanism for promptly refreshing files changed on a web server without requiring a full hash comparison via the ``source_hash`` parameter. New in version 3005 CLI Examples: salt '*' archive.is_encrypted /path/to/myfile.zip salt '*' archive.is_encrypted salt://foo.zip salt '*' archive.is_encrypted salt://foo.zip saltenv=dev salt '*' archive.is_encrypted https://domain.tld/myfile.zip clean=True salt '*' archive.is_encrypted https://domain.tld/myfile.zip source_hash=f1d2d2f924e986ac86fdf7b36c94bcdf32beec15 salt '*' archive.is_encrypted ftp://10.1.2.3/foo.zip archive.list:\nNew in version 2016.11.0 Changed in version 2016.11.2,3005 The rarfile_ Python module is now supported for listing the contents of rar archives. This is necessary on minions with older releases of the ``rar`` CLI tool, which do not support listing the contents in a parsable format. .. _rarfile: https://pypi.python.org/pypi/rarfile List the files and directories in an tar, zip, or rar archive. Note: This function will only provide results for XZ-compressed archives if the xz_ CLI command is available, as Python does not at this time natively support XZ compression in its tarfile_ module. Keep in mind however that most Linux distros ship with xz_ already installed. To check if a given minion has xz_, the following Salt command can be run: salt minion_id cmd.which xz If ``None`` is returned, then xz_ is not present and must be installed. It is widely available and should be packaged as either ``xz`` or ``xz-utils``. name Path/URL of archive archive_format Specify the format of the archive (``tar``, ``zip``, or ``rar``). If this argument is omitted, the archive format will be guessed based on the value of the ``name`` parameter. options **For tar archives only.** This function will, by default, try to use the tarfile_ module from the Python standard library to get a list of files/directories. If this method fails, then it will fall back to using the shell to decompress the archive to stdout and pipe the results to ``tar -tf -`` to produce a list of filenames. XZ-compressed archives are already supported automatically, but in the event that the tar archive uses a different sort of compression not supported natively by tarfile_, this option can be used to specify a command that will decompress the archive to stdout. For example: salt minion_id archive.list /path/to/foo.tar.gz options='gzip --decompress --stdout' Note: It is not necessary to manually specify options for gzip'ed archives, as gzip compression is natively supported by tarfile_. strip_components This argument specifies a number of top-level directories to strip from the results. This is similar to the paths that would be extracted if ``--strip-components`` (or ``--strip``) were used when extracting tar archives. New in version 2016.11.2 clean : False Set this value to ``True`` to delete the path referred to by ``name`` once the contents have been listed. This option should be used with care. Note: If there is an error listing the archive's contents, the cached file will not be removed, to allow for troubleshooting. verbose : False If ``False``, this function will return a list of files/dirs in the archive. If ``True``, it will return a dictionary categorizing the paths into separate keys containing the directory names, file names, and also directories/files present in the top level of the archive. Changed in version 2016.11.2 This option now includes symlinks in their own list. Before, they were included with files. saltenv : base Specifies the fileserver environment from which to retrieve ``archive``. This is only applicable when ``archive`` is a file from the ``salt://`` fileserver. source_hash If ``name`` is an http(s)/ftp URL and the file exists in the minion's file cache, this option can be passed to keep the minion from re-downloading the archive if the cached copy matches the specified hash. New in version 2018.3.0 use_etag If ``True``, remote http/https file sources will attempt to use the ETag header to determine if the remote file needs to be downloaded. This provides a lightweight mechanism for promptly refreshing files changed on a web server without requiring a full hash comparison via the ``source_hash`` parameter. New in version 3005 .. _tarfile: https://docs.python.org/2/library/tarfile.html .. _xz: http://tukaani.org/xz/ CLI Examples: salt '*' archive.list /path/to/myfile.tar.gz salt '*' archive.list /path/to/myfile.tar.gz strip_components=1 salt '*' archive.list salt://foo.tar.gz salt '*' archive.list https://domain.tld/myfile.zip salt '*' archive.list https://domain.tld/myfile.zip source_hash=f1d2d2f924e986ac86fdf7b36c94bcdf32beec15 salt '*' archive.list ftp://10.1.2.3/foo.rar archive.rar:\nUses `rar for Linux`_ to create rar files .. _`rar for Linux`: http://www.rarlab.com/ rarfile Path of rar file to be created sources Comma-separated list of sources to include in the rar file. Sources can also be passed in a Python list. Changed in version 2017.7.0 Globbing is now supported for this argument cwd : None Run the rar command from the specified directory. Use this argument along with relative file paths to create rar files which do not contain the leading directories. If not specified, this will default to the home directory of the user under which the salt minion process is running. New in version 2014.7.1 template : None Can be set to 'jinja' or another supported template engine to render the command arguments before execution: salt '*' archive.rar template=jinja /tmp/rarfile.rar '/tmp/sourcefile1,/tmp/{{grains.id}}.txt' CLI Example: salt '*' archive.rar /tmp/rarfile.rar /tmp/sourcefile1,/tmp/sourcefile2 # Globbing for sources (2017.7.0 and later) salt '*' archive.rar /tmp/rarfile.rar '/tmp/sourcefile*' archive.tar:\nNote: This function has changed for version 0.17.0. In prior versions, the ``cwd`` and ``template`` arguments must be specified, with the source directories/files coming as a space-separated list at the end of the command. Beginning with 0.17.0, ``sources`` must be a comma-separated list, and the ``cwd`` and ``template`` arguments are optional. Uses the tar command to pack, unpack, etc. tar files options Options to pass to the tar command Changed in version 2015.8.0 The mandatory `-` prefixing has been removed. An options string beginning with a `--long-option`, would have uncharacteristically needed its first `-` removed under the former scheme. Also, tar will parse its options differently if short options are used with or without a preceding `-`, so it is better to not confuse the user into thinking they're using the non-`-` format, when really they are using the with-`-` format. tarfile The filename of the tar archive to pack/unpack sources Comma delimited list of files to **pack** into the tarfile. Can also be passed as a Python list. Changed in version 2017.7.0 Globbing is now supported for this argument dest The destination directory into which to **unpack** the tarfile cwd : None The directory in which the tar command should be executed. If not specified, will default to the home directory of the user under which the salt minion process is running. template : None Can be set to 'jinja' or another supported template engine to render the command arguments before execution: salt '*' archive.tar cjvf /tmp/salt.tar.bz2 {{grains.saltpath}} template=jinja CLI Examples: # Create a tarfile salt '*' archive.tar cjvf /tmp/tarfile.tar.bz2 /tmp/file_1,/tmp/file_2 # Create a tarfile using globbing (2017.7.0 and later) salt '*' archive.tar cjvf /tmp/tarfile.tar.bz2 '/tmp/file_*' # Unpack a tarfile salt '*' archive.tar xf foo.tar dest=/target/directory archive.unrar:\nUses `rar for Linux`_ to unpack rar files .. _`rar for Linux`: http://www.rarlab.com/ rarfile Name of rar file to be unpacked dest The destination directory into which to **unpack** the rar file template : None Can be set to 'jinja' or another supported template engine to render the command arguments before execution: salt '*' archive.unrar template=jinja /tmp/rarfile.rar /tmp/{{grains.id}}/ excludes=file_1,file_2 trim_output : False The number of files we should output on success before the rest are trimmed, if this is set to True then it will default to 100 CLI Example: salt '*' archive.unrar /tmp/rarfile.rar /home/strongbad/ excludes=file_1,file_2 archive.unzip:\nUses the ``zipfile`` Python module to unpack zip files Changed in version 2015.5.0 This function was rewritten to use Python's native zip file support. The old functionality has been preserved in the new function :mod:`archive.cmd_unzip \u0026lt;salt.modules.archive.cmd_unzip\u0026gt;`. For versions 2014.7.x and earlier, see the :mod:`archive.cmd_zip \u0026lt;salt.modules.archive.cmd_zip\u0026gt;` documentation. zip_file Path of zip file to be unpacked dest The destination directory into which the file should be unpacked excludes : None Comma-separated list of files not to unpack. Can also be passed in a Python list. options This options are only used when ``unzip`` binary is used. In this function is ignored. New in version 2016.3.1 template : None Can be set to 'jinja' or another supported template engine to render the command arguments before execution: salt '*' archive.unzip template=jinja /tmp/zipfile.zip /tmp/{{grains.id}}/ excludes=file_1,file_2 runas : None Unpack the zip file as the specified user. Defaults to the user under which the minion is running. trim_output : False The number of files we should output on success before the rest are trimmed, if this is set to True then it will default to 100 CLI Example: salt '*' archive.unzip /tmp/zipfile.zip /home/strongbad/ excludes=file_1,file_2 password Password to use with password protected zip files Note: The password will be present in the events logged to the minion log file at the ``debug`` log level. If the minion is logging at ``debug`` (or more verbose), then be advised that the password will appear in the log. New in version 2016.3.0 extract_perms : True The Python zipfile_ module does not extract file/directory attributes by default. When this argument is set to ``True``, Salt will attempt to apply the file permission attributes to the extracted files/folders. On Windows, only the read-only flag will be extracted as set within the zip file, other attributes (i.e. user/group permissions) are ignored. Set this argument to ``False`` to disable this behaviour. New in version 2016.11.0 .. _zipfile: https://docs.python.org/2/library/zipfile.html CLI Example: salt '*' archive.unzip /tmp/zipfile.zip /home/strongbad/ password='BadPassword' archive.zip:\nUses the ``zipfile`` Python module to create zip files Changed in version 2015.5.0 This function was rewritten to use Python's native zip file support. The old functionality has been preserved in the new function :mod:`archive.cmd_zip \u0026lt;salt.modules.archive.cmd_zip\u0026gt;`. For versions 2014.7.x and earlier, see the :mod:`archive.cmd_zip \u0026lt;salt.modules.archive.cmd_zip\u0026gt;` documentation. zip_file Path of zip file to be created sources Comma-separated list of sources to include in the zip file. Sources can also be passed in a Python list. Changed in version 2017.7.0 Globbing is now supported for this argument template : None Can be set to 'jinja' or another supported template engine to render the command arguments before execution: salt '*' archive.zip template=jinja /tmp/zipfile.zip /tmp/sourcefile1,/tmp/{{grains.id}}.txt cwd : None Use this argument along with relative paths in ``sources`` to create zip files which do not contain the leading directories. If not specified, the zip file will be created as if the cwd was ``/``, and creating a zip file of ``/foo/bar/baz.txt`` will contain the parent directories ``foo`` and ``bar``. To create a zip file containing just ``baz.txt``, the following command would be used: salt '*' archive.zip /tmp/baz.zip baz.txt cwd=/foo/bar runas : None Create the zip file as the specified user. Defaults to the user under which the minion is running. zip64 : False Used to enable ZIP64 support, necessary to create archives larger than 4 GByte in size. If true, will create ZIP file with the ZIPp64 extension when the zipfile is larger than 2 GB. ZIP64 extension is disabled by default in the Python native zip support because the default zip and unzip commands on Unix (the InfoZIP utilities) don't support these extensions. CLI Example: salt '*' archive.zip /tmp/zipfile.zip /tmp/sourcefile1,/tmp/sourcefile2 # Globbing for sources (2017.7.0 and later) salt '*' archive.zip /tmp/zipfile.zip '/tmp/sourcefile*' artifactory.get_latest_release:\nGets the latest release of the artifact artifactory_url URL of artifactory instance repository Release repository in artifactory to retrieve artifact from, for example: libs-releases group_id Group Id of the artifact artifact_id Artifact Id of the artifact packaging Packaging type (jar,war,ear,etc) target_dir Target directory to download artifact to (default: /tmp) target_file Target file to download artifact to (by default it is target_dir/artifact_id-version.packaging) classifier Artifact classifier name (ex: sources,javadoc,etc). Optional parameter. username Artifactory username. Optional parameter. password Artifactory password. Optional parameter. artifactory.get_latest_snapshot:\nGets latest snapshot of the given artifact artifactory_url URL of artifactory instance repository Snapshot repository in artifactory to retrieve artifact from, for example: libs-snapshots group_id Group Id of the artifact artifact_id Artifact Id of the artifact packaging Packaging type (jar,war,ear,etc) target_dir Target directory to download artifact to (default: /tmp) target_file Target file to download artifact to (by default it is target_dir/artifact_id-snapshot_version.packaging) classifier Artifact classifier name (ex: sources,javadoc,etc). Optional parameter. username Artifactory username. Optional parameter. password Artifactory password. Optional parameter. artifactory.get_release:\nGets the specified release of the artifact artifactory_url URL of artifactory instance repository Release repository in artifactory to retrieve artifact from, for example: libs-releases group_id Group Id of the artifact artifact_id Artifact Id of the artifact packaging Packaging type (jar,war,ear,etc) version Version of the artifact target_dir Target directory to download artifact to (default: /tmp) target_file Target file to download artifact to (by default it is target_dir/artifact_id-version.packaging) classifier Artifact classifier name (ex: sources,javadoc,etc). Optional parameter. username Artifactory username. Optional parameter. password Artifactory password. Optional parameter. artifactory.get_snapshot:\nGets snapshot of the desired version of the artifact artifactory_url URL of artifactory instance repository Snapshot repository in artifactory to retrieve artifact from, for example: libs-snapshots group_id Group Id of the artifact artifact_id Artifact Id of the artifact packaging Packaging type (jar,war,ear,etc) version Version of the artifact target_dir Target directory to download artifact to (default: /tmp) target_file Target file to download artifact to (by default it is target_dir/artifact_id-snapshot_version.packaging) classifier Artifact classifier name (ex: sources,javadoc,etc). Optional parameter. username Artifactory username. Optional parameter. password Artifactory password. Optional parameter. artifactory.set_basic_auth:\nSets the username and password for a specific url. Helper method. CLI Example: baredoc.list_modules:\nWalk the Salt install tree for execution modules and return a dictionary or a list of their functions as well as their arguments. :param name: specify a specific module to list. If not specified, all modules will be listed. :param names_only: Return only a list of the callable functions instead of a dictionary with arguments CLI Example: salt myminion baredoc.list_modules myminion: ---------- [...] at: - atq: tag: null - atrm: args: args - at: args: args kwargs: kwargs - atc: jobid: null - jobcheck: kwargs: kwargs [...] baredoc.list_states:\nWalk the Salt install tree for state modules and return a dictionary or a list of their functions as well as their arguments. :param name: specify a specific module to list. If not specified, all modules will be listed. :param names_only: Return only a list of the callable functions instead of a dictionary with arguments CLI Example: (example truncated for brevity) salt myminion baredoc.list_states myminion: ---------- [...] at: - present: name: null timespec: null tag: null user: null job: null unique_tag: false - absent: name: null jobid: null kwargs: kwargs - watch: name: null timespec: null tag: null user: null job: null unique_tag: false - mod_watch: name: null kwargs: kwargs [...] baredoc.module_docs:\nReturn the docstrings for all modules. Optionally, specify a module or a function to narrow the selection. :param name: specify a specific module to list. CLI Example: salt myminion baredoc.module_docs baredoc.state_docs:\nReturn the docstrings for all state modules. Optionally, specify a state module or a function to narrow the selection. :param name: specify a specific module to list. CLI Example: salt myminion baredoc.state_docs at beacons.add:\nAdd a beacon on the minion :param name: Name of the beacon to configure :param beacon_data: Dictionary or list containing configuration for beacon. :return: Boolean and status message on success or failure of add. CLI Example: salt '*' beacons.add ps \u0026quot;[{'processes': {'salt-master': 'stopped', 'apache2': 'stopped'}}]\u0026quot; beacons.delete:\nDelete a beacon item :param name: Name of the beacon to delete :return: Boolean and status message on success or failure of delete. CLI Example: salt '*' beacons.delete ps salt '*' beacons.delete load beacons.disable:\nDisable all beacons jobs on the minion :return: Boolean and status message on success or failure of disable. CLI Example: salt '*' beacons.disable beacons.disable_beacon:\nDisable a beacon on the minion :name: Name of the beacon to disable. :return: Boolean and status message on success or failure of disable. CLI Example: salt '*' beacons.disable_beacon ps beacons.enable:\nEnable all beacons on the minion Returns: bool: Boolean and status message on success or failure of enable. CLI Example: salt '*' beacons.enable beacons.enable_beacon:\nEnable beacon on the minion :name: Name of the beacon to enable. :return: Boolean and status message on success or failure of enable. CLI Example: salt '*' beacons.enable_beacon ps beacons.list:\nList the beacons currently configured on the minion :param return_yaml: Whether to return YAML formatted output, default ``True`` :param include_pillar: Whether to include beacons that are configured in pillar, default is ``True``. :param include_opts: Whether to include beacons that are configured in opts, default is ``True``. :return: List of currently configured Beacons. CLI Example: salt '*' beacons.list beacons.list_available:\nList the beacons currently available on the minion :param return_yaml: Whether to return YAML formatted output, default ``True`` :return: List of currently configured Beacons. CLI Example: salt '*' beacons.list_available beacons.modify:\nModify an existing beacon :param name: Name of the beacon to configure :param beacon_data: Dictionary or list containing updated configuration for beacon. :return: Boolean and status message on success or failure of modify. CLI Example: salt '*' beacons.modify ps \u0026quot;[{'salt-master': 'stopped'}, {'apache2': 'stopped'}]\u0026quot; beacons.reset:\nReset beacon configuration on the minion CLI Example: salt '*' beacons.reset beacons.save:\nSave all configured beacons to the minion config :return: Boolean and status message on success or failure of save. CLI Example: salt '*' beacons.save bigip.add_pool_member:\nA function to connect to a bigip device and add a new member to an existing pool. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password name The name of the pool to modify member The name of the member to add i.e. 10.1.1.2:80 CLI Example: salt '*' bigip.add_pool_members bigip admin admin my-pool 10.2.2.1:80 bigip.commit_transaction:\nA function to connect to a bigip device and commit an existing transaction. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password label the label of this transaction stored within the grain: ``bigip_f5_trans:\u0026lt;label\u0026gt;`` CLI Example: salt '*' bigip.commit_transaction bigip admin admin my_transaction bigip.create_monitor:\nA function to connect to a bigip device and create a monitor. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password monitor_type The type of monitor to create name The name of the monitor to create kwargs Consult F5 BIGIP user guide for specific options for each monitor type. Typically, tmsh arg names are used. CLI Example: salt '*' bigip.create_monitor bigip admin admin http my-http-monitor timeout=10 interval=5 bigip.create_node:\nA function to connect to a bigip device and create a node. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password name The name of the node address The address of the node trans_label The label of the transaction stored within the grain: ``bigip_f5_trans:\u0026lt;label\u0026gt;`` CLI Example: salt '*' bigip.create_node bigip admin admin 10.1.1.2 bigip.create_pool:\nA function to connect to a bigip device and create a pool. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password name The name of the pool to create. members List of comma delimited pool members to add to the pool. i.e. 10.1.1.1:80,10.1.1.2:80,10.1.1.3:80 allow_nat [yes | no] allow_snat [yes | no] description [string] gateway_failsafe_device [string] ignore_persisted_weight [enabled | disabled] ip_tos_to_client [pass-through | [integer]] ip_tos_to_server [pass-through | [integer]] link_qos_to_client [pass-through | [integer]] link_qos_to_server [pass-through | [integer]] load_balancing_mode [dynamic-ratio-member | dynamic-ratio-node | fastest-app-response | fastest-node | least-connections-members | least-connections-node | least-sessions | observed-member | observed-node | predictive-member | predictive-node | ratio-least-connections-member | ratio-least-connections-node | ratio-member | ratio-node | ratio-session | round-robin | weighted-least-connections-member | weighted-least-connections-node] min_active_members [integer] min_up_members [integer] min_up_members_action [failover | reboot | restart-all] min_up_members_checking [enabled | disabled] monitor [name] profiles [none | profile_name] queue_depth_limit [integer] queue_on_connection_limit [enabled | disabled] queue_time_limit [integer] reselect_tries [integer] service_down_action [drop | none | reselect | reset] slow_ramp_time [integer] CLI Example: salt '*' bigip.create_pool bigip admin admin my-pool 10.1.1.1:80,10.1.1.2:80,10.1.1.3:80 monitor=http bigip.create_profile:\nA function to connect to a bigip device and create a profile. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password profile_type The type of profile to create name The name of the profile to create kwargs ``[ arg=val ] ... [arg=key1:val1,key2:val2] ...`` Consult F5 BIGIP user guide for specific options for each monitor type. Typically, tmsh arg names are used. Creating Complex Args Profiles can get pretty complicated in terms of the amount of possible config options. Use the following shorthand to create complex arguments such as lists, dictionaries, and lists of dictionaries. An option is also provided to pass raw json as well. lists ``[i,i,i]``: ``param='item1,item2,item3'`` Dictionary ``[k:v,k:v,k,v]``: ``param='key-1:val-1,key-2:val2,key-3:va-3'`` List of Dictionaries ``[k:v,k:v|k:v,k:v|k:v,k:v]``: ``param='key-1:val-1,key-2:val-2|key-1:val-1,key-2:val-2|key-1:val-1,key-2:val-2'`` JSON: ``'j{ ... }j'``: ``cert-key-chain='j{ \u0026quot;default\u0026quot;: { \u0026quot;cert\u0026quot;: \u0026quot;default.crt\u0026quot;, \u0026quot;chain\u0026quot;: \u0026quot;default.crt\u0026quot;, \u0026quot;key\u0026quot;: \u0026quot;default.key\u0026quot; } }j'`` Escaping Delimiters: Use ``\\,`` or ``\\:`` or ``\\|`` to escape characters which shouldn't be treated as delimiters i.e. ``ciphers='DEFAULT\\:!SSLv3'`` CLI Example: salt '*' bigip.create_profile bigip admin admin http my-http-profile defaultsFrom='/Common/http' salt '*' bigip.create_profile bigip admin admin http my-http-profile defaultsFrom='/Common/http' \\ enforcement=maxHeaderCount:3200,maxRequests:10 bigip.create_virtual:\nA function to connect to a bigip device and create a virtual server. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password name The name of the virtual to create destination [ [virtual_address_name:port] | [ipv4:port] | [ipv6.port] ] pool [ [pool_name] | none] address_status [yes | no] auto_lasthop [default | enabled | disabled ] bwc_policy [none] | string] cmp_enabled [yes | no] dhcp_relay [yes | no] connection_limit [integer] description [string] state [disabled | enabled] fallback_persistence [none | [profile name] ] flow_eviction_policy [none | [eviction policy name] ] gtm_score [integer] ip_forward [yes | no] ip_protocol [any | protocol] internal [yes | no] twelve_forward (12-forward) [yes | no] last_hop-pool [ [pool_name] | none] mask { [ipv4] | [ipv6] } mirror { [disabled | enabled | none] } nat64 [enabled | disabled] persist [none | profile1,profile2,profile3 ... ] profiles [none | default | profile1,profile2,profile3 ... ] policies [none | default | policy1,policy2,policy3 ... ] rate_class [name] rate_limit [integer] rate_limit_mode [destination | object | object-destination | object-source | object-source-destination | source | source-destination] rate_limit_dst [integer] rate_limitçsrc [integer] rules [none | [rule_one,rule_two ...] ] related_rules [none | [rule_one,rule_two ...] ] reject [yes | no] source { [ipv4[/prefixlen]] | [ipv6[/prefixlen]] } source_address_translation [none | snat:pool_name | lsn | automap ] source_port [change | preserve | preserve-strict] state [enabled | disabled] traffic_classes [none | default | class_one,class_two ... ] translate_address [enabled | disabled] translate_port [enabled | disabled] vlans [none | default | [enabled|disabled]:vlan1,vlan2,vlan3 ... ] CLI Example: salt '*' bigip.create_virtual bigip admin admin my-virtual-3 26.2.2.5:80 \\ pool=my-http-pool-http profiles=http,tcp salt '*' bigip.create_virtual bigip admin admin my-virtual-3 43.2.2.5:80 \\ pool=test-http-pool-http profiles=http,websecurity persist=cookie,hash \\ policies=asm_auto_l7_policy__http-virtual \\ rules=_sys_APM_ExchangeSupport_helper,_sys_https_redirect \\ related_rules=_sys_APM_activesync,_sys_APM_ExchangeSupport_helper \\ source_address_translation=snat:my-snat-pool \\ translate_address=enabled translate_port=enabled \\ traffic_classes=my-class,other-class \\ vlans=enabled:external,internal bigip.delete_monitor:\nA function to connect to a bigip device and delete an existing monitor. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password monitor_type The type of monitor to delete name The name of the monitor to delete CLI Example: salt '*' bigip.delete_monitor bigip admin admin http my-http-monitor bigip.delete_node:\nA function to connect to a bigip device and delete a specific node. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password name The name of the node which will be deleted. trans_label The label of the transaction stored within the grain: ``bigip_f5_trans:\u0026lt;label\u0026gt;`` CLI Example: salt '*' bigip.delete_node bigip admin admin my-node bigip.delete_pool:\nA function to connect to a bigip device and delete a specific pool. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password name The name of the pool which will be deleted CLI Example salt '*' bigip.delete_node bigip admin admin my-pool bigip.delete_pool_member:\nA function to connect to a bigip device and delete a specific pool. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password name The name of the pool to modify member The name of the pool member to delete CLI Example: salt '*' bigip.delete_pool_member bigip admin admin my-pool 10.2.2.2:80 bigip.delete_profile:\nA function to connect to a bigip device and delete an existing profile. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password profile_type The type of profile to delete name The name of the profile to delete CLI Example: salt '*' bigip.delete_profile bigip admin admin http my-http-profile bigip.delete_transaction:\nA function to connect to a bigip device and delete an existing transaction. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password label The label of this transaction stored within the grain: ``bigip_f5_trans:\u0026lt;label\u0026gt;`` CLI Example: salt '*' bigip.delete_transaction bigip admin admin my_transaction bigip.delete_virtual:\nA function to connect to a bigip device and delete a specific virtual. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password name The name of the virtual to delete CLI Example: salt '*' bigip.delete_virtual bigip admin admin my-virtual bigip.list_monitor:\nA function to connect to a bigip device and list an existing monitor. If no name is provided than all monitors of the specified type will be listed. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password monitor_type The type of monitor(s) to list name The name of the monitor to list CLI Example: salt '*' bigip.list_monitor bigip admin admin http my-http-monitor bigip.list_node:\nA function to connect to a bigip device and list all nodes or a specific node. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password name The name of the node to list. If no name is specified than all nodes will be listed. trans_label The label of the transaction stored within the grain: ``bigip_f5_trans:\u0026lt;label\u0026gt;`` CLI Example: salt '*' bigip.list_node bigip admin admin my-node bigip.list_pool:\nA function to connect to a bigip device and list all pools or a specific pool. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password name The name of the pool to list. If no name is specified then all pools will be listed. CLI Example: salt '*' bigip.list_pool bigip admin admin my-pool bigip.list_profile:\nA function to connect to a bigip device and list an existing profile. If no name is provided than all profiles of the specified type will be listed. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password profile_type The type of profile(s) to list name The name of the profile to list CLI Example: salt '*' bigip.list_profile bigip admin admin http my-http-profile bigip.list_transaction:\nA function to connect to a bigip device and list an existing transaction. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password label the label of this transaction stored within the grain: ``bigip_f5_trans:\u0026lt;label\u0026gt;`` CLI Example: salt '*' bigip.list_transaction bigip admin admin my_transaction bigip.list_virtual:\nA function to connect to a bigip device and list all virtuals or a specific virtual. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password name The name of the virtual to list. If no name is specified than all virtuals will be listed. CLI Example: salt '*' bigip.list_virtual bigip admin admin my-virtual bigip.modify_monitor:\nA function to connect to a bigip device and modify an existing monitor. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password monitor_type The type of monitor to modify name The name of the monitor to modify kwargs Consult F5 BIGIP user guide for specific options for each monitor type. Typically, tmsh arg names are used. CLI Example: salt '*' bigip.modify_monitor bigip admin admin http my-http-monitor timout=16 interval=6 bigip.modify_node:\nA function to connect to a bigip device and modify an existing node. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password name The name of the node to modify connection_limit [integer] description [string] dynamic_ratio [integer] logging [enabled | disabled] monitor [[name] | none | default] rate_limit [integer] ratio [integer] session [user-enabled | user-disabled] state [user-down | user-up ] trans_label The label of the transaction stored within the grain: ``bigip_f5_trans:\u0026lt;label\u0026gt;`` CLI Example: salt '*' bigip.modify_node bigip admin admin 10.1.1.2 ratio=2 logging=enabled bigip.modify_pool:\nA function to connect to a bigip device and modify an existing pool. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password name The name of the pool to modify. allow_nat [yes | no] allow_snat [yes | no] description [string] gateway_failsafe_device [string] ignore_persisted_weight [yes | no] ip_tos_to_client [pass-through | [integer]] ip_tos_to_server [pass-through | [integer]] link_qos_to_client [pass-through | [integer]] link_qos_to_server [pass-through | [integer]] load_balancing_mode [dynamic-ratio-member | dynamic-ratio-node | fastest-app-response | fastest-node | least-connections-members | least-connections-node | least-sessions | observed-member | observed-node | predictive-member | predictive-node | ratio-least-connections-member | ratio-least-connections-node | ratio-member | ratio-node | ratio-session | round-robin | weighted-least-connections-member | weighted-least-connections-node] min_active_members [integer] min_up_members [integer] min_up_members_action [failover | reboot | restart-all] min_up_members_checking [enabled | disabled] monitor [name] profiles [none | profile_name] queue_on_connection_limit [enabled | disabled] queue_depth_limit [integer] queue_time_limit [integer] reselect_tries [integer] service_down_action [drop | none | reselect | reset] slow_ramp_time [integer] CLI Example: salt '*' bigip.modify_pool bigip admin admin my-pool 10.1.1.1:80,10.1.1.2:80,10.1.1.3:80 min_active_members=1 bigip.modify_pool_member:\nA function to connect to a bigip device and modify an existing member of a pool. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password name The name of the pool to modify member The name of the member to modify i.e. 10.1.1.2:80 connection_limit [integer] description [string] dynamic_ratio [integer] inherit_profile [enabled | disabled] logging [enabled | disabled] monitor [name] priority_group [integer] profiles [none | profile_name] rate_limit [integer] ratio [integer] session [user-enabled | user-disabled] state [ user-up | user-down ] CLI Example: salt '*' bigip.modify_pool_member bigip admin admin my-pool 10.2.2.1:80 state=use-down session=user-disabled bigip.modify_profile:\nA function to connect to a bigip device and create a profile. A function to connect to a bigip device and create a profile. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password profile_type The type of profile to create name The name of the profile to create kwargs ``[ arg=val ] ... [arg=key1:val1,key2:val2] ...`` Consult F5 BIGIP user guide for specific options for each monitor type. Typically, tmsh arg names are used. Creating Complex Args Profiles can get pretty complicated in terms of the amount of possible config options. Use the following shorthand to create complex arguments such as lists, dictionaries, and lists of dictionaries. An option is also provided to pass raw json as well. lists ``[i,i,i]``: ``param='item1,item2,item3'`` Dictionary ``[k:v,k:v,k,v]``: ``param='key-1:val-1,key-2:val2,key-3:va-3'`` List of Dictionaries ``[k:v,k:v|k:v,k:v|k:v,k:v]``: ``param='key-1:val-1,key-2:val-2|key-1:val-1,key-2:val-2|key-1:val-1,key-2:val-2'`` JSON: ``'j{ ... }j'``: ``cert-key-chain='j{ \u0026quot;default\u0026quot;: { \u0026quot;cert\u0026quot;: \u0026quot;default.crt\u0026quot;, \u0026quot;chain\u0026quot;: \u0026quot;default.crt\u0026quot;, \u0026quot;key\u0026quot;: \u0026quot;default.key\u0026quot; } }j'`` Escaping Delimiters: Use ``\\,`` or ``\\:`` or ``\\|`` to escape characters which shouldn't be treated as delimiters i.e. ``ciphers='DEFAULT\\:!SSLv3'`` CLI Example: salt '*' bigip.modify_profile bigip admin admin http my-http-profile defaultsFrom='/Common/http' salt '*' bigip.modify_profile bigip admin admin http my-http-profile defaultsFrom='/Common/http' \\ enforcement=maxHeaderCount:3200,maxRequests:10 salt '*' bigip.modify_profile bigip admin admin client-ssl my-client-ssl-1 retainCertificate=false \\ ciphers='DEFAULT\\:!SSLv3' cert_key_chain='j{ \u0026quot;default\u0026quot;: { \u0026quot;cert\u0026quot;: \u0026quot;default.crt\u0026quot;, \u0026quot;chain\u0026quot;: \u0026quot;default.crt\u0026quot;, \u0026quot;key\u0026quot;: \u0026quot;default.key\u0026quot; } }j' bigip.modify_virtual:\nA function to connect to a bigip device and modify an existing virtual server. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password name The name of the virtual to modify destination [ [virtual_address_name:port] | [ipv4:port] | [ipv6.port] ] pool [ [pool_name] | none] address_status [yes | no] auto_lasthop [default | enabled | disabled ] bwc_policy [none] | string] cmp_enabled [yes | no] dhcp_relay [yes | no} connection_limit [integer] description [string] state [disabled | enabled] fallback_persistence [none | [profile name] ] flow_eviction_policy [none | [eviction policy name] ] gtm_score [integer] ip_forward [yes | no] ip_protocol [any | protocol] internal [yes | no] twelve_forward (12-forward) [yes | no] last_hop-pool [ [pool_name] | none] mask { [ipv4] | [ipv6] } mirror { [disabled | enabled | none] } nat64 [enabled | disabled] persist [none | profile1,profile2,profile3 ... ] profiles [none | default | profile1,profile2,profile3 ... ] policies [none | default | policy1,policy2,policy3 ... ] rate_class [name] rate_limit [integer] rate_limitr_mode [destination | object | object-destination | object-source | object-source-destination | source | source-destination] rate_limit_dst [integer] rate_limit_src [integer] rules [none | [rule_one,rule_two ...] ] related_rules [none | [rule_one,rule_two ...] ] reject [yes | no] source { [ipv4[/prefixlen]] | [ipv6[/prefixlen]] } source_address_translation [none | snat:pool_name | lsn | automap ] source_port [change | preserve | preserve-strict] state [enabled | disable] traffic_classes [none | default | class_one,class_two ... ] translate_address [enabled | disabled] translate_port [enabled | disabled] vlans [none | default | [enabled|disabled]:vlan1,vlan2,vlan3 ... ] CLI Example: salt '*' bigip.modify_virtual bigip admin admin my-virtual source_address_translation=none salt '*' bigip.modify_virtual bigip admin admin my-virtual rules=my-rule,my-other-rule bigip.replace_pool_members:\nA function to connect to a bigip device and replace members of an existing pool with new members. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password name The name of the pool to modify members List of comma delimited pool members to replace existing members with. i.e. 10.1.1.1:80,10.1.1.2:80,10.1.1.3:80 CLI Example: salt '*' bigip.replace_pool_members bigip admin admin my-pool 10.2.2.1:80,10.2.2.2:80,10.2.2.3:80 bigip.start_transaction:\nA function to connect to a bigip device and start a new transaction. hostname The host/address of the bigip device username The iControl REST username password The iControl REST password label The name / alias for this transaction. The actual transaction id will be stored within a grain called ``bigip_f5_trans:\u0026lt;label\u0026gt;`` CLI Example: salt '*' bigip.start_transaction bigip admin admin my_transaction bridge.add:\nCreates a bridge CLI Example: salt '*' bridge.add br0 bridge.addif:\nAdds an interface to a bridge CLI Example: salt '*' bridge.addif br0 eth0 bridge.delete:\nDeletes a bridge CLI Example: salt '*' bridge.delete br0 bridge.delif:\nRemoves an interface from a bridge CLI Example: salt '*' bridge.delif br0 eth0 bridge.find_interfaces:\nReturns the bridge to which the interfaces are bond to CLI Example: salt '*' bridge.find_interfaces eth0 [eth1...] bridge.interfaces:\nReturns interfaces attached to a bridge CLI Example: salt '*' bridge.interfaces br0 bridge.list:\nReturns the machine's bridges list CLI Example: salt '*' bridge.list bridge.show:\nReturns bridges interfaces along with enslaved physical interfaces. If no interface is given, all bridges are shown, else only the specified bridge values are returned. CLI Example: salt '*' bridge.show salt '*' bridge.show br0 bridge.stp:\nSets Spanning Tree Protocol state for a bridge CLI Example: salt '*' bridge.stp br0 enable salt '*' bridge.stp br0 disable For BSD-like operating systems, it is required to add the interface on which to enable the STP. CLI Example: salt '*' bridge.stp bridge0 enable fxp0 salt '*' bridge.stp bridge0 disable fxp0 btrfs.add:\nAdd a devices to a BTRFS filesystem. General options: * **nodiscard**: Do not perform whole device TRIM * **force**: Force overwrite existing filesystem on the disk CLI Example: salt '*' btrfs.add /mountpoint /dev/sda1 /dev/sda2 btrfs.convert:\nConvert ext2/3/4 to BTRFS. Device should be mounted. Filesystem can be converted temporarily so the further processing and rollback is possible, or permanently, where previous extended filesystem image gets deleted. Please note, permanent conversion takes a while as BTRFS filesystem needs to be properly rebalanced afterwards. General options: * **permanent**: Specify if the migration should be permanent (false by default) * **keeplf**: Keep ``lost+found`` of the partition (removed by default, but still in the image, if not permanent migration) CLI Example: salt '*' btrfs.convert /dev/sda1 salt '*' btrfs.convert /dev/sda1 permanent=True btrfs.defragment:\nDefragment mounted BTRFS filesystem. In order to defragment a filesystem, device should be properly mounted and writable. If passed a device name, then defragmented whole filesystem, mounted on in. If passed a moun tpoint of the filesystem, then only this mount point is defragmented. CLI Example: salt '*' btrfs.defragment /dev/sda1 salt '*' btrfs.defragment /path/on/filesystem btrfs.delete:\nRemove devices from a BTRFS filesystem. CLI Example: salt '*' btrfs.delete /mountpoint /dev/sda1 /dev/sda2 btrfs.devices:\nGet known BTRFS formatted devices on the system. CLI Example: salt '*' btrfs.devices btrfs.features:\nList currently available BTRFS features. CLI Example: salt '*' btrfs.mkfs_features btrfs.info:\nGet BTRFS filesystem information. CLI Example: salt '*' btrfs.info /dev/sda1 btrfs.mkfs:\nCreate a file system on the specified device. By default wipes out with force. General options: * **allocsize**: Specify the BTRFS offset from the start of the device. * **bytecount**: Specify the size of the resultant filesystem. * **nodesize**: Node size. * **leafsize**: Specify the nodesize, the tree block size in which btrfs stores data. * **noforce**: Prevent force overwrite when an existing filesystem is detected on the device. * **sectorsize**: Specify the sectorsize, the minimum data block allocation unit. * **nodiscard**: Do not perform whole device TRIM operation by default. * **uuid**: Pass UUID or pass True to generate one. Options: * **dto**: (raid0|raid1|raid5|raid6|raid10|single|dup) Specify how the data must be spanned across the devices specified. * **mto**: (raid0|raid1|raid5|raid6|raid10|single|dup) Specify how metadata must be spanned across the devices specified. * **fts**: Features (call ``salt \u0026lt;host\u0026gt; btrfs.features`` for full list of available features) See the ``mkfs.btrfs(8)`` manpage for a more complete description of corresponding options description. CLI Example: salt '*' btrfs.mkfs /dev/sda1 salt '*' btrfs.mkfs /dev/sda1 noforce=True btrfs.properties:\nList properties for given btrfs object. The object can be path of BTRFS device, mount point, or any directories/files inside the BTRFS filesystem. General options: * **type**: Possible types are s[ubvol], f[ilesystem], i[node] and d[evice]. * **force**: Force overwrite existing filesystem on the disk * **set**: \u0026lt;key=value,key1=value1...\u0026gt; Options for a filesystem properties. CLI Example: salt '*' btrfs.properties /mountpoint salt '*' btrfs.properties /dev/sda1 type=subvol set='ro=false,label=\u0026quot;My Storage\u0026quot;' btrfs.resize:\nResize filesystem. General options: * **mountpoint**: Specify the BTRFS mountpoint to resize. * **size**: ([+/-]\u0026lt;newsize\u0026gt;[kKmMgGtTpPeE]|max) Specify the new size of the target. CLI Example: salt '*' btrfs.resize /mountpoint size=+1g salt '*' btrfs.resize /dev/sda1 size=max btrfs.subvolume_create:\nCreate subvolume `name` in `dest`. Return True if the subvolume is created, False is the subvolume is already there. name Name of the new subvolume dest If not given, the subvolume will be created in the current directory, if given will be in /dest/name qgroupids Add the newly created subcolume to a qgroup. This parameter is a list CLI Example: salt '*' btrfs.subvolume_create var salt '*' btrfs.subvolume_create var dest=/mnt salt '*' btrfs.subvolume_create var qgroupids='[200]' btrfs.subvolume_delete:\nDelete the subvolume(s) from the filesystem The user can remove one single subvolume (name) or multiple of then at the same time (names). One of the two parameters needs to specified. Please, refer to the documentation to understand the implication on the transactions, and when the subvolume is really deleted. Return True if the subvolume is deleted, False is the subvolume was already missing. name Name of the subvolume to remove names List of names of subvolumes to remove commit * 'after': Wait for transaction commit at the end * 'each': Wait for transaction commit after each delete CLI Example: salt '*' btrfs.subvolume_delete /var/volumes/tmp salt '*' btrfs.subvolume_delete /var/volumes/tmp commit=after btrfs.subvolume_exists:\nCheck if a subvolume is present in the filesystem. path Mount point for the subvolume (full path) CLI Example: salt '*' btrfs.subvolume_exists /mnt/var btrfs.subvolume_find_new:\nList the recently modified files in a subvolume name Name of the subvolume last_gen Last transid marker from where to compare CLI Example: salt '*' btrfs.subvolume_find_new /var/volumes/tmp 1024 btrfs.subvolume_get_default:\nGet the default subvolume of the filesystem path path Mount point for the subvolume CLI Example: salt '*' btrfs.subvolume_get_default /var/volumes/tmp btrfs.subvolume_list:\nList the subvolumes present in the filesystem. path Mount point for the subvolume parent_id Print parent ID absolute Print all the subvolumes in the filesystem and distinguish between absolute and relative path with respect to the given \u0026lt;path\u0026gt; ogeneration Print the ogeneration of the subvolume generation Print the generation of the subvolume subvolumes Print only subvolumes below specified \u0026lt;path\u0026gt; uuid Print the UUID of the subvolume parent_uuid Print the parent uuid of subvolumes (and snapshots) sent_subvolume_uuid Print the UUID of the sent subvolume, where the subvolume is the result of a receive operation snapshots Only snapshot subvolumes in the filesystem will be listed readonly Only readonly subvolumes in the filesystem will be listed deleted Only deleted subvolumens that are ye not cleaned generation_cmp List subvolumes in the filesystem that its generation is \u0026gt;=, \u0026lt;= or = value. '+' means \u0026gt;= value, '-' means \u0026lt;= value, If there is neither '+' nor '-', it means = value ogeneration_cmp List subvolumes in the filesystem that its ogeneration is \u0026gt;=, \u0026lt;= or = value sort List subvolumes in order by specified items. Possible values: * rootid * gen * ogen * path You can add '+' or '-' in front of each items, '+' means ascending, '-' means descending. The default is ascending. You can combite it in a list. CLI Example: salt '*' btrfs.subvolume_list /var/volumes/tmp salt '*' btrfs.subvolume_list /var/volumes/tmp path=True salt '*' btrfs.subvolume_list /var/volumes/tmp sort='[-rootid]' btrfs.subvolume_set_default:\nSet the subvolume as default subvolid ID of the new default subvolume path Mount point for the filesystem CLI Example: salt '*' btrfs.subvolume_set_default 257 /var/volumes/tmp btrfs.subvolume_show:\nShow information of a given subvolume path Mount point for the filesystem CLI Example: salt '*' btrfs.subvolume_show /var/volumes/tmp btrfs.subvolume_snapshot:\nCreate a snapshot of a source subvolume source Source subvolume from where to create the snapshot dest If only dest is given, the subvolume will be named as the basename of the source name Name of the snapshot read_only Create a read only snapshot CLI Example: salt '*' btrfs.subvolume_snapshot /var/volumes/tmp dest=/.snapshots salt '*' btrfs.subvolume_snapshot /var/volumes/tmp name=backup btrfs.subvolume_sync:\nWait until given subvolume are completely removed from the filesystem after deletion. path Mount point for the filesystem subvolids List of IDs of subvolumes to wait for sleep Sleep N seconds betwenn checks (default: 1) CLI Example: salt '*' btrfs.subvolume_sync /var/volumes/tmp salt '*' btrfs.subvolume_sync /var/volumes/tmp subvolids='[257]' btrfs.usage:\nShow in which disk the chunks are allocated. CLI Example: salt '*' btrfs.usage /your/mountpoint btrfs.version:\nReturn BTRFS version. CLI Example: salt '*' btrfs.version buildout.bootstrap:\nRun the buildout bootstrap dance (python bootstrap.py). directory directory to execute in config alternative buildout configuration file to use runas User used to run buildout as env environment variables to set when running buildout_ver force a specific buildout version (1 | 2) test_release buildout accept test release offline are we executing buildout in offline mode distribute Forcing use of distribute new_st Forcing use of setuptools \u0026gt;= 0.7 python path to a python executable to use in place of default (salt one) onlyif Only execute cmd if statement on the host return 0 unless Do not execute cmd if statement on the host return 0 use_vt Use the new salt VT to stream output [experimental] CLI Example: salt '*' buildout.bootstrap /srv/mybuildout buildout.buildout:\nRun buildout in a directory. directory directory to execute in config buildout config to use parts specific buildout parts to run runas user used to run buildout as env environment variables to set when running buildout_ver force a specific buildout version (1 | 2) test_release buildout accept test release new_st Forcing use of setuptools \u0026gt;= 0.7 distribute use distribute over setuptools if possible offline does buildout run offline python python to use debug run buildout with -D debug flag onlyif Only execute cmd if statement on the host return 0 unless Do not execute cmd if statement on the host return 0 newest run buildout in newest mode verbose run buildout in verbose mode (-vvvvv) use_vt Use the new salt VT to stream output [experimental] CLI Example: salt '*' buildout.buildout /srv/mybuildout buildout.run_buildout:\nRun a buildout in a directory. directory directory to execute in config alternative buildout configuration file to use offline are we executing buildout in offline mode runas user used to run buildout as env environment variables to set when running onlyif Only execute cmd if statement on the host return 0 unless Do not execute cmd if statement on the host return 0 newest run buildout in newest mode force run buildout unconditionally verbose run buildout in verbose mode (-vvvvv) use_vt Use the new salt VT to stream output [experimental] CLI Example: salt '*' buildout.run_buildout /srv/mybuildout buildout.upgrade_bootstrap:\nUpgrade current bootstrap.py with the last released one. Indeed, when we first run a buildout, a common source of problem is to have a locally stale bootstrap, we just try to grab a new copy directory directory to execute in offline are we executing buildout in offline mode buildout_ver forcing to use a specific buildout version (1 | 2) onlyif Only execute cmd if statement on the host return 0 unless Do not execute cmd if statement on the host return 0 CLI Example: salt '*' buildout.upgrade_bootstrap /srv/mybuildout chroot.apply:\nApply an state inside a chroot. This function will call `chroot.highstate` or `chroot.sls` based on the arguments passed to this function. It exists as a more intuitive way of applying states. root Path to the chroot environment For a formal description of the possible parameters accepted in this function, check `state.apply_` documentation. CLI Example: salt myminion chroot.apply /chroot salt myminion chroot.apply /chroot stuff salt myminion chroot.apply /chroot stuff pillar='{\u0026quot;foo\u0026quot;: \u0026quot;bar\u0026quot;}' chroot.call:\nExecutes a Salt function inside a chroot environment. The chroot does not need to have Salt installed, but Python is required. root Path to the chroot environment function Salt execution module function CLI Example: salt myminion chroot.call /chroot test.ping salt myminion chroot.call /chroot ssh.set_auth_key user key=mykey chroot.create:\nCreate a basic chroot environment. Note that this environment is not functional. The caller needs to install the minimal required binaries, including Python if chroot.call is called. root Path to the chroot environment CLI Example: salt myminion chroot.create /chroot chroot.exist:\nReturn True if the chroot environment is present. root Path to the chroot environment CLI Example: salt myminion chroot.exist /chroot chroot.highstate:\nRetrieve the state data from the salt master for this minion and execute it inside the chroot. root Path to the chroot environment For a formal description of the possible parameters accepted in this function, check `state.highstate` documentation. CLI Example: salt myminion chroot.highstate /chroot salt myminion chroot.highstate /chroot pillar='{\u0026quot;foo\u0026quot;: \u0026quot;bar\u0026quot;}' chroot.in_chroot:\nReturn True if the process is inside a chroot jail New in version 3004 CLI Example: salt myminion chroot.in_chroot chroot.sls:\nExecute the states in one or more SLS files inside the chroot. root Path to the chroot environment saltenv Specify a salt fileserver environment to be used when applying states mods List of states to execute test Run states in test-only (dry-run) mode exclude Exclude specific states from execution. Accepts a list of sls names, a comma-separated string of sls names, or a list of dictionaries containing ``sls`` or ``id`` keys. Glob-patterns may be used to match multiple states. For a formal description of the possible parameters accepted in this function, check `state.sls` documentation. CLI Example: salt '*' chroot.sls /chroot stuff pillar='{\u0026quot;foo\u0026quot;: \u0026quot;bar\u0026quot;}' cloud.action:\nExecute a single action on the given provider/instance CLI Example: salt minionname cloud.action start instance=myinstance salt minionname cloud.action stop instance=myinstance salt minionname cloud.action show_image provider=my-ec2-config image=ami-1624987f cloud.create:\nCreate an instance using Salt Cloud CLI Example: salt minionname cloud.create my-ec2-config myinstance image=ami-1624987f size='t1.micro' ssh_username=ec2-user securitygroup=default delvol_on_destroy=True cloud.destroy:\nDestroy the named VM(s) CLI Example: salt minionname cloud.destroy myinstance cloud.full_query:\nList all available cloud provider data CLI Example: salt minionname cloud.full_query cloud.get_instance:\nReturn details on an instance. Similar to the cloud action show_instance but returns only the instance details. CLI Example: salt minionname cloud.get_instance myinstance SLS Example: {{ salt['cloud.get_instance']('myinstance')['mac_address'] }} cloud.has_instance:\nReturn true if the instance is found on a provider CLI Example: salt minionname cloud.has_instance myinstance cloud.list_images:\nList cloud provider images for the given providers CLI Example: salt minionname cloud.list_images my-gce-config cloud.list_locations:\nList cloud provider locations for the given providers CLI Example: salt minionname cloud.list_locations my-gce-config cloud.list_sizes:\nList cloud provider sizes for the given providers CLI Example: salt minionname cloud.list_sizes my-gce-config cloud.map_run:\nExecute a salt cloud map file Cloud Map data can be retrieved from several sources: - a local file (provide the path to the file to the 'path' argument) - a JSON-formatted map directly (provide the appropriately formatted to using the 'map_data' argument) - the Salt Pillar (provide the map name of under 'pillar:cloud:maps' to the 'map_pillar' argument) Note: Only one of these sources can be read at a time. The options are listed in their order of precedence. CLI Examples: salt minionname cloud.map_run /path/to/cloud.map salt minionname cloud.map_run path=/path/to/cloud.map salt minionname cloud.map_run map_pillar='\u0026lt;map_pillar\u0026gt;' Changed in version 2018.3.1 salt minionname cloud.map_run map_data='\u0026lt;actual map data\u0026gt;' cloud.network_create:\nCreate private network CLI Example: salt minionname cloud.network_create my-nova names=['salt'] cidr='192.168.100.0/24' cloud.network_list:\nList private networks CLI Example: salt minionname cloud.network_list my-nova cloud.profile:\nSpin up an instance using Salt Cloud CLI Example: salt minionname cloud.profile my-gce-config myinstance cloud.query:\nList cloud provider data for all providers CLI Examples: salt minionname cloud.query salt minionname cloud.query list_nodes_full salt minionname cloud.query list_nodes_select cloud.select_query:\nList selected nodes CLI Example: salt minionname cloud.select_query cloud.virtual_interface_create:\nAttach private interfaces to a server CLI Example: salt minionname cloud.virtual_interface_create my-nova names=['salt-master'] net_name='salt' cloud.virtual_interface_list:\nList virtual interfaces on a server CLI Example: salt minionname cloud.virtual_interface_list my-nova names=['salt-master'] cloud.volume_attach:\nAttach volume to a server CLI Example: salt minionname cloud.volume_attach my-nova myblock server_name=myserver device='/dev/xvdf' cloud.volume_create:\nCreate volume CLI Example: salt minionname cloud.volume_create my-nova myblock size=100 voltype=SSD cloud.volume_delete:\nDelete volume CLI Example: salt minionname cloud.volume_delete my-nova myblock cloud.volume_detach:\nDetach volume from a server CLI Example: salt minionname cloud.volume_detach my-nova myblock server_name=myserver cloud.volume_list:\nList block storage volumes CLI Example: salt minionname cloud.volume_list my-nova cmd.exec_code:\nPass in two strings, the first naming the executable language, aka - python2, python3, ruby, perl, lua, etc. the second string containing the code you wish to execute. The stdout will be returned. All parameters from :mod:`cmd.run_all \u0026lt;salt.modules.cmdmod.run_all\u0026gt;` except python_shell can be used. CLI Example: salt '*' cmd.exec_code ruby 'puts \u0026quot;cheese\u0026quot;' salt '*' cmd.exec_code ruby 'puts \u0026quot;cheese\u0026quot;' args='[\u0026quot;arg1\u0026quot;, \u0026quot;arg2\u0026quot;]' env='{\u0026quot;FOO\u0026quot;: \u0026quot;bar\u0026quot;}' cmd.exec_code_all:\nPass in two strings, the first naming the executable language, aka - python2, python3, ruby, perl, lua, etc. the second string containing the code you wish to execute. All cmd artifacts (stdout, stderr, retcode, pid) will be returned. All parameters from :mod:`cmd.run_all \u0026lt;salt.modules.cmdmod.run_all\u0026gt;` except python_shell can be used. CLI Example: salt '*' cmd.exec_code_all ruby 'puts \u0026quot;cheese\u0026quot;' salt '*' cmd.exec_code_all ruby 'puts \u0026quot;cheese\u0026quot;' args='[\u0026quot;arg1\u0026quot;, \u0026quot;arg2\u0026quot;]' env='{\u0026quot;FOO\u0026quot;: \u0026quot;bar\u0026quot;}' cmd.has_exec:\nReturns true if the executable is available on the minion, false otherwise CLI Example: salt '*' cmd.has_exec cat cmd.powershell:\nExecute the passed PowerShell command and return the output as a dictionary. Other ``cmd.*`` functions (besides ``cmd.powershell_all``) return the raw text output of the command. This function appends ``| ConvertTo-JSON`` to the command and then parses the JSON into a Python dictionary. If you want the raw textual result of your PowerShell command you should use ``cmd.run`` with the ``shell=powershell`` option. For example: salt '*' cmd.run '$PSVersionTable.CLRVersion' shell=powershell salt '*' cmd.run 'Get-NetTCPConnection' shell=powershell New in version 2016.3.0 Warning: This passes the cmd argument directly to PowerShell without any further processing! Be absolutely sure that you have properly sanitized the command passed to this function and do not use untrusted inputs. In addition to the normal ``cmd.run`` parameters, this command offers the ``depth`` parameter to change the Windows default depth for the ``ConvertTo-JSON`` powershell command. The Windows default is 2. If you need more depth, set that here. Note: For some commands, setting the depth to a value greater than 4 greatly increases the time it takes for the command to return and in many cases returns useless data. :param str cmd: The powershell command to run. :param str cwd: The directory from which to execute the command. Defaults to the home directory of the user specified by ``runas`` (or the user under which Salt is running if ``runas`` is not specified). :param str stdin: A string of standard input can be specified for the command to be run using the ``stdin`` parameter. This can be useful in cases where sensitive information must be read from standard input. :param str runas: Specify an alternate user to run the command. The default behaviour is to run as the user under which Salt is running. If running on a Windows minion you must also use the ``password`` argument, and the target user account must be in the Administrators group. :param str password: Windows only. Required when specifying ``runas``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.0 :param str shell: Specify an alternate shell. Defaults to \u0026quot;powershell\u0026quot;. Can also use \u0026quot;pwsh\u0026quot; for powershell core if present on the system :param bool python_shell: If False, let python handle the positional arguments. Set to True to use shell features, such as pipes or redirection. :param dict env: Environment variables to be set prior to execution. Note: When passing environment variables on the CLI, they should be passed as the string representation of a dictionary. salt myminion cmd.powershell 'some command' env='{\u0026quot;FOO\u0026quot;: \u0026quot;bar\u0026quot;}' Note: When using environment variables on Window's, case-sensitivity matters, i.e. Window's uses `Path` as opposed to `PATH` for other systems. :param bool clean_env: Attempt to clean out all other shell environment variables and set only those provided in the 'env' argument to this function. :param str template: If this setting is applied then the named templating engine will be used to render the downloaded file. Currently jinja, mako, and wempy are supported. :param bool rstrip: Strip all whitespace off the end of output before it is returned. :param str umask: The umask (in octal) to use when running the command. :param str output_encoding: Control the encoding used to decode the command's output. Note: This should not need to be used in most cases. By default, Salt will try to use the encoding detected from the system locale, and will fall back to UTF-8 if this fails. This should only need to be used in cases where the output of the command is encoded in something other than the system locale or UTF-8. To see the encoding Salt has detected from the system locale, check the `locale` line in the output of :py:func:`test.versions_report \u0026lt;salt.modules.test.versions_report\u0026gt;`. New in version 2018.3.0 :param str output_loglevel: Control the loglevel at which the output from the command is logged to the minion log. Note: The command being run will still be logged at the ``debug`` loglevel regardless, unless ``quiet`` is used for this value. :param bool ignore_retcode: If the exit code of the command is nonzero, this is treated as an error condition, and the output from the command will be logged to the minion log. However, there are some cases where programs use the return code for signaling and a nonzero exit code doesn't necessarily mean failure. Pass this argument as ``True`` to skip logging the output if the command has a nonzero exit code. :param bool hide_output: If ``True``, suppress stdout and stderr in the return data. Note: This is separate from ``output_loglevel``, which only handles how Salt logs to the minion log. New in version 2018.3.0 :param int timeout: A timeout in seconds for the executed process to return. :param bool use_vt: Use VT utils (saltstack) to stream the command output more interactively to the console and the logs. This is experimental. :param bool reset_system_locale: Resets the system locale :param str saltenv: The salt environment to use. Default is 'base' :param int depth: The number of levels of contained objects to be included. Default is 2. Values greater than 4 seem to greatly increase the time it takes for the command to complete for some commands. eg: ``dir`` New in version 2016.3.4 :param bool encode_cmd: Encode the command before executing. Use in cases where characters may be dropped or incorrectly converted when executed. Default is False. :param list success_retcodes: This parameter will allow a list of non-zero return codes that should be considered a success. If the return code returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 2019.2.0 :param list success_stdout: This parameter will allow a list of strings that when found in standard out should be considered a success. If stdout returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 3004 :param list success_stderr: This parameter will allow a list of strings that when found in standard error should be considered a success. If stderr returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 3004 :param bool stdin_raw_newlines: False If ``True``, Salt will not automatically convert the characters ``\\n`` present in the ``stdin`` value to newlines. New in version 2019.2.0 :returns: :dict: A dictionary of data returned by the powershell command. CLI Example: salt '*' cmd.powershell \u0026quot;$PSVersionTable.CLRVersion\u0026quot; cmd.powershell_all:\nExecute the passed PowerShell command and return a dictionary with a result field representing the output of the command, as well as other fields showing us what the PowerShell invocation wrote to ``stderr``, the process id, and the exit code of the invocation. This function appends ``| ConvertTo-JSON`` to the command before actually invoking powershell. An unquoted empty string is not valid JSON, but it's very normal for the Powershell output to be exactly that. Therefore, we do not attempt to parse empty Powershell output (which would result in an exception). Instead we treat this as a special case and one of two things will happen: - If the value of the ``force_list`` parameter is ``True``, then the ``result`` field of the return dictionary will be an empty list. - If the value of the ``force_list`` parameter is ``False``, then the return dictionary **will not have a result key added to it**. We aren't setting ``result`` to ``None`` in this case, because ``None`` is the Python representation of \u0026quot;null\u0026quot; in JSON. (We likewise can't use ``False`` for the equivalent reason.) If Powershell's output is not an empty string and Python cannot parse its content, then a ``CommandExecutionError`` exception will be raised. If Powershell's output is not an empty string, Python is able to parse its content, and the type of the resulting Python object is other than ``list`` then one of two things will happen: - If the value of the ``force_list`` parameter is ``True``, then the ``result`` field will be a singleton list with the Python object as its sole member. - If the value of the ``force_list`` parameter is ``False``, then the value of ``result`` will be the unmodified Python object. If Powershell's output is not an empty string, Python is able to parse its content, and the type of the resulting Python object is ``list``, then the value of ``result`` will be the unmodified Python object. The ``force_list`` parameter has no effect in this case. Note: An example of why the ``force_list`` parameter is useful is as follows: The Powershell command ``dir x | Convert-ToJson`` results in - no output when x is an empty directory. - a dictionary object when x contains just one item. - a list of dictionary objects when x contains multiple items. By setting ``force_list`` to ``True`` we will always end up with a list of dictionary items, representing files, no matter how many files x contains. Conversely, if ``force_list`` is ``False``, we will end up with no ``result`` key in our return dictionary when x is an empty directory, and a dictionary object when x contains just one file. If you want a similar function but with a raw textual result instead of a Python dictionary, you should use ``cmd.run_all`` in combination with ``shell=powershell``. The remaining fields in the return dictionary are described in more detail in the ``Returns`` section. Example: salt '*' cmd.run_all '$PSVersionTable.CLRVersion' shell=powershell salt '*' cmd.run_all 'Get-NetTCPConnection' shell=powershell New in version 2018.3.0 Warning: This passes the cmd argument directly to PowerShell without any further processing! Be absolutely sure that you have properly sanitized the command passed to this function and do not use untrusted inputs. In addition to the normal ``cmd.run`` parameters, this command offers the ``depth`` parameter to change the Windows default depth for the ``ConvertTo-JSON`` powershell command. The Windows default is 2. If you need more depth, set that here. Note: For some commands, setting the depth to a value greater than 4 greatly increases the time it takes for the command to return and in many cases returns useless data. :param str cmd: The powershell command to run. :param str cwd: The directory from which to execute the command. Defaults to the home directory of the user specified by ``runas`` (or the user under which Salt is running if ``runas`` is not specified). :param str stdin: A string of standard input can be specified for the command to be run using the ``stdin`` parameter. This can be useful in cases where sensitive information must be read from standard input. :param str runas: Specify an alternate user to run the command. The default behaviour is to run as the user under which Salt is running. If running on a Windows minion you must also use the ``password`` argument, and the target user account must be in the Administrators group. :param str password: Windows only. Required when specifying ``runas``. This parameter will be ignored on non-Windows platforms. :param str shell: Specify an alternate shell. Defaults to \u0026quot;powershell\u0026quot;. Can also use \u0026quot;pwsh\u0026quot; for powershell core if present on the system :param bool python_shell: If False, let python handle the positional arguments. Set to True to use shell features, such as pipes or redirection. :param dict env: Environment variables to be set prior to execution. Note: When passing environment variables on the CLI, they should be passed as the string representation of a dictionary. salt myminion cmd.powershell_all 'some command' env='{\u0026quot;FOO\u0026quot;: \u0026quot;bar\u0026quot;}' Note: When using environment variables on Window's, case-sensitivity matters, i.e. Window's uses `Path` as opposed to `PATH` for other systems. :param bool clean_env: Attempt to clean out all other shell environment variables and set only those provided in the 'env' argument to this function. :param str template: If this setting is applied then the named templating engine will be used to render the downloaded file. Currently jinja, mako, and wempy are supported. :param bool rstrip: Strip all whitespace off the end of output before it is returned. :param str umask: The umask (in octal) to use when running the command. :param str output_encoding: Control the encoding used to decode the command's output. Note: This should not need to be used in most cases. By default, Salt will try to use the encoding detected from the system locale, and will fall back to UTF-8 if this fails. This should only need to be used in cases where the output of the command is encoded in something other than the system locale or UTF-8. To see the encoding Salt has detected from the system locale, check the `locale` line in the output of :py:func:`test.versions_report \u0026lt;salt.modules.test.versions_report\u0026gt;`. New in version 2018.3.0 :param str output_loglevel: Control the loglevel at which the output from the command is logged to the minion log. Note: The command being run will still be logged at the ``debug`` loglevel regardless, unless ``quiet`` is used for this value. :param bool ignore_retcode: If the exit code of the command is nonzero, this is treated as an error condition, and the output from the command will be logged to the minion log. However, there are some cases where programs use the return code for signaling and a nonzero exit code doesn't necessarily mean failure. Pass this argument as ``True`` to skip logging the output if the command has a nonzero exit code. :param int timeout: A timeout in seconds for the executed process to return. :param bool use_vt: Use VT utils (saltstack) to stream the command output more interactively to the console and the logs. This is experimental. :param bool reset_system_locale: Resets the system locale :param bool ignore_retcode: If the exit code of the command is nonzero, this is treated as an error condition, and the output from the command will be logged to the minion log. However, there are some cases where programs use the return code for signaling and a nonzero exit code doesn't necessarily mean failure. Pass this argument as ``True`` to skip logging the output if the command has a nonzero exit code. :param str saltenv: The salt environment to use. Default is 'base' :param int depth: The number of levels of contained objects to be included. Default is 2. Values greater than 4 seem to greatly increase the time it takes for the command to complete for some commands. eg: ``dir`` :param bool encode_cmd: Encode the command before executing. Use in cases where characters may be dropped or incorrectly converted when executed. Default is False. :param bool force_list: The purpose of this parameter is described in the preamble of this function's documentation. Default value is False. :param list success_retcodes: This parameter will allow a list of non-zero return codes that should be considered a success. If the return code returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 2019.2.0 :param list success_stdout: This parameter will allow a list of strings that when found in standard out should be considered a success. If stdout returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 3004 :param list success_stderr: This parameter will allow a list of strings that when found in standard error should be considered a success. If stderr returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 3004 :param bool stdin_raw_newlines: False If ``True``, Salt will not automatically convert the characters ``\\n`` present in the ``stdin`` value to newlines. New in version 2019.2.0 :return: A dictionary with the following entries: result For a complete description of this field, please refer to this function's preamble. **This key will not be added to the dictionary when force_list is False and Powershell's output is the empty string.** stderr What the PowerShell invocation wrote to ``stderr``. pid The process id of the PowerShell invocation retcode This is the exit code of the invocation of PowerShell. If the final execution status (in PowerShell) of our command (with ``| ConvertTo-JSON`` appended) is ``False`` this should be non-0. Likewise if PowerShell exited with ``$LASTEXITCODE`` set to some non-0 value, then ``retcode`` will end up with this value. :rtype: dict CLI Example: salt '*' cmd.powershell_all \u0026quot;$PSVersionTable.CLRVersion\u0026quot; CLI Example: salt '*' cmd.powershell_all \u0026quot;dir mydirectory\u0026quot; force_list=True cmd.retcode:\nExecute a shell command and return the command's return code. :param str cmd: The command to run. ex: ``ls -lart /home`` :param str cwd: The directory from which to execute the command. Defaults to the home directory of the user specified by ``runas`` (or the user under which Salt is running if ``runas`` is not specified). :param str stdin: A string of standard input can be specified for the command to be run using the ``stdin`` parameter. This can be useful in cases where sensitive information must be read from standard input. :param str runas: Specify an alternate user to run the command. The default behaviour is to run as the user under which Salt is running. If running on a Windows minion you must also use the ``password`` argument, and the target user account must be in the Administrators group. Warning: For versions 2018.3.3 and above on macosx while using runas, to pass special characters to the command you need to escape the characters on the shell. Example: cmd.retcode 'echo '\\''h=\\\u0026quot;baz\\\u0026quot;'\\''' runas=macuser :param str password: Windows only. Required when specifying ``runas``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.0 :param str group: Group to run command as. Not currently supported on Windows. :param str shell: Specify an alternate shell. Defaults to the system's default shell. :param bool python_shell: If False, let python handle the positional arguments. Set to True to use shell features, such as pipes or redirection. :param dict env: Environment variables to be set prior to execution. Note: When passing environment variables on the CLI, they should be passed as the string representation of a dictionary. salt myminion cmd.retcode 'some command' env='{\u0026quot;FOO\u0026quot;: \u0026quot;bar\u0026quot;}' Note: When using environment variables on Window's, case-sensitivity matters, i.e. Window's uses `Path` as opposed to `PATH` for other systems. :param bool clean_env: Attempt to clean out all other shell environment variables and set only those provided in the 'env' argument to this function. :param str template: If this setting is applied then the named templating engine will be used to render the downloaded file. Currently jinja, mako, and wempy are supported. :param bool rstrip: Strip all whitespace off the end of output before it is returned. :param str umask: The umask (in octal) to use when running the command. :param str output_encoding: Control the encoding used to decode the command's output. Note: This should not need to be used in most cases. By default, Salt will try to use the encoding detected from the system locale, and will fall back to UTF-8 if this fails. This should only need to be used in cases where the output of the command is encoded in something other than the system locale or UTF-8. To see the encoding Salt has detected from the system locale, check the `locale` line in the output of :py:func:`test.versions_report \u0026lt;salt.modules.test.versions_report\u0026gt;`. New in version 2018.3.0 :param str output_loglevel: Control the loglevel at which the output from the command is logged to the minion log. Note: The command being run will still be logged at the ``debug`` loglevel regardless, unless ``quiet`` is used for this value. :param bool ignore_retcode: If the exit code of the command is nonzero, this is treated as an error condition, and the output from the command will be logged to the minion log. However, there are some cases where programs use the return code for signaling and a nonzero exit code doesn't necessarily mean failure. Pass this argument as ``True`` to skip logging the output if the command has a nonzero exit code. :param int timeout: A timeout in seconds for the executed process to return. :param bool use_vt: Use VT utils (saltstack) to stream the command output more interactively to the console and the logs. This is experimental. :rtype: int :rtype: None :returns: Return Code as an int or None if there was an exception. :param list success_retcodes: This parameter will allow a list of non-zero return codes that should be considered a success. If the return code returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 2019.2.0 :param list success_stdout: This parameter will allow a list of strings that when found in standard out should be considered a success. If stdout returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 3004 :param list success_stderr: This parameter will allow a list of strings that when found in standard error should be considered a success. If stderr returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 3004 :param bool stdin_raw_newlines: False If ``True``, Salt will not automatically convert the characters ``\\n`` present in the ``stdin`` value to newlines. New in version 2019.2.0 CLI Example: salt '*' cmd.retcode \u0026quot;file /bin/bash\u0026quot; The template arg can be set to 'jinja' or another supported template engine to render the command arguments before execution. For example: salt '*' cmd.retcode template=jinja \u0026quot;file {{grains.pythonpath[0]}}/python\u0026quot; A string of standard input can be specified for the command to be run using the ``stdin`` parameter. This can be useful in cases where sensitive information must be read from standard input. salt '*' cmd.retcode \u0026quot;grep f\u0026quot; stdin='one\\ntwo\\nthree\\nfour\\nfive\\n' cmd.run:\nExecute the passed command and return the output as a string :param str cmd: The command to run. ex: ``ls -lart /home`` :param str cwd: The directory from which to execute the command. Defaults to the home directory of the user specified by ``runas`` (or the user under which Salt is running if ``runas`` is not specified). :param str stdin: A string of standard input can be specified for the command to be run using the ``stdin`` parameter. This can be useful in cases where sensitive information must be read from standard input. :param str runas: Specify an alternate user to run the command. The default behaviour is to run as the user under which Salt is running. Warning: For versions 2018.3.3 and above on macosx while using runas, on linux while using run, to pass special characters to the command you need to escape the characters on the shell. Example: cmd.run 'echo '\\''h=\\\u0026quot;baz\\\u0026quot;'\\''' runas=macuser :param str group: Group to run command as. Not currently supported on Windows. :param str password: Windows only. Required when specifying ``runas``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.0 :param str shell: Specify an alternate shell. Defaults to the system's default shell. :param bool python_shell: If ``False``, let python handle the positional arguments. Set to ``True`` to use shell features, such as pipes or redirection. :param bool bg: If ``True``, run command in background and do not await or deliver its results New in version 2016.3.0 :param dict env: Environment variables to be set prior to execution. Note: When passing environment variables on the CLI, they should be passed as the string representation of a dictionary. salt myminion cmd.run 'some command' env='{\u0026quot;FOO\u0026quot;: \u0026quot;bar\u0026quot;}' Note: When using environment variables on Window's, case-sensitivity matters, i.e. Window's uses `Path` as opposed to `PATH` for other systems. :param bool clean_env: Attempt to clean out all other shell environment variables and set only those provided in the 'env' argument to this function. :param str prepend_path: $PATH segment to prepend (trailing ':' not necessary) to $PATH New in version 2018.3.0 :param str template: If this setting is applied then the named templating engine will be used to render the downloaded file. Currently jinja, mako, and wempy are supported. :param bool rstrip: Strip all whitespace off the end of output before it is returned. :param str umask: The umask (in octal) to use when running the command. :param str output_encoding: Control the encoding used to decode the command's output. Note: This should not need to be used in most cases. By default, Salt will try to use the encoding detected from the system locale, and will fall back to UTF-8 if this fails. This should only need to be used in cases where the output of the command is encoded in something other than the system locale or UTF-8. To see the encoding Salt has detected from the system locale, check the `locale` line in the output of :py:func:`test.versions_report \u0026lt;salt.modules.test.versions_report\u0026gt;`. New in version 2018.3.0 :param str output_loglevel: Control the loglevel at which the output from the command is logged to the minion log. Note: The command being run will still be logged at the ``debug`` loglevel regardless, unless ``quiet`` is used for this value. :param bool ignore_retcode: If the exit code of the command is nonzero, this is treated as an error condition, and the output from the command will be logged to the minion log. However, there are some cases where programs use the return code for signaling and a nonzero exit code doesn't necessarily mean failure. Pass this argument as ``True`` to skip logging the output if the command has a nonzero exit code. :param bool hide_output: If ``True``, suppress stdout and stderr in the return data. Note: This is separate from ``output_loglevel``, which only handles how Salt logs to the minion log. New in version 2018.3.0 :param int timeout: A timeout in seconds for the executed process to return. :param bool use_vt: Use VT utils (saltstack) to stream the command output more interactively to the console and the logs. This is experimental. :param bool redirect_stderr: If set to ``True``, then stderr will be redirected to stdout. This is helpful for cases where obtaining both the retcode and output is desired. Default is ``True`` New in version 3006.9 :param bool encoded_cmd: Specify if the supplied command is encoded. Only applies to shell 'powershell' and 'pwsh'. New in version 2018.3.0 Older versions of powershell seem to return raw xml data in the return. To avoid raw xml data in the return, prepend your command with the following before encoding: `$ProgressPreference='SilentlyContinue'; \u0026lt;your command\u0026gt;` The following powershell code block will encode the `Write-Output` command so that it will not have the raw xml data in the return: # target string $Command = '$ProgressPreference=\u0026quot;SilentlyContinue\u0026quot;; Write-Output \u0026quot;hello\u0026quot;' # Convert to Base64 encoded string $Encoded = [convert]::ToBase64String([System.Text.encoding]::Unicode.GetBytes($command)) Write-Output $Encoded :param bool raise_err: If ``True`` and the command has a nonzero exit code, a CommandExecutionError exception will be raised. Warning: This function does not process commands through a shell unless the python_shell flag is set to True. This means that any shell-specific functionality such as 'echo' or the use of pipes, redirection or \u0026amp;\u0026amp;, should either be migrated to cmd.shell or have the python_shell=True flag set here. The use of python_shell=True means that the shell will accept _any_ input including potentially malicious commands such as 'good_command;rm -rf /'. Be absolutely certain that you have sanitized your input prior to using python_shell=True :param list success_retcodes: This parameter will allow a list of non-zero return codes that should be considered a success. If the return code returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 2019.2.0 :param list success_stdout: This parameter will allow a list of strings that when found in standard out should be considered a success. If stdout returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 3004 :param list success_stderr: This parameter will allow a list of strings that when found in standard error should be considered a success. If stderr returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 3004 :param bool stdin_raw_newlines: False If ``True``, Salt will not automatically convert the characters ``\\\\n`` present in the ``stdin`` value to newlines. New in version 2019.2.0 :param int windows_codepage: 65001 Only applies to Windows: the minion uses `C:\\Windows\\System32\\chcp.com` to verify or set the code page before the command `cmd` is executed. Code page 65001 corresponds with UTF-8 and allows international localization of Windows. New in version 3002 CLI Example: salt '*' cmd.run \u0026quot;ls -l | awk '/foo/{print \\\\$2}'\u0026quot; The template arg can be set to 'jinja' or another supported template engine to render the command arguments before execution. For example: salt '*' cmd.run template=jinja \u0026quot;ls -l /tmp/{{grains.id}} | awk '/foo/{print \\\\$2}'\u0026quot; Specify an alternate shell with the shell parameter: salt '*' cmd.run \u0026quot;Get-ChildItem C:\\\\ \u0026quot; shell='powershell' A string of standard input can be specified for the command to be run using the ``stdin`` parameter. This can be useful in cases where sensitive information must be read from standard input. salt '*' cmd.run \u0026quot;grep f\u0026quot; stdin='one\\\\ntwo\\\\nthree\\\\nfour\\\\nfive\\\\n' If an equal sign (``=``) appears in an argument to a Salt command it is interpreted as a keyword argument in the format ``key=val``. That processing can be bypassed in order to pass an equal sign through to the remote shell command by manually specifying the kwarg: salt '*' cmd.run cmd='sed -e s/=/:/g' cmd.run_all:\nExecute the passed command and return a dict of return data :param str cmd: The command to run. ex: ``ls -lart /home`` :param str cwd: The directory from which to execute the command. Defaults to the home directory of the user specified by ``runas`` (or the user under which Salt is running if ``runas`` is not specified). :param str stdin: A string of standard input can be specified for the command to be run using the ``stdin`` parameter. This can be useful in cases where sensitive information must be read from standard input. :param str runas: Specify an alternate user to run the command. The default behaviour is to run as the user under which Salt is running. If running on a Windows minion you must also use the ``password`` argument, and the target user account must be in the Administrators group. Warning: For versions 2018.3.3 and above on macosx while using runas, to pass special characters to the command you need to escape the characters on the shell. Example: cmd.run_all 'echo '\\''h=\\\u0026quot;baz\\\u0026quot;'\\''' runas=macuser :param str password: Windows only. Required when specifying ``runas``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.0 :param str group: Group to run command as. Not currently supported on Windows. :param str shell: Specify an alternate shell. Defaults to the system's default shell. :param bool python_shell: If False, let python handle the positional arguments. Set to True to use shell features, such as pipes or redirection. :param dict env: Environment variables to be set prior to execution. Note: When passing environment variables on the CLI, they should be passed as the string representation of a dictionary. salt myminion cmd.run_all 'some command' env='{\u0026quot;FOO\u0026quot;: \u0026quot;bar\u0026quot;}' Note: When using environment variables on Window's, case-sensitivity matters, i.e. Window's uses `Path` as opposed to `PATH` for other systems. :param bool clean_env: Attempt to clean out all other shell environment variables and set only those provided in the 'env' argument to this function. :param str prepend_path: $PATH segment to prepend (trailing ':' not necessary) to $PATH New in version 2018.3.0 :param str template: If this setting is applied then the named templating engine will be used to render the downloaded file. Currently jinja, mako, and wempy are supported. :param bool rstrip: Strip all whitespace off the end of output before it is returned. :param str umask: The umask (in octal) to use when running the command. :param str output_encoding: Control the encoding used to decode the command's output. Note: This should not need to be used in most cases. By default, Salt will try to use the encoding detected from the system locale, and will fall back to UTF-8 if this fails. This should only need to be used in cases where the output of the command is encoded in something other than the system locale or UTF-8. To see the encoding Salt has detected from the system locale, check the `locale` line in the output of :py:func:`test.versions_report \u0026lt;salt.modules.test.versions_report\u0026gt;`. New in version 2018.3.0 :param str output_loglevel: Control the loglevel at which the output from the command is logged to the minion log. Note: The command being run will still be logged at the ``debug`` loglevel regardless, unless ``quiet`` is used for this value. :param bool ignore_retcode: If the exit code of the command is nonzero, this is treated as an error condition, and the output from the command will be logged to the minion log. However, there are some cases where programs use the return code for signaling and a nonzero exit code doesn't necessarily mean failure. Pass this argument as ``True`` to skip logging the output if the command has a nonzero exit code. :param bool hide_output: If ``True``, suppress stdout and stderr in the return data. Note: This is separate from ``output_loglevel``, which only handles how Salt logs to the minion log. New in version 2018.3.0 :param int timeout: A timeout in seconds for the executed process to return. :param bool use_vt: Use VT utils (saltstack) to stream the command output more interactively to the console and the logs. This is experimental. :param bool encoded_cmd: Specify if the supplied command is encoded. Only applies to shell 'powershell' and 'pwsh'. New in version 2018.3.0 Older versions of powershell seem to return raw xml data in the return. To avoid raw xml data in the return, prepend your command with the following before encoding: `$ProgressPreference='SilentlyContinue'; \u0026lt;your command\u0026gt;` The following powershell code block will encode the `Write-Output` command so that it will not have the raw xml data in the return: # target string $Command = '$ProgressPreference=\u0026quot;SilentlyContinue\u0026quot;; Write-Output \u0026quot;hello\u0026quot;' # Convert to Base64 encoded string $Encoded = [convert]::ToBase64String([System.Text.encoding]::Unicode.GetBytes($command)) Write-Output $Encoded :param bool redirect_stderr: If set to ``True``, then stderr will be redirected to stdout. This is helpful for cases where obtaining both the retcode and output is desired, but it is not desired to have the output separated into both stdout and stderr. New in version 2015.8.2 :param str password: Windows only. Required when specifying ``runas``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.0 :param bool bg: If ``True``, run command in background and do not await or deliver its results New in version 2016.3.6 :param list success_retcodes: This parameter will allow a list of non-zero return codes that should be considered a success. If the return code returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 2019.2.0 :param list success_stdout: This parameter will allow a list of strings that when found in standard out should be considered a success. If stdout returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 3004 :param list success_stderr: This parameter will allow a list of strings that when found in standard error should be considered a success. If stderr returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 3004 :param bool stdin_raw_newlines: False If ``True``, Salt will not automatically convert the characters ``\\n`` present in the ``stdin`` value to newlines. New in version 2019.2.0 CLI Example: salt '*' cmd.run_all \u0026quot;ls -l | awk '/foo/{print \\$2}'\u0026quot; The template arg can be set to 'jinja' or another supported template engine to render the command arguments before execution. For example: salt '*' cmd.run_all template=jinja \u0026quot;ls -l /tmp/{{grains.id}} | awk '/foo/{print \\$2}'\u0026quot; A string of standard input can be specified for the command to be run using the ``stdin`` parameter. This can be useful in cases where sensitive information must be read from standard input. salt '*' cmd.run_all \u0026quot;grep f\u0026quot; stdin='one\\ntwo\\nthree\\nfour\\nfive\\n' cmd.run_bg:\nNew in version 2016.3.0 Execute the passed command in the background and return its PID Note: If the init system is systemd and the backgrounded task should run even if the salt-minion process is restarted, prepend ``systemd-run --scope`` to the command. This will reparent the process in its own scope separate from salt-minion, and will not be affected by restarting the minion service. :param str cmd: The command to run. ex: ``ls -lart /home`` :param str cwd: The directory from which to execute the command. Defaults to the home directory of the user specified by ``runas`` (or the user under which Salt is running if ``runas`` is not specified). :param str group: Group to run command as. Not currently supported on Windows. :param str shell: Shell to execute under. Defaults to the system default shell. :param str output_encoding: Control the encoding used to decode the command's output. Note: This should not need to be used in most cases. By default, Salt will try to use the encoding detected from the system locale, and will fall back to UTF-8 if this fails. This should only need to be used in cases where the output of the command is encoded in something other than the system locale or UTF-8. To see the encoding Salt has detected from the system locale, check the `locale` line in the output of :py:func:`test.versions_report \u0026lt;salt.modules.test.versions_report\u0026gt;`. New in version 2018.3.0 :param str output_loglevel: Control the loglevel at which the output from the command is logged to the minion log. Note: The command being run will still be logged at the ``debug`` loglevel regardless, unless ``quiet`` is used for this value. :param bool ignore_retcode: If the exit code of the command is nonzero, this is treated as an error condition, and the output from the command will be logged to the minion log. However, there are some cases where programs use the return code for signaling and a nonzero exit code doesn't necessarily mean failure. Pass this argument as ``True`` to skip logging the output if the command has a nonzero exit code. :param str runas: Specify an alternate user to run the command. The default behaviour is to run as the user under which Salt is running. If running on a Windows minion you must also use the ``password`` argument, and the target user account must be in the Administrators group. Warning: For versions 2018.3.3 and above on macosx while using runas, to pass special characters to the command you need to escape the characters on the shell. Example: cmd.run_bg 'echo '\\''h=\\\u0026quot;baz\\\u0026quot;'\\''' runas=macuser :param str password: Windows only. Required when specifying ``runas``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.0 :param str shell: Specify an alternate shell. Defaults to the system's default shell. :param bool python_shell: If False, let python handle the positional arguments. Set to True to use shell features, such as pipes or redirection. :param dict env: Environment variables to be set prior to execution. Note: When passing environment variables on the CLI, they should be passed as the string representation of a dictionary. salt myminion cmd.run_bg 'some command' env='{\u0026quot;FOO\u0026quot;: \u0026quot;bar\u0026quot;}' Note: When using environment variables on Window's, case-sensitivity matters, i.e. Window's uses `Path` as opposed to `PATH` for other systems. :param bool clean_env: Attempt to clean out all other shell environment variables and set only those provided in the 'env' argument to this function. :param str prepend_path: $PATH segment to prepend (trailing ':' not necessary) to $PATH New in version 2018.3.0 :param str template: If this setting is applied then the named templating engine will be used to render the downloaded file. Currently jinja, mako, and wempy are supported. :param str umask: The umask (in octal) to use when running the command. :param int timeout: A timeout in seconds for the executed process to return. Warning: This function does not process commands through a shell unless the ``python_shell`` argument is set to ``True``. This means that any shell-specific functionality such as 'echo' or the use of pipes, redirection or \u0026amp;\u0026amp;, should either be migrated to cmd.shell or have the python_shell=True flag set here. The use of ``python_shell=True`` means that the shell will accept _any_ input including potentially malicious commands such as 'good_command;rm -rf /'. Be absolutely certain that you have sanitized your input prior to using ``python_shell=True``. :param list success_retcodes: This parameter will allow a list of non-zero return codes that should be considered a success. If the return code returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 2019.2.0 :param list success_stdout: This parameter will allow a list of strings that when found in standard out should be considered a success. If stdout returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 3004 :param list success_stderr: This parameter will allow a list of strings that when found in standard error should be considered a success. If stderr returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 3004 :param bool stdin_raw_newlines: False If ``True``, Salt will not automatically convert the characters ``\\\\n`` present in the ``stdin`` value to newlines. New in version 2019.2.0 CLI Example: salt '*' cmd.run_bg \u0026quot;fstrim-all\u0026quot; The template arg can be set to 'jinja' or another supported template engine to render the command arguments before execution. For example: salt '*' cmd.run_bg template=jinja \u0026quot;ls -l /tmp/{{grains.id}} | awk '/foo/{print \\\\$2}'\u0026quot; Specify an alternate shell with the shell parameter: salt '*' cmd.run_bg \u0026quot;Get-ChildItem C:\\\\ \u0026quot; shell='powershell' If an equal sign (``=``) appears in an argument to a Salt command it is interpreted as a keyword argument in the format ``key=val``. That processing can be bypassed in order to pass an equal sign through to the remote shell command by manually specifying the kwarg: salt '*' cmd.run_bg cmd='ls -lR / | sed -e s/=/:/g \u0026gt; /tmp/dontwait' cmd.run_chroot:\nNew in version 2014.7.0 This function runs :mod:`cmd.run_all \u0026lt;salt.modules.cmdmod.run_all\u0026gt;` wrapped within a chroot, with dev and proc mounted in the chroot :param str root: Path to the root of the jail to use. :param str stdin: A string of standard input can be specified for the command to be run using the ``stdin`` parameter. This can be useful in cases where sensitive information must be read from standard input.: :param str runas: User to run script as. :param str group: Group to run script as. :param str shell: Shell to execute under. Defaults to the system default shell. :param str cmd: The command to run. ex: ``ls -lart /home`` :param str cwd: The directory from which to execute the command. Defaults to the home directory of the user specified by ``runas`` (or the user under which Salt is running if ``runas`` is not specified). :parar str stdin: A string of standard input can be specified for the command to be run using the ``stdin`` parameter. This can be useful in cases where sensitive information must be read from standard input. :param str runas: Specify an alternate user to run the command. The default behaviour is to run as the user under which Salt is running. If running on a Windows minion you must also use the ``password`` argument, and the target user account must be in the Administrators group. :param str shell: Specify an alternate shell. Defaults to the system's default shell. :param bool python_shell: If False, let python handle the positional arguments. Set to True to use shell features, such as pipes or redirection. :param list binds: List of directories that will be exported inside the chroot with the bind option. New in version 3000 :param dict env: Environment variables to be set prior to execution. Note: When passing environment variables on the CLI, they should be passed as the string representation of a dictionary. salt myminion cmd.run_chroot 'some command' env='{\u0026quot;FOO\u0026quot;: \u0026quot;bar\u0026quot;}' Note: When using environment variables on Window's, case-sensitivity matters, i.e. Window's uses `Path` as opposed to `PATH` for other systems. :param dict clean_env: Attempt to clean out all other shell environment variables and set only those provided in the 'env' argument to this function. :param str template: If this setting is applied then the named templating engine will be used to render the downloaded file. Currently jinja, mako, and wempy are supported. :param bool rstrip: Strip all whitespace off the end of output before it is returned. :param str umask: The umask (in octal) to use when running the command. :param str output_encoding: Control the encoding used to decode the command's output. Note: This should not need to be used in most cases. By default, Salt will try to use the encoding detected from the system locale, and will fall back to UTF-8 if this fails. This should only need to be used in cases where the output of the command is encoded in something other than the system locale or UTF-8. To see the encoding Salt has detected from the system locale, check the `locale` line in the output of :py:func:`test.versions_report \u0026lt;salt.modules.test.versions_report\u0026gt;`. New in version 2018.3.0 :param str output_loglevel: Control the loglevel at which the output from the command is logged to the minion log. Note: The command being run will still be logged at the ``debug`` loglevel regardless, unless ``quiet`` is used for this value. :param bool ignore_retcode: If the exit code of the command is nonzero, this is treated as an error condition, and the output from the command will be logged to the minion log. However, there are some cases where programs use the return code for signaling and a nonzero exit code doesn't necessarily mean failure. Pass this argument as ``True`` to skip logging the output if the command has a nonzero exit code. :param bool hide_output: If ``True``, suppress stdout and stderr in the return data. Note: This is separate from ``output_loglevel``, which only handles how Salt logs to the minion log. New in version 2018.3.0 :param int timeout: A timeout in seconds for the executed process to return. :param bool use_vt: Use VT utils (saltstack) to stream the command output more interactively to the console and the logs. This is experimental. :param success_retcodes: This parameter will allow a list of non-zero return codes that should be considered a success. If the return code returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 2019.2.0 :param list success_stdout: This parameter will allow a list of strings that when found in standard out should be considered a success. If stdout returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 3004 :param list success_stderr: This parameter will allow a list of strings that when found in standard error should be considered a success. If stderr returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 3004 CLI Example: salt '*' cmd.run_chroot /var/lib/lxc/container_name/rootfs 'sh /tmp/bootstrap.sh' cmd.run_stderr:\nExecute a command and only return the standard error :param str cmd: The command to run. ex: ``ls -lart /home`` :param str cwd: The directory from which to execute the command. Defaults to the home directory of the user specified by ``runas`` (or the user under which Salt is running if ``runas`` is not specified). :param str stdin: A string of standard input can be specified for the command to be run using the ``stdin`` parameter. This can be useful in cases where sensitive information must be read from standard input. :param str runas: Specify an alternate user to run the command. The default behaviour is to run as the user under which Salt is running. If running on a Windows minion you must also use the ``password`` argument, and the target user account must be in the Administrators group. Warning: For versions 2018.3.3 and above on macosx while using runas, to pass special characters to the command you need to escape the characters on the shell. Example: cmd.run_stderr 'echo '\\''h=\\\u0026quot;baz\\\u0026quot;'\\''' runas=macuser :param str password: Windows only. Required when specifying ``runas``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.0 :param str group: Group to run command as. Not currently supported on Windows. :param str shell: Specify an alternate shell. Defaults to the system's default shell. :param bool python_shell: If False, let python handle the positional arguments. Set to True to use shell features, such as pipes or redirection. :param dict env: Environment variables to be set prior to execution. Note: When passing environment variables on the CLI, they should be passed as the string representation of a dictionary. salt myminion cmd.run_stderr 'some command' env='{\u0026quot;FOO\u0026quot;: \u0026quot;bar\u0026quot;}' Note: When using environment variables on Window's, case-sensitivity matters, i.e. Window's uses `Path` as opposed to `PATH` for other systems. :param bool clean_env: Attempt to clean out all other shell environment variables and set only those provided in the 'env' argument to this function. :param str prepend_path: $PATH segment to prepend (trailing ':' not necessary) to $PATH New in version 2018.3.0 :param str template: If this setting is applied then the named templating engine will be used to render the downloaded file. Currently jinja, mako, and wempy are supported. :param bool rstrip: Strip all whitespace off the end of output before it is returned. :param str umask: The umask (in octal) to use when running the command. :param str output_encoding: Control the encoding used to decode the command's output. Note: This should not need to be used in most cases. By default, Salt will try to use the encoding detected from the system locale, and will fall back to UTF-8 if this fails. This should only need to be used in cases where the output of the command is encoded in something other than the system locale or UTF-8. To see the encoding Salt has detected from the system locale, check the `locale` line in the output of :py:func:`test.versions_report \u0026lt;salt.modules.test.versions_report\u0026gt;`. New in version 2018.3.0 :param str output_loglevel: Control the loglevel at which the output from the command is logged to the minion log. Note: The command being run will still be logged at the ``debug`` loglevel regardless, unless ``quiet`` is used for this value. :param bool ignore_retcode: If the exit code of the command is nonzero, this is treated as an error condition, and the output from the command will be logged to the minion log. However, there are some cases where programs use the return code for signaling and a nonzero exit code doesn't necessarily mean failure. Pass this argument as ``True`` to skip logging the output if the command has a nonzero exit code. :param bool hide_output: If ``True``, suppress stdout and stderr in the return data. Note: This is separate from ``output_loglevel``, which only handles how Salt logs to the minion log. New in version 2018.3.0 :param int timeout: A timeout in seconds for the executed process to return. :param bool use_vt: Use VT utils (saltstack) to stream the command output more interactively to the console and the logs. This is experimental. :param list success_retcodes: This parameter will allow a list of non-zero return codes that should be considered a success. If the return code returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 2019.2.0 :param list success_stdout: This parameter will allow a list of strings that when found in standard out should be considered a success. If stdout returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 3004 :param list success_stderr: This parameter will allow a list of strings that when found in standard error should be considered a success. If stderr returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 3004 :param bool stdin_raw_newlines: False If ``True``, Salt will not automatically convert the characters ``\\n`` present in the ``stdin`` value to newlines. New in version 2019.2.0 CLI Example: salt '*' cmd.run_stderr \u0026quot;ls -l | awk '/foo/{print \\$2}'\u0026quot; The template arg can be set to 'jinja' or another supported template engine to render the command arguments before execution. For example: salt '*' cmd.run_stderr template=jinja \u0026quot;ls -l /tmp/{{grains.id}} | awk '/foo/{print \\$2}'\u0026quot; A string of standard input can be specified for the command to be run using the ``stdin`` parameter. This can be useful in cases where sensitive information must be read from standard input. salt '*' cmd.run_stderr \u0026quot;grep f\u0026quot; stdin='one\\ntwo\\nthree\\nfour\\nfive\\n' cmd.run_stdout:\nExecute a command, and only return the standard out :param str cmd: The command to run. ex: ``ls -lart /home`` :param str cwd: The directory from which to execute the command. Defaults to the home directory of the user specified by ``runas`` (or the user under which Salt is running if ``runas`` is not specified). :param str stdin: A string of standard input can be specified for the command to be run using the ``stdin`` parameter. This can be useful in cases where sensitive information must be read from standard input. :param str runas: Specify an alternate user to run the command. The default behaviour is to run as the user under which Salt is running. If running on a Windows minion you must also use the ``password`` argument, and the target user account must be in the Administrators group. Warning: For versions 2018.3.3 and above on macosx while using runas, to pass special characters to the command you need to escape the characters on the shell. Example: cmd.run_stdout 'echo '\\''h=\\\u0026quot;baz\\\u0026quot;'\\''' runas=macuser :param str password: Windows only. Required when specifying ``runas``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.0 :param str group: Group to run command as. Not currently supported on Windows. :param str shell: Specify an alternate shell. Defaults to the system's default shell. :param bool python_shell: If False, let python handle the positional arguments. Set to True to use shell features, such as pipes or redirection. :param dict env: Environment variables to be set prior to execution. Note: When passing environment variables on the CLI, they should be passed as the string representation of a dictionary. salt myminion cmd.run_stdout 'some command' env='{\u0026quot;FOO\u0026quot;: \u0026quot;bar\u0026quot;}' Note: When using environment variables on Window's, case-sensitivity matters, i.e. Window's uses `Path` as opposed to `PATH` for other systems. :param bool clean_env: Attempt to clean out all other shell environment variables and set only those provided in the 'env' argument to this function. :param str prepend_path: $PATH segment to prepend (trailing ':' not necessary) to $PATH New in version 2018.3.0 :param str template: If this setting is applied then the named templating engine will be used to render the downloaded file. Currently jinja, mako, and wempy are supported. :param bool rstrip: Strip all whitespace off the end of output before it is returned. :param str umask: The umask (in octal) to use when running the command. :param str output_encoding: Control the encoding used to decode the command's output. Note: This should not need to be used in most cases. By default, Salt will try to use the encoding detected from the system locale, and will fall back to UTF-8 if this fails. This should only need to be used in cases where the output of the command is encoded in something other than the system locale or UTF-8. To see the encoding Salt has detected from the system locale, check the `locale` line in the output of :py:func:`test.versions_report \u0026lt;salt.modules.test.versions_report\u0026gt;`. New in version 2018.3.0 :param str output_loglevel: Control the loglevel at which the output from the command is logged to the minion log. Note: The command being run will still be logged at the ``debug`` loglevel regardless, unless ``quiet`` is used for this value. :param bool ignore_retcode: If the exit code of the command is nonzero, this is treated as an error condition, and the output from the command will be logged to the minion log. However, there are some cases where programs use the return code for signaling and a nonzero exit code doesn't necessarily mean failure. Pass this argument as ``True`` to skip logging the output if the command has a nonzero exit code. :param bool hide_output: If ``True``, suppress stdout and stderr in the return data. Note: This is separate from ``output_loglevel``, which only handles how Salt logs to the minion log. New in version 2018.3.0 :param int timeout: A timeout in seconds for the executed process to return. :param bool use_vt: Use VT utils (saltstack) to stream the command output more interactively to the console and the logs. This is experimental. :param list success_retcodes: This parameter will allow a list of non-zero return codes that should be considered a success. If the return code returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 2019.2.0 :param list success_stdout: This parameter will allow a list of strings that when found in standard out should be considered a success. If stdout returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 3004 :param list success_stderr: This parameter will allow a list of strings that when found in standard error should be considered a success. If stderr returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 3004 :param bool stdin_raw_newlines: False If ``True``, Salt will not automatically convert the characters ``\\n`` present in the ``stdin`` value to newlines. New in version 2019.2.0 CLI Example: salt '*' cmd.run_stdout \u0026quot;ls -l | awk '/foo/{print \\$2}'\u0026quot; The template arg can be set to 'jinja' or another supported template engine to render the command arguments before execution. For example: salt '*' cmd.run_stdout template=jinja \u0026quot;ls -l /tmp/{{grains.id}} | awk '/foo/{print \\$2}'\u0026quot; A string of standard input can be specified for the command to be run using the ``stdin`` parameter. This can be useful in cases where sensitive information must be read from standard input. salt '*' cmd.run_stdout \u0026quot;grep f\u0026quot; stdin='one\\ntwo\\nthree\\nfour\\nfive\\n' cmd.script:\nDownload a script from a remote location and execute the script locally. The script can be located on the salt master file server or on an HTTP/FTP server. The script will be executed directly, so it can be written in any available programming language. :param str source: The location of the script to download. If the file is located on the master in the directory named spam, and is called eggs, the source string is salt://spam/eggs :param str args: String of command line args to pass to the script. Only used if no args are specified as part of the `name` argument. To pass a string containing spaces in YAML, you will need to doubly-quote it: salt myminion cmd.script salt://foo.sh \u0026quot;arg1 'arg two' arg3\u0026quot; :param str cwd: The directory from which to execute the command. Defaults to the directory returned from Python's tempfile.mkstemp. :param str stdin: A string of standard input can be specified for the command to be run using the ``stdin`` parameter. This can be useful in cases where sensitive information must be read from standard input. :param str runas: Specify an alternate user to run the command. The default behaviour is to run as the user under which Salt is running. If running on a Windows minion you must also use the ``password`` argument, and the target user account must be in the Administrators group. Note: For Window's users, specifically Server users, it may be necessary to specify your runas user using the User Logon Name instead of the legacy logon name. Traditionally, logons would be in the following format. ``Domain/user`` In the event this causes issues when executing scripts, use the UPN format which looks like the following. ``user@domain.local`` More information \u0026lt;https://github.com/saltstack/salt/issues/55080\u0026gt; :param str password: Windows only. Required when specifying ``runas``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.0 :param str group: Group to run script as. Not currently supported on Windows. :param str shell: Specify an alternate shell. Defaults to the system's default shell. :param bool python_shell: If False, let python handle the positional arguments. Set to True to use shell features, such as pipes or redirection. :param bool bg: If True, run script in background and do not await or deliver its results :param dict env: Environment variables to be set prior to execution. Note: When passing environment variables on the CLI, they should be passed as the string representation of a dictionary. salt myminion cmd.script 'some command' env='{\u0026quot;FOO\u0026quot;: \u0026quot;bar\u0026quot;}' Note: When using environment variables on Window's, case-sensitivity matters, i.e. Window's uses `Path` as opposed to `PATH` for other systems. :param str template: If this setting is applied then the named templating engine will be used to render the downloaded file. Currently jinja, mako, and wempy are supported. :param str umask: The umask (in octal) to use when running the command. :param str output_encoding: Control the encoding used to decode the command's output. Note: This should not need to be used in most cases. By default, Salt will try to use the encoding detected from the system locale, and will fall back to UTF-8 if this fails. This should only need to be used in cases where the output of the command is encoded in something other than the system locale or UTF-8. To see the encoding Salt has detected from the system locale, check the `locale` line in the output of :py:func:`test.versions_report \u0026lt;salt.modules.test.versions_report\u0026gt;`. New in version 2018.3.0 :param str output_loglevel: Control the loglevel at which the output from the command is logged to the minion log. Note: The command being run will still be logged at the ``debug`` loglevel regardless, unless ``quiet`` is used for this value. :param bool ignore_retcode: If the exit code of the command is nonzero, this is treated as an error condition, and the output from the command will be logged to the minion log. However, there are some cases where programs use the return code for signaling and a nonzero exit code doesn't necessarily mean failure. Pass this argument as ``True`` to skip logging the output if the command has a nonzero exit code. :param bool hide_output: If ``True``, suppress stdout and stderr in the return data. Note: This is separate from ``output_loglevel``, which only handles how Salt logs to the minion log. New in version 2018.3.0 :param int timeout: If the command has not terminated after timeout seconds, send the subprocess sigterm, and if sigterm is ignored, follow up with sigkill :param bool use_vt: Use VT utils (saltstack) to stream the command output more interactively to the console and the logs. This is experimental. :param list success_retcodes: This parameter will allow a list of non-zero return codes that should be considered a success. If the return code returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 2019.2.0 :param list success_stdout: This parameter will allow a list of strings that when found in standard out should be considered a success. If stdout returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 3004 :param list success_stderr: This parameter will allow a list of strings that when found in standard error should be considered a success. If stderr returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 3004 :param bool stdin_raw_newlines: False If ``True``, Salt will not automatically convert the characters ``\\n`` present in the ``stdin`` value to newlines. New in version 2019.2.0 CLI Example: salt '*' cmd.script salt://scripts/runme.sh salt '*' cmd.script salt://scripts/runme.sh 'arg1 arg2 \u0026quot;arg 3\u0026quot;' salt '*' cmd.script salt://scripts/windows_task.ps1 args=' -Input c:\\tmp\\infile.txt' shell='powershell' salt '*' cmd.script salt://scripts/runme.sh stdin='one\\ntwo\\nthree\\nfour\\nfive\\n' cmd.script_retcode:\nDownload a script from a remote location and execute the script locally. The script can be located on the salt master file server or on an HTTP/FTP server. The script will be executed directly, so it can be written in any available programming language. The script can also be formatted as a template, the default is jinja. Only evaluate the script return code and do not block for terminal output :param str source: The location of the script to download. If the file is located on the master in the directory named spam, and is called eggs, the source string is salt://spam/eggs :param str args: String of command line args to pass to the script. Only used if no args are specified as part of the `name` argument. To pass a string containing spaces in YAML, you will need to doubly-quote it: \u0026quot;arg1 'arg two' arg3\u0026quot; :param str cwd: The directory from which to execute the command. Defaults to the home directory of the user specified by ``runas`` (or the user under which Salt is running if ``runas`` is not specified). :param str stdin: A string of standard input can be specified for the command to be run using the ``stdin`` parameter. This can be useful in cases where sensitive information must be read from standard input. :param str runas: Specify an alternate user to run the command. The default behaviour is to run as the user under which Salt is running. If running on a Windows minion you must also use the ``password`` argument, and the target user account must be in the Administrators group. :param str password: Windows only. Required when specifying ``runas``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.0 :param str group: Group to run script as. Not currently supported on Windows. :param str shell: Specify an alternate shell. Defaults to the system's default shell. :param bool python_shell: If False, let python handle the positional arguments. Set to True to use shell features, such as pipes or redirection. :param dict env: Environment variables to be set prior to execution. Note: When passing environment variables on the CLI, they should be passed as the string representation of a dictionary. salt myminion cmd.script_retcode 'some command' env='{\u0026quot;FOO\u0026quot;: \u0026quot;bar\u0026quot;}' Note: When using environment variables on Window's, case-sensitivity matters, i.e. Window's uses `Path` as opposed to `PATH` for other systems. :param str template: If this setting is applied then the named templating engine will be used to render the downloaded file. Currently jinja, mako, and wempy are supported. :param str umask: The umask (in octal) to use when running the command. :param str output_encoding: Control the encoding used to decode the command's output. Note: This should not need to be used in most cases. By default, Salt will try to use the encoding detected from the system locale, and will fall back to UTF-8 if this fails. This should only need to be used in cases where the output of the command is encoded in something other than the system locale or UTF-8. To see the encoding Salt has detected from the system locale, check the `locale` line in the output of :py:func:`test.versions_report \u0026lt;salt.modules.test.versions_report\u0026gt;`. New in version 2018.3.0 :param str output_loglevel: Control the loglevel at which the output from the command is logged to the minion log. Note: The command being run will still be logged at the ``debug`` loglevel regardless, unless ``quiet`` is used for this value. :param bool ignore_retcode: If the exit code of the command is nonzero, this is treated as an error condition, and the output from the command will be logged to the minion log. However, there are some cases where programs use the return code for signaling and a nonzero exit code doesn't necessarily mean failure. Pass this argument as ``True`` to skip logging the output if the command has a nonzero exit code. :param int timeout: If the command has not terminated after timeout seconds, send the subprocess sigterm, and if sigterm is ignored, follow up with sigkill :param bool use_vt: Use VT utils (saltstack) to stream the command output more interactively to the console and the logs. This is experimental. :param list success_retcodes: This parameter will allow a list of non-zero return codes that should be considered a success. If the return code returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 2019.2.0 :param list success_stdout: This parameter will allow a list of strings that when found in standard out should be considered a success. If stdout returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 3004 :param list success_stderr: This parameter will allow a list of strings that when found in standard error should be considered a success. If stderr returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 3004 :param bool stdin_raw_newlines: False If ``True``, Salt will not automatically convert the characters ``\\n`` present in the ``stdin`` value to newlines. New in version 2019.2.0 CLI Example: salt '*' cmd.script_retcode salt://scripts/runme.sh salt '*' cmd.script_retcode salt://scripts/runme.sh 'arg1 arg2 \u0026quot;arg 3\u0026quot;' salt '*' cmd.script_retcode salt://scripts/windows_task.ps1 args=' -Input c:\\tmp\\infile.txt' shell='powershell' A string of standard input can be specified for the command to be run using the ``stdin`` parameter. This can be useful in cases where sensitive information must be read from standard input. salt '*' cmd.script_retcode salt://scripts/runme.sh stdin='one\\ntwo\\nthree\\nfour\\nfive\\n' cmd.shell:\nExecute the passed command and return the output as a string. New in version 2015.5.0 :param str cmd: The command to run. ex: ``ls -lart /home`` :param str cwd: The directory from which to execute the command. Defaults to the home directory of the user specified by ``runas`` (or the user under which Salt is running if ``runas`` is not specified). :param str stdin: A string of standard input can be specified for the command to be run using the ``stdin`` parameter. This can be useful in cases where sensitive information must be read from standard input. :param str runas: Specify an alternate user to run the command. The default behaviour is to run as the user under which Salt is running. If running on a Windows minion you must also use the ``password`` argument, and the target user account must be in the Administrators group. Warning: For versions 2018.3.3 and above on macosx while using runas, to pass special characters to the command you need to escape the characters on the shell. Example: cmd.shell 'echo '\\''h=\\\u0026quot;baz\\\u0026quot;'\\''' runas=macuser :param str group: Group to run command as. Not currently supported on Windows. :param str password: Windows only. Required when specifying ``runas``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.0 :param int shell: Shell to execute under. Defaults to the system default shell. :param bool bg: If True, run command in background and do not await or deliver its results :param dict env: Environment variables to be set prior to execution. Note: When passing environment variables on the CLI, they should be passed as the string representation of a dictionary. salt myminion cmd.shell 'some command' env='{\u0026quot;FOO\u0026quot;: \u0026quot;bar\u0026quot;}' Note: When using environment variables on Window's, case-sensitivity matters, i.e. Window's uses `Path` as opposed to `PATH` for other systems. :param bool clean_env: Attempt to clean out all other shell environment variables and set only those provided in the 'env' argument to this function. :param str prepend_path: $PATH segment to prepend (trailing ':' not necessary) to $PATH New in version 2018.3.0 :param str template: If this setting is applied then the named templating engine will be used to render the downloaded file. Currently jinja, mako, and wempy are supported. :param bool rstrip: Strip all whitespace off the end of output before it is returned. :param str umask: The umask (in octal) to use when running the command. :param str output_encoding: Control the encoding used to decode the command's output. Note: This should not need to be used in most cases. By default, Salt will try to use the encoding detected from the system locale, and will fall back to UTF-8 if this fails. This should only need to be used in cases where the output of the command is encoded in something other than the system locale or UTF-8. To see the encoding Salt has detected from the system locale, check the `locale` line in the output of :py:func:`test.versions_report \u0026lt;salt.modules.test.versions_report\u0026gt;`. New in version 2018.3.0 :param str output_loglevel: Control the loglevel at which the output from the command is logged to the minion log. Note: The command being run will still be logged at the ``debug`` loglevel regardless, unless ``quiet`` is used for this value. :param bool ignore_retcode: If the exit code of the command is nonzero, this is treated as an error condition, and the output from the command will be logged to the minion log. However, there are some cases where programs use the return code for signaling and a nonzero exit code doesn't necessarily mean failure. Pass this argument as ``True`` to skip logging the output if the command has a nonzero exit code. :param bool hide_output: If ``True``, suppress stdout and stderr in the return data. Note: This is separate from ``output_loglevel``, which only handles how Salt logs to the minion log. New in version 2018.3.0 :param int timeout: A timeout in seconds for the executed process to return. :param bool use_vt: Use VT utils (saltstack) to stream the command output more interactively to the console and the logs. This is experimental. Warning: This passes the cmd argument directly to the shell without any further processing! Be absolutely sure that you have properly sanitized the command passed to this function and do not use untrusted inputs. :param list success_retcodes: This parameter will allow a list of non-zero return codes that should be considered a success. If the return code returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 2019.2.0 :param list success_stdout: This parameter will allow a list of strings that when found in standard out should be considered a success. If stdout returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 3004 :param list success_stderr: This parameter will allow a list of strings that when found in standard error should be considered a success. If stderr returned from the run matches any in the provided list, the return code will be overridden with zero. New in version 3004 :param bool stdin_raw_newlines: False If ``True``, Salt will not automatically convert the characters ``\\n`` present in the ``stdin`` value to newlines. New in version 2019.2.0 CLI Example: salt '*' cmd.shell \u0026quot;ls -l | awk '/foo/{print \\$2}'\u0026quot; The template arg can be set to 'jinja' or another supported template engine to render the command arguments before execution. For example: salt '*' cmd.shell template=jinja \u0026quot;ls -l /tmp/{{grains.id}} | awk '/foo/{print \\$2}'\u0026quot; Specify an alternate shell with the shell parameter: salt '*' cmd.shell \u0026quot;Get-ChildItem C:\\ \u0026quot; shell='powershell' A string of standard input can be specified for the command to be run using the ``stdin`` parameter. This can be useful in cases where sensitive information must be read from standard input. salt '*' cmd.shell \u0026quot;grep f\u0026quot; stdin='one\\ntwo\\nthree\\nfour\\nfive\\n' If an equal sign (``=``) appears in an argument to a Salt command it is interpreted as a keyword argument in the format ``key=val``. That processing can be bypassed in order to pass an equal sign through to the remote shell command by manually specifying the kwarg: salt '*' cmd.shell cmd='sed -e s/=/:/g' cmd.shell_info:\nNew in version 2016.11.0 Provides information about a shell or script languages which often use ``#!``. The values returned are dependent on the shell or scripting languages all return the ``installed``, ``path``, ``version``, ``version_raw`` Args: shell (str): Name of the shell. Support shells/script languages include bash, cmd, perl, php, powershell, python, ruby and zsh list_modules (bool): True to list modules available to the shell. Currently only lists powershell modules. Returns: dict: A dictionary of information about the shell {'version': '\u0026lt;2 or 3 numeric components dot-separated\u0026gt;', 'version_raw': '\u0026lt;full version string\u0026gt;', 'path': '\u0026lt;full path to binary\u0026gt;', 'installed': \u0026lt;True, False or None\u0026gt;, '\u0026lt;attribute\u0026gt;': '\u0026lt;attribute value\u0026gt;'} Note: - ``installed`` is always returned, if ``None`` or ``False`` also returns error and may also return ``stdout`` for diagnostics. - ``version`` is for use in determine if a shell/script language has a particular feature set, not for package management. - The shell must be within the executable search path. CLI Example: salt '*' cmd.shell_info bash salt '*' cmd.shell_info powershell :codeauthor: Damon Atkins \u0026lt;https://github.com/damon-atkins\u0026gt; cmd.shells:\nLists the valid shells on this system via the /etc/shells file New in version 2015.5.0 CLI Example: salt '*' cmd.shells cmd.tty:\nEcho a string to a specific tty CLI Example: salt '*' cmd.tty tty0 'This is a test' salt '*' cmd.tty pts3 'This is a test' cmd.which:\nReturns the path of an executable available on the minion, None otherwise CLI Example: salt '*' cmd.which cat cmd.which_bin:\nReturns the first command found in a list of commands CLI Example: salt '*' cmd.which_bin '[pip2, pip, pip-python]' composer.did_composer_install:\nTest to see if the vendor directory exists in this directory dir Directory location of the composer.json file CLI Example: salt '*' composer.did_composer_install /var/www/application composer.install:\nInstall composer dependencies for a directory. If composer has not been installed globally making it available in the system PATH \u0026amp; making it executable, the ``composer`` and ``php`` parameters will need to be set to the location of the executables. directory Directory location of the composer.json file. composer Location of the composer.phar file. If not set composer will just execute \u0026quot;composer\u0026quot; as if it is installed globally. (i.e. /path/to/composer.phar) php Location of the php executable to use with composer. (i.e. /usr/bin/php) runas Which system user to run composer as. prefer_source --prefer-source option of composer. prefer_dist --prefer-dist option of composer. no_scripts --no-scripts option of composer. no_plugins --no-plugins option of composer. optimise --optimise-autoloader option of composer. Recommended for production. no_dev --no-dev option for composer. Recommended for production. quiet --quiet option for composer. Whether or not to return output from composer. composer_home $COMPOSER_HOME environment variable env A list of environment variables to be set prior to execution. CLI Example: salt '*' composer.install /var/www/application salt '*' composer.install /var/www/application no_dev=True optimise=True composer.selfupdate:\nUpdate composer itself. If composer has not been installed globally making it available in the system PATH \u0026amp; making it executable, the ``composer`` and ``php`` parameters will need to be set to the location of the executables. composer Location of the composer.phar file. If not set composer will just execute \u0026quot;composer\u0026quot; as if it is installed globally. (i.e. /path/to/composer.phar) php Location of the php executable to use with composer. (i.e. /usr/bin/php) runas Which system user to run composer as. quiet --quiet option for composer. Whether or not to return output from composer. composer_home $COMPOSER_HOME environment variable CLI Example: salt '*' composer.selfupdate composer.update:\nUpdate composer dependencies for a directory. If `composer install` has not yet been run, this runs `composer install` instead. If composer has not been installed globally making it available in the system PATH \u0026amp; making it executable, the ``composer`` and ``php`` parameters will need to be set to the location of the executables. directory Directory location of the composer.json file. composer Location of the composer.phar file. If not set composer will just execute \u0026quot;composer\u0026quot; as if it is installed globally. (i.e. /path/to/composer.phar) php Location of the php executable to use with composer. (i.e. /usr/bin/php) runas Which system user to run composer as. prefer_source --prefer-source option of composer. prefer_dist --prefer-dist option of composer. no_scripts --no-scripts option of composer. no_plugins --no-plugins option of composer. optimise --optimise-autoloader option of composer. Recommended for production. no_dev --no-dev option for composer. Recommended for production. quiet --quiet option for composer. Whether or not to return output from composer. composer_home $COMPOSER_HOME environment variable env A list of environment variables to be set prior to execution. CLI Example: salt '*' composer.update /var/www/application salt '*' composer.update /var/www/application no_dev=True optimise=True config.backup_mode:\nReturn the backup mode CLI Example: salt '*' config.backup_mode config.dot_vals:\nPass in a configuration value that should be preceded by the module name and a dot, this will return a list of all read key/value pairs CLI Example: salt '*' config.dot_vals host config.gather_bootstrap_script:\nDownload the salt-bootstrap script, and return its location bootstrap URL of alternate bootstrap script CLI Example: salt '*' config.gather_bootstrap_script config.get:\nNew in version 0.14.0 Attempt to retrieve the named value from the minion config file, pillar, grains or the master config. If the named value is not available, return the value specified by the ``default`` argument. If this argument is not specified, ``default`` falls back to an empty string. Values can also be retrieved from nested dictionaries. Assume the below data structure: {'pkg': {'apache': 'httpd'}} To retrieve the value associated with the ``apache`` key, in the sub-dictionary corresponding to the ``pkg`` key, the following command can be used: salt myminion config.get pkg:apache The ``:`` (colon) is used to represent a nested dictionary level. Changed in version 2015.5.0 The ``delimiter`` argument was added, to allow delimiters other than ``:`` to be used. This function traverses these data stores in this order, returning the first match found: - Minion configuration - Minion's grains - Minion's pillar data - Master configuration (requires :conf_minion:`pillar_opts` to be set to ``True`` in Minion config file in order to work) This means that if there is a value that is going to be the same for the majority of minions, it can be configured in the Master config file, and then overridden using the grains, pillar, or Minion config file. Adding config options to the Master or Minion configuration file is easy: my-config-option: value cafe-menu: - egg and bacon - egg sausage and bacon - egg and spam - egg bacon and spam - egg bacon sausage and spam - spam bacon sausage and spam - spam egg spam spam bacon and spam - spam sausage spam spam bacon spam tomato and spam Note: Minion configuration options built into Salt (like those defined :ref:`here \u0026lt;configuration-salt-minion\u0026gt;`) will *always* be defined in the Minion configuration and thus *cannot be overridden by grains or pillar data*. However, additional (user-defined) configuration options (as in the above example) will not be in the Minion configuration by default and thus can be overridden using grains/pillar data by leaving the option out of the minion config file. **Arguments** delimiter New in version 2015.5.0 Override the delimiter used to separate nested levels of a data structure. merge New in version 2015.5.0 If passed, this parameter will change the behaviour of the function so that, instead of traversing each data store above in order and returning the first match, the data stores are first merged together and then searched. The pillar data is merged into the master config data, then the grains are merged, followed by the Minion config data. The resulting data structure is then searched for a match. This allows for configurations to be more flexible. Note: The merging described above does not mean that grain data will end up in the Minion's pillar data, or pillar data will end up in the master config data, etc. The data is just combined for the purposes of searching an amalgam of the different data stores. The supported merge strategies are as follows: - **recurse** - If a key exists in both dictionaries, and the new value is not a dictionary, it is replaced. Otherwise, the sub-dictionaries are merged together into a single dictionary, recursively on down, following the same criteria. For example: \u0026gt;\u0026gt;\u0026gt; dict1 = {'foo': {'bar': 1, 'qux': True}, 'hosts': ['a', 'b', 'c'], 'only_x': None} \u0026gt;\u0026gt;\u0026gt; dict2 = {'foo': {'baz': 2, 'qux': False}, 'hosts': ['d', 'e', 'f'], 'only_y': None} \u0026gt;\u0026gt;\u0026gt; merged {'foo': {'bar': 1, 'baz': 2, 'qux': False}, 'hosts': ['d', 'e', 'f'], 'only_dict1': None, 'only_dict2': None} - **overwrite** - If a key exists in the top level of both dictionaries, the new value completely overwrites the old. For example: \u0026gt;\u0026gt;\u0026gt; dict1 = {'foo': {'bar': 1, 'qux': True}, 'hosts': ['a', 'b', 'c'], 'only_x': None} \u0026gt;\u0026gt;\u0026gt; dict2 = {'foo': {'baz': 2, 'qux': False}, 'hosts': ['d', 'e', 'f'], 'only_y': None} \u0026gt;\u0026gt;\u0026gt; merged {'foo': {'baz': 2, 'qux': False}, 'hosts': ['d', 'e', 'f'], 'only_dict1': None, 'only_dict2': None} CLI Example: salt '*' config.get pkg:apache salt '*' config.get lxc.container_profile:centos merge=recurse config.items:\nReturn the complete config from the currently running minion process. This includes defaults for values not set in the config file. CLI Example: salt '*' config.items config.manage_mode:\nReturn a mode value, normalized to a string CLI Example: salt '*' config.manage_mode config.merge:\nRetrieves an option based on key, merging all matches. Same as ``option()`` except that it merges all matches, rather than taking the first match. CLI Example: salt '*' config.merge schedule config.option:\nReturns the setting for the specified config value. The priority for matches is the same as in :py:func:`config.get \u0026lt;salt.modules.config.get\u0026gt;`, only this function does not recurse into nested data structures. Another difference between this function and :py:func:`config.get \u0026lt;salt.modules.config.get\u0026gt;` is that it comes with a set of \u0026quot;sane defaults\u0026quot;. To view these, you can run the following command: salt '*' config.option '*' omit_all=True wildcard=True default The default value if no match is found. If not specified, then the fallback default will be an empty string, unless ``wildcard=True``, in which case the return will be an empty dictionary. omit_opts : False Pass as ``True`` to exclude matches from the minion configuration file omit_grains : False Pass as ``True`` to exclude matches from the grains omit_pillar : False Pass as ``True`` to exclude matches from the pillar data omit_master : False Pass as ``True`` to exclude matches from the master configuration file omit_all : True Shorthand to omit all of the above and return matches only from the \u0026quot;sane defaults\u0026quot;. New in version 3000 wildcard : False If used, this will perform pattern matching on keys. Note that this will also significantly change the return data. Instead of only a value being returned, a dictionary mapping the matched keys to their values is returned. For example, using ``wildcard=True`` with a ``key`` of ``'foo.ba*`` could return a dictionary like so: {'foo.bar': True, 'foo.baz': False} New in version 3000 CLI Example: salt '*' config.option redis.host config.valid_fileproto:\nReturns a boolean value based on whether or not the URI passed has a valid remote file protocol designation CLI Example: salt '*' config.valid_fileproto salt://path/to/file consul.acl_clone:\nInformation about an ACL token. :param consul_url: The Consul server URL. :param id: Unique identifier for the ACL to update. :return: Boolean, message of success or failure, and new ID of cloned ACL. CLI Example: salt '*' consul.acl_info id='c1c4d223-91cb-3d1f-1ee8-f2af9e7b6716' consul.acl_create:\nCreate a new ACL token. :param consul_url: The Consul server URL. :param name: Meaningful indicator of the ACL's purpose. :param type: Type is either client or management. A management token is comparable to a root user and has the ability to perform any action including creating, modifying, and deleting ACLs. :param rules: The Consul server URL. :return: Boolean \u0026amp; message of success or failure. CLI Example: salt '*' consul.acl_create consul.acl_delete:\nDelete an ACL token. :param consul_url: The Consul server URL. :param id: Unique identifier for the ACL to update. :return: Boolean \u0026amp; message of success or failure. CLI Example: salt '*' consul.acl_delete id='c1c4d223-91cb-3d1f-1ee8-f2af9e7b6716' consul.acl_info:\nInformation about an ACL token. :param consul_url: The Consul server URL. :param id: Unique identifier for the ACL to update. :return: Information about the ACL requested. CLI Example: salt '*' consul.acl_info id='c1c4d223-91cb-3d1f-1ee8-f2af9e7b6716' consul.acl_list:\nList the ACL tokens. :param consul_url: The Consul server URL. :return: List of ACLs CLI Example: salt '*' consul.acl_list consul.acl_update:\nUpdate an ACL token. :param consul_url: The Consul server URL. :param name: Meaningful indicator of the ACL's purpose. :param id: Unique identifier for the ACL to update. :param type: Type is either client or management. A management token is comparable to a root user and has the ability to perform any action including creating, modifying, and deleting ACLs. :param rules: The Consul server URL. :return: Boolean \u0026amp; message of success or failure. CLI Example: salt '*' consul.acl_update consul.agent_check_deregister:\nThe agent will take care of deregistering the check from the Catalogue. :param consul_url: The Consul server URL. :param checkid: The ID of the check to deregister from Consul. :return: Boolean and message indicating success or failure. CLI Example: salt '*' consul.agent_check_deregister checkid='Memory Utilization' consul.agent_check_fail:\nThis endpoint is used with a check that is of the TTL type. When this is called, the status of the check is set to critical and the TTL clock is reset. :param consul_url: The Consul server URL. :param checkid: The ID of the check to deregister from Consul. :param note: A human-readable message with the status of the check. :return: Boolean and message indicating success or failure. CLI Example: salt '*' consul.agent_check_fail checkid='redis_check1' note='Forcing check into critical state.' consul.agent_check_pass:\nThis endpoint is used with a check that is of the TTL type. When this is called, the status of the check is set to passing and the TTL clock is reset. :param consul_url: The Consul server URL. :param checkid: The ID of the check to mark as passing. :param note: A human-readable message with the status of the check. :return: Boolean and message indicating success or failure. CLI Example: salt '*' consul.agent_check_pass checkid='redis_check1' note='Forcing check into passing state.' consul.agent_check_register:\nThe register endpoint is used to add a new check to the local agent. :param consul_url: The Consul server URL. :param name: The description of what the check is for. :param id: The unique name to use for the check, if not provided 'name' is used. :param notes: Human readable description of the check. :param script: If script is provided, the check type is a script, and Consul will evaluate that script based on the interval parameter. :param http: Check will perform an HTTP GET request against the value of HTTP (expected to be a URL) based on the interval parameter. :param ttl: If a TTL type is used, then the TTL update endpoint must be used periodically to update the state of the check. :param interval: Interval at which the check should run. :return: Boolean and message indicating success or failure. CLI Example: salt '*' consul.agent_check_register name='Memory Utilization' script='/usr/local/bin/check_mem.py' interval='15s' consul.agent_check_warn:\nThis endpoint is used with a check that is of the TTL type. When this is called, the status of the check is set to warning and the TTL clock is reset. :param consul_url: The Consul server URL. :param checkid: The ID of the check to deregister from Consul. :param note: A human-readable message with the status of the check. :return: Boolean and message indicating success or failure. CLI Example: salt '*' consul.agent_check_warn checkid='redis_check1' note='Forcing check into warning state.' consul.agent_checks:\nReturns the checks the local agent is managing :param consul_url: The Consul server URL. :return: Returns the checks the local agent is managing CLI Example: salt '*' consul.agent_checks consul.agent_join:\nTriggers the local agent to join a node :param consul_url: The Consul server URL. :param address: The address for the agent to connect to. :param wan: Causes the agent to attempt to join using the WAN pool. :return: Boolean and message indicating success or failure. CLI Example: salt '*' consul.agent_join address='192.168.1.1' consul.agent_leave:\nUsed to instruct the agent to force a node into the left state. :param consul_url: The Consul server URL. :param node: The node the agent will force into left state :return: Boolean and message indicating success or failure. CLI Example: salt '*' consul.agent_leave node='web1.example.com' consul.agent_maintenance:\nManages node maintenance mode :param consul_url: The Consul server URL. :param enable: The enable flag is required. Acceptable values are either true (to enter maintenance mode) or false (to resume normal operation). :param reason: If provided, its value should be a text string explaining the reason for placing the node into maintenance mode. :return: Boolean and message indicating success or failure. CLI Example: salt '*' consul.agent_maintenance enable='False' reason='Upgrade in progress' consul.agent_members:\nReturns the members as seen by the local serf agent :param consul_url: The Consul server URL. :return: Returns the members as seen by the local serf agent CLI Example: salt '*' consul.agent_members consul.agent_self:\nReturns the local node configuration :param consul_url: The Consul server URL. :return: Returns the local node configuration CLI Example: salt '*' consul.agent_self consul.agent_service_deregister:\nUsed to remove a service. :param consul_url: The Consul server URL. :param serviceid: A serviceid describing the service. :return: Boolean and message indicating success or failure. CLI Example: salt '*' consul.agent_service_deregister serviceid='redis' consul.agent_service_maintenance:\nUsed to place a service into maintenance mode. :param consul_url: The Consul server URL. :param serviceid: A name of the service. :param enable: Whether the service should be enabled or disabled. :param reason: A human readable message of why the service was enabled or disabled. :return: Boolean and message indicating success or failure. CLI Example: salt '*' consul.agent_service_deregister serviceid='redis' enable='True' reason='Down for upgrade' consul.agent_service_register:\nThe used to add a new service, with an optional health check, to the local agent. :param consul_url: The Consul server URL. :param name: A name describing the service. :param address: The address used by the service, defaults to the address of the agent. :param port: The port used by the service. :param id: Unique ID to identify the service, if not provided the value of the name parameter is used. :param tags: Identifying tags for service, string or list. :param script: If script is provided, the check type is a script, and Consul will evaluate that script based on the interval parameter. :param http: Check will perform an HTTP GET request against the value of HTTP (expected to be a URL) based on the interval parameter. :param check_ttl: If a TTL type is used, then the TTL update endpoint must be used periodically to update the state of the check. :param check_interval: Interval at which the check should run. :return: Boolean and message indicating success or failure. CLI Example: salt '*' consul.agent_service_register name='redis' tags='[\u0026quot;master\u0026quot;, \u0026quot;v1\u0026quot;]' address=\u0026quot;127.0.0.1\u0026quot; port=\u0026quot;8080\u0026quot; check_script=\u0026quot;/usr/local/bin/check_redis.py\u0026quot; interval=\u0026quot;10s\u0026quot; consul.agent_services:\nReturns the services the local agent is managing :param consul_url: The Consul server URL. :return: Returns the services the local agent is managing CLI Example: salt '*' consul.agent_services consul.catalog_datacenters:\nReturn list of available datacenters from catalogue. :param consul_url: The Consul server URL. :return: The list of available datacenters. CLI Example: salt '*' consul.catalog_datacenters consul.catalog_deregister:\nDeregisters a node, service, or check :param consul_url: The Consul server URL. :param node: The node to deregister. :param datacenter: By default, the datacenter of the agent is queried; however, the dc can be provided using the \u0026quot;dc\u0026quot; parameter. :param checkid: The ID of the health check to deregister. :param serviceid: The ID of the service to deregister. :return: Boolean \u0026amp; message of success or failure. CLI Example: salt '*' consul.catalog_register node='node1' serviceid='redis_server1' checkid='redis_check1' consul.catalog_node:\nInformation about the registered node. :param consul_url: The Consul server URL. :param node: The node to request information about. :param dc: By default, the datacenter of the agent is queried; however, the dc can be provided using the \u0026quot;dc\u0026quot; parameter. :return: Information about the requested node. CLI Example: salt '*' consul.catalog_service service='redis' consul.catalog_nodes:\nReturn list of available nodes from catalogue. :param consul_url: The Consul server URL. :param dc: By default, the datacenter of the agent is queried; however, the dc can be provided using the \u0026quot;dc\u0026quot; parameter. :return: The list of available nodes. CLI Example: salt '*' consul.catalog_nodes consul.catalog_register:\nRegisters a new node, service, or check :param consul_url: The Consul server URL. :param dc: By default, the datacenter of the agent is queried; however, the dc can be provided using the \u0026quot;dc\u0026quot; parameter. :param node: The node to register. :param address: The address of the node. :param service: The service that will be registered. :param service_address: The address that the service listens on. :param service_port: The port for the service. :param service_id: A unique identifier for the service, if this is not provided \u0026quot;name\u0026quot; will be used. :param service_tags: Any tags associated with the service. :param check: The name of the health check to register :param check_status: The initial status of the check, must be one of unknown, passing, warning, or critical. :param check_service: The service that the check is performed against. :param check_id: Unique identifier for the service. :param check_notes: An opaque field that is meant to hold human-readable text. :return: Boolean \u0026amp; message of success or failure. CLI Example: salt '*' consul.catalog_register node='node1' address='192.168.1.1' service='redis' service_address='127.0.0.1' service_port='8080' service_id='redis_server1' consul.catalog_service:\nInformation about the registered service. :param consul_url: The Consul server URL. :param dc: By default, the datacenter of the agent is queried; however, the dc can be provided using the \u0026quot;dc\u0026quot; parameter. :param tag: Filter returned services with tag parameter. :return: Information about the requested service. CLI Example: salt '*' consul.catalog_service service='redis' consul.catalog_services:\nReturn list of available services rom catalogue. :param consul_url: The Consul server URL. :param dc: By default, the datacenter of the agent is queried; however, the dc can be provided using the \u0026quot;dc\u0026quot; parameter. :return: The list of available services. CLI Example: salt '*' consul.catalog_services consul.delete:\nDelete values from Consul :param consul_url: The Consul server URL. :param key: The key to use as the starting point for the list. :param recurse: Delete values recursively beginning at the value of key. :param cas: This flag is used to turn the DELETE into a Check-And-Set operation. :return: Boolean \u0026amp; message of success or failure. CLI Example: salt '*' consul.delete key='web' salt '*' consul.delete key='web' recurse='True' consul.event_fire:\nList the ACL tokens. :param consul_url: The Consul server URL. :param name: The name of the event to fire. :param dc: By default, the datacenter of the agent is queried; however, the dc can be provided using the \u0026quot;dc\u0026quot; parameter. :param node: Filter by node name. :param service: Filter by service name. :param tag: Filter by tag name. :return: List of ACLs CLI Example: salt '*' consul.event_fire name='deploy' consul.event_list:\nList the recent events. :param consul_url: The Consul server URL. :param name: The name of the event to fire. :return: List of ACLs CLI Example: salt '*' consul.event_list consul.get:\nGet key from Consul :param consul_url: The Consul server URL. :param key: The key to use as the starting point for the list. :param recurse: Return values recursively beginning at the value of key. :param decode: By default values are stored as Base64 encoded values, decode will return the whole key with the value decoded. :param raw: Simply return the decoded value of the key. :return: The keys in Consul. CLI Example: salt '*' consul.get key='web/key1' salt '*' consul.get key='web' recurse=True salt '*' consul.get key='web' recurse=True decode=True By default values stored in Consul are base64 encoded, passing the decode option will show them as the decoded values. salt '*' consul.get key='web' recurse=True decode=True raw=True By default Consult will return other information about the key, the raw option will return only the raw value. consul.health_checks:\nHealth information about the registered service. :param consul_url: The Consul server URL. :param service: The service to request health information about. :param dc: By default, the datacenter of the agent is queried; however, the dc can be provided using the \u0026quot;dc\u0026quot; parameter. :return: Health information about the requested node. CLI Example: salt '*' consul.health_checks service='redis1' consul.health_node:\nHealth information about the registered node. :param consul_url: The Consul server URL. :param node: The node to request health information about. :param dc: By default, the datacenter of the agent is queried; however, the dc can be provided using the \u0026quot;dc\u0026quot; parameter. :return: Health information about the requested node. CLI Example: salt '*' consul.health_node node='node1' consul.health_service:\nHealth information about the registered service. :param consul_url: The Consul server URL. :param service: The service to request health information about. :param dc: By default, the datacenter of the agent is queried; however, the dc can be provided using the \u0026quot;dc\u0026quot; parameter. :param tag: Filter returned services with tag parameter. :param passing: Filter results to only nodes with all checks in the passing state. :return: Health information about the requested node. CLI Example: salt '*' consul.health_service service='redis1' salt '*' consul.health_service service='redis1' passing='True' consul.health_state:\nReturns the checks in the state provided on the path. :param consul_url: The Consul server URL. :param state: The state to show checks for. The supported states are any, unknown, passing, warning, or critical. The any state is a wildcard that can be used to return all checks. :param dc: By default, the datacenter of the agent is queried; however, the dc can be provided using the \u0026quot;dc\u0026quot; parameter. :return: The checks in the provided state. CLI Example: salt '*' consul.health_state state='redis1' salt '*' consul.health_state service='redis1' passing='True' consul.list:\nList keys in Consul :param consul_url: The Consul server URL. :param key: The key to use as the starting point for the list. :return: The list of keys. CLI Example: salt '*' consul.list salt '*' consul.list key='web' consul.put:\nPut values into Consul :param consul_url: The Consul server URL. :param key: The key to use as the starting point for the list. :param value: The value to set the key to. :param flags: This can be used to specify an unsigned value between 0 and 2^64-1. Clients can choose to use this however makes sense for their application. :param cas: This flag is used to turn the PUT into a Check-And-Set operation. :param acquire: This flag is used to turn the PUT into a lock acquisition operation. :param release: This flag is used to turn the PUT into a lock release operation. :return: Boolean \u0026amp; message of success or failure. CLI Example: salt '*' consul.put key='web/key1' value=\u0026quot;Hello there\u0026quot; salt '*' consul.put key='web/key1' value=\u0026quot;Hello there\u0026quot; acquire='d5d371f4-c380-5280-12fd-8810be175592' salt '*' consul.put key='web/key1' value=\u0026quot;Hello there\u0026quot; release='d5d371f4-c380-5280-12fd-8810be175592' consul.session_create:\nUsed to create a session. :param consul_url: The Consul server URL. :param lockdelay: Duration string using a \u0026quot;s\u0026quot; suffix for seconds. The default is 15s. :param node: Must refer to a node that is already registered, if specified. By default, the agent's own node name is used. :param name: A human-readable name for the session :param checks: A list of associated health checks. It is highly recommended that, if you override this list, you include the default \u0026quot;serfHealth\u0026quot;. :param behaviour: Can be set to either release or delete. This controls the behaviour when a session is invalidated. By default, this is release, causing any locks that are held to be released. Changing this to delete causes any locks that are held to be deleted. delete is useful for creating ephemeral key/value entries. :param ttl: Session is invalidated if it is not renewed before the TTL expires :return: Boolean and message indicating success or failure. CLI Example: salt '*' consul.session_create node='node1' name='my-session' behaviour='delete' ttl='3600s' consul.session_destroy:\nDestroy session :param consul_url: The Consul server URL. :param session: The ID of the session to destroy. :param dc: By default, the datacenter of the agent is queried; however, the dc can be provided using the \u0026quot;dc\u0026quot; parameter. :return: Boolean \u0026amp; message of success or failure. CLI Example: salt '*' consul.session_destroy session='c1c4d223-91cb-3d1f-1ee8-f2af9e7b6716' consul.session_info:\nInformation about a session :param consul_url: The Consul server URL. :param session: The ID of the session to return information about. :param dc: By default, the datacenter of the agent is queried; however, the dc can be provided using the \u0026quot;dc\u0026quot; parameter. :return: Boolean \u0026amp; message of success or failure. CLI Example: salt '*' consul.session_info session='c1c4d223-91cb-3d1f-1ee8-f2af9e7b6716' consul.session_list:\nUsed to list sessions. :param consul_url: The Consul server URL. :param dc: By default, the datacenter of the agent is queried; however, the dc can be provided using the \u0026quot;dc\u0026quot; parameter. :param return_list: By default, all information about the sessions is returned, using the return_list parameter will return a list of session IDs. :return: A list of all available sessions. CLI Example: salt '*' consul.session_list consul.status_leader:\nReturns the current Raft leader :param consul_url: The Consul server URL. :return: The address of the Raft leader. CLI Example: salt '*' consul.status_leader consul.status_peers:\nReturns the current Raft peer set :param consul_url: The Consul server URL. :return: Retrieves the Raft peers for the datacenter in which the agent is running. CLI Example: salt '*' consul.status_peers container_resource.cache_file:\nWrapper for cp.cache_file which raises an error if the file was unable to be cached. CLI Example: salt myminion container_resource.cache_file salt://foo/bar/baz.txt container_resource.copy_to:\nCommon logic for copying files to containers path path to the container parent (for LXC only) default: /var/lib/lxc (system default) CLI Example: salt myminion container_resource.copy_to mycontainer /local/file/path /container/file/path container_type=docker exec_driver=nsenter container_resource.run:\nCommon logic for running shell commands in containers path path to the container parent (for LXC only) default: /var/lib/lxc (system default) CLI Example: salt myminion container_resource.run mycontainer 'ps aux' container_type=docker exec_driver=nsenter output=stdout cp.cache_dest:\nNew in version 3000 Changed in version 3005 ``saltenv`` will use value from config if not explicitly set Returns the expected cache path for the file, if cached using :py:func:`cp.cache_file \u0026lt;salt.modules.cp.cache_file\u0026gt;`. Note: This only returns the _expected_ path, it does not tell you if the URL is really cached. To check if the URL is cached, use :py:func:`cp.is_cached \u0026lt;salt.modules.cp.is_cached\u0026gt;` instead. CLI Examples: salt '*' cp.cache_dest https://foo.com/bar.rpm salt '*' cp.cache_dest salt://my/file salt '*' cp.cache_dest salt://my/file saltenv=dev cp.cache_dir:\nChanged in version 3005 ``saltenv`` will use value from config if not explicitly set Download and cache everything under a directory from the master include_pat : None Glob or regex to narrow down the files cached from the given path. If matching with a regex, the regex must be prefixed with ``E@``, otherwise the expression will be interpreted as a glob. New in version 2014.7.0 exclude_pat : None Glob or regex to exclude certain files from being cached from the given path. If matching with a regex, the regex must be prefixed with ``E@``, otherwise the expression will be interpreted as a glob. Note: If used with ``include_pat``, files matching this pattern will be excluded from the subset of files defined by ``include_pat``. New in version 2014.7.0 CLI Examples: salt '*' cp.cache_dir salt://path/to/dir salt '*' cp.cache_dir salt://path/to/dir include_pat='E@*.py$' cp.cache_file:\nChanged in version 3005 ``saltenv`` will use value from config if not explicitly set Used to cache a single file on the Minion Returns the location of the new cached file on the Minion source_hash If ``name`` is an http(s) or ftp URL and the file exists in the minion's file cache, this option can be passed to keep the minion from re-downloading the file if the cached copy matches the specified hash. New in version 2018.3.0 verify_ssl If ``False``, remote https file sources (``https://``) and source_hash will not attempt to validate the servers certificate. Default is True. New in version 3002 use_etag If ``True``, remote http/https file sources will attempt to use the ETag header to determine if the remote file needs to be downloaded. This provides a lightweight mechanism for promptly refreshing files changed on a web server without requiring a full hash comparison via the ``source_hash`` parameter. New in version 3005 CLI Example: salt '*' cp.cache_file salt://path/to/file There are two ways of defining the fileserver environment (a.k.a. ``saltenv``) from which to cache the file. One is to use the ``saltenv`` parameter, and the other is to use a querystring syntax in the ``salt://`` URL. The below two examples are equivalent: salt '*' cp.cache_file salt://foo/bar.conf saltenv=config salt '*' cp.cache_file salt://foo/bar.conf?saltenv=config If the path being cached is a ``salt://`` URI, and the path does not exist, then ``False`` will be returned. Note: It may be necessary to quote the URL when using the querystring method, depending on the shell being used to run the command. cp.cache_file_ssh:\nThis function is an alias of cache_file.\nChanged in version 3005 ``saltenv`` will use value from config if not explicitly set Used to cache a single file on the Minion Returns the location of the new cached file on the Minion source_hash If ``name`` is an http(s) or ftp URL and the file exists in the minion's file cache, this option can be passed to keep the minion from re-downloading the file if the cached copy matches the specified hash. New in version 2018.3.0 verify_ssl If ``False``, remote https file sources (``https://``) and source_hash will not attempt to validate the servers certificate. Default is True. New in version 3002 use_etag If ``True``, remote http/https file sources will attempt to use the ETag header to determine if the remote file needs to be downloaded. This provides a lightweight mechanism for promptly refreshing files changed on a web server without requiring a full hash comparison via the ``source_hash`` parameter. New in version 3005 CLI Example: salt '*' cp.cache_file salt://path/to/file There are two ways of defining the fileserver environment (a.k.a. ``saltenv``) from which to cache the file. One is to use the ``saltenv`` parameter, and the other is to use a querystring syntax in the ``salt://`` URL. The below two examples are equivalent: salt '*' cp.cache_file salt://foo/bar.conf saltenv=config salt '*' cp.cache_file salt://foo/bar.conf?saltenv=config If the path being cached is a ``salt://`` URI, and the path does not exist, then ``False`` will be returned. Note: It may be necessary to quote the URL when using the querystring method, depending on the shell being used to run the command. cp.cache_files:\nChanged in version 3005 ``saltenv`` will use value from config if not explicitly set Used to gather many files from the Master, the gathered files will be saved in the minion cachedir reflective to the paths retrieved from the Master CLI Example: salt '*' cp.cache_files salt://pathto/file1,salt://pathto/file1 There are two ways of defining the fileserver environment (a.k.a. ``saltenv``) from which to cache the files. One is to use the ``saltenv`` parameter, and the other is to use a querystring syntax in the ``salt://`` URL. The below two examples are equivalent: salt '*' cp.cache_files salt://foo/bar.conf,salt://foo/baz.conf saltenv=config salt '*' cp.cache_files salt://foo/bar.conf?saltenv=config,salt://foo/baz.conf?saltenv=config The querystring method is less useful when all files are being cached from the same environment, but is a good way of caching files from multiple different environments in the same command. For example, the below command will cache the first file from the ``config1`` environment, and the second one from the ``config2`` environment. salt '*' cp.cache_files salt://foo/bar.conf?saltenv=config1,salt://foo/bar.conf?saltenv=config2 Note: It may be necessary to quote the URL when using the querystring method, depending on the shell being used to run the command. cp.cache_local_file:\nCache a local file on the minion in the localfiles cache CLI Example: salt '*' cp.cache_local_file /etc/hosts cp.cache_master:\nChanged in version 3005 ``saltenv`` will use value from config if not explicitly set Retrieve all of the files on the master and cache them locally CLI Example: salt '*' cp.cache_master cp.envs:\nList available environments for fileserver CLI Example: salt '*' cp.envs cp.get_dir:\nChanged in version 3005 ``saltenv`` will use value from config if not explicitly set Used to recursively copy a directory from the salt master CLI Example: salt '*' cp.get_dir salt://path/to/dir/ /minion/dest get_dir supports the same template and gzip arguments as get_file. cp.get_file:\nChanged in version 3005 ``saltenv`` will use value from config if not explicitly set Changed in version 2018.3.0 ``dest`` can now be a directory Used to get a single file from the salt master CLI Example: salt '*' cp.get_file salt://path/to/file /minion/dest Template rendering can be enabled on both the source and destination file names like so: salt '*' cp.get_file \u0026quot;salt://{{grains.os}}/vimrc\u0026quot; /etc/vimrc template=jinja This example would instruct all Salt minions to download the vimrc from a directory with the same name as their os grain and copy it to /etc/vimrc For larger files, the cp.get_file module also supports gzip compression. Because gzip is CPU-intensive, this should only be used in scenarios where the compression ratio is very high (e.g. pretty-printed JSON or YAML files). Use the *gzip* named argument to enable it. Valid values are 1..9, where 1 is the lightest compression and 9 the heaviest. 1 uses the least CPU on the master (and minion), 9 uses the most. There are two ways of defining the fileserver environment (a.k.a. ``saltenv``) from which to retrieve the file. One is to use the ``saltenv`` parameter, and the other is to use a querystring syntax in the ``salt://`` URL. The below two examples are equivalent: salt '*' cp.get_file salt://foo/bar.conf /etc/foo/bar.conf saltenv=config salt '*' cp.get_file salt://foo/bar.conf?saltenv=config /etc/foo/bar.conf Note: It may be necessary to quote the URL when using the querystring method, depending on the shell being used to run the command. cp.get_file_str:\nChanged in version 3005 ``saltenv`` will use value from config if not explicitly set Download a file from a URL to the Minion cache directory and return the contents of that file Returns ``False`` if Salt was unable to cache a file from a URL. CLI Example: salt '*' cp.get_file_str salt://my/file cp.get_template:\nChanged in version 3005 ``saltenv`` will use value from config if not explicitly set Render a file as a template before setting it down. Warning, order is not the same as in fileclient.cp for non breaking old API. CLI Example: salt '*' cp.get_template salt://path/to/template /minion/dest cp.get_url:\nChanged in version 3005 ``saltenv`` will use value from config if not explicitly set Changed in version 2018.3.0 ``dest`` can now be a directory Used to get a single file from a URL. path A URL to download a file from. Supported URL schemes are: ``salt://``, ``http://``, ``https://``, ``ftp://``, ``s3://``, ``swift://`` and ``file://`` (local filesystem). If no scheme was specified, this is equivalent of using ``file://``. If a ``file://`` URL is given, the function just returns absolute path to that file on a local filesystem. The function returns ``False`` if Salt was unable to fetch a file from a ``salt://`` URL. dest The default behaviour is to write the fetched file to the given destination path. If this parameter is omitted or set as empty string (``''``), the function places the remote file on the local filesystem inside the Minion cache directory and returns the path to that file. Note: To simply return the file contents instead, set destination to ``None``. This works with ``salt://``, ``http://``, ``https://`` and ``file://`` URLs. The files fetched by ``http://`` and ``https://`` will not be cached. saltenv Salt fileserver environment from which to retrieve the file. Ignored if ``path`` is not a ``salt://`` URL. source_hash If ``path`` is an http(s) or ftp URL and the file exists in the minion's file cache, this option can be passed to keep the minion from re-downloading the file if the cached copy matches the specified hash. New in version 2018.3.0 CLI Example: salt '*' cp.get_url salt://my/file /tmp/this_file_is_mine salt '*' cp.get_url http://www.slashdot.org /tmp/index.html cp.hash_file:\nChanged in version 3005 ``saltenv`` will use value from config if not explicitly set Return the hash of a file, to get the hash of a file on the salt master file server prepend the path with salt://\u0026lt;file on server\u0026gt; otherwise, prepend the file with / for a local file. CLI Example: salt '*' cp.hash_file salt://path/to/file cp.hash_file_ssh:\nThis function is an alias of hash_file.\nChanged in version 3005 ``saltenv`` will use value from config if not explicitly set Return the hash of a file, to get the hash of a file on the salt master file server prepend the path with salt://\u0026lt;file on server\u0026gt; otherwise, prepend the file with / for a local file. CLI Example: salt '*' cp.hash_file salt://path/to/file cp.is_cached:\nChanged in version 3005 ``saltenv`` will use value from config if not explicitly set Returns the full path to a file if it is cached locally on the minion otherwise returns a blank string CLI Example: salt '*' cp.is_cached salt://path/to/file cp.list_master:\nChanged in version 3005 ``saltenv`` will use value from config if not explicitly set List all of the files stored on the master CLI Example: salt '*' cp.list_master cp.list_master_dirs:\nChanged in version 3005 ``saltenv`` will use value from config if not explicitly set List all of the directories stored on the master CLI Example: salt '*' cp.list_master_dirs cp.list_master_symlinks:\nChanged in version 3005 ``saltenv`` will use value from config if not explicitly set List all of the symlinks stored on the master CLI Example: salt '*' cp.list_master_symlinks cp.list_minion:\nChanged in version 3005 ``saltenv`` will use value from config if not explicitly set List all of the files cached on the minion CLI Example: salt '*' cp.list_minion cp.list_states:\nChanged in version 3005 ``saltenv`` will use value from config if not explicitly set List all of the available state files in an environment CLI Example: salt '*' cp.list_states cp.push:\nWARNING Files pushed to the master will have global read permissions.. Push a file from the minion up to the master, the file will be saved to the salt master in the master's minion files cachedir (defaults to ``/var/cache/salt/master/minions/minion-id/files``) Since this feature allows a minion to push a file up to the master server it is disabled by default for security purposes. To enable, set ``file_recv`` to ``True`` in the master configuration file, and restart the master. keep_symlinks Keep the path value without resolving its canonical form upload_path Provide a different path inside the master's minion files cachedir remove_source Remove the source file on the minion New in version 2016.3.0 CLI Example: salt '*' cp.push /etc/fstab salt '*' cp.push /etc/system-release keep_symlinks=True salt '*' cp.push /etc/fstab upload_path='/new/path/fstab' salt '*' cp.push /tmp/filename remove_source=True cp.push_dir:\nPush a directory from the minion up to the master, the files will be saved to the salt master in the master's minion files cachedir (defaults to ``/var/cache/salt/master/minions/minion-id/files``). It also has a glob for matching specific files using globbing. New in version 2014.7.0 Since this feature allows a minion to push files up to the master server it is disabled by default for security purposes. To enable, set ``file_recv`` to ``True`` in the master configuration file, and restart the master. upload_path Provide a different path and directory name inside the master's minion files cachedir CLI Example: salt '*' cp.push /usr/lib/mysql salt '*' cp.push /usr/lib/mysql upload_path='/newmysql/path' salt '*' cp.push_dir /etc/modprobe.d/ glob='*.conf' cp.recv:\nUsed with salt-cp, pass the files dict, and the destination. This function receives small fast copy files from the master via salt-cp. It does not work via the CLI. CLI Example: salt '*' cp.recv cp.recv_chunked:\nThis function receives files copied to the minion using ``salt-cp`` and is not intended to be used directly on the CLI. CLI Example: salt '*' cp.recv_chunked cp.stat_file:\nChanged in version 3005 ``saltenv`` will use value from config if not explicitly set Return the permissions of a file, to get the permissions of a file on the salt master file server prepend the path with salt://\u0026lt;file on server\u0026gt; otherwise, prepend the file with / for a local file. CLI Example: salt '*' cp.stat_file salt://path/to/file cpan.install:\nInstall a Perl module from CPAN CLI Example: salt '*' cpan.install Template::Alloy cpan.list:\nList installed Perl modules, and the version installed CLI Example: salt '*' cpan.list cpan.remove:\nAttempt to remove a Perl module that was installed from CPAN. Because the ``cpan`` command doesn't actually support \u0026quot;uninstall\u0026quot;-like functionality, this function will attempt to do what it can, with what it has from CPAN. Until this function is declared stable, USE AT YOUR OWN RISK! CLI Example: salt '*' cpan.remove Old::Package cpan.show:\nShow information about a specific Perl module CLI Example: salt '*' cpan.show Template::Alloy cpan.show_config:\nReturn a dict of CPAN configuration values CLI Example: salt '*' cpan.show_config cron.get_entry:\nReturn the specified entry from user's crontab. identifier will be used if specified, otherwise will lookup cmd Either identifier or cmd should be specified. user: User's crontab to query identifier: Search for line with identifier cmd: Search for cron line with cmd CLI Example: salt '*' cron.get_entry root identifier=task1 cron.list_tab:\nReturn the contents of the specified user's crontab CLI Example: salt '*' cron.list_tab root cron.ls:\nThis function is an alias of list_tab.\nReturn the contents of the specified user's crontab CLI Example: salt '*' cron.list_tab root cron.raw_cron:\nReturn the contents of the user's crontab CLI Example: salt '*' cron.raw_cron root cron.rm:\nThis function is an alias of rm_job.\nRemove a cron job for a specified user. If any of the day/time params are specified, the job will only be removed if the specified params match. CLI Example: salt '*' cron.rm_job root /usr/local/weekly salt '*' cron.rm_job root /usr/bin/foo dayweek=1 cron.rm_env:\nRemove cron environment variable for a specified user. CLI Example: salt '*' cron.rm_env root MAILTO cron.rm_job:\nRemove a cron job for a specified user. If any of the day/time params are specified, the job will only be removed if the specified params match. CLI Example: salt '*' cron.rm_job root /usr/local/weekly salt '*' cron.rm_job root /usr/bin/foo dayweek=1 cron.rm_special:\nRemove a special cron job for a specified user. CLI Example: salt '*' cron.rm_special root /usr/bin/foo cron.set_env:\nSet up an environment variable in the crontab. CLI Example: salt '*' cron.set_env root MAILTO user@example.com cron.set_job:\nSets a cron job up for a specified user. CLI Example: salt '*' cron.set_job root '*' '*' '*' '*' 1 /usr/local/weekly cron.set_special:\nSet up a special command in the crontab. CLI Example: salt '*' cron.set_special root @hourly 'echo foobar' cron.write_cron_file:\nWrites the contents of a file to a user's crontab CLI Example: salt '*' cron.write_cron_file root /tmp/new_cron Changed in version 2015.8.9 Note: Some OS' do not support specifying user via the `crontab` command i.e. (Solaris, AIX) cron.write_cron_file_verbose:\nWrites the contents of a file to a user's crontab and return error message on error CLI Example: salt '*' cron.write_cron_file_verbose root /tmp/new_cron Changed in version 2015.8.9 Note: Some OS' do not support specifying user via the `crontab` command i.e. (Solaris, AIX) cryptdev.active:\nList existing device-mapper device details. cryptdev.close:\nClose a crypt device using ``cryptsetup``. CLI Example: salt '*' cryptdev.close foo cryptdev.crypttab:\nList the contents of the crypttab CLI Example: salt '*' cryptdev.crypttab cryptdev.open:\nOpen a crypt device using ``cryptsetup``. The ``keyfile`` must not be ``None`` or ``'none'``, because ``cryptsetup`` will otherwise ask for the password interactively. CLI Example: salt '*' cryptdev.open foo /dev/sdz1 /path/to/keyfile cryptdev.rm_crypttab:\nRemove the named mapping from the crypttab. If the described entry does not exist, nothing is changed, but the command succeeds by returning ``'absent'``. If a line is removed, it returns ``'change'``. CLI Example: salt '*' cryptdev.rm_crypttab foo cryptdev.set_crypttab:\nVerify that this device is represented in the crypttab, change the device to match the name passed, or add the name if it is not present. CLI Example: salt '*' cryptdev.set_crypttab foo /dev/sdz1 mypassword swap,size=256 data.cas:\nCheck and set a value in the minion datastore CLI Example: salt '*' data.cas \u0026lt;key\u0026gt; \u0026lt;value\u0026gt; \u0026lt;old_value\u0026gt; data.clear:\nClear out all of the data in the minion datastore, this function is destructive! CLI Example: salt '*' data.clear data.dump:\nReplace the entire datastore with a passed data structure CLI Example: salt '*' data.dump '{'eggs': 'spam'}' data.get:\nGet a (list of) value(s) from the minion datastore New in version 2015.8.0 CLI Example: salt '*' data.get key salt '*' data.get '[\u0026quot;key1\u0026quot;, \u0026quot;key2\u0026quot;]' data.has_key:\nCheck if key is in the minion datastore New in version 2015.8.0 CLI Example: salt '*' data.has_key \u0026lt;mykey\u0026gt; data.items:\nGet items from the minion datastore New in version 2015.8.0 CLI Example: salt '*' data.items data.keys:\nGet all keys from the minion datastore New in version 2015.8.0 CLI Example: salt '*' data.keys data.load:\nReturn all of the data in the minion datastore CLI Example: salt '*' data.load data.pop:\nPop (return \u0026amp; delete) a value from the minion datastore New in version 2015.5.2 CLI Example: salt '*' data.pop \u0026lt;key\u0026gt; \u0026quot;there was no val\u0026quot; data.update:\nUpdate a key with a value in the minion datastore CLI Example: salt '*' data.update \u0026lt;key\u0026gt; \u0026lt;value\u0026gt; data.values:\nGet values from the minion datastore New in version 2015.8.0 CLI Example: salt '*' data.values debconf.get_selections:\nAnswers to debconf questions for all packages in the following format:: {'package': [['question', 'type', 'value'], ...]} CLI Example: salt '*' debconf.get_selections debconf.set:\nSet answers to debconf questions for a package. CLI Example: salt '*' debconf.set \u0026lt;package\u0026gt; \u0026lt;question\u0026gt; \u0026lt;type\u0026gt; \u0026lt;value\u0026gt; [\u0026lt;value\u0026gt; ...] debconf.set_file:\nSet answers to debconf questions from a file. CLI Example: salt '*' debconf.set_file salt://pathto/pkg.selections debconf.set_template:\nSet answers to debconf questions from a template. path location of the file containing the package selections template template format context variables to add to the template environment default default values for the template environment CLI Example: salt '*' debconf.set_template salt://pathto/pkg.selections.jinja jinja None None debconf.show:\nAnswers to debconf questions for a package in the following format:: [['question', 'type', 'value'], ...] If debconf doesn't know about a package, we return None. CLI Example: salt '*' debconf.show \u0026lt;package name\u0026gt; defaults.deepcopy:\ndefaults.deepcopy Allows deep copy of objects in formulas. By default, Python does not copy objects, it creates bindings between a target and an object. It is more typical to use this in a templating language in formulas, instead of directly on the command-line. defaults.get:\ndefaults.get is used much like pillar.get except that it will read a default value for a pillar from defaults.json or defaults.yaml files that are stored in the root of a salt formula. CLI Example: salt '*' defaults.get core:users:root The defaults is computed from pillar key. The first entry is considered as the formula namespace. For example, querying ``core:users:root`` will try to load ``salt://core/defaults.yaml`` and ``salt://core/defaults.json``. defaults.merge:\ndefaults.merge Allows deep merging of dicts in formulas. merge_lists : False If True, it will also merge lists instead of replace their items. in_place : True If True, it will merge into dest dict, if not it will make a new copy from that dict and return it. convert_none : True If True, it will convert src and dest to empty dicts if they are None. If True and dest is None but in_place is True, raises TypeError. If False it will make a new copy from that dict and return it. New in version 3005 CLI Example: salt '*' defaults.merge '{a: b}' '{d: e}' It is more typical to use this in a templating language in formulas, instead of directly on the command-line. defaults.update:\ndefaults.update Allows setting defaults for group of data set e.g. group for nodes. This function is a combination of defaults.merge and defaults.deepcopy to avoid redundant in jinja. Example: group01: defaults: enabled: True extra: - test - stage nodes: host01: index: foo upstream: bar host02: index: foo2 upstream: bar2 {% do salt['defaults.update'](group01.nodes, group01.defaults) %} Each node will look like the following: host01: enabled: True index: foo upstream: bar extra: - test - stage merge_lists : True If True, it will also merge lists instead of replace their items. in_place : True If True, it will merge into dest dict. if not it will make a new copy from that dict and return it. convert_none : True If True, it will convert src and dest to empty dicts if they are None. If True and dest is None but in_place is True, raises TypeError. If False it will make a new copy from that dict and return it. New in version 3005 It is more typical to use this in a templating language in formulas, instead of directly on the command-line. devinfo.filter:\nReturns a list of devices, filtered under udev keys. udev_in A dictionary of key:values that are expected in the device udev information udev_ex A dictionary of key:values that are not expected in the device udev information (excluded) The key is a lower case string, joined by dots, that represent a path in the udev information dictionary. For example, 'e.id_bus' will represent the udev entry `udev['E']['ID_BUS']` If the udev entry is a list, the algorithm will check that at least one item match one item of the value of the parameters. Returns list of devices that match `udev_in` and do not match `udev_ex`. CLI Example: salt '*' devinfo.filter udev_in='{\u0026quot;e.id_bus\u0026quot;: \u0026quot;ata\u0026quot;}' devinfo.hwinfo:\nProbe for hardware items List of hardware items to inspect. Default ['bios', 'cpu', 'disk', 'memory', 'network', 'partition'] short Show only a summary. Default True. listmd Report RAID devices. Default False. devices List of devices to show information from. Default None. CLI Example: salt '*' devinfo.hwinfo salt '*' devinfo.hwinfo items='[\u0026quot;disk\u0026quot;]' short=no salt '*' devinfo.hwinfo items='[\u0026quot;disk\u0026quot;]' short=no devices='[\u0026quot;/dev/sda\u0026quot;]' salt '*' devinfo.hwinfo devices=/dev/sda devmap.multipath_flush:\nDevice-Mapper Multipath flush CLI Example: salt '*' devmap.multipath_flush mpath1 devmap.multipath_list:\nDevice-Mapper Multipath list CLI Example: salt '*' devmap.multipath_list dig.A:\nReturn the A record for ``host``. Always returns a list. CLI Example: salt ns1 dig.A www.google.com dig.AAAA:\nReturn the AAAA record for ``host``. Always returns a list. CLI Example: salt ns1 dig.AAAA www.google.com dig.CNAME:\nReturn the CNAME record for ``host``. New in version 3005 CLI Example: salt ns1 dig.CNAME mail.google.com dig.MX:\nReturn a list of lists for the MX of ``domain``. If the ``resolve`` argument is True, resolve IPs for the servers. It's limited to one IP, because although in practice it's very rarely a round robin, it is an acceptable configuration and pulling just one IP lets the data be similar to the non-resolved version. If you think an MX has multiple IPs, don't use the resolver here, resolve them in a separate step. CLI Example: salt ns1 dig.MX google.com dig.NS:\nReturn a list of IPs of the nameservers for ``domain`` If ``resolve`` is False, don't resolve names. CLI Example: salt ns1 dig.NS google.com dig.PTR:\nNew in version 3006.0 Return the PTR record for ``host``. Always returns a list. CLI Example: salt ns1 dig.PTR 1.2.3.4 dig.SPF:\nReturn the allowed IPv4 ranges in the SPF record for ``domain``. If record is ``SPF`` and the SPF record is empty, the TXT record will be searched automatically. If you know the domain uses TXT and not SPF, specifying that will save a lookup. CLI Example: salt ns1 dig.SPF google.com dig.TXT:\nReturn the TXT record for ``host``. Always returns a list. CLI Example: salt ns1 dig.TXT google.com dig.a:\nReturn the A record for ``host``. Always returns a list. CLI Example: salt ns1 dig.A www.google.com dig.aaaa:\nReturn the AAAA record for ``host``. Always returns a list. CLI Example: salt ns1 dig.AAAA www.google.com dig.check_ip:\nCheck if address is a valid IP. returns True if valid, otherwise False. CLI Example: salt ns1 dig.check_ip 127.0.0.1 salt ns1 dig.check_ip 1111:2222:3333:4444:5555:6666:7777:8888 dig.cname:\nReturn the CNAME record for ``host``. New in version 3005 CLI Example: salt ns1 dig.CNAME mail.google.com dig.mx:\nReturn a list of lists for the MX of ``domain``. If the ``resolve`` argument is True, resolve IPs for the servers. It's limited to one IP, because although in practice it's very rarely a round robin, it is an acceptable configuration and pulling just one IP lets the data be similar to the non-resolved version. If you think an MX has multiple IPs, don't use the resolver here, resolve them in a separate step. CLI Example: salt ns1 dig.MX google.com dig.ns:\nReturn a list of IPs of the nameservers for ``domain`` If ``resolve`` is False, don't resolve names. CLI Example: salt ns1 dig.NS google.com dig.ptr:\nNew in version 3006.0 Return the PTR record for ``host``. Always returns a list. CLI Example: salt ns1 dig.PTR 1.2.3.4 dig.spf:\nReturn the allowed IPv4 ranges in the SPF record for ``domain``. If record is ``SPF`` and the SPF record is empty, the TXT record will be searched automatically. If you know the domain uses TXT and not SPF, specifying that will save a lookup. CLI Example: salt ns1 dig.SPF google.com disk.blkid:\nReturn block device attributes: UUID, LABEL, etc. This function only works on systems where blkid is available. device Device name from the system token Any valid token used for the search CLI Example: salt '*' disk.blkid salt '*' disk.blkid /dev/sda salt '*' disk.blkid token='UUID=6a38ee5-7235-44e7-8b22-816a403bad5d' salt '*' disk.blkid token='TYPE=ext4' disk.dump:\nReturn all contents of dumpe2fs for a specified device device The device path to dump. args A list of attributes to return. Returns all by default. CLI Example: salt '*' disk.dump /dev/sda1 disk.format:\nFormat a filesystem onto a device New in version 2016.11.0 device The device in which to create the new filesystem fs_type The type of filesystem to create inode_size Size of the inodes This option is only enabled for ext and xfs filesystems lazy_itable_init If enabled and the uninit_bg feature is enabled, the inode table will not be fully initialized by mke2fs. This speeds up filesystem initialization noticeably, but it requires the kernel to finish initializing the filesystem in the background when the filesystem is first mounted. If the option value is omitted, it defaults to 1 to enable lazy inode table zeroing. This option is only enabled for ext filesystems fat FAT size option. Can be 12, 16 or 32, and can only be used on fat or vfat filesystems. force Force mke2fs to create a filesystem, even if the specified device is not a partition on a block special device. This option is only enabled for ext and xfs filesystems This option is dangerous, use it with caution. CLI Example: salt '*' disk.format /dev/sdX1 disk.fstype:\nReturn the filesystem name of the specified device New in version 2016.11.0 device The name of the device CLI Example: salt '*' disk.fstype /dev/sdX1 disk.get_fstype_from_path:\nReturn the filesystem type of the underlying device for a specified path. New in version 3006.0 path The path for the function to evaluate. CLI Example: salt '*' disk.get_fstype_from_path /root disk.hdparms:\nRetrieve disk parameters. New in version 2016.3.0 disks Single disk or list of disks to query. args Sequence of ``hdparm`` flags to fetch. CLI Example: salt '*' disk.hdparms /dev/sda disk.hpa:\nGet/set Host Protected Area settings T13 INCITS 346-2001 (1367D) defines the BEER (Boot Engineering Extension Record) and PARTIES (Protected Area Run Time Interface Extension Services), allowing for a Host Protected Area on a disk. It's often used by OEMS to hide parts of a disk, and for overprovisioning SSD's Warning: Setting the HPA might clobber your data, be very careful with this on active disks! New in version 2016.3.0 CLI Example: salt '*' disk.hpa /dev/sda salt '*' disk.hpa /dev/sda 5% salt '*' disk.hpa /dev/sda 10543256 disk.inodeusage:\nReturn inode usage information for volumes mounted on this minion args Sequence of flags to pass to the ``df`` command. CLI Example: salt '*' disk.inodeusage disk.iostat:\nGather and return (averaged) IO stats. New in version 2016.3.0 Changed in version 2016.11.4 Added support for AIX CLI Example: salt '*' disk.iostat 1 5 disks=sda disk.percent:\nReturn partition information for volumes mounted on this minion args Specify a single partition for which to return data. CLI Example: salt '*' disk.percent /var disk.resize2fs:\nResizes the filesystem. CLI Example: salt '*' disk.resize2fs /dev/sda1 disk.smart_attributes:\nFetch SMART attributes Providing attributes will deliver only requested attributes Providing values will deliver only requested values for attributes Default is the Backblaze recommended set (https://www.backblaze.com/blog/hard-drive-smart-stats/): (5,187,188,197,198) New in version 2016.3.0 CLI Example: salt '*' disk.smart_attributes /dev/sda salt '*' disk.smart_attributes /dev/sda attributes=(5,187,188,197,198) disk.tune:\nSet attributes for the specified device CLI Example: salt '*' disk.tune /dev/sda1 read-ahead=1024 read-write=True Valid options are: ``read-ahead``, ``filesystem-read-ahead``, ``read-only``, ``read-write``. See the ``blockdev(8)`` manpage for a more complete description of these options. disk.usage:\nReturn usage information for volumes mounted on this minion args Sequence of flags to pass to the ``df`` command. Changed in version 2019.2.0 Default for SunOS changed to 1 kilobyte blocks CLI Example: salt '*' disk.usage disk.wipe:\nRemove the filesystem information CLI Example: salt '*' disk.wipe /dev/sda1 django.collectstatic:\nCollect static files from each of your applications into a single location that can easily be served in production. CLI Example: salt '*' django.collectstatic \u0026lt;settings_module\u0026gt; django.command:\nRun arbitrary django management command CLI Example: salt '*' django.command \u0026lt;settings_module\u0026gt; \u0026lt;command\u0026gt; django.createsuperuser:\nCreate a super user for the database. This function defaults to use the ``--noinput`` flag which prevents the creation of a password for the superuser. CLI Example: salt '*' django.createsuperuser \u0026lt;settings_module\u0026gt; user user@example.com django.loaddata:\nLoad fixture data Fixtures: comma separated list of fixtures to load CLI Example: salt '*' django.loaddata \u0026lt;settings_module\u0026gt; \u0026lt;comma delimited list of fixtures\u0026gt; django.migrate:\nRun migrate Execute the Django-Admin migrate command (requires Django 1.7 or higher). New in version 3000 settings_module Specifies the settings module to use. The settings module should be in Python package syntax, e.g. mysite.settings. If this isn’t provided, django-admin will use the DJANGO_SETTINGS_MODULE environment variable. app_label Specific app to run migrations for, instead of all apps. This may involve running other apps’ migrations too, due to dependencies. migration_name Named migration to be applied to a specific app. Brings the database schema to a state where the named migration is applied, but no later migrations in the same app are applied. This may involve unapplying migrations if you have previously migrated past the named migration. Use the name zero to unapply all migrations for an app. bin_env Path to pip (or to a virtualenv). This can be used to specify the path to the pip to use when more than one Python release is installed (e.g. ``/usr/bin/pip-2.7`` or ``/usr/bin/pip-2.6``. If a directory path is specified, it is assumed to be a virtualenv. database Database to migrate. Defaults to 'default'. pythonpath Adds the given filesystem path to the Python import search path. If this isn’t provided, django-admin will use the PYTHONPATH environment variable. env A list of environment variables to be set prior to execution. Example: module.run: - name: django.migrate - settings_module: my_django_app.settings - env: - DATABASE_USER: 'mydbuser' noinput Suppresses all user prompts. Defaults to True. runas The user name to run the command as. CLI Example: salt '*' django.migrate \u0026lt;settings_module\u0026gt; salt '*' django.migrate \u0026lt;settings_module\u0026gt; \u0026lt;app_label\u0026gt; salt '*' django.migrate \u0026lt;settings_module\u0026gt; \u0026lt;app_label\u0026gt; \u0026lt;migration_name\u0026gt; django.syncdb:\nRun syncdb Execute the Django-Admin syncdb command, if South is available on the minion the ``migrate`` option can be passed as ``True`` calling the migrations to run after the syncdb completes NOTE: The syncdb command was deprecated in Django 1.7 and removed in Django 1.9. For Django versions 1.9 or higher use the `migrate` command instead. CLI Example: salt '*' django.syncdb \u0026lt;settings_module\u0026gt; dnsmasq.fullversion:\nShows installed version of dnsmasq and compile options. CLI Example: salt '*' dnsmasq.fullversion dnsmasq.get_config:\nDumps all options from the config file. config_file The location of the config file from which to obtain contents. Defaults to ``/etc/dnsmasq.conf``. CLI Examples: salt '*' dnsmasq.get_config salt '*' dnsmasq.get_config config_file=/etc/dnsmasq.conf dnsmasq.set_config:\nSets a value or a set of values in the specified file. By default, if conf-dir is configured in this file, salt will attempt to set the option in any file inside the conf-dir where it has already been enabled. If it does not find it inside any files, it will append it to the main config file. Setting follow to False will turn off this behaviour. If a config option currently appears multiple times (such as dhcp-host, which is specified at least once per host), the new option will be added to the end of the main config file (and not to any includes). If you need an option added to a specific include file, specify it as the config_file. :param string config_file: config file where settings should be updated / added. :param bool follow: attempt to set the config option inside any file within the ``conf-dir`` where it has already been enabled. :param kwargs: key value pairs that contain the configuration settings that you want set. CLI Examples: salt '*' dnsmasq.set_config domain=mydomain.com salt '*' dnsmasq.set_config follow=False domain=mydomain.com salt '*' dnsmasq.set_config config_file=/etc/dnsmasq.conf domain=mydomain.com dnsmasq.version:\nShows installed version of dnsmasq. CLI Example: salt '*' dnsmasq.version dnsutil.A:\nReturn the A record(s) for ``host``. Always returns a list. CLI Example: salt ns1 dnsutil.A www.google.com dnsutil.AAAA:\nReturn the AAAA record(s) for ``host``. Always returns a list. New in version 2014.7.5 CLI Example: salt ns1 dnsutil.AAAA www.google.com dnsutil.MX:\nReturn a list of lists for the MX of ``domain``. If the 'resolve' argument is True, resolve IPs for the servers. It's limited to one IP, because although in practice it's very rarely a round robin, it is an acceptable configuration and pulling just one IP lets the data be similar to the non-resolved version. If you think an MX has multiple IPs, don't use the resolver here, resolve them in a separate step. CLI Example: salt ns1 dnsutil.MX google.com dnsutil.NS:\nReturn a list of IPs of the nameservers for ``domain`` If 'resolve' is False, don't resolve names. CLI Example: salt ns1 dnsutil.NS google.com dnsutil.SPF:\nReturn the allowed IPv4 ranges in the SPF record for ``domain``. If record is ``SPF`` and the SPF record is empty, the TXT record will be searched automatically. If you know the domain uses TXT and not SPF, specifying that will save a lookup. CLI Example: salt ns1 dnsutil.SPF google.com dnsutil.check_ip:\nCheck that string ip_addr is a valid IP CLI Example: salt ns1 dnsutil.check_ip 127.0.0.1 dnsutil.hosts_append:\nAppend a single line to the /etc/hosts file. CLI Example: salt '*' dnsutil.hosts_append /etc/hosts 127.0.0.1 ad1.yuk.co,ad2.yuk.co dnsutil.hosts_remove:\nRemove a host from the /etc/hosts file. If doing so will leave a line containing only an IP address, then the line will be deleted. This function will leave comments and blank lines intact. CLI Examples: salt '*' dnsutil.hosts_remove /etc/hosts ad1.yuk.co salt '*' dnsutil.hosts_remove /etc/hosts ad2.yuk.co,ad1.yuk.co dnsutil.parse_hosts:\nParse /etc/hosts file. CLI Example: salt '*' dnsutil.parse_hosts dnsutil.parse_zone:\nParses a zone file. Can be passed raw zone data on the API level. CLI Example: salt ns1 dnsutil.parse_zone /var/lib/named/example.com.zone dnsutil.serial:\nReturn, store and update a dns serial for your zone files. zone: a keyword for a specific zone update: store an updated version of the serial in a grain If ``update`` is False, the function will retrieve an existing serial or return the current date if no serial is stored. Nothing will be stored If ``update`` is True, the function will set the serial to the current date if none exist or if the existing serial is for a previous date. If a serial for greater than the current date is already stored, the function will increment it. This module stores the serial in a grain, you can explicitly set the stored value as a grain named ``dnsserial_\u0026lt;zone_name\u0026gt;``. CLI Example: salt ns1 dnsutil.serial example.com drbd.overview:\nShow status of the DRBD devices, support two nodes only. drbd-overview is removed since drbd-utils-9.6.0, use status instead. CLI Example: salt '*' drbd.overview drbd.status:\nUsing drbdadm to show status of the DRBD devices, available in the latest drbd9. Support multiple nodes, multiple volumes. :type name: str :param name: Resource name. :return: drbd status of resource. :rtype: list(dict(res)) CLI Example: salt '*' drbd.status salt '*' drbd.status name=\u0026lt;resource name\u0026gt; environ.get:\nGet a single salt process environment variable. key String used as the key for environment lookup. default If the key is not found in the environment, return this value. Default: '' CLI Example: salt '*' environ.get foo salt '*' environ.get baz default=False environ.has_value:\nDetermine whether the key exists in the current salt process environment dictionary. Optionally compare the current value of the environment against the supplied value string. key Must be a string. Used as key for environment lookup. value: Optional. If key exists in the environment, compare the current value with this value. Return True if they are equal. CLI Example: salt '*' environ.has_value foo environ.item:\nGet one or more salt process environment variables. Returns a dict. keys Either a string or a list of strings that will be used as the keys for environment lookup. default If the key is not found in the environment, return this value. Default: '' CLI Example: salt '*' environ.item foo salt '*' environ.item '[foo, baz]' default=None environ.items:\nReturn a dict of the entire environment set for the salt process CLI Example: salt '*' environ.items environ.setenv:\nSet multiple salt process environment variables from a dict. Returns a dict. environ Must be a dict. The top-level keys of the dict are the names of the environment variables to set. Each key's value must be a string or False. Refer to the 'false_unsets' parameter for behaviour when a value set to False. false_unsets If a key's value is False and false_unsets is True, then the key will be removed from the salt processes environment dict entirely. If a key's value is False and false_unsets is not True, then the key's value will be set to an empty string. Default: False clear_all USE WITH CAUTION! This option can unset environment variables needed for salt to function properly. If clear_all is True, then any environment variables not defined in the environ dict will be deleted. Default: False update_minion If True, apply these environ changes to the main salt-minion process. If False, the environ changes will only affect the current salt subprocess. Default: False permanent On Windows minions this will set the environment variable in the registry so that it is always added as an environment variable when applications open. If you want to set the variable to HKLM instead of HKCU just pass in \u0026quot;HKLM\u0026quot; for this parameter. On all other minion types this will be ignored. Note: This will only take affect on applications opened after this has been set. CLI Example: salt '*' environ.setenv '{\u0026quot;foo\u0026quot;: \u0026quot;bar\u0026quot;, \u0026quot;baz\u0026quot;: \u0026quot;quux\u0026quot;}' salt '*' environ.setenv '{\u0026quot;a\u0026quot;: \u0026quot;b\u0026quot;, \u0026quot;c\u0026quot;: False}' false_unsets=True environ.setval:\nSet a single salt process environment variable. Returns True on success. key The environment key to set. Must be a string. val The value to set. Must be a string or False. Refer to the 'false_unsets' parameter for behaviour when set to False. false_unsets If val is False and false_unsets is True, then the key will be removed from the salt processes environment dict entirely. If val is False and false_unsets is not True, then the key's value will be set to an empty string. Default: False. permanent On Windows minions this will set the environment variable in the registry so that it is always added as an environment variable when applications open. If you want to set the variable to HKLM instead of HKCU just pass in \u0026quot;HKLM\u0026quot; for this parameter. On all other minion types this will be ignored. Note: This will only take affect on applications opened after this has been set. CLI Example: salt '*' environ.setval foo bar salt '*' environ.setval baz val=False false_unsets=True salt '*' environ.setval baz bar permanent=True salt '*' environ.setval baz bar permanent=HKLM ethtool.set_coalesce:\nChanges the coalescing settings of the specified network device CLI Example: salt '*' ethtool.set_coalesce \u0026lt;devname\u0026gt; [adaptive_rx=on|off] [adaptive_tx=on|off] [rx_usecs=N] [rx_frames=N] [rx_usecs_irq=N] [rx_frames_irq=N] [tx_usecs=N] [tx_frames=N] [tx_usecs_irq=N] [tx_frames_irq=N] [stats_block_usecs=N] [pkt_rate_low=N] [rx_usecs_low=N] [rx_frames_low=N] [tx_usecs_low=N] [tx_frames_low=N] [pkt_rate_high=N] [rx_usecs_high=N] [rx_frames_high=N] [tx_usecs_high=N] [tx_frames_high=N] [sample_interval=N] ethtool.set_feature:\nNew in version 3006.0 Changes the feature parameters of the specified network device CLI Example: salt '*' ethtool.set_feature \u0026lt;devname\u0026gt; sg=off ethtool.set_offload:\nChanges the offload parameters and other features of the specified network device CLI Example: salt '*' ethtool.set_offload \u0026lt;devname\u0026gt; tcp_segmentation_offload=on ethtool.set_pause:\nNew in version 3006.0 Changes the pause parameters of the specified network device CLI Example: salt '*' ethtool.set_pause \u0026lt;devname\u0026gt; autoneg=off rx=off tx=off ethtool.set_ring:\nChanges the rx/tx ring parameters of the specified network device CLI Example: salt '*' ethtool.set_ring \u0026lt;devname\u0026gt; [rx=N] [rx_mini=N] [rx_jumbo=N] [tx=N] ethtool.show_coalesce:\nQueries the specified network device for coalescing information CLI Example: salt '*' ethtool.show_coalesce \u0026lt;devname\u0026gt; ethtool.show_driver:\nQueries the specified network device for associated driver information CLI Example: salt '*' ethtool.show_driver \u0026lt;devname\u0026gt; ethtool.show_features:\nNew in version 3006.0 Queries the specified network device for associated feature information CLI Example: salt '*' ethtool.show_features \u0026lt;devname\u0026gt; ethtool.show_offload:\nQueries the specified network device for the state of protocol offload and other features CLI Example: salt '*' ethtool.show_offload \u0026lt;devname\u0026gt; ethtool.show_pause:\nNew in version 3006.0 Queries the specified network device for associated pause information CLI Example: salt '*' ethtool.show_pause \u0026lt;devname\u0026gt; ethtool.show_ring:\nQueries the specified network device for rx/tx ring parameter information CLI Example: salt '*' ethtool.show_ring \u0026lt;devname\u0026gt; event.fire:\nFire an event on the local minion event bus. Data must be formed as a dict. CLI Example: salt '*' event.fire '{\u0026quot;data\u0026quot;:\u0026quot;my event data\u0026quot;}' 'tag' event.fire_master:\nFire an event off up to the master server CLI Example: salt '*' event.fire_master '{\u0026quot;data\u0026quot;:\u0026quot;my event data\u0026quot;}' 'tag' event.send:\nSend an event to the Salt Master New in version 2014.7.0 :param tag: A tag to give the event. Use slashes to create a namespace for related events. E.g., ``myco/build/buildserver1/start``, ``myco/build/buildserver1/success``, ``myco/build/buildserver1/failure``. :param data: A dictionary of data to send in the event. This is free-form. Send any data points that are needed for whoever is consuming the event. Arguments on the CLI are interpreted as YAML so complex data structures are possible. :param with_env: Include environment variables from the current shell environment in the event data as ``environ``.. This is a short-hand for working with systems that seed the environment with relevant data such as Jenkins. :type with_env: Specify ``True`` to include all environment variables, or specify a list of strings of variable names to include. :param with_grains: Include grains from the current minion in the event data as ``grains``. :type with_grains: Specify ``True`` to include all grains, or specify a list of strings of grain names to include. :param with_pillar: Include Pillar values from the current minion in the event data as ``pillar``. Remember Pillar data is often sensitive data so be careful. This is useful for passing ephemeral Pillar values through an event. Such as passing the ``pillar={}`` kwarg in :py:func:`state.sls \u0026lt;salt.modules.state.sls\u0026gt;` from the Master, through an event on the Minion, then back to the Master. :type with_pillar: Specify ``True`` to include all Pillar values, or specify a list of strings of Pillar keys to include. It is a best-practice to only specify a relevant subset of Pillar data. :param with_env_opts: Include ``saltenv`` and ``pillarenv`` set on minion at the moment when event is send into event data. :type with_env_opts: Specify ``True`` to include ``saltenv`` and ``pillarenv`` values or ``False`` to omit them. :param kwargs: Any additional keyword arguments passed to this function will be interpreted as key-value pairs and included in the event data. This provides a convenient alternative to YAML for simple values. CLI Example: salt-call event.send myco/mytag foo=Foo bar=Bar salt-call event.send 'myco/mytag' '{foo: Foo, bar: Bar}' extfs.attributes:\nReturn attributes from dumpe2fs for a specified device CLI Example: salt '*' extfs.attributes /dev/sda1 extfs.blocks:\nReturn block and inode info from dumpe2fs for a specified device CLI Example: salt '*' extfs.blocks /dev/sda1 extfs.dump:\nReturn all contents of dumpe2fs for a specified device CLI Example: salt '*' extfs.dump /dev/sda1 extfs.mkfs:\nCreate a file system on the specified device full_return : False If ``True``, the full ``cmd.run_all`` dictionary will be returned instead of just stdout/stderr text. Useful for setting the result of the ``module.run`` state. CLI Example: salt '*' extfs.mkfs /dev/sda1 fs_type=ext4 opts='acl,noexec' Valid options are: * **block_size**: 1024, 2048 or 4096 * **check**: check for bad blocks * **direct**: use direct IO * **ext_opts**: extended file system options (comma-separated) * **fragment_size**: size of fragments * **force**: setting force to True will cause mke2fs to specify the -F option twice (it is already set once); this is truly dangerous * **blocks_per_group**: number of blocks in a block group * **number_of_groups**: ext4 option for a virtual block group * **bytes_per_inode**: set the bytes/inode ratio * **inode_size**: size of the inode * **journal**: set to True to create a journal (default on ext3/4) * **journal_opts**: options for the fs journal (comma separated) * **blocks_file**: read bad blocks from file * **label**: label to apply to the file system * **reserved**: percentage of blocks reserved for super-user * **last_dir**: last mounted directory * **test**: set to True to not actually create the file system (mke2fs -n) * **number_of_inodes**: override default number of inodes * **creator_os**: override \u0026quot;creator operating system\u0026quot; field * **opts**: mount options (comma separated) * **revision**: set the filesystem revision (default 1) * **super**: write superblock and group descriptors only * **fs_type**: set the filesystem type (REQUIRED) * **usage_type**: how the filesystem is going to be used * **uuid**: set the UUID for the file system * **cluster_size**: specify the size of cluster in bytes for file systems using the bigalloc feature * **root_directory**: copy the contents of the given directory into the root directory of the file system * **errors_behavior**: change the behaviour of the kernel code when errors are detected See the ``mke2fs(8)`` manpage for a more complete description of these options. extfs.tune:\nSet attributes for the specified device (using tune2fs) full_return : False If ``True``, the full ``cmd.run_all`` dictionary will be returned instead of just stdout/stderr text. Useful for setting the result of the ``module.run`` state. CLI Example: salt '*' extfs.tune /dev/sda1 force=True label=wildstallyns opts='acl,noexec' Valid options are: * **max**: max mount count * **count**: mount count * **error**: error behaviour * **extended_opts**: extended options (comma separated) * **force**: force, even if there are errors (set to True) * **group**: group name or gid that can use the reserved blocks * **interval**: interval between checks * **journal**: set to True to create a journal (default on ext3/4) * **journal_opts**: options for the fs journal (comma separated) * **label**: label to apply to the file system * **reserved_percentage**: percentage of blocks reserved for super-user * **last_dir**: last mounted directory * **opts**: mount options (comma separated) * **feature**: set or clear a feature (comma separated) * **mmp_check**: mmp check interval * **reserved**: reserved blocks count * **quota_opts**: quota options (comma separated) * **time**: time last checked * **user**: user or uid who can use the reserved blocks * **uuid**: set the UUID for the file system See the ``mke2fs(8)`` manpage for a more complete description of these options. file.access:\nNew in version 2014.1.0 Test whether the Salt process has the specified access to the file. One of the following modes must be specified: f: Test the existence of the path r: Test the readability of the path w: Test the writability of the path x: Test whether the path can be executed CLI Example: salt '*' file.access /path/to/file f salt '*' file.access /path/to/file x file.append:\nNew in version 0.9.5 Append text to the end of a file path path to file `*args` strings to append to file CLI Example: salt '*' file.append /etc/motd \\ \u0026quot;With all thine offerings thou shalt offer salt.\u0026quot; \\ \u0026quot;Salt is what makes things taste bad when it isn't in them.\u0026quot; .. admonition:: Attention If you need to pass a string to append and that string contains an equal sign, you **must** include the argument name, args. For example: salt '*' file.append /etc/motd args='cheese=spam' salt '*' file.append /etc/motd args=\u0026quot;['cheese=spam','spam=cheese']\u0026quot; file.apply_template_on_contents:\nReturn the contents after applying the templating engine contents template string template template format context Overrides default context variables passed to the template. defaults Default context passed to the template. CLI Example: salt '*' file.apply_template_on_contents \\ contents='This is a {{ template }} string.' \\ template=jinja \\ \u0026quot;context={}\u0026quot; \u0026quot;defaults={'template': 'cool'}\u0026quot; \\ saltenv=base file.basename:\nReturns the final component of a pathname New in version 2015.5.0 This can be useful at the CLI but is frequently useful when scripting. {%- set filename = salt['file.basename'](source_file) %} CLI Example: salt '*' file.basename 'test/test.config' file.blockreplace:\nNew in version 2014.1.0 Replace content of a text block in a file, delimited by line markers A block of content delimited by comments can help you manage several lines entries without worrying about old entries removal. Note: This function will store two copies of the file in-memory (the original version and the edited version) in order to detect changes and only edit the targeted file if necessary. path Filesystem path to the file to be edited marker_start The line content identifying a line as the start of the content block. Note that the whole line containing this marker will be considered, so whitespace or extra content before or after the marker is included in final output marker_end The line content identifying the end of the content block. As of versions 2017.7.5 and 2018.3.1, everything up to the text matching the marker will be replaced, so it's important to ensure that your marker includes the beginning of the text you wish to replace. content The content to be used between the two lines identified by marker_start and marker_stop. append_if_not_found: False If markers are not found and set to ``True`` then, the markers and content will be appended to the file. prepend_if_not_found: False If markers are not found and set to ``True`` then, the markers and content will be prepended to the file. insert_before_match If markers are not found, this parameter can be set to a regex which will insert the block before the first found occurrence in the file. New in version 3001 insert_after_match If markers are not found, this parameter can be set to a regex which will insert the block after the first found occurrence in the file. New in version 3001 backup The file extension to use for a backup of the file if any edit is made. Set to ``False`` to skip making a backup. dry_run: False If ``True``, do not make any edits to the file and simply return the changes that *would* be made. show_changes: True Controls how changes are presented. If ``True``, this function will return a unified diff of the changes made. If False, then it will return a boolean (``True`` if any changes were made, otherwise ``False``). append_newline: False Controls whether or not a newline is appended to the content block. If the value of this argument is ``True`` then a newline will be added to the content block. If it is ``False``, then a newline will *not* be added to the content block. If it is ``None`` then a newline will only be added to the content block if it does not already end in a newline. New in version 2016.3.4 Changed in version 2017.7.5,2018.3.1 New behaviour added when value is ``None``. Changed in version 2019.2.0 The default value of this argument will change to ``None`` to match the behaviour of the :py:func:`file.blockreplace state \u0026lt;salt.states.file.blockreplace\u0026gt;` CLI Example: salt '*' file.blockreplace /etc/hosts '#-- start managed zone foobar : DO NOT EDIT --' \\ '#-- end managed zone foobar --' $'10.0.1.1 foo.foobar\\n10.0.1.2 bar.foobar' True file.chattr:\nNew in version 2018.3.0 Change the attributes of files. This function accepts one or more files and the following options: operator Can be wither ``add`` or ``remove``. Determines whether attributes should be added or removed from files attributes One or more of the following characters: ``aAcCdDeijPsStTu``, representing attributes to add to/remove from files version a version number to assign to the file(s) flags One or more of the following characters: ``RVf``, representing flags to assign to chattr (recurse, verbose, suppress most errors) CLI Example: salt '*' file.chattr foo1.txt foo2.txt operator=add attributes=ai salt '*' file.chattr foo3.txt operator=remove attributes=i version=2 file.check_file_meta:\nCheck for the changes in the file metadata. CLI Example: salt '*' file.check_file_meta /etc/httpd/conf.d/httpd.conf None salt://http/httpd.conf '{hash_type: 'md5', 'hsum': \u0026lt;md5sum\u0026gt;}' root root '755' None base Note: Supported hash types include sha512, sha384, sha256, sha224, sha1, and md5. name Path to file destination sfn Template-processed source file contents source URL to file source source_sum File checksum information as a dictionary {hash_type: md5, hsum: \u0026lt;md5sum\u0026gt;} user Destination file user owner group Destination file group owner mode Destination file permissions mode attrs Destination file attributes New in version 2018.3.0 saltenv Salt environment used to resolve source files contents File contents seuser selinux user attribute New in version 3001 serole selinux role attribute New in version 3001 setype selinux type attribute New in version 3001 serange selinux range attribute New in version 3001 verify_ssl If ``False``, remote https file sources (``https://``) will not attempt to validate the servers certificate. Default is True. New in version 3002 follow_symlinks If the desired path is a symlink, follow it and check the permissions of the file to which the symlink points. New in version 3005 file.check_hash:\nCheck if a file matches the given hash string Returns ``True`` if the hash matches, otherwise ``False``. path Path to a file local to the minion. hash The hash to check against the file specified in the ``path`` argument. Changed in version 2016.11.4 For this and newer versions the hash can be specified without an accompanying hash type (e.g. ``e138491e9d5b97023cea823fe17bac22``), but for earlier releases it is necessary to also specify the hash type in the format ``\u0026lt;hash_type\u0026gt;=\u0026lt;hash_value\u0026gt;`` (e.g. ``md5=e138491e9d5b97023cea823fe17bac22``). CLI Example: salt '*' file.check_hash /etc/fstab e138491e9d5b97023cea823fe17bac22 salt '*' file.check_hash /etc/fstab md5=e138491e9d5b97023cea823fe17bac22 file.check_managed:\nCheck to see what changes need to be made for a file follow_symlinks If the desired path is a symlink, follow it and check the permissions of the file to which the symlink points. New in version 3005 CLI Example: salt '*' file.check_managed /etc/httpd/conf.d/httpd.conf salt://http/httpd.conf '{hash_type: 'md5', 'hsum': \u0026lt;md5sum\u0026gt;}' root, root, '755' jinja True None None base file.check_managed_changes:\nReturn a dictionary of what changes need to be made for a file Changed in version 3001 selinux attributes added verify_ssl If ``False``, remote https file sources (``https://``) and source_hash will not attempt to validate the servers certificate. Default is True. New in version 3002 follow_symlinks If the desired path is a symlink, follow it and check the permissions of the file to which the symlink points. New in version 3005 CLI Example: salt '*' file.check_managed_changes /etc/httpd/conf.d/httpd.conf salt://http/httpd.conf '{hash_type: 'md5', 'hsum': \u0026lt;md5sum\u0026gt;}' root, root, '755' jinja True None None base file.check_perms:\nChanged in version 3001 Added selinux options Check the permissions on files, modify attributes and chown if needed. File attributes are only verified if lsattr(1) is installed. CLI Example: salt '*' file.check_perms /etc/sudoers '{}' root root 400 ai Changed in version 2014.1.3 ``follow_symlinks`` option added file.chgrp:\nChange the group of a file path path to the file or directory group group owner CLI Example: salt '*' file.chgrp /etc/passwd root file.chown:\nChown a file, pass the file the desired user and group path path to the file or directory user user owner group group owner CLI Example: salt '*' file.chown /etc/passwd root root file.comment:\n.. deprecated:: 0.17.0 Use :py:func:`~salt.modules.file.replace` instead. Comment out specified lines in a file path The full path to the file to be edited regex A regular expression used to find the lines that are to be commented; this pattern will be wrapped in parenthesis and will move any preceding/trailing ``^`` or ``$`` characters outside the parenthesis (e.g., the pattern ``^foo$`` will be rewritten as ``^(foo)$``) char: ``#`` The character to be inserted at the beginning of a line in order to comment it out backup: ``.bak`` The file will be backed up before edit with this file extension Warning: This backup will be overwritten each time ``sed`` / ``comment`` / ``uncomment`` is called. Meaning the backup will only be useful after the first invocation. CLI Example: salt '*' file.comment /etc/modules pcspkr file.comment_line:\nComment or Uncomment a line in a text file. :param path: string The full path to the text file. :param regex: string A regex expression that begins with ``^`` that will find the line you wish to comment. Can be as simple as ``^colour =`` :param char: string The character used to comment a line in the type of file you're referencing. Default is ``#`` :param cmnt: boolean True to comment the line. False to uncomment the line. Default is True. :param backup: string The file extension to give the backup file. Default is ``.bak`` Set to False/None to not keep a backup. :return: boolean Returns True if successful, False if not CLI Example: The following example will comment out the ``pcspkr`` line in the ``/etc/modules`` file using the default ``#`` character and create a backup file named ``modules.bak`` salt '*' file.comment_line '/etc/modules' '^pcspkr' CLI Example: The following example will uncomment the ``log_level`` setting in ``minion`` config file if it is set to either ``warning``, ``info``, or ``debug`` using the ``#`` character and create a backup file named ``minion.bk`` salt '*' file.comment_line 'C:\\salt\\conf\\minion' '^log_level: (warning|info|debug)' '#' False '.bk' file.contains:\n.. deprecated:: 0.17.0 Use :func:`search` instead. Return ``True`` if the file at ``path`` contains ``text`` CLI Example: salt '*' file.contains /etc/crontab 'mymaintenance.sh' file.contains_glob:\n.. deprecated:: 0.17.0 Use :func:`search` instead. Return ``True`` if the given glob matches a string in the named file CLI Example: salt '*' file.contains_glob /etc/foobar '*cheese*' file.contains_regex:\n.. deprecated:: 0.17.0 Use :func:`search` instead. Return True if the given regular expression matches on any line in the text of a given file. If the lchar argument (leading char) is specified, it will strip `lchar` from the left side of each line before trying to match CLI Example: salt '*' file.contains_regex /etc/crontab file.copy:\nCopy a file or directory from source to dst In order to copy a directory, the recurse flag is required, and will by default overwrite files in the destination with the same path, and retain all other existing files. (similar to cp -r on unix) remove_existing will remove all files in the target directory, and then copy files from the source. Note: The copy function accepts paths that are local to the Salt minion. This function does not support salt://, http://, or the other additional file paths that are supported by :mod:`states.file.managed \u0026lt;salt.states.file.managed\u0026gt;` and :mod:`states.file.recurse \u0026lt;salt.states.file.recurse\u0026gt;`. CLI Example: salt '*' file.copy /path/to/src /path/to/dst salt '*' file.copy /path/to/src_dir /path/to/dst_dir recurse=True salt '*' file.copy /path/to/src_dir /path/to/dst_dir recurse=True remove_existing=True file.delete_backup:\nNew in version 0.17.0 Delete a previous version of a file that was backed up using Salt's :ref:`file state backup \u0026lt;file-state-backups\u0026gt;` system. path The path on the minion to check for backups backup_id The numeric id for the backup you wish to delete, as found using :mod:`file.list_backups \u0026lt;salt.modules.file.list_backups\u0026gt;` CLI Example: salt '*' file.delete_backup /var/cache/salt/minion/file_backup/home/foo/bar/baz.txt 0 file.directory_exists:\nTests to see if path is a valid directory. Returns True/False. CLI Example: salt '*' file.directory_exists /etc file.dirname:\nReturns the directory component of a pathname New in version 2015.5.0 This can be useful at the CLI but is frequently useful when scripting. {%- from salt['file.dirname'](tpldir) + '/vars.jinja' import parent_vars %} CLI Example: salt '*' file.dirname 'test/path/filename.config' file.diskusage:\nRecursively calculate disk usage of path and return it in bytes CLI Example: salt '*' file.diskusage /path/to/check file.extract_hash:\nChanged in version 2016.3.5 Prior to this version, only the ``file_name`` argument was considered for filename matches in the hash file. This would be problematic for cases in which the user was relying on a remote checksum file that they do not control, and they wished to use a different name for that file on the minion from the filename on the remote server (and in the checksum file). For example, managing ``/tmp/myfile.tar.gz`` when the remote file was at ``https://mydomain.tld/different_name.tar.gz``. The :py:func:`file.managed \u0026lt;salt.states.file.managed\u0026gt;` state now also passes this function the source URI as well as the ``source_hash_name`` (if specified). In cases where ``source_hash_name`` is specified, it takes precedence over both the ``file_name`` and ``source``. When it is not specified, ``file_name`` takes precedence over ``source``. This allows for better capability for matching hashes. Changed in version 2016.11.0 File name and source URI matches are no longer disregarded when ``source_hash_name`` is specified. They will be used as fallback matches if there is no match to the ``source_hash_name`` value. This routine is called from the :mod:`file.managed \u0026lt;salt.states.file.managed\u0026gt;` state to pull a hash from a remote file. Regular expressions are used line by line on the ``source_hash`` file, to find a potential candidate of the indicated hash type. This avoids many problems of arbitrary file layout rules. It specifically permits pulling hash codes from debian ``*.dsc`` files. If no exact match of a hash and filename are found, then the first hash found (if any) will be returned. If no hashes at all are found, then ``None`` will be returned. For example: openerp_7.0-latest-1.tar.gz: file.managed: - name: /tmp/openerp_7.0-20121227-075624-1_all.deb - source: http://nightly.openerp.com/7.0/nightly/deb/openerp_7.0-20121227-075624-1.tar.gz - source_hash: http://nightly.openerp.com/7.0/nightly/deb/openerp_7.0-20121227-075624-1.dsc CLI Example: salt '*' file.extract_hash /path/to/hash/file sha512 /etc/foo file.file_exists:\nTests to see if path is a valid file. Returns True/False. CLI Example: salt '*' file.file_exists /etc/passwd file.find:\nApproximate the Unix ``find(1)`` command and return a list of paths that meet the specified criteria. The options include match criteria: name = path-glob # case sensitive iname = path-glob # case insensitive regex = path-regex # case sensitive iregex = path-regex # case insensitive type = file-types # match any listed type user = users # match any listed user group = groups # match any listed group size = [+-]number[size-unit] # default unit = byte mtime = interval # modified since date grep = regex # search file contents and/or actions: delete [= file-types] # default type = 'f' exec = command [arg ...] # where {} is replaced by pathname print [= print-opts] and/or depth criteria: maxdepth = maximum depth to transverse in path mindepth = minimum depth to transverse before checking files or directories The default action is ``print=path`` ``path-glob``: * = match zero or more chars ? = match any char [abc] = match a, b, or c [!abc] or [^abc] = match anything except a, b, and c [x-y] = match chars x through y [!x-y] or [^x-y] = match anything except chars x through y {a,b,c} = match a or b or c ``path-regex``: a Python Regex (regular expression) pattern to match pathnames ``file-types``: a string of one or more of the following: a: all file types b: block device c: character device d: directory p: FIFO (named pipe) f: plain file l: symlink s: socket ``users``: a space and/or comma separated list of user names and/or uids ``groups``: a space and/or comma separated list of group names and/or gids ``size-unit``: b: bytes k: kilobytes m: megabytes g: gigabytes t: terabytes interval: [\u0026lt;num\u0026gt;w] [\u0026lt;num\u0026gt;d] [\u0026lt;num\u0026gt;h] [\u0026lt;num\u0026gt;m] [\u0026lt;num\u0026gt;s] where: w: week d: day h: hour m: minute s: second print-opts: a comma and/or space separated list of one or more of the following: group: group name md5: MD5 digest of file contents mode: file permissions (as integer) mtime: last modification time (as time_t) name: file basename path: file absolute path size: file size in bytes type: file type user: user name CLI Examples: salt '*' file.find / type=f name=\\*.bak size=+10m salt '*' file.find /var mtime=+30d size=+10m print=path,size,mtime salt '*' file.find /var/log name=\\*.[0-9] mtime=+30d size=+10m delete file.get_devmm:\nGet major/minor info from a device CLI Example: salt '*' file.get_devmm /dev/chr file.get_diff:\nReturn unified diff of two files file1 The first file to feed into the diff utility Changed in version 2018.3.0 Can now be either a local or remote file. In earlier releases, thuis had to be a file local to the minion. file2 The second file to feed into the diff utility Changed in version 2018.3.0 Can now be either a local or remote file. In earlier releases, this had to be a file on the salt fileserver (i.e. ``salt://somefile.txt``) show_filenames: True Set to ``False`` to hide the filenames in the top two lines of the diff. show_changes: True If set to ``False``, and there are differences, then instead of a diff a simple message stating that show_changes is set to ``False`` will be returned. template: False Set to ``True`` if two templates are being compared. This is not useful except for within states, with the ``obfuscate_templates`` option set to ``True``. New in version 2018.3.0 source_hash_file1 If ``file1`` is an http(s)/ftp URL and the file exists in the minion's file cache, this option can be passed to keep the minion from re-downloading the archive if the cached copy matches the specified hash. New in version 2018.3.0 source_hash_file2 If ``file2`` is an http(s)/ftp URL and the file exists in the minion's file cache, this option can be passed to keep the minion from re-downloading the archive if the cached copy matches the specified hash. New in version 2018.3.0 CLI Examples: salt '*' file.get_diff /home/fred/.vimrc salt://users/fred/.vimrc salt '*' file.get_diff /tmp/foo.txt /tmp/bar.txt file.get_gid:\nReturn the id of the group that owns a given file path file or directory of which to get the gid follow_symlinks indicated if symlinks should be followed CLI Example: salt '*' file.get_gid /etc/passwd Changed in version 0.16.4 ``follow_symlinks`` option added file.get_group:\nReturn the group that owns a given file path file or directory of which to get the group follow_symlinks indicated if symlinks should be followed CLI Example: salt '*' file.get_group /etc/passwd Changed in version 0.16.4 ``follow_symlinks`` option added file.get_hash:\nGet the hash sum of a file This is better than ``get_sum`` for the following reasons: - It does not read the entire file into memory. - It does not return a string on error. The returned value of ``get_sum`` cannot really be trusted since it is vulnerable to collisions: ``get_sum(..., 'xyz') == 'Hash xyz not supported'`` path path to the file or directory form desired sum format chunk_size amount to sum at once CLI Example: salt '*' file.get_hash /etc/shadow file.get_managed:\nReturn the managed file data for file.managed name location where the file lives on the server template template format source managed source file source_hash hash of the source file source_hash_name When ``source_hash`` refers to a remote file, this specifies the filename to look for in that file. New in version 2016.3.5 user Owner of file group Group owner of file mode Permissions of file attrs Attributes of file New in version 2018.3.0 context Variables to add to the template context defaults Default values of for context_dict skip_verify If ``True``, hash verification of remote file sources (``http://``, ``https://``, ``ftp://``) will be skipped, and the ``source_hash`` argument will be ignored. New in version 2016.3.0 verify_ssl If ``False``, remote https file sources (``https://``) and source_hash will not attempt to validate the servers certificate. Default is True. New in version 3002 use_etag If ``True``, remote http/https file sources will attempt to use the ETag header to determine if the remote file needs to be downloaded. This provides a lightweight mechanism for promptly refreshing files changed on a web server without requiring a full hash comparison via the ``source_hash`` parameter. New in version 3005 source_hash_sig When ``source`` is a remote file source, ``source_hash`` is a file, ``skip_verify`` is not true and ``use_etag`` is not true, ensure a valid GPG signature exists on the source hash file. Set this to ``true`` for an inline (clearsigned) signature, or to a file URI retrievable by `:py:func:`cp.cache_file \u0026lt;salt.modules.cp.cache_file\u0026gt;` for a detached one. New in version 3007.0 signed_by_any When verifying ``source_hash_sig``, require at least one valid signature from one of a list of key fingerprints. This is passed to :py:func:`gpg.verify \u0026lt;salt.modules.gpg.verify\u0026gt;`. New in version 3007.0 signed_by_all When verifying ``source_hash_sig``, require a valid signature from each of the key fingerprints in this list. This is passed to :py:func:`gpg.verify \u0026lt;salt.modules.gpg.verify\u0026gt;`. New in version 3007.0 keyring When verifying ``source_hash_sig``, use this keyring. New in version 3007.0 gnupghome When verifying ``source_hash_sig``, use this GnuPG home. New in version 3007.0 CLI Example: salt '*' file.get_managed /etc/httpd/conf.d/httpd.conf jinja salt://http/httpd.conf '{hash_type: 'md5', 'hsum': \u0026lt;md5sum\u0026gt;}' None root root '755' base None None file.get_mode:\nReturn the mode of a file path file or directory of which to get the mode follow_symlinks indicated if symlinks should be followed CLI Example: salt '*' file.get_mode /etc/passwd Changed in version 2014.1.0 ``follow_symlinks`` option added file.get_selinux_context:\nGet an SELinux context from a given path CLI Example: salt '*' file.get_selinux_context /etc/hosts file.get_source_sum:\nNew in version 2016.11.0 Used by :py:func:`file.get_managed \u0026lt;salt.modules.file.get_managed\u0026gt;` to obtain the hash and hash type from the parameters specified below. file_name Optional file name being managed, for matching with :py:func:`file.extract_hash \u0026lt;salt.modules.file.extract_hash\u0026gt;`. source Source file, as used in :py:mod:`file \u0026lt;salt.states.file\u0026gt;` and other states. If ``source_hash`` refers to a file containing hashes, then this filename will be used to match a filename in that file. If the ``source_hash`` is a hash expression, then this argument will be ignored. source_hash Hash file/expression, as used in :py:mod:`file \u0026lt;salt.states.file\u0026gt;` and other states. If this value refers to a remote URL or absolute path to a local file, it will be cached and :py:func:`file.extract_hash \u0026lt;salt.modules.file.extract_hash\u0026gt;` will be used to obtain a hash from it. source_hash_name Specific file name to look for when ``source_hash`` refers to a remote file, used to disambiguate ambiguous matches. saltenv: base Salt fileserver environment from which to retrieve the source_hash. This value will only be used when ``source_hash`` refers to a file on the Salt fileserver (i.e. one beginning with ``salt://``). verify_ssl If ``False``, remote https file sources (``https://``) and source_hash will not attempt to validate the servers certificate. Default is True. New in version 3002 source_hash_sig When ``source`` is a remote file source and ``source_hash`` is a file, ensure a valid GPG signature exists on the source hash file. Set this to ``true`` for an inline (clearsigned) signature, or to a file URI retrievable by `:py:func:`cp.cache_file \u0026lt;salt.modules.cp.cache_file\u0026gt;` for a detached one. New in version 3007.0 signed_by_any When verifying ``source_hash_sig``, require at least one valid signature from one of a list of key fingerprints. This is passed to :py:func:`gpg.verify \u0026lt;salt.modules.gpg.verify\u0026gt;`. New in version 3007.0 signed_by_all When verifying ``source_hash_sig``, require a valid signature from each of the key fingerprints in this list. This is passed to :py:func:`gpg.verify \u0026lt;salt.modules.gpg.verify\u0026gt;`. New in version 3007.0 keyring When verifying ``source_hash_sig``, use this keyring. New in version 3007.0 gnupghome When verifying ``source_hash_sig``, use this GnuPG home. New in version 3007.0 CLI Example: salt '*' file.get_source_sum /tmp/foo.tar.gz source=http://mydomain.tld/foo.tar.gz source_hash=499ae16dcae71eeb7c3a30c75ea7a1a6 salt '*' file.get_source_sum /tmp/foo.tar.gz source=http://mydomain.tld/foo.tar.gz source_hash=https://mydomain.tld/hashes.md5 salt '*' file.get_source_sum /tmp/foo.tar.gz source=http://mydomain.tld/foo.tar.gz source_hash=https://mydomain.tld/hashes.md5 source_hash_name=./dir2/foo.tar.gz file.get_sum:\nReturn the checksum for the given file. The following checksum algorithms are supported: * md5 * sha1 * sha224 * sha256 **(default)** * sha384 * sha512 path path to the file or directory form desired sum format CLI Example: salt '*' file.get_sum /etc/passwd sha512 file.get_uid:\nReturn the id of the user that owns a given file path file or directory of which to get the uid follow_symlinks indicated if symlinks should be followed CLI Example: salt '*' file.get_uid /etc/passwd Changed in version 0.16.4 ``follow_symlinks`` option added file.get_user:\nReturn the user that owns a given file path file or directory of which to get the user follow_symlinks indicated if symlinks should be followed CLI Example: salt '*' file.get_user /etc/passwd Changed in version 0.16.4 ``follow_symlinks`` option added file.gid_to_group:\nConvert the group id to the group name on this system gid gid to convert to a group name CLI Example: salt '*' file.gid_to_group 0 file.grep:\nGrep for a string in the specified file Note: This function's return value is slated for refinement in future versions of Salt Windows does not support the ``grep`` functionality. path Path to the file to be searched Note: Globbing is supported (i.e. ``/var/log/foo/*.log``, but if globbing is being used then the path should be quoted to keep the shell from attempting to expand the glob expression. pattern Pattern to match. For example: ``test``, or ``a[0-5]`` opts Additional command-line flags to pass to the grep command. For example: ``-v``, or ``-i -B2`` Note: The options should come after a double-dash (as shown in the examples below) to keep Salt's own argument parser from interpreting them. CLI Example: salt '*' file.grep /etc/passwd nobody salt '*' file.grep /etc/sysconfig/network-scripts/ifcfg-eth0 ipaddr -- -i salt '*' file.grep /etc/sysconfig/network-scripts/ifcfg-eth0 ipaddr -- -i -B2 salt '*' file.grep \u0026quot;/etc/sysconfig/network-scripts/*\u0026quot; ipaddr -- -i -l file.group_to_gid:\nConvert the group to the gid on this system group group to convert to its gid CLI Example: salt '*' file.group_to_gid root file.is_blkdev:\nCheck if a file exists and is a block device. CLI Example: salt '*' file.is_blkdev /dev/blk file.is_chrdev:\nCheck if a file exists and is a character device. CLI Example: salt '*' file.is_chrdev /dev/chr file.is_fifo:\nCheck if a file exists and is a FIFO. CLI Example: salt '*' file.is_fifo /dev/fifo file.is_hardlink:\nCheck if the path is a hard link by verifying that the number of links is larger than 1 CLI Example: salt '*' file.is_hardlink /path/to/link file.is_link:\nCheck if the path is a symbolic link CLI Example: salt '*' file.is_link /path/to/link file.join:\nReturn a normalized file system path for the underlying OS New in version 2014.7.0 This can be useful at the CLI but is frequently useful when scripting combining path variables: {% set www_root = '/var' %} {% set app_dir = 'myapp' %} myapp_config: file: - managed - name: {{ salt['file.join'](www_root, app_dir, 'config.yaml') }} CLI Example: salt '*' file.join '/' 'usr' 'local' 'bin' file.lchown:\nChown a file, pass the file the desired user and group without following symlinks. path path to the file or directory user user owner group group owner CLI Example: salt '*' file.chown /etc/passwd root root file.line:\nNew in version 2015.8.0 Line-focused editing of a file. Note: ``file.line`` exists for historic reasons, and is not generally recommended. It has a lot of quirks. You may find ``file.replace`` to be more suitable. ``file.line`` is most useful if you have single lines in a file (potentially a config file) that you would like to manage. It can remove, add, and replace a single line at a time. path Filesystem path to the file to be edited. content Content of the line. Allowed to be empty if ``mode='delete'``. match Match the target line for an action by a fragment of a string or regular expression. If neither ``before`` nor ``after`` are provided, and ``match`` is also ``None``, match falls back to the ``content`` value. mode Defines how to edit a line. One of the following options is required: - ensure If line does not exist, it will be added. If ``before`` and ``after`` are specified either zero lines, or lines that contain the ``content`` line are allowed to be in between ``before`` and ``after``. If there are lines, and none of them match then it will produce an error. - replace If line already exists, the entire line will be replaced. - delete Delete the line, if found. - insert Nearly identical to ``ensure``. If a line does not exist, it will be added. The differences are that multiple (and non-matching) lines are alloweed between ``before`` and ``after``, if they are specified. The line will always be inserted right before ``before``. ``insert`` also allows the use of ``location`` to specify that the line should be added at the beginning or end of the file. Note: If ``mode='insert'`` is used, at least one of ``location``, ``before``, or ``after`` is required. If ``location`` is used, ``before`` and ``after`` are ignored. location In ``mode='insert'`` only, whether to place the ``content`` at the beginning or end of a the file. If ``location`` is provided, ``before`` and ``after`` are ignored. Valid locations: - start Place the content at the beginning of the file. - end Place the content at the end of the file. before Regular expression or an exact case-sensitive fragment of the string. Will be tried as **both** a regex **and** a part of the line. Must match **exactly** one line in the file. This value is only used in ``ensure`` and ``insert`` modes. The ``content`` will be inserted just before this line, with matching indentation unless ``indent=False``. after Regular expression or an exact case-sensitive fragment of the string. Will be tried as **both** a regex **and** a part of the line. Must match **exactly** one line in the file. This value is only used in ``ensure`` and ``insert`` modes. The ``content`` will be inserted directly after this line, unless ``before`` is also provided. If ``before`` is not provided, indentation will match this line, unless ``indent=False``. show_changes Output a unified diff of the old file and the new file. If ``False`` return a boolean if any changes were made. Default is ``True`` Note: Using this option will store two copies of the file in-memory (the original version and the edited version) in order to generate the diff. backup Create a backup of the original file with the extension: \u0026quot;Year-Month-Day-Hour-Minutes-Seconds\u0026quot;. quiet Do not raise any exceptions. E.g. ignore the fact that the file that is tried to be edited does not exist and nothing really happened. indent Keep indentation with the previous line. This option is not considered when the ``delete`` mode is specified. Default is ``True`` CLI Example: salt '*' file.line /etc/nsswitch.conf \u0026quot;networks: files dns\u0026quot; after=\u0026quot;hosts:.*?\u0026quot; mode='ensure' Note: If an equal sign (``=``) appears in an argument to a Salt command, it is interpreted as a keyword argument in the format of ``key=val``. That processing can be bypassed in order to pass an equal sign through to the remote shell command by manually specifying the kwarg: salt '*' file.line /path/to/file content=\u0026quot;CREATEMAIL_SPOOL=no\u0026quot; match=\u0026quot;CREATE_MAIL_SPOOL=yes\u0026quot; mode=\u0026quot;replace\u0026quot; **Examples:** Here's a simple config file. [some_config] # Some config file # this line will go away here=False away=True goodybe=away salt \\* file.line /some/file.conf mode=delete match=away This will produce: [some_config] # Some config file here=False away=True goodbye=away If that command is executed 2 more times, this will be the result: [some_config] # Some config file here=False If we reset the file to its original state and run salt \\* file.line /some/file.conf mode=replace match=away content=here Three passes will this state will result in this file: [some_config] # Some config file here here=False here here Each pass replacing the first line found. Given this file: insert after me something insert before me The following command salt \\* file.line /some/file.txt mode=insert after=\u0026quot;insert after me\u0026quot; before=\u0026quot;insert before me\u0026quot; content=thrice If that command is executed 3 times, the result will be: insert after me something thrice thrice thrice insert before me If the mode is ``ensure`` instead, it will fail each time. To succeed, we need to remove the incorrect line between before and after: insert after me insert before me With an ensure mode, this will insert ``thrice`` the first time and make no changes for subsequent calls. For something simple this is fine, but if you have instead blocks like this: Begin SomeBlock foo = bar End Begin AnotherBlock another = value End And you try to use ensure this way: salt \\* file.line /tmp/fun.txt mode=\u0026quot;ensure\u0026quot; content=\u0026quot;this = should be my content\u0026quot; after=\u0026quot;Begin SomeBlock\u0026quot; before=\u0026quot;End\u0026quot; This will fail because there are multiple ``End`` lines. Without that problem, it still would fail because there is a non-matching line, ``foo = bar``. Ensure **only** allows either zero, or the matching line present to be present in between ``before`` and ``after``. file.link:\nNew in version 2014.1.0 Create a hard link to a file CLI Example: salt '*' file.link /path/to/file /path/to/link file.list_backup:\nThis function is an alias of list_backups.\nNew in version 0.17.0 Lists the previous versions of a file backed up using Salt's :ref:`file state backup \u0026lt;file-state-backups\u0026gt;` system. path The path on the minion to check for backups limit Limit the number of results to the most recent N backups CLI Example: salt '*' file.list_backups /foo/bar/baz.txt file.list_backups:\nNew in version 0.17.0 Lists the previous versions of a file backed up using Salt's :ref:`file state backup \u0026lt;file-state-backups\u0026gt;` system. path The path on the minion to check for backups limit Limit the number of results to the most recent N backups CLI Example: salt '*' file.list_backups /foo/bar/baz.txt file.list_backups_dir:\nLists the previous versions of a directory backed up using Salt's :ref:`file state backup \u0026lt;file-state-backups\u0026gt;` system. path The directory on the minion to check for backups limit Limit the number of results to the most recent N backups CLI Example: salt '*' file.list_backups_dir /foo/bar/baz/ file.lsattr:\nNew in version 2018.3.0 Changed in version 2018.3.1 If ``lsattr`` is not installed on the system, ``None`` is returned. Changed in version 2018.3.4 If on ``AIX``, ``None`` is returned even if in filesystem as lsattr on ``AIX`` is not the same thing as the linux version. Obtain the modifiable attributes of the given file. If path is to a directory, an empty list is returned. path path to file to obtain attributes of. File/directory must exist. CLI Example: salt '*' file.lsattr foo1.txt file.lstat:\nNew in version 2014.1.0 Returns the lstat attributes for the given file or dir. Does not support symbolic links. CLI Example: salt '*' file.lstat /path/to/file file.makedirs:\nEnsure that the directory containing this path is available. Note: The path must end with a trailing slash otherwise the directory/directories will be created up to the parent directory. For example if path is ``/opt/code``, then it would be treated as ``/opt/`` but if the path ends with a trailing slash like ``/opt/code/``, then it would be treated as ``/opt/code/``. CLI Example: salt '*' file.makedirs /opt/code/ file.makedirs_perms:\nTaken and modified from os.makedirs to set user, group and mode for each directory created. CLI Example: salt '*' file.makedirs_perms /opt/code file.manage_file:\nChecks the destination against what was retrieved with get_managed and makes the appropriate modifications (if necessary). name location to place the file sfn location of cached file on the minion This is the path to the file stored on the minion. This file is placed on the minion using cp.cache_file. If the hash sum of that file matches the source_sum, we do not transfer the file to the minion again. This file is then grabbed and if it has template set, it renders the file to be placed into the correct place on the system using salt.files.utils.copyfile() ret The initial state return data structure. Pass in ``None`` to use the default structure. source file reference on the master source_sum sum hash for source user user owner group group owner backup backup_mode attrs attributes to be set on file: '' means remove all of them New in version 2018.3.0 makedirs make directories if they do not exist template format of templating show_changes Include diff in state return contents: contents to be placed in the file dir_mode mode for directories created with makedirs skip_verify: False If ``True``, hash verification of remote file sources (``http://``, ``https://``, ``ftp://``) will be skipped, and the ``source_hash`` argument will be ignored. New in version 2016.3.0 keep_mode: False If ``True``, and the ``source`` is a file from the Salt fileserver (or a local file on the minion), the mode of the destination file will be set to the mode of the source file. Note: keep_mode does not work with salt-ssh. As a consequence of how the files are transferred to the minion, and the inability to connect back to the master with salt-ssh, salt is unable to stat the file as it exists on the fileserver and thus cannot mirror the mode on the salt-ssh minion encoding If specified, then the specified encoding will be used. Otherwise, the file will be encoded using the system locale (usually UTF-8). See https://docs.python.org/3/library/codecs.html#standard-encodings for the list of available encodings. New in version 2017.7.0 encoding_errors: 'strict' Default is ```'strict'```. See https://docs.python.org/2/library/codecs.html#codec-base-classes for the error handling schemes. New in version 2017.7.0 seuser selinux user attribute New in version 3001 serange selinux range attribute New in version 3001 setype selinux type attribute New in version 3001 serange selinux range attribute New in version 3001 verify_ssl If ``False``, remote https file sources (``https://``) will not attempt to validate the servers certificate. Default is True. New in version 3002 use_etag If ``True``, remote http/https file sources will attempt to use the ETag header to determine if the remote file needs to be downloaded. This provides a lightweight mechanism for promptly refreshing files changed on a web server without requiring a full hash comparison via the ``source_hash`` parameter. New in version 3005 signature Ensure a valid GPG signature exists on the selected ``source`` file. Set this to true for inline signatures, or to a file URI retrievable by `:py:func:`cp.cache_file \u0026lt;salt.modules.cp.cache_file\u0026gt;` for a detached one. Note: A signature is only enforced directly after caching the file, before it is moved to its final destination. Existing target files (with the correct checksum) will neither be checked nor deleted. It will be enforced regardless of source type and will be required on the final output, therefore this does not lend itself well when templates are rendered. The file will not be modified, meaning inline signatures are not removed. New in version 3007.0 source_hash_sig When ``source`` is a remote file source, ``source_hash`` is a file, ``skip_verify`` is not true and ``use_etag`` is not true, ensure a valid GPG signature exists on the source hash file. Set this to ``true`` for an inline (clearsigned) signature, or to a file URI retrievable by `:py:func:`cp.cache_file \u0026lt;salt.modules.cp.cache_file\u0026gt;` for a detached one. Note: A signature on the ``source_hash`` file is enforced regardless of changes since its contents are used to check if an existing file is in the correct state - but only for remote sources! As for ``signature``, existing target files will not be modified, only the cached source_hash and source_hash_sig files will be removed. New in version 3007.0 signed_by_any When verifying signatures either on the managed file or its source hash file, require at least one valid signature from one of a list of key fingerprints. This is passed to :py:func:`gpg.verify \u0026lt;salt.modules.gpg.verify\u0026gt;`. New in version 3007.0 signed_by_all When verifying signatures either on the managed file or its source hash file, require a valid signature from each of the key fingerprints in this list. This is passed to :py:func:`gpg.verify \u0026lt;salt.modules.gpg.verify\u0026gt;`. New in version 3007.0 keyring When verifying signatures, use this keyring. New in version 3007.0 gnupghome When verifying signatures, use this GnuPG home. New in version 3007.0 CLI Example: salt '*' file.manage_file /etc/httpd/conf.d/httpd.conf '' '{}' salt://http/httpd.conf '{hash_type: 'md5', 'hsum': \u0026lt;md5sum\u0026gt;}' root root '755' '' base '' Changed in version 2014.7.0 ``follow_symlinks`` option added file.mkdir:\nEnsure that a directory is available. CLI Example: salt '*' file.mkdir /opt/jetty/context file.mknod:\nNew in version 0.17.0 Create a block device, character device, or fifo pipe. Identical to the gnu mknod. CLI Examples: salt '*' file.mknod /dev/chr c 180 31 salt '*' file.mknod /dev/blk b 8 999 salt '*' file.nknod /dev/fifo p file.mknod_blkdev:\nNew in version 0.17.0 Create a block device. CLI Example: salt '*' file.mknod_blkdev /dev/blk 8 999 file.mknod_chrdev:\nNew in version 0.17.0 Create a character device. CLI Example: salt '*' file.mknod_chrdev /dev/chr 180 31 file.mknod_fifo:\nNew in version 0.17.0 Create a FIFO pipe. CLI Example: salt '*' file.mknod_fifo /dev/fifo file.move:\nMove a file or directory disallow_copy_and_unlink If ``True``, the operation is offloaded to the ``file.rename`` execution module function. This will use ``os.rename`` underneath, which will fail in the event that ``src`` and ``dst`` are on different filesystems. If ``False`` (the default), ``shutil.move`` will be used in order to fall back on a \u0026quot;copy then unlink\u0026quot; approach, which is required for moving across filesystems. New in version 3006.0 CLI Example: salt '*' file.move /path/to/src /path/to/dst file.normpath:\nReturns Normalise path, eliminating double slashes, etc. New in version 2015.5.0 This can be useful at the CLI but is frequently useful when scripting. {%- from salt['file.normpath'](tpldir + '/../vars.jinja') import parent_vars %} CLI Example: salt '*' file.normpath 'a/b/c/..' file.open_files:\nReturn a list of all physical open files on the system. CLI Examples: salt '*' file.open_files salt '*' file.open_files by_pid=True file.pardir:\nReturn the relative parent directory path symbol for underlying OS New in version 2014.7.0 This can be useful when constructing Salt Formulas. {% set pardir = salt['file.pardir']() %} {% set final_path = salt['file.join']('subdir', pardir, 'confdir') %} CLI Example: salt '*' file.pardir file.patch:\nNew in version 0.10.4 Apply a patch to a file or directory. Equivalent to: patch \u0026lt;options\u0026gt; -i \u0026lt;patchfile\u0026gt; \u0026lt;originalfile\u0026gt; Or, when a directory is patched: patch \u0026lt;options\u0026gt; -i \u0026lt;patchfile\u0026gt; -d \u0026lt;originalfile\u0026gt; -p0 originalfile The full path to the file or directory to be patched patchfile A patch file to apply to ``originalfile`` options Options to pass to patch. Note: Windows now supports using patch as of 3004. In order to use this function in Windows, please install the patch binary through your own means and ensure it's found in the system Path. If installing through git-for-windows, please select the optional \u0026quot;Use Git and optional Unix tools from the Command Prompt\u0026quot; option when installing Git. CLI Example: salt '*' file.patch /opt/file.txt /tmp/file.txt.patch salt '*' file.patch C:\\file1.txt C:\\file3.patch file.path_exists_glob:\nTests to see if path after expansion is a valid path (file or directory). Expansion allows usage of ? * and character ranges []. Tilde expansion is not supported. Returns True/False. New in version 2014.7.0 CLI Example: salt '*' file.path_exists_glob /etc/pam*/pass* file.prepend:\nNew in version 2014.7.0 Prepend text to the beginning of a file path path to file `*args` strings to prepend to the file CLI Example: salt '*' file.prepend /etc/motd \\ \u0026quot;With all thine offerings thou shalt offer salt.\u0026quot; \\ \u0026quot;Salt is what makes things taste bad when it isn't in them.\u0026quot; .. admonition:: Attention If you need to pass a string to append and that string contains an equal sign, you **must** include the argument name, args. For example: salt '*' file.prepend /etc/motd args='cheese=spam' salt '*' file.prepend /etc/motd args=\u0026quot;['cheese=spam','spam=cheese']\u0026quot; file.psed:\n.. deprecated:: 0.17.0 Use :py:func:`~salt.modules.file.replace` instead. Make a simple edit to a file (pure Python version) Equivalent to: sed \u0026lt;backup\u0026gt; \u0026lt;options\u0026gt; \u0026quot;/\u0026lt;limit\u0026gt;/ s/\u0026lt;before\u0026gt;/\u0026lt;after\u0026gt;/\u0026lt;flags\u0026gt; \u0026lt;file\u0026gt;\u0026quot; path The full path to the file to be edited before A pattern to find in order to replace with ``after`` after Text that will replace ``before`` limit: ``''`` An initial pattern to search for before searching for ``before`` backup: ``.bak`` The file will be backed up before edit with this file extension; **WARNING:** each time ``sed``/``comment``/``uncomment`` is called will overwrite this backup flags: ``gMS`` Flags to modify the search. Valid values are: - ``g``: Replace all occurrences of the pattern, not just the first. - ``I``: Ignore case. - ``L``: Make ``\\w``, ``\\W``, ``\\b``, ``\\B``, ``\\s`` and ``\\S`` dependent on the locale. - ``M``: Treat multiple lines as a single line. - ``S``: Make `.` match all characters, including newlines. - ``U``: Make ``\\w``, ``\\W``, ``\\b``, ``\\B``, ``\\d``, ``\\D``, ``\\s`` and ``\\S`` dependent on Unicode. - ``X``: Verbose (whitespace is ignored). multi: ``False`` If True, treat the entire file as a single line Forward slashes and single quotes will be escaped automatically in the ``before`` and ``after`` patterns. CLI Example: salt '*' file.sed /etc/httpd/httpd.conf 'LogLevel warn' 'LogLevel info' file.read:\nNew in version 2017.7.0 Return the content of the file. :param bool binary: Whether to read and return binary data CLI Example: salt '*' file.read /path/to/file file.readdir:\nNew in version 2014.1.0 Return a list containing the contents of a directory CLI Example: salt '*' file.readdir /path/to/dir/ file.readlink:\nNew in version 2014.1.0 Return the path that a symlink points to Args: path (str): The path to the symlink canonicalize (bool): Get the canonical path eliminating any symbolic links encountered in the path Returns: str: The path that the symlink points to Raises: SaltInvocationError: path is not absolute SaltInvocationError: path is not a link CommandExecutionError: error reading the symbolic link CLI Example: salt '*' file.readlink /path/to/link file.remove:\nRemove the named file. If a directory is supplied, it will be recursively deleted. CLI Example: salt '*' file.remove /tmp/foo Changed in version 3000 The method now works on all types of file system entries, not just files, directories and symlinks. file.remove_backup:\nThis function is an alias of delete_backup.\nNew in version 0.17.0 Delete a previous version of a file that was backed up using Salt's :ref:`file state backup \u0026lt;file-state-backups\u0026gt;` system. path The path on the minion to check for backups backup_id The numeric id for the backup you wish to delete, as found using :mod:`file.list_backups \u0026lt;salt.modules.file.list_backups\u0026gt;` CLI Example: salt '*' file.delete_backup /var/cache/salt/minion/file_backup/home/foo/bar/baz.txt 0 file.rename:\nRename a file or directory CLI Example: salt '*' file.rename /path/to/src /path/to/dst file.replace:\nNew in version 0.17.0 Replace occurrences of a pattern in a file. If ``show_changes`` is ``True``, then a diff of what changed will be returned, otherwise a ``True`` will be returned when changes are made, and ``False`` when no changes are made. This is a pure Python implementation that wraps Python's :py:func:`~re.sub`. path Filesystem path to the file to be edited. If a symlink is specified, it will be resolved to its target. pattern A regular expression, to be matched using Python's :py:func:`~re.search`. repl The replacement text count: 0 Maximum number of pattern occurrences to be replaced. If count is a positive integer ``n``, only ``n`` occurrences will be replaced, otherwise all occurrences will be replaced. flags (list or int) A list of flags defined in the ``re`` module documentation from the Python standard library. Each list item should be a string that will correlate to the human-friendly flag name. E.g., ``['IGNORECASE', 'MULTILINE']``. Optionally, ``flags`` may be an int, with a value corresponding to the XOR (``|``) of all the desired flags. Defaults to 8 (which supports 'MULTILINE'). bufsize (int or str) How much of the file to buffer into memory at once. The default value ``1`` processes one line at a time. The special value ``file`` may be specified which will read the entire file into memory before processing. append_if_not_found: False New in version 2014.7.0 If set to ``True``, and pattern is not found, then the content will be appended to the file. prepend_if_not_found: False New in version 2014.7.0 If set to ``True`` and pattern is not found, then the content will be prepended to the file. not_found_content New in version 2014.7.0 Content to use for append/prepend if not found. If None (default), uses ``repl``. Useful when ``repl`` uses references to group in pattern. backup: .bak The file extension to use for a backup of the file before editing. Set to ``False`` to skip making a backup. dry_run: False If set to ``True``, no changes will be made to the file, the function will just return the changes that would have been made (or a ``True``/``False`` value if ``show_changes`` is set to ``False``). search_only: False If set to true, this no changes will be performed on the file, and this function will simply return ``True`` if the pattern was matched, and ``False`` if not. show_changes: True If ``True``, return a diff of changes made. Otherwise, return ``True`` if changes were made, and ``False`` if not. Note: Using this option will store two copies of the file in memory (the original version and the edited version) in order to generate the diff. This may not normally be a concern, but could impact performance if used with large files. ignore_if_missing: False New in version 2015.8.0 If set to ``True``, this function will simply return ``False`` if the file doesn't exist. Otherwise, an error will be thrown. preserve_inode: True New in version 2015.8.0 Preserve the inode of the file, so that any hard links continue to share the inode with the original filename. This works by *copying* the file, reading from the copy, and writing to the file at the original inode. If ``False``, the file will be *moved* rather than copied, and a new file will be written to a new inode, but using the original filename. Hard links will then share an inode with the backup, instead (if using ``backup`` to create a backup copy). backslash_literal: False New in version 2016.11.7 Interpret backslashes as literal backslashes for the repl and not escape characters. This will help when using append/prepend so that the backslashes are not interpreted for the repl on the second run of the state. If an equal sign (``=``) appears in an argument to a Salt command it is interpreted as a keyword argument in the format ``key=val``. That processing can be bypassed in order to pass an equal sign through to the remote shell command by manually specifying the kwarg: salt '*' file.replace /path/to/file pattern='=' repl=':' salt '*' file.replace /path/to/file pattern=\u0026quot;bind-address\\s*=\u0026quot; repl='bind-address:' CLI Examples: salt '*' file.replace /etc/httpd/httpd.conf pattern='LogLevel warn' repl='LogLevel info' salt '*' file.replace /some/file pattern='before' repl='after' flags='[MULTILINE, IGNORECASE]' file.restore_backup:\nNew in version 0.17.0 Restore a previous version of a file that was backed up using Salt's :ref:`file state backup \u0026lt;file-state-backups\u0026gt;` system. path The path on the minion to check for backups backup_id The numeric id for the backup you wish to restore, as found using :mod:`file.list_backups \u0026lt;salt.modules.file.list_backups\u0026gt;` CLI Example: salt '*' file.restore_backup /foo/bar/baz.txt 0 file.restorecon:\nReset the SELinux context on a given path CLI Example: salt '*' file.restorecon /home/user/.ssh/authorized_keys file.rmdir:\nNew in version 2014.1.0 Changed in version 3006.0 Changed return value for failure to a boolean. Remove the specified directory. Fails if a directory is not empty. recurse When ``recurse`` is set to ``True``, all empty directories within the path are pruned. New in version 3006.0 verbose When ``verbose`` is set to ``True``, a dictionary is returned which contains more information about the removal process. New in version 3006.0 older_than When ``older_than`` is set to a number, it is used to determine the **number of days** which must have passed since the last modification timestamp before a directory will be allowed to be removed. Setting the value to 0 is equivalent to leaving it at the default of ``None``. New in version 3006.0 CLI Example: salt '*' file.rmdir /tmp/foo/ file.search:\nNew in version 0.17.0 Search for occurrences of a pattern in a file Except for multiline, params are identical to :py:func:`~salt.modules.file.replace`. multiline If true, inserts 'MULTILINE' into ``flags`` and sets ``bufsize`` to 'file'. New in version 2015.8.0 CLI Example: salt '*' file.search /etc/crontab 'mymaintenance.sh' file.sed:\n.. deprecated:: 0.17.0 Use :py:func:`~salt.modules.file.replace` instead. Make a simple edit to a file Equivalent to: sed \u0026lt;backup\u0026gt; \u0026lt;options\u0026gt; \u0026quot;/\u0026lt;limit\u0026gt;/ s/\u0026lt;before\u0026gt;/\u0026lt;after\u0026gt;/\u0026lt;flags\u0026gt; \u0026lt;file\u0026gt;\u0026quot; path The full path to the file to be edited before A pattern to find in order to replace with ``after`` after Text that will replace ``before`` limit: ``''`` An initial pattern to search for before searching for ``before`` backup: ``.bak`` The file will be backed up before edit with this file extension; **WARNING:** each time ``sed``/``comment``/``uncomment`` is called will overwrite this backup options: ``-r -e`` Options to pass to sed flags: ``g`` Flags to modify the sed search; e.g., ``i`` for case-insensitive pattern matching negate_match: False Negate the search command (``!``) New in version 0.17.0 Forward slashes and single quotes will be escaped automatically in the ``before`` and ``after`` patterns. CLI Example: salt '*' file.sed /etc/httpd/httpd.conf 'LogLevel warn' 'LogLevel info' file.sed_contains:\n.. deprecated:: 0.17.0 Use :func:`search` instead. Return True if the file at ``path`` contains ``text``. Utilizes sed to perform the search (line-wise search). Note: the ``p`` flag will be added to any flags you pass in. CLI Example: salt '*' file.contains /etc/crontab 'mymaintenance.sh' file.seek_read:\nNew in version 2014.1.0 Seek to a position on a file and read it path path to file seek amount to read at once offset offset to start into the file CLI Example: salt '*' file.seek_read /path/to/file 4096 0 file.seek_write:\nNew in version 2014.1.0 Seek to a position on a file and write to it path path to file data data to write to file offset position in file to start writing CLI Example: salt '*' file.seek_write /path/to/file 'some data' 4096 file.set_mode:\nSet the mode of a file path file or directory of which to set the mode mode mode to set the path to CLI Example: salt '*' file.set_mode /etc/passwd 0644 file.set_selinux_context:\nChanged in version 3001 Added persist option Set a specific SELinux label on a given path CLI Example: salt '*' file.set_selinux_context path \u0026lt;user\u0026gt; \u0026lt;role\u0026gt; \u0026lt;type\u0026gt; \u0026lt;range\u0026gt; salt '*' file.set_selinux_context /etc/yum.repos.d/epel.repo system_u object_r system_conf_t s0 file.source_list:\nCheck the source list and return the source to use CLI Example: salt '*' file.source_list salt://http/httpd.conf '{hash_type: 'md5', 'hsum': \u0026lt;md5sum\u0026gt;}' base file.stats:\nReturn a dict containing the stats for a given file CLI Example: salt '*' file.stats /etc/passwd file.statvfs:\nNew in version 2014.1.0 Perform a statvfs call against the filesystem that the file resides on CLI Example: salt '*' file.statvfs /path/to/file file.symlink:\nCreate a symbolic link (symlink, soft link) to a file Args: src (str): The path to a file or directory path (str): The path to the link. Must be an absolute path force (bool): Overwrite an existing symlink with the same name New in version 3005 atomic (bool): Use atomic file operations to create the symlink New in version 3006.0 follow_symlinks (bool): If set to ``False``, use ``os.path.lexists()`` for existence checks instead of ``os.path.exists()``. New in version 3007.0 Returns: bool: ``True`` if successful, otherwise raises ``CommandExecutionError`` CLI Example: salt '*' file.symlink /path/to/file /path/to/link file.touch:\nNew in version 0.9.5 Just like the ``touch`` command, create a file if it doesn't exist or simply update the atime and mtime if it already does. atime: Access time in Unix epoch time. Set it to 0 to set atime of the file with Unix date of birth. If this parameter isn't set, atime will be set with current time. mtime: Last modification in Unix epoch time. Set it to 0 to set mtime of the file with Unix date of birth. If this parameter isn't set, mtime will be set with current time. CLI Example: salt '*' file.touch /var/log/emptyfile file.truncate:\nNew in version 2014.1.0 Seek to a position on a file and delete everything after that point path path to file length offset into file to truncate CLI Example: salt '*' file.truncate /path/to/file 512 file.uid_to_user:\nConvert a uid to a user name uid uid to convert to a username CLI Example: salt '*' file.uid_to_user 0 file.uncomment:\n.. deprecated:: 0.17.0 Use :py:func:`~salt.modules.file.replace` instead. Uncomment specified commented lines in a file path The full path to the file to be edited regex A regular expression used to find the lines that are to be uncommented. This regex should not include the comment character. A leading ``^`` character will be stripped for convenience (for easily switching between comment() and uncomment()). char: ``#`` The character to remove in order to uncomment a line backup: ``.bak`` The file will be backed up before edit with this file extension; **WARNING:** each time ``sed``/``comment``/``uncomment`` is called will overwrite this backup CLI Example: salt '*' file.uncomment /etc/hosts.deny 'ALL: PARANOID' file.user_to_uid:\nConvert user name to a uid user user name to convert to its uid CLI Example: salt '*' file.user_to_uid root file.write:\nNew in version 2014.7.0 Write text to a file, overwriting any existing contents. path path to file `*args` strings to write to the file CLI Example: salt '*' file.write /etc/motd \\ \u0026quot;With all thine offerings thou shalt offer salt.\u0026quot; .. admonition:: Attention If you need to pass a string to append and that string contains an equal sign, you **must** include the argument name, args. For example: salt '*' file.write /etc/motd args='cheese=spam' salt '*' file.write /etc/motd args=\u0026quot;['cheese=spam','spam=cheese']\u0026quot; freezer.compare:\nDisplay the difference between two frozen states. The results are shown as as a dictionary with keys for packages and repositories. Each key may contain a changes dictionary showing items that differ between the two frozen states. Items shown in the \u0026quot;old\u0026quot; changes but not the \u0026quot;new\u0026quot; were removed. Items in \u0026quot;new\u0026quot; but not \u0026quot;old\u0026quot; were added. Items shown in both probably updated/changed versions between freezes. old Name of the \u0026quot;old\u0026quot; frozen state. Required. new Name of the \u0026quot;new\u0026quot; frozen state. Required. CLI Example: salt '*' freezer.freeze pre_install post_install freezer.freeze:\nSave the list of package and repos in a freeze file. As this module is build on top of the pkg module, the user can send extra attributes to the underlying pkg module via kwargs. This function will call ``pkg.list_pkgs`` and ``pkg.list_repos``, and any additional arguments will be passed through to those functions. name Name of the frozen state. Optional. force If true, overwrite the state. Optional. CLI Example: salt '*' freezer.freeze salt '*' freezer.freeze pre_install salt '*' freezer.freeze force=True root=/chroot freezer.list:\nReturn the list of frozen states. CLI Example: salt '*' freezer.list freezer.restore:\nMake sure that the system contains the packages and repos from a frozen state. Read the list of packages and repositories from the freeze file, and compare it with the current list of packages and repos. If there is any difference, all the missing packages are repos will be installed, and all the extra packages and repos will be removed. As this module is build on top of the pkg module, the user can send extra attributes to the underlying pkg module via kwargs. This function will call ``pkg.list_repos``, ``pkg.mod_repo``, ``pkg.list_pkgs``, ``pkg.install``, ``pkg.remove`` and ``pkg.del_repo``, and any additional arguments will be passed through to those functions. name Name of the frozen state. Optional. clean If True remove the frozen information YAML from the cache New in version 3000 CLI Example: salt '*' freezer.restore salt '*' freezer.restore root=/chroot freezer.status:\nReturn True if there is already a frozen state. A frozen state is merely a list of packages (including the version) in a specific time. This information can be used to compare with the current list of packages, and revert the installation of some extra packages that are in the system. name Name of the frozen state. Optional. CLI Example: salt '*' freezer.status salt '*' freezer.status pre_install gem.install:\nInstalls one or several gems. :param gems: string The gems to install :param gem_bin: string : None Full path to ``gem`` binary to use. :param ruby: string : None If RVM or rbenv are installed, the ruby version and gemset to use. Ignored if ``gem_bin`` is specified. :param runas: string : None The user to run gem as. :param version: string : None Specify the version to install for the gem. Doesn't play nice with multiple gems at once :param rdoc: boolean : False Generate RDoc documentation for the gem(s). For rubygems \u0026gt; 3 this is interpreted as the --no-document arg and the ri option will then be ignored :param ri: boolean : False Generate RI documentation for the gem(s). For rubygems \u0026gt; 3 this is interpreted as the --no-document arg and the rdoc option will then be ignored :param pre_releases: boolean : False Include pre-releases in the available versions :param proxy: string : None Use the specified HTTP proxy server for all outgoing traffic. Format: http://hostname[:port] source : None Use the specified HTTP gem source server to download gem. Format: http://hostname[:port] CLI Example: salt '*' gem.install vagrant salt '*' gem.install redphone gem_bin=/opt/sensu/embedded/bin/gem gem.list:\nList locally installed gems. :param prefix: string : Only list gems when the name matches this prefix. :param gem_bin: string : None Full path to ``gem`` binary to use. :param ruby: string : None If RVM or rbenv are installed, the ruby version and gemset to use. Ignored if ``gem_bin`` is specified. :param runas: string : None The user to run gem as. CLI Example: salt '*' gem.list gem.list_upgrades:\nNew in version 2015.8.0 Check if an upgrade is available for installed gems gem_bin : None Full path to ``gem`` binary to use. ruby : None If RVM or rbenv are installed, the ruby version and gemset to use. Ignored if ``gem_bin`` is specified. runas : None The user to run gem as. CLI Example: salt '*' gem.list_upgrades gem.sources_add:\nAdd a gem source. :param source_uri: string The source URI to add. :param gem_bin: string : None Full path to ``gem`` binary to use. :param ruby: string : None If RVM or rbenv are installed, the ruby version and gemset to use. Ignored if ``gem_bin`` is specified. :param runas: string : None The user to run gem as. CLI Example: salt '*' gem.sources_add http://rubygems.org/ gem.sources_list:\nList the configured gem sources. :param gem_bin: string : None Full path to ``gem`` binary to use. :param ruby: string : None If RVM or rbenv are installed, the ruby version and gemset to use. Ignored if ``gem_bin`` is specified. :param runas: string : None The user to run gem as. CLI Example: salt '*' gem.sources_list gem.sources_remove:\nRemove a gem source. :param source_uri: string The source URI to remove. :param gem_bin: string : None Full path to ``gem`` binary to use. :param ruby: string : None If RVM or rbenv are installed, the ruby version and gemset to use. Ignored if ``gem_bin`` is specified. :param runas: string : None The user to run gem as. CLI Example: salt '*' gem.sources_remove http://rubygems.org/ gem.uninstall:\nUninstall one or several gems. :param gems: string The gems to uninstall. :param gem_bin: string : None Full path to ``gem`` binary to use. :param ruby: string : None If RVM or rbenv are installed, the ruby version and gemset to use. Ignored if ``gem_bin`` is specified. :param runas: string : None The user to run gem as. CLI Example: salt '*' gem.uninstall vagrant gem.update:\nUpdate one or several gems. :param gems: string The gems to update. :param gem_bin: string : None Full path to ``gem`` binary to use. :param ruby: string : None If RVM or rbenv are installed, the ruby version and gemset to use. Ignored if ``gem_bin`` is specified. :param runas: string : None The user to run gem as. CLI Example: salt '*' gem.update vagrant gem.update_system:\nUpdate rubygems. :param version: string : (newest) The version of rubygems to install. :param gem_bin: string : None Full path to ``gem`` binary to use. :param ruby: string : None If RVM or rbenv are installed, the ruby version and gemset to use. Ignored if ``gem_bin`` is specified. :param runas: string : None The user to run gem as. CLI Example: salt '*' gem.update_system gem.version:\nPrint out the version of gem :param gem_bin: string : None Full path to ``gem`` binary to use. :param ruby: string : None If RVM or rbenv are installed, the ruby version and gemset to use. Ignored if ``gem_bin`` is specified. :param runas: string : None The user to run gem as. CLI Example: salt '*' gem.version genesis.avail_platforms:\nReturn which platforms are available CLI Example: salt myminion genesis.avail_platforms genesis.bootstrap:\nCreate an image for a specific platform. Please note that this function *MUST* be run as root, as images that are created make files belonging to root. platform Which platform to use to create the image. Currently supported platforms are rpm, deb and pacman. root Local path to create the root of the image filesystem. img_format Which format to create the image in. By default, just copies files into a directory on the local filesystem (``dir``). Future support will exist for ``sparse``. fs_format When using a non-``dir`` ``img_format``, which filesystem to format the image to. By default, ``ext2``. fs_opts When using a non-``dir`` ``img_format``, a dict of opts may be specified. arch Architecture to install packages for, if supported by the underlying bootstrap tool. Currently only used for deb. flavor Which flavor of operating system to install. This correlates to a specific directory on the distribution repositories. For instance, ``wheezy`` on Debian. repo_url Mainly important for Debian-based repos. Base URL for the mirror to install from. (e.x.: http://ftp.debian.org/debian/) static_qemu Local path to the static qemu binary required for this arch. (e.x.: /usr/bin/qemu-amd64-static) pkg_confs The location of the conf files to copy into the image, to point the installer to the right repos and configuration. img_size If img_format is not ``dir``, then the size of the image must be specified. mount_dir If img_format is not ``dir``, then the image must be mounted somewhere. If the ``mount_dir`` is not specified, then it will be created at ``/opt/salt-genesis.\u0026lt;random_uuid\u0026gt;``. This directory will be unmounted and removed when the process is finished. pkg_cache This points to a directory containing a cache of package files to be copied to the image. It does not need to be specified. pkgs A list of packages to be installed on this image. For RedHat, this will include ``yum``, ``centos-release`` and ``iputils`` by default. exclude_pkgs A list of packages to be excluded. If you do not want to install the defaults, you need to include them in this list. epel_url The URL to download the EPEL release package from. CLI Examples: salt myminion genesis.bootstrap pacman /root/arch salt myminion genesis.bootstrap rpm /root/redhat salt myminion genesis.bootstrap deb /root/wheezy arch=amd64 flavor=wheezy static_qemu=/usr/bin/qemu-x86_64-static genesis.ldd_deps:\nRecurse through a set of dependencies reported by ``ldd``, to find associated dependencies. Please note that this does not necessarily resolve all (non-package) dependencies for a file; but it does help. CLI Example: salt myminion genesis.ldd_deps bash salt myminion genesis.ldd_deps /bin/bash genesis.mksls:\nConvert an installation file/script to an SLS file. Currently supports ``kickstart``, ``preseed``, and ``autoyast``. CLI Examples: salt \u0026lt;minion\u0026gt; genesis.mksls kickstart /path/to/kickstart.cfg salt \u0026lt;minion\u0026gt; genesis.mksls kickstart /path/to/kickstart.cfg /path/to/dest.sls New in version 2015.8.0 genesis.pack:\nPack up a directory structure, into a specific format CLI Examples: salt myminion genesis.pack centos /root/centos salt myminion genesis.pack centos /root/centos pack_format='tar' genesis.unpack:\nUnpack an image into a directory structure CLI Example: salt myminion genesis.unpack centos /root/centos git.add:\nChanged in version 2015.8.0 The ``--verbose`` command line argument is now implied Interface to `git-add(1)`_ cwd The path to the git checkout filename The location of the file/directory to add, relative to ``cwd`` opts Any additional options to add to the command line, in a single string Note: On the Salt CLI, if the opts are preceded with a dash, it is necessary to precede them with ``opts=`` (as in the CLI examples below) to avoid causing errors with Salt's own argument parsing. git_opts Any additional options to add to git command itself (not the ``add`` subcommand), in a single string. This is useful for passing ``-c`` to run git with temporary changes to the git configuration. New in version 2017.7.0 Note: This is only supported in git 1.7.2 and newer. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-add(1)`: http://git-scm.com/docs/git-add CLI Examples: salt myminion git.add /path/to/repo foo/bar.py salt myminion git.add /path/to/repo foo/bar.py opts='--dry-run' git.archive:\nChanged in version 2015.8.0 Returns ``True`` if successful, raises an error if not. Interface to `git-archive(1)`_, exports a tarball/zip file of the repository cwd The path to be archived Note: ``git archive`` permits a partial archive to be created. Thus, this path does not need to be the root of the git repository. Only the files within the directory specified by ``cwd`` (and its subdirectories) will be in the resulting archive. For example, if there is a git checkout at ``/tmp/foo``, then passing ``/tmp/foo/bar`` as the ``cwd`` will result in just the files underneath ``/tmp/foo/bar`` to be exported as an archive. output The path of the archive to be created overwrite : False Unless set to ``True``, Salt will over overwrite an existing archive at the path specified by the ``output`` argument. New in version 2015.8.0 rev : HEAD The revision from which to create the archive format Manually specify the file format of the resulting archive. This argument can be omitted, and ``git archive`` will attempt to guess the archive type (and compression) from the filename. ``zip``, ``tar``, ``tar.gz``, and ``tgz`` are extensions that are recognised automatically, and git can be configured to support other archive types with the addition of git configuration keys. See the `git-archive(1)`_ manpage explanation of the ``--format`` argument (as well as the ``CONFIGURATION`` section of the manpage) for further information. New in version 2015.8.0 prefix Prepend ``\u0026lt;prefix\u0026gt;`` to every filename in the archive. If unspecified, the name of the directory at the top level of the repository will be used as the prefix (e.g. if ``cwd`` is set to ``/foo/bar/baz``, the prefix will be ``baz``, and the resulting archive will contain a top-level directory by that name). Note: The default behaviour if the ``--prefix`` option for ``git archive`` is not specified is to not prepend a prefix, so Salt's behaviour differs slightly from ``git archive`` in this respect. Use ``prefix=''`` to create an archive with no prefix. Changed in version 2015.8.0 The behaviour of this argument has been changed slightly. As of this version, it is necessary to include the trailing slash when specifying a prefix, if the prefix is intended to create a top-level directory. git_opts Any additional options to add to git command itself (not the ``archive`` subcommand), in a single string. This is useful for passing ``-c`` to run git with temporary changes to the git configuration. New in version 2017.7.0 Note: This is only supported in git 1.7.2 and newer. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-archive(1)`: http://git-scm.com/docs/git-archive CLI Example: salt myminion git.archive /path/to/repo /path/to/archive.tar git.branch:\nInterface to `git-branch(1)`_ cwd The path to the git checkout name Name of the branch on which to operate. If not specified, the current branch will be assumed. opts Any additional options to add to the command line, in a single string Note: To create a branch based on something other than HEAD, pass the name of the revision as ``opts``. If the revision is in the format ``remotename/branch``, then this will also set the remote tracking branch. Additionally, on the Salt CLI, if the opts are preceded with a dash, it is necessary to precede them with ``opts=`` (as in the CLI examples below) to avoid causing errors with Salt's own argument parsing. git_opts Any additional options to add to git command itself (not the ``branch`` subcommand), in a single string. This is useful for passing ``-c`` to run git with temporary changes to the git configuration. New in version 2017.7.0 Note: This is only supported in git 1.7.2 and newer. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-branch(1)`: http://git-scm.com/docs/git-branch CLI Examples: # Set remote tracking branch salt myminion git.branch /path/to/repo mybranch opts='--set-upstream-to origin/mybranch' # Create new branch salt myminion git.branch /path/to/repo mybranch upstream/somebranch # Delete branch salt myminion git.branch /path/to/repo mybranch opts='-d' # Rename branch (2015.8.0 and later) salt myminion git.branch /path/to/repo newbranch opts='-m oldbranch' git.checkout:\nInterface to `git-checkout(1)`_ cwd The path to the git checkout opts Any additional options to add to the command line, in a single string Note: On the Salt CLI, if the opts are preceded with a dash, it is necessary to precede them with ``opts=`` (as in the CLI examples below) to avoid causing errors with Salt's own argument parsing. git_opts Any additional options to add to git command itself (not the ``checkout`` subcommand), in a single string. This is useful for passing ``-c`` to run git with temporary changes to the git configuration. New in version 2017.7.0 Note: This is only supported in git 1.7.2 and newer. rev The remote branch or revision to checkout. Changed in version 2015.8.0 Optional when using ``-b`` or ``-B`` in ``opts``. force : False Force a checkout even if there might be overwritten changes user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-checkout(1)`: http://git-scm.com/docs/git-checkout CLI Examples: # Checking out local local revisions salt myminion git.checkout /path/to/repo somebranch user=jeff salt myminion git.checkout /path/to/repo opts='testbranch -- conf/file1 file2' salt myminion git.checkout /path/to/repo rev=origin/mybranch opts='--track' # Checking out remote revision into new branch salt myminion git.checkout /path/to/repo upstream/master opts='-b newbranch' # Checking out current revision into new branch (2015.8.0 and later) salt myminion git.checkout /path/to/repo opts='-b newbranch' git.clone:\nInterface to `git-clone(1)`_ cwd Location of git clone Changed in version 2015.8.0 If ``name`` is passed, then the clone will be made *within* this directory. url The URL of the repository to be cloned Changed in version 2015.8.0 Argument renamed from ``repository`` to ``url`` name Optional alternate name for the top-level directory to be created by the clone New in version 2015.8.0 opts Any additional options to add to the command line, in a single string git_opts Any additional options to add to git command itself (not the ``clone`` subcommand), in a single string. This is useful for passing ``-c`` to run git with temporary changes to the git configuration. New in version 2017.7.0 Note: This is only supported in git 1.7.2 and newer. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 identity Path to a private key to use for ssh URLs Warning: Unless Salt is invoked from the minion using ``salt-call``, the key(s) must be passphraseless. For greater security with passphraseless private keys, see the `sshd(8)`_ manpage for information on securing the keypair from the remote side in the ``authorized_keys`` file. .. _`sshd(8)`: http://www.man7.org/linux/man-pages/man8/sshd.8.html#AUTHORIZED_KEYS_FILE_FORMAT Changed in version 2015.8.7 Salt will no longer attempt to use passphrase-protected keys unless invoked from the minion using ``salt-call``, to prevent blocking waiting for user input. Key can also be specified as a SaltStack file server URL, eg. salt://location/identity_file Changed in version 2016.3.0 https_user Set HTTP Basic Auth username. Only accepted for HTTPS URLs. New in version 2015.5.0 https_pass Set HTTP Basic Auth password. Only accepted for HTTPS URLs. New in version 2015.5.0 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 saltenv The default salt environment to pull sls files from New in version 2016.3.1 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-clone(1)`: http://git-scm.com/docs/git-clone CLI Example: salt myminion git.clone /path/to/repo_parent_dir git://github.com/saltstack/salt.git git.commit:\nInterface to `git-commit(1)`_ cwd The path to the git checkout message Commit message opts Any additional options to add to the command line, in a single string. These opts will be added to the end of the git command being run. Note: On the Salt CLI, if the opts are preceded with a dash, it is necessary to precede them with ``opts=`` (as in the CLI examples below) to avoid causing errors with Salt's own argument parsing. The ``-m`` option should not be passed here, as the commit message will be defined by the ``message`` argument. git_opts Any additional options to add to git command itself (not the ``commit`` subcommand), in a single string. This is useful for passing ``-c`` to run git with temporary changes to the git configuration. New in version 2017.7.0 Note: This is only supported in git 1.7.2 and newer. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 filename The location of the file/directory to commit, relative to ``cwd``. This argument is optional, and can be used to commit a file without first staging it. Note: This argument only works on files which are already tracked by the git repository. New in version 2015.8.0 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-commit(1)`: http://git-scm.com/docs/git-commit CLI Examples: salt myminion git.commit /path/to/repo 'The commit message' salt myminion git.commit /path/to/repo 'The commit message' filename=foo/bar.py git.config_get:\nGet the value of a key in the git configuration file key The name of the configuration key to get Changed in version 2015.8.0 Argument renamed from ``setting_name`` to ``key`` cwd The path to the git checkout Changed in version 2015.8.0 Now optional if ``global`` is set to ``True`` global : False If ``True``, query the global git configuration. Otherwise, only the local git configuration will be queried. New in version 2015.8.0 all : False If ``True``, return a list of all values set for ``key``. If the key does not exist, ``None`` will be returned. New in version 2015.8.0 user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 CLI Examples: salt myminion git.config_get user.name cwd=/path/to/repo salt myminion git.config_get user.email global=True salt myminion git.config_get core.gitproxy cwd=/path/to/repo all=True git.config_get_regex:\nThis function is an alias of config_get_regexp.\nNew in version 2015.8.0 Get the value of a key or keys in the git configuration file using regexes for more flexible matching. The return data is a dictionary mapping keys to lists of values matching the ``value_regex``. If no values match, an empty dictionary will be returned. key Regex on which key names will be matched value_regex If specified, return all values matching this regex. The return data will be a dictionary mapping keys to lists of values matching the regex. .. important:: Only values matching the ``value_regex`` will be part of the return data. So, if ``key`` matches a multivar, then it is possible that not all of the values will be returned. To get all values set for a multivar, simply omit the ``value_regex`` argument. cwd The path to the git checkout global : False If ``True``, query the global git configuration. Otherwise, only the local git configuration will be queried. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 CLI Examples: # Matches any values for key 'foo.bar' salt myminion git.config_get_regexp /path/to/repo foo.bar # Matches any value starting with 'baz' set for key 'foo.bar' salt myminion git.config_get_regexp /path/to/repo foo.bar 'baz.*' # Matches any key starting with 'user.' salt myminion git.config_get_regexp '^user\\.' global=True git.config_get_regexp:\nNew in version 2015.8.0 Get the value of a key or keys in the git configuration file using regexes for more flexible matching. The return data is a dictionary mapping keys to lists of values matching the ``value_regex``. If no values match, an empty dictionary will be returned. key Regex on which key names will be matched value_regex If specified, return all values matching this regex. The return data will be a dictionary mapping keys to lists of values matching the regex. .. important:: Only values matching the ``value_regex`` will be part of the return data. So, if ``key`` matches a multivar, then it is possible that not all of the values will be returned. To get all values set for a multivar, simply omit the ``value_regex`` argument. cwd The path to the git checkout global : False If ``True``, query the global git configuration. Otherwise, only the local git configuration will be queried. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 CLI Examples: # Matches any values for key 'foo.bar' salt myminion git.config_get_regexp /path/to/repo foo.bar # Matches any value starting with 'baz' set for key 'foo.bar' salt myminion git.config_get_regexp /path/to/repo foo.bar 'baz.*' # Matches any key starting with 'user.' salt myminion git.config_get_regexp '^user\\.' global=True git.config_set:\nChanged in version 2015.8.0 Return the value(s) of the key being set Set a key in the git configuration file cwd The path to the git checkout. Must be an absolute path, or the word ``global`` to indicate that a global key should be set. Changed in version 2014.7.0 Made ``cwd`` argument optional if ``is_global=True`` key The name of the configuration key to set Changed in version 2015.8.0 Argument renamed from ``setting_name`` to ``key`` value The value to set for the specified key. Incompatible with the ``multivar`` argument. Changed in version 2015.8.0 Argument renamed from ``setting_value`` to ``value`` add : False Add a value to a key, creating/updating a multivar New in version 2015.8.0 multivar Set a multivar all at once. Values can be comma-separated or passed as a Python list. Incompatible with the ``value`` argument. New in version 2015.8.0 user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 global : False If ``True``, set a global variable output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 CLI Examples: salt myminion git.config_set user.email me@example.com cwd=/path/to/repo salt myminion git.config_set user.email foo@bar.com global=True git.config_unset:\nNew in version 2015.8.0 Unset a key in the git configuration file cwd The path to the git checkout. Must be an absolute path, or the word ``global`` to indicate that a global key should be unset. key The name of the configuration key to unset value_regex Regular expression that matches exactly one key, used to delete a single value from a multivar. Ignored if ``all`` is set to ``True``. all : False If ``True`` unset all values for a multivar. If ``False``, and ``key`` is a multivar, an error will be raised. global : False If ``True``, unset set a global variable. Otherwise, a local variable will be unset. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 CLI Example: salt myminion git.config_unset /path/to/repo foo.bar salt myminion git.config_unset /path/to/repo foo.bar all=True git.current_branch:\nReturns the current branch name of a local checkout. If HEAD is detached, return the SHA1 of the revision which is currently checked out. cwd The path to the git checkout user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 CLI Example: salt myminion git.current_branch /path/to/repo git.describe:\nReturns the `git-describe(1)`_ string (or the SHA1 hash if there are no tags) for the given revision. cwd The path to the git checkout rev : HEAD The revision to describe user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-describe(1)`: http://git-scm.com/docs/git-describe CLI Examples: salt myminion git.describe /path/to/repo salt myminion git.describe /path/to/repo develop git.diff:\nNew in version 2015.8.12,2016.3.3,2016.11.0 Interface to `git-diff(1)`_ cwd The path to the git checkout item1 and item2 Revision(s) to pass to the ``git diff`` command. One or both of these arguments may be ignored if some of the options below are set to ``True``. When ``cached`` is ``False``, and no revisions are passed to this function, then the current working tree will be compared against the index (i.e. unstaged changes). When two revisions are passed, they will be compared to each other. opts Any additional options to add to the command line, in a single string Note: On the Salt CLI, if the opts are preceded with a dash, it is necessary to precede them with ``opts=`` (as in the CLI examples below) to avoid causing errors with Salt's own argument parsing. git_opts Any additional options to add to git command itself (not the ``diff`` subcommand), in a single string. This is useful for passing ``-c`` to run git with temporary changes to the git configuration. New in version 2017.7.0 Note: This is only supported in git 1.7.2 and newer. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 no_index : False When it is necessary to diff two files in the same repo against each other, and not diff two different revisions, set this option to ``True``. If this is left ``False`` in these instances, then a normal ``git diff`` will be performed against the index (i.e. unstaged changes), and files in the ``paths`` option will be used to narrow down the diff output. Note: Requires Git 1.5.1 or newer. Additionally, when set to ``True``, ``item1`` and ``item2`` will be ignored. cached : False If ``True``, compare staged changes to ``item1`` (if specified), otherwise compare them to the most recent commit. Note: ``item2`` is ignored if this option is is set to ``True``. paths File paths to pass to the ``git diff`` command. Can be passed as a comma-separated list or a Python list. output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-diff(1)`: http://git-scm.com/docs/git-diff CLI Example: # Perform diff against the index (staging area for next commit) salt myminion git.diff /path/to/repo # Compare staged changes to the most recent commit salt myminion git.diff /path/to/repo cached=True # Compare staged changes to a specific revision salt myminion git.diff /path/to/repo mybranch cached=True # Perform diff against the most recent commit (includes staged changes) salt myminion git.diff /path/to/repo HEAD # Diff two commits salt myminion git.diff /path/to/repo abcdef1 aabbccd # Diff two commits, only showing differences in the specified paths salt myminion git.diff /path/to/repo abcdef1 aabbccd paths=path/to/file1,path/to/file2 # Diff two files with one being outside the working tree salt myminion git.diff /path/to/repo no_index=True paths=path/to/file1,/absolute/path/to/file2 git.discard_local_changes:\nNew in version 2019.2.0 Runs a ``git checkout -- \u0026lt;path\u0026gt;`` from the directory specified by ``cwd``. cwd The path to the git checkout path path relative to cwd (defaults to ``.``) user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. CLI Example: salt myminion git.discard_local_changes /path/to/repo salt myminion git.discard_local_changes /path/to/repo path=foo git.fetch:\nChanged in version 2015.8.2 Return data is now a dictionary containing information on branches and tags that were added/updated Interface to `git-fetch(1)`_ cwd The path to the git checkout remote Optional remote name to fetch. If not passed, then git will use its default behaviour (as detailed in `git-fetch(1)`_). New in version 2015.8.0 force Force the fetch even when it is not a fast-forward. New in version 2015.8.0 refspecs Override the refspec(s) configured for the remote with this argument. Multiple refspecs can be passed, comma-separated. New in version 2015.8.0 opts Any additional options to add to the command line, in a single string Note: On the Salt CLI, if the opts are preceded with a dash, it is necessary to precede them with ``opts=`` (as in the CLI examples below) to avoid causing errors with Salt's own argument parsing. git_opts Any additional options to add to git command itself (not the ``fetch`` subcommand), in a single string. This is useful for passing ``-c`` to run git with temporary changes to the git configuration. New in version 2017.7.0 Note: This is only supported in git 1.7.2 and newer. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 identity Path to a private key to use for ssh URLs Warning: Unless Salt is invoked from the minion using ``salt-call``, the key(s) must be passphraseless. For greater security with passphraseless private keys, see the `sshd(8)`_ manpage for information on securing the keypair from the remote side in the ``authorized_keys`` file. .. _`sshd(8)`: http://www.man7.org/linux/man-pages/man8/sshd.8.html#AUTHORIZED_KEYS_FILE_FORMAT Changed in version 2015.8.7 Salt will no longer attempt to use passphrase-protected keys unless invoked from the minion using ``salt-call``, to prevent blocking waiting for user input. Key can also be specified as a SaltStack file server URL, eg. salt://location/identity_file Changed in version 2016.3.0 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 saltenv The default salt environment to pull sls files from New in version 2016.3.1 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-fetch(1)`: http://git-scm.com/docs/git-fetch CLI Example: salt myminion git.fetch /path/to/repo upstream salt myminion git.fetch /path/to/repo identity=/root/.ssh/id_rsa git.init:\nInterface to `git-init(1)`_ cwd The path to the directory to be initialized bare : False If ``True``, init a bare repository New in version 2015.8.0 template Set this argument to specify an alternate `template directory`_ New in version 2015.8.0 separate_git_dir Set this argument to specify an alternate ``$GIT_DIR`` New in version 2015.8.0 shared Set sharing permissions on git repo. See `git-init(1)`_ for more details. New in version 2015.8.0 opts Any additional options to add to the command line, in a single string Note: On the Salt CLI, if the opts are preceded with a dash, it is necessary to precede them with ``opts=`` (as in the CLI examples below) to avoid causing errors with Salt's own argument parsing. git_opts Any additional options to add to git command itself (not the ``init`` subcommand), in a single string. This is useful for passing ``-c`` to run git with temporary changes to the git configuration. New in version 2017.7.0 Note: This is only supported in git 1.7.2 and newer. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-init(1)`: http://git-scm.com/docs/git-init .. _`template directory`: http://git-scm.com/docs/git-init#_template_directory CLI Examples: salt myminion git.init /path/to/repo # Init a bare repo (before 2015.8.0) salt myminion git.init /path/to/bare/repo.git opts='--bare' # Init a bare repo (2015.8.0 and later) salt myminion git.init /path/to/bare/repo.git bare=True git.is_worktree:\nNew in version 2015.8.0 This function will attempt to determine if ``cwd`` is part of a worktree by checking its ``.git`` to see if it is a file containing a reference to another gitdir. cwd path to the worktree to be removed user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 CLI Example: salt myminion git.is_worktree /path/to/repo git.list_branches:\nNew in version 2015.8.0 Return a list of branches cwd The path to the git checkout remote : False If ``True``, list remote branches. Otherwise, local branches will be listed. Warning: This option will only return remote branches of which the local checkout is aware, use :py:func:`git.fetch \u0026lt;salt.modules.git.fetch\u0026gt;` to update remotes. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 CLI Examples: salt myminion git.list_branches /path/to/repo salt myminion git.list_branches /path/to/repo remote=True git.list_tags:\nNew in version 2015.8.0 Return a list of tags cwd The path to the git checkout user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 CLI Examples: salt myminion git.list_tags /path/to/repo git.list_worktrees:\nNew in version 2015.8.0 Returns information on worktrees Changed in version 2015.8.4 Version 2.7.0 added the ``list`` subcommand to `git-worktree(1)`_ which provides a lot of additional information. The return data has been changed to include this information, even for pre-2.7.0 versions of git. In addition, if a worktree has a detached head, then any tags which point to the worktree's HEAD will be included in the return data. Note: By default, only worktrees for which the worktree directory is still present are returned, but this can be changed using the ``all`` and ``stale`` arguments (described below). cwd The path to the git checkout user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 all : False If ``True``, then return all worktrees tracked under $GIT_DIR/worktrees, including ones for which the gitdir is no longer present. stale : False If ``True``, return *only* worktrees whose gitdir is no longer present. Note: Only one of ``all`` and ``stale`` can be set to ``True``. output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-worktree(1)`: http://git-scm.com/docs/git-worktree CLI Examples: salt myminion git.list_worktrees /path/to/repo salt myminion git.list_worktrees /path/to/repo all=True salt myminion git.list_worktrees /path/to/repo stale=True git.ls_remote:\nInterface to `git-ls-remote(1)`_. Returns the upstream hash for a remote reference. cwd The path to the git checkout. Optional (and ignored if present) when ``remote`` is set to a URL instead of a remote name. remote : origin The name of the remote to query. Can be the name of a git remote (which exists in the git checkout defined by the ``cwd`` parameter), or the URL of a remote repository. Changed in version 2015.8.0 Argument renamed from ``repository`` to ``remote`` ref The name of the ref to query. Optional, if not specified, all refs are returned. Can be a branch or tag name, or the full name of the reference (for example, to get the hash for a Github pull request number 1234, ``ref`` can be set to ``refs/pull/1234/head`` Changed in version 2015.8.0 Argument renamed from ``branch`` to ``ref`` Changed in version 2015.8.4 Defaults to returning all refs instead of master. opts Any additional options to add to the command line, in a single string New in version 2015.8.0 git_opts Any additional options to add to git command itself (not the ``ls-remote`` subcommand), in a single string. This is useful for passing ``-c`` to run git with temporary changes to the git configuration. New in version 2017.7.0 Note: This is only supported in git 1.7.2 and newer. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 identity Path to a private key to use for ssh URLs Warning: Unless Salt is invoked from the minion using ``salt-call``, the key(s) must be passphraseless. For greater security with passphraseless private keys, see the `sshd(8)`_ manpage for information on securing the keypair from the remote side in the ``authorized_keys`` file. .. _`sshd(8)`: http://www.man7.org/linux/man-pages/man8/sshd.8.html#AUTHORIZED_KEYS_FILE_FORMAT Changed in version 2015.8.7 Salt will no longer attempt to use passphrase-protected keys unless invoked from the minion using ``salt-call``, to prevent blocking waiting for user input. Key can also be specified as a SaltStack file server URL, eg. salt://location/identity_file Changed in version 2016.3.0 https_user Set HTTP Basic Auth username. Only accepted for HTTPS URLs. New in version 2015.5.0 https_pass Set HTTP Basic Auth password. Only accepted for HTTPS URLs. New in version 2015.5.0 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 saltenv The default salt environment to pull sls files from New in version 2016.3.1 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-ls-remote(1)`: http://git-scm.com/docs/git-ls-remote CLI Example: salt myminion git.ls_remote /path/to/repo origin master salt myminion git.ls_remote remote=https://mydomain.tld/repo.git ref=mytag opts='--tags' git.merge:\nInterface to `git-merge(1)`_ cwd The path to the git checkout rev Revision to merge into the current branch. If not specified, the remote tracking branch will be merged. New in version 2015.8.0 opts Any additional options to add to the command line, in a single string Note: On the Salt CLI, if the opts are preceded with a dash, it is necessary to precede them with ``opts=`` (as in the CLI examples below) to avoid causing errors with Salt's own argument parsing. git_opts Any additional options to add to git command itself (not the ``merge`` subcommand), in a single string. This is useful for passing ``-c`` to run git with temporary changes to the git configuration. New in version 2017.7.0 Note: This is only supported in git 1.7.2 and newer. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 identity Path to a private key to use for ssh URLs. Salt will not attempt to use passphrase-protected keys unless invoked from the minion using ``salt-call``, to prevent blocking waiting for user input. Key can also be specified as a SaltStack file server URL, eg. ``salt://location/identity_file``. Note: For greater security with passphraseless private keys, see the `sshd(8)`_ manpage for information on securing the keypair from the remote side in the ``authorized_keys`` file. .. _`sshd(8)`: http://www.man7.org/linux/man-pages/man8/sshd.8.html#AUTHORIZED_KEYS_FILE_FORMAT New in version 2018.3.5,2019.2.1,3000 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-merge(1)`: http://git-scm.com/docs/git-merge CLI Example: # Fetch first... salt myminion git.fetch /path/to/repo # ... then merge the remote tracking branch salt myminion git.merge /path/to/repo # .. or merge another rev salt myminion git.merge /path/to/repo rev=upstream/foo git.merge_base:\nNew in version 2015.8.0 Interface to `git-merge-base(1)`_. cwd The path to the git checkout refs Any refs/commits to check for a merge base. Can be passed as a comma-separated list or a Python list. all : False Return a list of all matching merge bases. Not compatible with any of the below options except for ``octopus``. octopus : False If ``True``, then this function will determine the best common ancestors of all specified commits, in preparation for an n-way merge. See here_ for a description of how these bases are determined. Set ``all`` to ``True`` with this option to return all computed merge bases, otherwise only the \u0026quot;best\u0026quot; will be returned. is_ancestor : False If ``True``, then instead of returning the merge base, return a boolean telling whether or not the first commit is an ancestor of the second commit. Note: This option requires two commits to be passed. Changed in version 2015.8.2 Works properly in git versions older than 1.8.0, where the ``--is-ancestor`` CLI option is not present. independent : False If ``True``, this function will return the IDs of the refs/commits passed which cannot be reached by another commit. fork_point If passed, then this function will return the commit where the commit diverged from the ref specified by ``fork_point``. If no fork point is found, ``None`` is returned. Note: At most one commit is permitted to be passed if a ``fork_point`` is specified. If no commits are passed, then ``HEAD`` is assumed. opts Any additional options to add to the command line, in a single string Note: On the Salt CLI, if the opts are preceded with a dash, it is necessary to precede them with ``opts=`` (as in the CLI examples below) to avoid causing errors with Salt's own argument parsing. This option should not be necessary unless new CLI arguments are added to `git-merge-base(1)`_ and are not yet supported in Salt. git_opts Any additional options to add to git command itself (not the ``merge-base`` subcommand), in a single string. This is useful for passing ``-c`` to run git with temporary changes to the git configuration. New in version 2017.7.0 Note: This is only supported in git 1.7.2 and newer. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False if ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-merge-base(1)`: http://git-scm.com/docs/git-merge-base .. _here: http://git-scm.com/docs/git-merge-base#_discussion CLI Examples: salt myminion git.merge_base /path/to/repo HEAD upstream/mybranch salt myminion git.merge_base /path/to/repo 8f2e542,4ad8cab,cdc9886 octopus=True salt myminion git.merge_base /path/to/repo refs=8f2e542,4ad8cab,cdc9886 independent=True salt myminion git.merge_base /path/to/repo refs=8f2e542,4ad8cab is_ancestor=True salt myminion git.merge_base /path/to/repo fork_point=upstream/master salt myminion git.merge_base /path/to/repo refs=mybranch fork_point=upstream/master git.merge_tree:\nNew in version 2015.8.0 Interface to `git-merge-tree(1)`_, shows the merge results and conflicts from a 3-way merge without touching the index. cwd The path to the git checkout ref1 First ref/commit to compare ref2 Second ref/commit to compare base The base tree to use for the 3-way-merge. If not provided, then :py:func:`git.merge_base \u0026lt;salt.modules.git.merge_base\u0026gt;` will be invoked on ``ref1`` and ``ref2`` to determine the merge base to use. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False if ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-merge-tree(1)`: http://git-scm.com/docs/git-merge-tree CLI Examples: salt myminion git.merge_tree /path/to/repo HEAD upstream/dev salt myminion git.merge_tree /path/to/repo HEAD upstream/dev base=aaf3c3d git.pull:\nInterface to `git-pull(1)`_ cwd The path to the git checkout opts Any additional options to add to the command line, in a single string Note: On the Salt CLI, if the opts are preceded with a dash, it is necessary to precede them with ``opts=`` (as in the CLI examples below) to avoid causing errors with Salt's own argument parsing. git_opts Any additional options to add to git command itself (not the ``pull`` subcommand), in a single string. This is useful for passing ``-c`` to run git with temporary changes to the git configuration. New in version 2017.7.0 Note: This is only supported in git 1.7.2 and newer. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 identity Path to a private key to use for ssh URLs Warning: Unless Salt is invoked from the minion using ``salt-call``, the key(s) must be passphraseless. For greater security with passphraseless private keys, see the `sshd(8)`_ manpage for information on securing the keypair from the remote side in the ``authorized_keys`` file. .. _`sshd(8)`: http://www.man7.org/linux/man-pages/man8/sshd.8.html#AUTHORIZED_KEYS_FILE_FORMAT Changed in version 2015.8.7 Salt will no longer attempt to use passphrase-protected keys unless invoked from the minion using ``salt-call``, to prevent blocking waiting for user input. Key can also be specified as a SaltStack file server URL, eg. salt://location/identity_file Changed in version 2016.3.0 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 saltenv The default salt environment to pull sls files from New in version 2016.3.1 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-pull(1)`: http://git-scm.com/docs/git-pull CLI Example: salt myminion git.pull /path/to/repo opts='--rebase origin master' git.push:\nInterface to `git-push(1)`_ cwd The path to the git checkout remote Name of the remote to which the ref should being pushed New in version 2015.8.0 ref : master Name of the ref to push Note: Being a refspec_, this argument can include a colon to define local and remote ref names. opts Any additional options to add to the command line, in a single string Note: On the Salt CLI, if the opts are preceded with a dash, it is necessary to precede them with ``opts=`` (as in the CLI examples below) to avoid causing errors with Salt's own argument parsing. git_opts Any additional options to add to git command itself (not the ``push`` subcommand), in a single string. This is useful for passing ``-c`` to run git with temporary changes to the git configuration. New in version 2017.7.0 Note: This is only supported in git 1.7.2 and newer. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 identity Path to a private key to use for ssh URLs Warning: Unless Salt is invoked from the minion using ``salt-call``, the key(s) must be passphraseless. For greater security with passphraseless private keys, see the `sshd(8)`_ manpage for information on securing the keypair from the remote side in the ``authorized_keys`` file. .. _`sshd(8)`: http://www.man7.org/linux/man-pages/man8/sshd.8.html#AUTHORIZED_KEYS_FILE_FORMAT Changed in version 2015.8.7 Salt will no longer attempt to use passphrase-protected keys unless invoked from the minion using ``salt-call``, to prevent blocking waiting for user input. Key can also be specified as a SaltStack file server URL, eg. salt://location/identity_file Changed in version 2016.3.0 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 saltenv The default salt environment to pull sls files from New in version 2016.3.1 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-push(1)`: http://git-scm.com/docs/git-push .. _refspec: http://git-scm.com/book/en/v2/Git-Internals-The-Refspec CLI Example: # Push master as origin/master salt myminion git.push /path/to/repo origin master # Push issue21 as upstream/develop salt myminion git.push /path/to/repo upstream issue21:develop # Delete remote branch 'upstream/temp' salt myminion git.push /path/to/repo upstream :temp git.rebase:\nInterface to `git-rebase(1)`_ cwd The path to the git checkout rev : master The revision to rebase onto the current branch opts Any additional options to add to the command line, in a single string Note: On the Salt CLI, if the opts are preceded with a dash, it is necessary to precede them with ``opts=`` (as in the CLI examples below) to avoid causing errors with Salt's own argument parsing. git_opts Any additional options to add to git command itself (not the ``rebase`` subcommand), in a single string. This is useful for passing ``-c`` to run git with temporary changes to the git configuration. New in version 2017.7.0 Note: This is only supported in git 1.7.2 and newer. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-rebase(1)`: http://git-scm.com/docs/git-rebase CLI Example: salt myminion git.rebase /path/to/repo master salt myminion git.rebase /path/to/repo 'origin master' salt myminion git.rebase /path/to/repo origin/master opts='--onto newbranch' git.remote_get:\nGet the fetch and push URL for a specific remote cwd The path to the git checkout remote : origin Name of the remote to query user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 redact_auth : True Set to ``False`` to include the username/password if the remote uses HTTPS Basic Auth. Otherwise, this information will be redacted. Warning: Setting this to ``False`` will not only reveal any HTTPS Basic Auth that is configured, but the return data will also be written to the job cache. When possible, it is recommended to use SSH for authentication. New in version 2015.5.6 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 CLI Examples: salt myminion git.remote_get /path/to/repo salt myminion git.remote_get /path/to/repo upstream git.remote_refs:\nNew in version 2015.8.0 Return the remote refs for the specified URL by running ``git ls-remote``. url URL of the remote repository filter Optionally provide a ref name to ``git ls-remote``. This can be useful to make this function run faster on repositories with many branches/tags. New in version 2019.2.0 heads : False Restrict output to heads. Can be combined with ``tags``. tags : False Restrict output to tags. Can be combined with ``heads``. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 identity Path to a private key to use for ssh URLs Warning: Unless Salt is invoked from the minion using ``salt-call``, the key(s) must be passphraseless. For greater security with passphraseless private keys, see the `sshd(8)`_ manpage for information on securing the keypair from the remote side in the ``authorized_keys`` file. .. _`sshd(8)`: http://www.man7.org/linux/man-pages/man8/sshd.8.html#AUTHORIZED_KEYS_FILE_FORMAT Changed in version 2015.8.7 Salt will no longer attempt to use passphrase-protected keys unless invoked from the minion using ``salt-call``, to prevent blocking waiting for user input. Key can also be specified as a SaltStack file server URL, eg. salt://location/identity_file Changed in version 2016.3.0 https_user Set HTTP Basic Auth username. Only accepted for HTTPS URLs. https_pass Set HTTP Basic Auth password. Only accepted for HTTPS URLs. ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. saltenv The default salt environment to pull sls files from New in version 2016.3.1 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 CLI Example: salt myminion git.remote_refs https://github.com/saltstack/salt.git salt myminion git.remote_refs https://github.com/saltstack/salt.git filter=develop git.remote_set:\ncwd The path to the git checkout url Remote URL to set remote : origin Name of the remote to set push_url If unset, the push URL will be identical to the fetch URL. New in version 2015.8.0 user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 https_user Set HTTP Basic Auth username. Only accepted for HTTPS URLs. New in version 2015.5.0 https_pass Set HTTP Basic Auth password. Only accepted for HTTPS URLs. New in version 2015.5.0 push_https_user Set HTTP Basic Auth user for ``push_url``. Ignored if ``push_url`` is unset. Only accepted for HTTPS URLs. New in version 2015.8.0 push_https_pass Set HTTP Basic Auth password for ``push_url``. Ignored if ``push_url`` is unset. Only accepted for HTTPS URLs. New in version 2015.8.0 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 CLI Examples: salt myminion git.remote_set /path/to/repo git@github.com:user/repo.git salt myminion git.remote_set /path/to/repo git@github.com:user/repo.git remote=upstream salt myminion git.remote_set /path/to/repo https://github.com/user/repo.git remote=upstream push_url=git@github.com:user/repo.git git.remotes:\nGet fetch and push URLs for each remote in a git checkout cwd The path to the git checkout user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 redact_auth : True Set to ``False`` to include the username/password for authenticated remotes in the return data. Otherwise, this information will be redacted. Warning: Setting this to ``False`` will not only reveal any HTTPS Basic Auth that is configured, but the return data will also be written to the job cache. When possible, it is recommended to use SSH for authentication. New in version 2015.5.6 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 CLI Example: salt myminion git.remotes /path/to/repo git.reset:\nInterface to `git-reset(1)`_, returns the stdout from the git command cwd The path to the git checkout opts Any additional options to add to the command line, in a single string Note: On the Salt CLI, if the opts are preceded with a dash, it is necessary to precede them with ``opts=`` (as in the CLI examples below) to avoid causing errors with Salt's own argument parsing. git_opts Any additional options to add to git command itself (not the ``reset`` subcommand), in a single string. This is useful for passing ``-c`` to run git with temporary changes to the git configuration. New in version 2017.7.0 Note: This is only supported in git 1.7.2 and newer. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 identity Path to a private key to use for ssh URLs. Salt will not attempt to use passphrase-protected keys unless invoked from the minion using ``salt-call``, to prevent blocking waiting for user input. Key can also be specified as a SaltStack file server URL, eg. ``salt://location/identity_file``. Note: For greater security with passphraseless private keys, see the `sshd(8)`_ manpage for information on securing the keypair from the remote side in the ``authorized_keys`` file. .. _`sshd(8)`: http://www.man7.org/linux/man-pages/man8/sshd.8.html#AUTHORIZED_KEYS_FILE_FORMAT New in version 2018.3.5,2019.2.1,3000 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-reset(1)`: http://git-scm.com/docs/git-reset CLI Examples: # Soft reset to a specific commit ID salt myminion git.reset /path/to/repo ac3ee5c # Hard reset salt myminion git.reset /path/to/repo opts='--hard origin/master' git.rev_parse:\nNew in version 2015.8.0 Interface to `git-rev-parse(1)`_ cwd The path to the git checkout rev Revision to parse. See the `SPECIFYING REVISIONS`_ section of the `git-rev-parse(1)`_ manpage for details on how to format this argument. This argument is optional when using the options in the `Options for Files` section of the `git-rev-parse(1)`_ manpage. opts Any additional options to add to the command line, in a single string git_opts Any additional options to add to git command itself (not the ``rev-parse`` subcommand), in a single string. This is useful for passing ``-c`` to run git with temporary changes to the git configuration. New in version 2017.7.0 Note: This is only supported in git 1.7.2 and newer. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-rev-parse(1)`: http://git-scm.com/docs/git-rev-parse .. _`SPECIFYING REVISIONS`: http://git-scm.com/docs/git-rev-parse#_specifying_revisions .. _`Options for Files`: http://git-scm.com/docs/git-rev-parse#_options_for_files CLI Examples: # Get the full SHA1 for HEAD salt myminion git.rev_parse /path/to/repo HEAD # Get the short SHA1 for HEAD salt myminion git.rev_parse /path/to/repo HEAD opts='--short' # Get the develop branch's upstream tracking branch salt myminion git.rev_parse /path/to/repo 'develop@{upstream}' opts='--abbrev-ref' # Get the SHA1 for the commit corresponding to tag v1.2.3 salt myminion git.rev_parse /path/to/repo 'v1.2.3^{commit}' # Find out whether or not the repo at /path/to/repo is a bare repository salt myminion git.rev_parse /path/to/repo opts='--is-bare-repository' git.revision:\nReturns the SHA1 hash of a given identifier (hash, branch, tag, HEAD, etc.) cwd The path to the git checkout rev : HEAD The revision short : False If ``True``, return an abbreviated SHA1 git hash user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 CLI Example: salt myminion git.revision /path/to/repo mybranch git.rm:\nInterface to `git-rm(1)`_ cwd The path to the git checkout filename The location of the file/directory to remove, relative to ``cwd`` Note: To remove a directory, ``-r`` must be part of the ``opts`` parameter. opts Any additional options to add to the command line, in a single string Note: On the Salt CLI, if the opts are preceded with a dash, it is necessary to precede them with ``opts=`` (as in the CLI examples below) to avoid causing errors with Salt's own argument parsing. git_opts Any additional options to add to git command itself (not the ``rm`` subcommand), in a single string. This is useful for passing ``-c`` to run git with temporary changes to the git configuration. New in version 2017.7.0 Note: This is only supported in git 1.7.2 and newer. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-rm(1)`: http://git-scm.com/docs/git-rm CLI Examples: salt myminion git.rm /path/to/repo foo/bar.py salt myminion git.rm /path/to/repo foo/bar.py opts='--dry-run' salt myminion git.rm /path/to/repo foo/baz opts='-r' git.stash:\nInterface to `git-stash(1)`_, returns the stdout from the git command cwd The path to the git checkout opts Any additional options to add to the command line, in a single string. Use this to complete the ``git stash`` command by adding the remaining arguments (i.e. ``'save \u0026lt;stash comment\u0026gt;'``, ``'apply stash@{2}'``, ``'show'``, etc.). Omitting this argument will simply run ``git stash``. git_opts Any additional options to add to git command itself (not the ``stash`` subcommand), in a single string. This is useful for passing ``-c`` to run git with temporary changes to the git configuration. New in version 2017.7.0 Note: This is only supported in git 1.7.2 and newer. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-stash(1)`: http://git-scm.com/docs/git-stash CLI Examples: salt myminion git.stash /path/to/repo save opts='work in progress' salt myminion git.stash /path/to/repo apply opts='stash@{1}' salt myminion git.stash /path/to/repo drop opts='stash@{1}' salt myminion git.stash /path/to/repo list git.status:\nChanged in version 2015.8.0 Return data has changed from a list of lists to a dictionary Returns the changes to the repository cwd The path to the git checkout user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 CLI Example: salt myminion git.status /path/to/repo git.submodule:\nChanged in version 2015.8.0 Added the ``command`` argument to allow for operations other than ``update`` to be run on submodules, and deprecated the ``init`` argument. To do a submodule update with ``init=True`` moving forward, use ``command=update opts='--init'`` Interface to `git-submodule(1)`_ cwd The path to the submodule command Submodule command to run, see `git-submodule(1) \u0026lt;git submodule\u0026gt;` for more information. Any additional arguments after the command (such as the URL when adding a submodule) must be passed in the ``opts`` parameter. New in version 2015.8.0 opts Any additional options to add to the command line, in a single string Note: On the Salt CLI, if the opts are preceded with a dash, it is necessary to precede them with ``opts=`` (as in the CLI examples below) to avoid causing errors with Salt's own argument parsing. git_opts Any additional options to add to git command itself (not the ``submodule`` subcommand), in a single string. This is useful for passing ``-c`` to run git with temporary changes to the git configuration. New in version 2017.7.0 Note: This is only supported in git 1.7.2 and newer. init : False If ``True``, ensures that new submodules are initialized .. deprecated:: 2015.8.0 Pass ``init`` as the ``command`` parameter, or include ``--init`` in the ``opts`` param with ``command`` set to update. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 identity Path to a private key to use for ssh URLs Warning: Unless Salt is invoked from the minion using ``salt-call``, the key(s) must be passphraseless. For greater security with passphraseless private keys, see the `sshd(8)`_ manpage for information on securing the keypair from the remote side in the ``authorized_keys`` file. .. _`sshd(8)`: http://www.man7.org/linux/man-pages/man8/sshd.8.html#AUTHORIZED_KEYS_FILE_FORMAT Changed in version 2015.8.7 Salt will no longer attempt to use passphrase-protected keys unless invoked from the minion using ``salt-call``, to prevent blocking waiting for user input. Key can also be specified as a SaltStack file server URL, eg. salt://location/identity_file Changed in version 2016.3.0 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 saltenv The default salt environment to pull sls files from New in version 2016.3.1 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-submodule(1)`: http://git-scm.com/docs/git-submodule CLI Example: # Update submodule and ensure it is initialized (before 2015.8.0) salt myminion git.submodule /path/to/repo/sub/repo init=True # Update submodule and ensure it is initialized (2015.8.0 and later) salt myminion git.submodule /path/to/repo/sub/repo update opts='--init' # Rebase submodule (2015.8.0 and later) salt myminion git.submodule /path/to/repo/sub/repo update opts='--rebase' # Add submodule (2015.8.0 and later) salt myminion git.submodule /path/to/repo/sub/repo add opts='https://mydomain.tld/repo.git' # Unregister submodule (2015.8.0 and later) salt myminion git.submodule /path/to/repo/sub/repo deinit git.symbolic_ref:\nNew in version 2015.8.0 Interface to `git-symbolic-ref(1)`_ cwd The path to the git checkout ref Symbolic ref to read/modify value If passed, then the symbolic ref will be set to this value and an empty string will be returned. If not passed, then the ref to which ``ref`` points will be returned, unless ``--delete`` is included in ``opts`` (in which case the symbolic ref will be deleted). opts Any additional options to add to the command line, in a single string git_opts Any additional options to add to git command itself (not the ``symbolic-refs`` subcommand), in a single string. This is useful for passing ``-c`` to run git with temporary changes to the git configuration. New in version 2017.7.0 Note: This is only supported in git 1.7.2 and newer. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-symbolic-ref(1)`: http://git-scm.com/docs/git-symbolic-ref CLI Examples: # Get ref to which HEAD is pointing salt myminion git.symbolic_ref /path/to/repo HEAD # Set/overwrite symbolic ref 'FOO' to local branch 'foo' salt myminion git.symbolic_ref /path/to/repo FOO refs/heads/foo # Delete symbolic ref 'FOO' salt myminion git.symbolic_ref /path/to/repo FOO opts='--delete' git.tag:\nNew in version 2018.3.4 Interface to `git-tag(1)`_, adds and removes tags. cwd The path to the main git checkout or a linked worktree name Name of the tag ref : HEAD Which ref to tag (defaults to local clone's HEAD) Note: This argument is ignored when either ``-d`` or ``--delete`` is present in the ``opts`` passed to this function. message Optional message to include with the tag. If provided, an annotated tag will be created. opts Any additional options to add to the command line, in a single string Note: Additionally, on the Salt CLI, if the opts are preceded with a dash, it is necessary to precede them with ``opts=`` (as in the CLI examples below) to avoid causing errors with Salt's own argument parsing. git_opts Any additional options to add to git command itself (not the ``worktree`` subcommand), in a single string. This is useful for passing ``-c`` to run git with temporary changes to the git configuration. Note: This is only supported in git 1.7.2 and newer. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. .. _`git-tag(1)`: http://git-scm.com/docs/git-tag CLI Example: # Create an non-annotated tag salt myminion git.tag /path/to/repo v1.2 # Create an annotated tag salt myminion git.tag /path/to/repo v1.2 message='Version 1.2' # Delete the tag salt myminion git.tag /path/to/repo v1.2 opts='-d' git.version:\nNew in version 2015.8.0 Returns the version of Git installed on the minion versioninfo : False If ``True``, return the version in a versioninfo list (e.g. ``[2, 5, 0]``) CLI Example: salt myminion git.version git.worktree_add:\nNew in version 2015.8.0 Interface to `git-worktree(1)`_, adds a worktree cwd The path to the git checkout worktree_path Path to the new worktree. Can be either absolute, or relative to ``cwd``. branch Name of new branch to create. If omitted, will be set to the basename of the ``worktree_path``. For example, if the ``worktree_path`` is ``/foo/bar/baz``, then ``branch`` will be ``baz``. ref Name of the ref on which to base the new worktree. If omitted, then ``HEAD`` is use, and a new branch will be created, named for the basename of the ``worktree_path``. For example, if the ``worktree_path`` is ``/foo/bar/baz`` then a new branch ``baz`` will be created, and pointed at ``HEAD``. reset_branch : False If ``False``, then `git-worktree(1)`_ will fail to create the worktree if the targeted branch already exists. Set this argument to ``True`` to reset the targeted branch to point at ``ref``, and checkout the newly-reset branch into the new worktree. force : False By default, `git-worktree(1)`_ will not permit the same branch to be checked out in more than one worktree. Set this argument to ``True`` to override this. opts Any additional options to add to the command line, in a single string Note: On the Salt CLI, if the opts are preceded with a dash, it is necessary to precede them with ``opts=`` to avoid causing errors with Salt's own argument parsing. All CLI options for adding worktrees as of Git 2.5.0 are already supported by this function as of Salt 2015.8.0, so using this argument is unnecessary unless new CLI arguments are added to `git-worktree(1)`_ and are not yet supported in Salt. git_opts Any additional options to add to git command itself (not the ``worktree`` subcommand), in a single string. This is useful for passing ``-c`` to run git with temporary changes to the git configuration. New in version 2017.7.0 Note: This is only supported in git 1.7.2 and newer. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-worktree(1)`: http://git-scm.com/docs/git-worktree CLI Examples: salt myminion git.worktree_add /path/to/repo/main ../hotfix ref=origin/master salt myminion git.worktree_add /path/to/repo/main ../hotfix branch=hotfix21 ref=v2.1.9.3 git.worktree_prune:\nNew in version 2015.8.0 Interface to `git-worktree(1)`_, prunes stale worktree administrative data from the gitdir cwd The path to the main git checkout or a linked worktree dry_run : False If ``True``, then this function will report what would have been pruned, but no changes will be made. verbose : True Report all changes made. Set to ``False`` to suppress this output. expire Only prune unused worktree data older than a specific period of time. The date format for this parameter is described in the documentation for the ``gc.pruneWorktreesExpire`` config param in the `git-config(1)`_ manpage. opts Any additional options to add to the command line, in a single string Note: On the Salt CLI, if the opts are preceded with a dash, it is necessary to precede them with ``opts=`` to avoid causing errors with Salt's own argument parsing. All CLI options for pruning worktrees as of Git 2.5.0 are already supported by this function as of Salt 2015.8.0, so using this argument is unnecessary unless new CLI arguments are added to `git-worktree(1)`_ and are not yet supported in Salt. git_opts Any additional options to add to git command itself (not the ``worktree`` subcommand), in a single string. This is useful for passing ``-c`` to run git with temporary changes to the git configuration. New in version 2017.7.0 Note: This is only supported in git 1.7.2 and newer. user User under which to run the git command. By default, the command is run by the user under which the minion is running. password Windows only. Required when specifying ``user``. This parameter will be ignored on non-Windows platforms. New in version 2016.3.4 ignore_retcode : False If ``True``, do not log an error to the minion log if the git command returns a nonzero exit status. New in version 2015.8.0 output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 .. _`git-worktree(1)`: http://git-scm.com/docs/git-worktree .. _`git-config(1)`: http://git-scm.com/docs/git-config/2.5.1 CLI Examples: salt myminion git.worktree_prune /path/to/repo salt myminion git.worktree_prune /path/to/repo dry_run=True salt myminion git.worktree_prune /path/to/repo expire=1.day.ago git.worktree_rm:\nNew in version 2015.8.0 Recursively removes the worktree located at ``cwd``, returning ``True`` if successful. This function will attempt to determine if ``cwd`` is actually a worktree by invoking :py:func:`git.is_worktree \u0026lt;salt.modules.git.is_worktree\u0026gt;`. If the path does not correspond to a worktree, then an error will be raised and no action will be taken. Warning: There is no undoing this action. Be **VERY** careful before running this function. cwd Path to the worktree to be removed user Used for path expansion when ``cwd`` is not an absolute path. By default, when ``cwd`` is not absolute, the path will be assumed to be relative to the home directory of the user under which the minion is running. Setting this option will change the home directory from which path expansion is performed. output_encoding Use this option to specify which encoding to use to decode the output from any git commands which are run. This should not be needed in most cases. Note: This should only be needed if the files in the repository were created with filenames using an encoding other than UTF-8 to handle Unicode characters. New in version 2018.3.1 CLI Examples: salt myminion git.worktree_rm /path/to/worktree glassfish.create_admin_object_resource:\nCreate a JMS destination glassfish.create_connector_c_pool:\nCreate a connection pool glassfish.create_connector_resource:\nCreate a connection resource glassfish.create_jdbc_connection_pool:\nCreate a connection resource glassfish.create_jdbc_resource:\nCreate a JDBC resource glassfish.delete_admin_object_resource:\nDelete a JMS destination glassfish.delete_connector_c_pool:\nDelete a connection pool glassfish.delete_connector_resource:\nDelete a connection resource glassfish.delete_jdbc_connection_pool:\nDelete a JDBC pool glassfish.delete_jdbc_resource:\nDelete a JDBC resource glassfish.delete_system_properties:\nDelete a system property glassfish.enum_admin_object_resource:\nEnum JMS destinations glassfish.enum_connector_c_pool:\nEnum connection pools glassfish.enum_connector_resource:\nEnum connection resources glassfish.enum_jdbc_connection_pool:\nEnum JDBC pools glassfish.enum_jdbc_resource:\nEnum JDBC resources glassfish.get_admin_object_resource:\nGet a specific JMS destination glassfish.get_connector_c_pool:\nGet a specific connection pool glassfish.get_connector_resource:\nGet a specific connection resource glassfish.get_jdbc_connection_pool:\nGet a specific JDBC pool glassfish.get_jdbc_resource:\nGet a specific JDBC resource glassfish.get_system_properties:\nGet system properties glassfish.update_admin_object_resource:\nUpdate a JMS destination glassfish.update_connector_c_pool:\nUpdate a connection pool glassfish.update_connector_resource:\nUpdate a connection resource glassfish.update_jdbc_connection_pool:\nUpdate a JDBC pool glassfish.update_jdbc_resource:\nUpdate a JDBC resource glassfish.update_system_properties:\nUpdate system properties google_chat.send_message:\nSend a message to the google chat room specified in the webhook url. salt '*' google_chat.send_message \u0026quot;https://chat.googleapis.com/v1/spaces/example_space/messages?key=example_key\u0026quot; \u0026quot;This is a test message\u0026quot; gpg.create_key:\nCreate a key in the GPG keychain Note: GPG key generation requires *a lot* of entropy and randomness. Difficult to do over a remote connection, consider having another process available which is generating randomness for the machine. Also especially difficult on virtual machines, consider the `rng-tools \u0026lt;http://www.gnu.org/software/hurd/user/tlecarrour/rng-tools.html\u0026gt;`_ package. The create_key process takes awhile so increasing the timeout may be necessary, e.g. -t 15. key_type The type of the primary key to generate. It must be capable of signing. 'RSA' or 'DSA'. key_length The length of the primary key in bits. name_real The real name of the user identity which is represented by the key. name_comment A comment to attach to the user id. name_email An email address for the user. subkey_type The type of the secondary key to generate. subkey_length The length of the secondary key in bits. expire_date The expiration date for the primary and any secondary key. You can specify an ISO date, A number of days/weeks/months/years, an epoch value, or 0 for a non-expiring key. use_passphrase Whether to use a passphrase with the signing key. The passphrase is retrieved from the Pillar key ``gpg_passphrase``. user Which user's keychain to access, defaults to user Salt is running as. Passing the user as ``salt`` will set the GnuPG home directory to ``/etc/salt/gpgkeys``. gnupghome Specify the location where the GPG keyring and related files are stored. keyring Limit the operation to this specific keyring, specified as a local filesystem path. New in version 3007.0 CLI Example: salt -t 15 '*' gpg.create_key gpg.decrypt:\nDecrypt a message or a file user Which user's keychain to access, defaults to user Salt is running as. Passing the user as ``salt`` will set the GnuPG home directory to ``/etc/salt/gpgkeys``. text The encrypted text to decrypt. filename The path of the encrypted file to decrypt. output Instead of printing to standard out, write the output to this path. use_passphrase Whether to use a passphrase with the signing key. The passphrase is retrieved from Pillar value ``gpg_passphrase``. gnupghome Specify the location where the GPG keyring and related files are stored. bare If ``True``, return the (armored) decrypted block as a string without the standard comment/res dict. keyring Limit the operation to this specific keyring, specified as a local filesystem path. New in version 3007.0 CLI Example: salt '*' gpg.decrypt filename='/path/to/important.file.gpg' salt '*' gpg.decrypt filename='/path/to/important.file.gpg' use_passphrase=True gpg.delete_key:\nDelete a key from the GPG keychain. keyid The keyid of the key to be deleted. fingerprint The fingerprint of the key to be deleted. delete_secret Whether to delete a corresponding secret key prior to deleting the public key. Secret keys must be deleted before deleting any corresponding public keys. user Which user's keychain to access, defaults to user Salt is running as. Passing the user as ``salt`` will set the GnuPG home directory to ``/etc/salt/gpgkeys``. gnupghome Specify the location where the GPG keyring and related files are stored. use_passphrase Whether to use a passphrase with the signing key. The passphrase is retrieved from the Pillar key ``gpg_passphrase``. Note that this defaults to True here, contrary to the rest of the module functions that provide this parameter. New in version 3003 keyring Limit the operation to this specific keyring, specified as a local filesystem path. New in version 3007.0 CLI Example: salt '*' gpg.delete_key keyid=3FAD9F1E salt '*' gpg.delete_key fingerprint=53C96788253E58416D20BCD352952C84C3252192 salt '*' gpg.delete_key keyid=3FAD9F1E user=username salt '*' gpg.delete_key keyid=3FAD9F1E user=username delete_secret=True gpg.encrypt:\nEncrypt a message or a file user Which user's keychain to access, defaults to user Salt is running as. Passing the user as ``salt`` will set the GnuPG home directory to ``/etc/salt/gpgkeys``. recipients The key ID, fingerprint, user ID or email address associated with the recipients key can be used. text The text to encrypt. filename The path of the file to encrypt. output Instead of printing to standard out, write the output to this path. sign Whether to sign, in addition to encrypt, the data. ``True`` to use default key or fingerprint to specify a different key to sign with. use_passphrase Whether to use a passphrase with the signing key. The passphrase is retrieved from the Pillar key ``gpg_passphrase``. always_trust Skip key validation and assume that used keys are fully trusted. New in version 3006.0 gnupghome Specify the location where the GPG keyring and related files are stored. bare If ``True``, return the (armored) encrypted block as a string without the standard comment/res dict. keyring Limit the operation to this specific keyring, specified as a local filesystem path. New in version 3007.0 CLI Example: salt '*' gpg.encrypt text='Hello there. How are you?' recipients=recipient@example.com salt '*' gpg.encrypt filename='/path/to/important.file' recipients=recipient@example.com salt '*' gpg.encrypt filename='/path/to/important.file' sign=True use_passphrase=True \\ recipients=recipient@example.com gpg.export_key:\nExport a key from the GPG keychain keyids The key ID(s) of the key(s) to be exported. Can be specified as a comma separated string or a list. Anything which GnuPG itself accepts to identify a key for example, the key ID, fingerprint, user ID or email address could be used. secret Export the secret key identified by the ``keyids`` information passed. user Which user's keychain to access, defaults to user Salt is running as. Passing the user as ``salt`` will set the GnuPG home directory to ``/etc/salt/gpgkeys``. gnupghome Specify the location where the GPG keyring and related files are stored. use_passphrase Whether to use a passphrase to export the secret key. The passphrase is retrieved from the Pillar key ``gpg_passphrase``. New in version 3003 output Instead of printing to standard out, write the output to this path. New in version 3006.0 bare If ``True``, return the (armored) exported key block as a string without the standard comment/res dict. New in version 3006.0 keyring Limit the operation to this specific keyring, specified as a local filesystem path. New in version 3007.0 CLI Example: salt '*' gpg.export_key keyids=3FAD9F1E salt '*' gpg.export_key keyids=3FAD9F1E secret=True salt '*' gpg.export_key keyids=\u0026quot;['3FAD9F1E','3FBD8F1E']\u0026quot; user=username gpg.get_key:\nGet a key from the GPG keychain keyid The key ID (short or long) of the key to be retrieved. fingerprint The fingerprint of the key to be retrieved. user Which user's keychain to access, defaults to user Salt is running as. Passing the user as ``salt`` will set the GnuPG home directory to ``/etc/salt/gpgkeys``. gnupghome Specify the location where the GPG keyring and related files are stored. keyring Limit the operation to this specific keyring, specified as a local filesystem path. New in version 3007.0 CLI Example: salt '*' gpg.get_key keyid=3FAD9F1E salt '*' gpg.get_key fingerprint=53C96788253E58416D20BCD352952C84C3252192 salt '*' gpg.get_key keyid=3FAD9F1E user=username gpg.get_secret_key:\nGet a secret key from the GPG keychain keyid The key ID (short or long) of the key to be retrieved. fingerprint The fingerprint of the key to be retrieved. user Which user's keychain to access, defaults to user Salt is running as. Passing the user as ``salt`` will set the GnuPG home directory to ``/etc/salt/gpgkeys``. gnupghome Specify the location where the GPG keyring and related files are stored. keyring Limit the operation to this specific keyring, specified as a local filesystem path. New in version 3007.0 CLI Example: salt '*' gpg.get_secret_key keyid=3FAD9F1E salt '*' gpg.get_secret_key fingerprint=53C96788253E58416D20BCD352952C84C3252192 salt '*' gpg.get_secret_key keyid=3FAD9F1E user=username gpg.import_key:\nImport a key from text or a file text The text containing the key to import. filename The path of the file containing the key to import. user Which user's keychain to access, defaults to user Salt is running as. Passing the user as ``salt`` will set the GnuPG home directory to ``/etc/salt/gpgkeys``. gnupghome Specify the location where the GPG keyring and related files are stored. keyring Limit the operation to this specific keyring, specified as a local filesystem path. New in version 3007.0 CLI Example: salt '*' gpg.import_key text='-----BEGIN PGP PUBLIC KEY BLOCK-----\\n ... -----END PGP PUBLIC KEY BLOCK-----' salt '*' gpg.import_key filename='/path/to/public-key-file' gpg.list_keys:\nList keys in GPG keychain user Which user's keychain to access, defaults to user Salt is running as. Passing the user as ``salt`` will set the GnuPG home directory to ``/etc/salt/gpgkeys``. gnupghome Specify the location where the GPG keyring and related files are stored. keyring Limit the operation to this specific keyring, specified as a local filesystem path. New in version 3007.0 CLI Example: salt '*' gpg.list_keys gpg.list_secret_keys:\nList secret keys in GPG keychain user Which user's keychain to access, defaults to user Salt is running as. Passing the user as ``salt`` will set the GnuPG home directory to ``/etc/salt/gpgkeys``. gnupghome Specify the location where the GPG keyring and related files are stored. keyring Limit the operation to this specific keyring, specified as a local filesystem path. New in version 3007.0 CLI Example: salt '*' gpg.list_secret_keys gpg.receive_keys:\nReceive key(s) from keyserver and add them to the keychain keyserver Keyserver to use for searching for GPG keys, defaults to keys.openpgp.org keys The keyID(s) to retrieve from the keyserver. Can be specified as a comma separated string or a list. user Which user's keychain to access, defaults to user Salt is running as. Passing the user as ``salt`` will set the GnuPG home directory to ``/etc/salt/gpgkeys``. gnupghome Specify the location where the GPG keyring and related files are stored. keyring Limit the operation to this specific keyring, specified as a local filesystem path. New in version 3007.0 CLI Example: salt '*' gpg.receive_keys keys='3FAD9F1E' salt '*' gpg.receive_keys keys=\u0026quot;['3FAD9F1E','3FBD9F2E']\u0026quot; salt '*' gpg.receive_keys keys=3FAD9F1E user=username gpg.search_keys:\nSearch for keys on a keyserver text Text to search the keyserver for, e.g. email address, keyID or fingerprint. keyserver Keyserver to use for searching for GPG keys, defaults to keys.openpgp.org. user Which user's keychain to access, defaults to user Salt is running as. Passing the user as ``salt`` will set the GnuPG home directory to ``/etc/salt/gpgkeys``. gnupghome Specify the location where the GPG keyring and related files are stored. New in version 3007.0 CLI Example: salt '*' gpg.search_keys user@example.com salt '*' gpg.search_keys user@example.com keyserver=keyserver.ubuntu.com salt '*' gpg.search_keys user@example.com keyserver=keyserver.ubuntu.com user=username gpg.sign:\nSign a message or a file user Which user's keychain to access, defaults to user Salt is running as. Passing the user as ``salt`` will set the GnuPG home directory to ``/etc/salt/gpgkeys``. keyid The keyid of the key to use for signing, defaults to the first key in the secret keyring. text The text to sign. filename The path of the file to sign. output Instead of printing to standard out, write the output to this path. use_passphrase Whether to use a passphrase with the signing key. The passphrase is retrieved from the Pillar key ``gpg_passphrase``. gnupghome Specify the location where the GPG keyring and related files are stored. keyring Limit the operation to this specific keyring, specified as a local filesystem path. New in version 3007.0 CLI Example: salt '*' gpg.sign text='Hello there. How are you?' salt '*' gpg.sign filename='/path/to/important.file' salt '*' gpg.sign filename='/path/to/important.file' use_passphrase=True gpg.trust_key:\nSet the trust level for a key in the GPG keychain keyid The keyid of the key to set the trust level for. fingerprint The fingerprint of the key to set the trust level for. trust_level The trust level to set for the specified key, must be one of the following: expired, unknown, not_trusted, marginally, fully, ultimately user Which user's keychain to access, defaults to user Salt is running as. Passing the user as ``salt`` will set the GnuPG home directory to ``/etc/salt/gpgkeys``. gnupghome Specify the location where the GPG keyring and related files are stored. New in version 3007.0 keyring Limit the operation to this specific keyring, specified as a local filesystem path. New in version 3007.0 CLI Example: salt '*' gpg.trust_key keyid='3FAD9F1E' trust_level='marginally' salt '*' gpg.trust_key fingerprint='53C96788253E58416D20BCD352952C84C3252192' trust_level='not_trusted' salt '*' gpg.trust_key keys=3FAD9F1E trust_level='ultimately' user='username' gpg.verify:\nVerify a message or a file text The text to verify. filename The path of the file to verify. user Which user's keychain to access, defaults to user Salt is running as. Passing the user as ``salt`` will set the GnuPG home directory to ``/etc/salt/gpgkeys``. gnupghome Specify the location where the GPG keyring and related files are stored. signature Specify the path of a detached signature. New in version 2018.3.0 trustmodel Explicitly define the used trust model. One of: - pgp - classic - tofu - tofu+pgp - direct - always - auto New in version 2019.2.0 signed_by_any A list of key fingerprints from which any valid signature will mark verification as passed. If none of the provided keys signed the data, verification will fail. Optional. Note that this does not take into account trust. New in version 3007.0 signed_by_all A list of key fingerprints whose signatures are required for verification to pass. If a single provided key did not sign the data, verification will fail. Optional. Note that this does not take into account trust. New in version 3007.0 keyring Limit the operation to this specific keyring, specified as a local filesystem path. New in version 3007.0 CLI Example: salt '*' gpg.verify text='Hello there. How are you?' salt '*' gpg.verify filename='/path/to/important.file' salt '*' gpg.verify filename='/path/to/important.file' trustmodel=direct grafana4.create_datasource:\nCreate a new datasource in an organisation. name Name of the data source. type Type of the datasource ('graphite', 'influxdb' etc.). access Use proxy or direct. url The URL to the data source API. user Optional - user to authenticate with the data source. password Optional - password to authenticate with the data source. database Optional - database to use with the data source. basicAuth Optional - set to True to use HTTP basic auth to authenticate with the data source. basicAuthUser Optional - HTTP basic auth username. basicAuthPassword Optional - HTTP basic auth password. jsonData Optional - additional json data to post (eg. \u0026quot;timeInterval\u0026quot;). isDefault Optional - set data source as default. withCredentials Optional - Whether credentials such as cookies or auth headers should be sent with cross-site requests. typeLogoUrl Optional - Logo to use for this datasource. orgname Name of the organisation in which the data source should be created. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.create_datasource grafana4.create_org:\nCreate a new organisation. name Name of the organisation. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.create_org \u0026lt;name\u0026gt; grafana4.create_org_user:\nAdd user to the organisation. loginOrEmail Login or email of the user. role Role of the user for this organisation. Should be one of: - Admin - Editor - Read Only Editor - Viewer orgname Name of the organisation in which users are added. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.create_org_user \u0026lt;orgname\u0026gt; loginOrEmail=\u0026lt;loginOrEmail\u0026gt; role=\u0026lt;role\u0026gt; grafana4.create_update_dashboard:\nCreate or update a dashboard. dashboard A dict that defines the dashboard to create/update. overwrite Whether the dashboard should be overwritten if already existing. orgname Name of the organisation. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.create_update_dashboard dashboard=\u0026lt;dashboard\u0026gt; overwrite=True orgname=\u0026lt;orgname\u0026gt; grafana4.create_user:\nCreate a new user. login Login of the new user. password Password of the new user. email Email of the new user. name Optional - Full name of the new user. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.create_user login=\u0026lt;login\u0026gt; password=\u0026lt;password\u0026gt; email=\u0026lt;email\u0026gt; grafana4.delete_dashboard:\nDelete a dashboard. slug Slug (name) of the dashboard. orgname Name of the organisation. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.delete_dashboard \u0026lt;slug\u0026gt; grafana4.delete_datasource:\nDelete a datasource. datasourceid Id of the datasource. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.delete_datasource \u0026lt;datasource_id\u0026gt; grafana4.delete_org:\nDelete an organisation. orgid Id of the organisation. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.delete_org \u0026lt;org_id\u0026gt; grafana4.delete_org_user:\nRemove user from the organisation. userid Id of the user. orgname Name of the organisation in which users are updated. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.delete_org_user \u0026lt;user_id\u0026gt; \u0026lt;orgname\u0026gt; grafana4.delete_user:\nDelete a user. userid Id of the user. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.delete_user \u0026lt;user_id\u0026gt; grafana4.delete_user_org:\nRemove a user from an organisation. userid Id of the user. orgid Id of the organisation. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.delete_user_org \u0026lt;user_id\u0026gt; \u0026lt;org_id\u0026gt; grafana4.get_dashboard:\nGet a dashboard. slug Slug (name) of the dashboard. orgname Name of the organisation. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.get_dashboard \u0026lt;slug\u0026gt; grafana4.get_datasource:\nShow a single datasource in an organisation. name Name of the datasource. orgname Name of the organisation. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.get_datasource \u0026lt;name\u0026gt; \u0026lt;orgname\u0026gt; grafana4.get_datasources:\nList all datasources in an organisation. orgname Name of the organisation. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.get_datasources \u0026lt;orgname\u0026gt; grafana4.get_org:\nShow a single organisation. name Name of the organisation. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.get_org \u0026lt;name\u0026gt; grafana4.get_org_address:\nGet the organisation address. orgname Name of the organisation in which users are updated. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.get_org_address \u0026lt;orgname\u0026gt; grafana4.get_org_prefs:\nGet the organisation preferences. orgname Name of the organisation in which users are updated. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.get_org_prefs \u0026lt;orgname\u0026gt; grafana4.get_org_users:\nGet the list of users that belong to the organisation. orgname Name of the organisation. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.get_org_users \u0026lt;orgname\u0026gt; grafana4.get_orgs:\nList all organizations. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.get_orgs grafana4.get_user:\nShow a single user. login Login of the user. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.get_user \u0026lt;login\u0026gt; grafana4.get_user_data:\nGet user data. userid Id of the user. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.get_user_data \u0026lt;user_id\u0026gt; grafana4.get_user_orgs:\nGet the list of organisations a user belong to. userid Id of the user. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.get_user_orgs \u0026lt;user_id\u0026gt; grafana4.get_users:\nList all users. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.get_users grafana4.switch_org:\nSwitch the current organisation. name Name of the organisation to switch to. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.switch_org \u0026lt;name\u0026gt; grafana4.update_datasource:\nUpdate a datasource. datasourceid Id of the datasource. name Name of the data source. type Type of the datasource ('graphite', 'influxdb' etc.). access Use proxy or direct. url The URL to the data source API. user Optional - user to authenticate with the data source. password Optional - password to authenticate with the data source. database Optional - database to use with the data source. basicAuth Optional - set to True to use HTTP basic auth to authenticate with the data source. basicAuthUser Optional - HTTP basic auth username. basicAuthPassword Optional - HTTP basic auth password. jsonData Optional - additional json data to post (eg. \u0026quot;timeInterval\u0026quot;). isDefault Optional - set data source as default. withCredentials Optional - Whether credentials such as cookies or auth headers should be sent with cross-site requests. typeLogoUrl Optional - Logo to use for this datasource. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.update_datasource \u0026lt;datasourceid\u0026gt; grafana4.update_org:\nUpdate an existing organisation. orgid Id of the organisation. name New name of the organisation. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.update_org \u0026lt;org_id\u0026gt; name=\u0026lt;name\u0026gt; grafana4.update_org_address:\nUpdate the organisation address. orgname Name of the organisation in which users are updated. address1 Optional - address1 of the org. address2 Optional - address2 of the org. city Optional - city of the org. zip_code Optional - zip_code of the org. state Optional - state of the org. country Optional - country of the org. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.update_org_address \u0026lt;orgname\u0026gt; country=\u0026lt;country\u0026gt; grafana4.update_org_prefs:\nUpdate the organisation preferences. orgname Name of the organisation in which users are updated. theme Selected theme for the org. homeDashboardId Home dashboard for the org. timezone Timezone for the org (one of: \u0026quot;browser\u0026quot;, \u0026quot;utc\u0026quot;, or \u0026quot;\u0026quot;). profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.update_org_prefs \u0026lt;orgname\u0026gt; theme=\u0026lt;theme\u0026gt; timezone=\u0026lt;timezone\u0026gt; grafana4.update_org_user:\nUpdate user role in the organisation. userid Id of the user. loginOrEmail Login or email of the user. role Role of the user for this organisation. Should be one of: - Admin - Editor - Read Only Editor - Viewer orgname Name of the organisation in which users are updated. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.update_org_user \u0026lt;user_id\u0026gt; \u0026lt;orgname\u0026gt; loginOrEmail=\u0026lt;loginOrEmail\u0026gt; role=\u0026lt;role\u0026gt; grafana4.update_user:\nUpdate an existing user. userid Id of the user. login Optional - Login of the user. email Optional - Email of the user. name Optional - Full name of the user. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.update_user \u0026lt;user_id\u0026gt; login=\u0026lt;login\u0026gt; email=\u0026lt;email\u0026gt; grafana4.update_user_password:\nUpdate a user password. userid Id of the user. password New password of the user. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.update_user_password \u0026lt;user_id\u0026gt; password=\u0026lt;password\u0026gt; grafana4.update_user_permissions:\nUpdate a user password. userid Id of the user. isGrafanaAdmin Whether user is a Grafana admin. profile Configuration profile used to connect to the Grafana instance. Default is 'grafana'. CLI Example: salt '*' grafana4.update_user_permissions \u0026lt;user_id\u0026gt; isGrafanaAdmin=\u0026lt;true|false\u0026gt; grains.append:\nNew in version 0.17.0 Append a value to a list in the grains config file. If the grain doesn't exist, the grain key is added and the value is appended to the new grain as a list item. key The grain key to be appended to val The value to append to the grain key convert If convert is True, convert non-list contents into a list. If convert is False and the grain contains non-list contents, an error is given. Defaults to False. delimiter The key can be a nested dict key. Use this parameter to specify the delimiter you use, instead of the default ``:``. You can now append values to a list in nested dictionary grains. If the list doesn't exist at this level, it will be created. New in version 2014.7.6 CLI Example: salt '*' grains.append key val grains.delkey:\nNew in version 2017.7.0 Remove a grain completely from the grain system, this will remove the grain key and value key The grain key from which to delete the value. force Force remove the grain even when it is a mapped value. Defaults to False CLI Example: salt '*' grains.delkey key grains.delval:\nNew in version 0.17.0 Delete a grain value from the grains config file. This will just set the grain value to ``None``. To completely remove the grain, run ``grains.delkey`` or pass ``destructive=True`` to ``grains.delval``. key The grain key from which to delete the value. destructive Delete the key, too. Defaults to False. force Force remove the grain even when it is a mapped value. Defaults to False CLI Example: salt '*' grains.delval key grains.equals:\nUsed to make sure the minion's grain key/value matches. Returns ``True`` if matches otherwise ``False``. New in version 2017.7.0 CLI Example: salt '*' grains.equals fqdn \u0026lt;expected_fqdn\u0026gt; salt '*' grains.equals systemd:version 219 grains.fetch:\nAttempt to retrieve the named value from grains, if the named value is not available return the passed default. The default return is an empty string. The value can also represent a value in a nested dict using a \u0026quot;:\u0026quot; delimiter for the dict. This means that if a dict in grains looks like this:: {'pkg': {'apache': 'httpd'}} To retrieve the value associated with the apache key in the pkg dict this key can be passed:: pkg:apache :param delimiter: Specify an alternate delimiter to use when traversing a nested dict. This is useful for when the desired key contains a colon. See CLI example below for usage. New in version 2014.7.0 :param ordered: Outputs an ordered dict if applicable (default: True) New in version 2016.11.0 CLI Example: salt '*' grains.get pkg:apache salt '*' grains.get abc::def|ghi delimiter='|' grains.filter_by:\nNew in version 0.17.0 Look up the given grain in a given dictionary for the current OS and return the result Although this may occasionally be useful at the CLI, the primary intent of this function is for use in Jinja to make short work of creating lookup tables for OS-specific data. For example: {% set apache = salt['grains.filter_by']({ 'Debian': {'pkg': 'apache2', 'srv': 'apache2'}, 'RedHat': {'pkg': 'httpd', 'srv': 'httpd'}, }, default='Debian') %} myapache: pkg.installed: - name: {{ apache.pkg }} service.running: - name: {{ apache.srv }} Values in the lookup table may be overridden by values in Pillar. An example Pillar to override values in the example above could be as follows: apache: lookup: pkg: apache_13 srv: apache The call to ``filter_by()`` would be modified as follows to reference those Pillar values: {% set apache = salt['grains.filter_by']({ ... }, merge=salt['pillar.get']('apache:lookup')) %} :param lookup_dict: A dictionary, keyed by a grain, containing a value or values relevant to systems matching that grain. For example, a key could be the grain for an OS and the value could the name of a package on that particular OS. Changed in version 2016.11.0 The dictionary key could be a globbing pattern. The function will return the corresponding ``lookup_dict`` value where grain value matches the pattern. For example: # this will render 'got some salt' if Minion ID begins from 'salt' salt '*' grains.filter_by '{salt*: got some salt, default: salt is not here}' id :param grain: The name of a grain to match with the current system's grains. For example, the value of the \u0026quot;os_family\u0026quot; grain for the current system could be used to pull values from the ``lookup_dict`` dictionary. Changed in version 2016.11.0 The grain value could be a list. The function will return the ``lookup_dict`` value for a first found item in the list matching one of the ``lookup_dict`` keys. :param merge: A dictionary to merge with the results of the grain selection from ``lookup_dict``. This allows Pillar to override the values in the ``lookup_dict``. This could be useful, for example, to override the values for non-standard package names such as when using a different Python version from the default Python version provided by the OS (e.g., ``python26-mysql`` instead of ``python-mysql``). :param default: default lookup_dict's key used if the grain does not exists or if the grain value has no match on lookup_dict. If unspecified the value is \u0026quot;default\u0026quot;. New in version 2014.1.0 :param base: A lookup_dict key to use for a base dictionary. The grain-selected ``lookup_dict`` is merged over this and then finally the ``merge`` dictionary is merged. This allows common values for each case to be collected in the base and overridden by the grain selection dictionary and the merge dictionary. Default is unset. New in version 2015.5.0 CLI Example: salt '*' grains.filter_by '{Debian: Debheads rule, RedHat: I love my hat}' # this one will render {D: {E: I, G: H}, J: K} salt '*' grains.filter_by '{A: B, C: {D: {E: F, G: H}}}' 'xxx' '{D: {E: I}, J: K}' 'C' # next one renders {A: {B: G}, D: J} salt '*' grains.filter_by '{default: {A: {B: C}, D: E}, F: {A: {B: G}}, H: {D: I}}' 'xxx' '{D: J}' 'F' 'default' # next same as above when default='H' instead of 'F' renders {A: {B: C}, D: J} grains.get:\nAttempt to retrieve the named value from grains, if the named value is not available return the passed default. The default return is an empty string. The value can also represent a value in a nested dict using a \u0026quot;:\u0026quot; delimiter for the dict. This means that if a dict in grains looks like this:: {'pkg': {'apache': 'httpd'}} To retrieve the value associated with the apache key in the pkg dict this key can be passed:: pkg:apache :param delimiter: Specify an alternate delimiter to use when traversing a nested dict. This is useful for when the desired key contains a colon. See CLI example below for usage. New in version 2014.7.0 :param ordered: Outputs an ordered dict if applicable (default: True) New in version 2016.11.0 CLI Example: salt '*' grains.get pkg:apache salt '*' grains.get abc::def|ghi delimiter='|' grains.has_value:\nDetermine whether a key exists in the grains dictionary. Given a grains dictionary that contains the following structure:: {'pkg': {'apache': 'httpd'}} One would determine if the apache key in the pkg dict exists by:: pkg:apache CLI Example: salt '*' grains.has_value pkg:apache grains.item:\nReturn one or more grains CLI Example: salt '*' grains.item os salt '*' grains.item os osrelease oscodename Sanitized CLI Example: salt '*' grains.item host sanitize=True grains.items:\nReturn all of the minion's grains CLI Example: salt '*' grains.items Sanitized CLI Example: salt '*' grains.items sanitize=True grains.ls:\nReturn a list of all available grains CLI Example: salt '*' grains.ls grains.remove:\nNew in version 0.17.0 Remove a value from a list in the grains config file key The grain key to remove. val The value to remove. delimiter The key can be a nested dict key. Use this parameter to specify the delimiter you use, instead of the default ``:``. You can now append values to a list in nested dictionary grains. If the list doesn't exist at this level, it will be created. New in version 2015.8.2 CLI Example: salt '*' grains.remove key val grains.set:\nSet a key to an arbitrary value. It is used like setval but works with nested keys. This function is conservative. It will only overwrite an entry if its value and the given one are not a list or a dict. The ``force`` parameter is used to allow overwriting in all cases. New in version 2015.8.0 :param force: Force writing over existing entry if given or existing values are list or dict. Defaults to False. :param destructive: If an operation results in a key being removed, delete the key, too. Defaults to False. :param delimiter: Specify an alternate delimiter to use when traversing a nested dict, the default being ``:`` CLI Example: salt '*' grains.set 'apps:myApp:port' 2209 salt '*' grains.set 'apps:myApp' '{port: 2209}' grains.setval:\nSet a grains value in the grains config file key The grain key to be set. val The value to set the grain key to. destructive If an operation results in a key being removed, delete the key, too. Defaults to False. refresh_pillar Whether pillar will be refreshed. Defaults to True. CLI Example: salt '*' grains.setval key val salt '*' grains.setval key \u0026quot;{'sub-key': 'val', 'sub-key2': 'val2'}\u0026quot; grains.setvals:\nSet new grains values in the grains config file destructive If an operation results in a key being removed, delete the key, too. Defaults to False. refresh_pillar Whether pillar will be refreshed. Defaults to True. CLI Example: salt '*' grains.setvals \u0026quot;{'key1': 'val1', 'key2': 'val2'}\u0026quot; group.add:\nChanged in version 3006.0 Add the specified group name Name of the new group gid Use GID for the new group system Create a system account root Directory to chroot into non_unique Allow creating groups with duplicate (non-unique) GIDs New in version 3006.0 local Specifically add the group locally rather than through remote providers (e.g. LDAP) New in version 3007.0 CLI Example: salt '*' group.add foo 3456 group.adduser:\nAdd a user in the group. name Name of the group to modify username Username to add to the group root Directory to chroot into CLI Example: salt '*' group.adduser foo bar Verifies if a valid username 'bar' as a member of an existing group 'foo', if not then adds it. group.chgid:\nChanged in version 3006.0 Change the gid for a named group name Name of the group to modify gid Change the group ID to GID root Directory to chroot into non_unique Allow modifying groups with duplicate (non-unique) GIDs New in version 3006.0 CLI Example: salt '*' group.chgid foo 4376 group.delete:\nRemove the named group name Name group to delete root Directory to chroot into local (Only on systems with lgroupdel available): Ensure the group account is removed locally ignoring global account management (default is False). New in version 3007.0 CLI Example: salt '*' group.delete foo group.deluser:\nRemove a user from the group. name Name of the group to modify username Username to delete from the group root Directory to chroot into CLI Example: salt '*' group.deluser foo bar Removes a member user 'bar' from a group 'foo'. If group is not present then returns True. group.getent:\nReturn info on all groups refresh Force a refresh of group information root Directory to chroot into CLI Example: salt '*' group.getent group.info:\nReturn information about a group name Name of the group root Directory to chroot into CLI Example: salt '*' group.info foo group.members:\nReplaces members of the group with a provided list. name Name of the group to modify members_list Username list to set into the group root Directory to chroot into CLI Example: salt '*' group.members foo 'user1,user2,user3,...' Replaces a membership list for a local group 'foo'. foo:x:1234:user1,user2,user3,... hashutil.base64_b64decode:\nDecode a base64-encoded string using the \u0026quot;modern\u0026quot; Python interface New in version 2016.3.0 CLI Example: salt '*' hashutil.base64_b64decode 'Z2V0IHNhbHRlZA==' hashutil.base64_b64encode:\nEncode a string as base64 using the \u0026quot;modern\u0026quot; Python interface. Among other possible differences, the \u0026quot;modern\u0026quot; encoder does not include newline ('\\n') characters in the encoded output. New in version 2016.3.0 CLI Example: salt '*' hashutil.base64_b64encode 'get salted' hashutil.base64_decodefile:\nDecode a base64-encoded string and write the result to a file New in version 2016.3.0 CLI Example: salt '*' hashutil.base64_decodefile instr='Z2V0IHNhbHRlZAo=' outfile='/path/to/binary_file' hashutil.base64_decodestring:\nDecode a base64-encoded byte-like object using the \u0026quot;modern\u0026quot; Python interface New in version 3000 CLI Example: salt '*' hashutil.base64_decodestring instr='Z2V0IHNhbHRlZAo=' hashutil.base64_encodefile:\nRead a file from the file system and return as a base64 encoded string New in version 2016.3.0 Pillar example: path: to: data: | {{ salt.hashutil.base64_encodefile('/path/to/binary_file') | indent(6) }} The :py:func:`file.decode \u0026lt;salt.states.file.decode\u0026gt;` state function can be used to decode this data and write it to disk. CLI Example: salt '*' hashutil.base64_encodefile /path/to/binary_file hashutil.base64_encodestring:\nEncode a byte-like object as base64 using the \u0026quot;modern\u0026quot; Python interface. Among other possible differences, the \u0026quot;modern\u0026quot; encoder includes a newline ('\\n') character after every 76 characters and always at the end of the encoded byte-like object. New in version 3000 CLI Example: salt '*' hashutil.base64_encodestring 'get salted' hashutil.digest:\nReturn a checksum digest for a string instr A string checksum : ``md5`` The hashing algorithm to use to generate checksums. Valid options: md5, sha256, sha512. CLI Example: salt '*' hashutil.digest 'get salted' hashutil.digest_file:\nReturn a checksum digest for a file infile A file path checksum : ``md5`` The hashing algorithm to use to generate checksums. Wraps the :py:func:`hashutil.digest \u0026lt;salt.modules.hashutil.digest\u0026gt;` execution function. CLI Example: salt '*' hashutil.digest_file /path/to/file hashutil.github_signature:\nVerify a challenging hmac signature against a string / shared-secret for github webhooks. New in version 2017.7.0 Returns a boolean if the verification succeeded or failed. CLI Example: salt '*' hashutil.github_signature '{\u0026quot;ref\u0026quot;:....} ' 'shared secret' 'sha1=bc6550fc290acf5b42283fa8deaf55cea0f8c206' hashutil.hmac_compute:\nNew in version 3000 Compute a HMAC SHA256 digest using a string and secret. CLI Example: salt '*' hashutil.hmac_compute 'get salted' 'shared secret' hashutil.hmac_signature:\nVerify a challenging hmac signature against a string / shared-secret New in version 2014.7.0 Returns a boolean if the verification succeeded or failed. CLI Example: salt '*' hashutil.hmac_signature 'get salted' 'shared secret' 'eBWf9bstXg+NiP5AOwppB5HMvZiYMPzEM9W5YMm/AmQ=' hashutil.md5_digest:\nGenerate an md5 hash of a given string New in version 2014.7.0 CLI Example: salt '*' hashutil.md5_digest 'get salted' hashutil.sha256_digest:\nGenerate an sha256 hash of a given string New in version 2014.7.0 CLI Example: salt '*' hashutil.sha256_digest 'get salted' hashutil.sha512_digest:\nGenerate an sha512 hash of a given string New in version 2014.7.0 CLI Example: salt '*' hashutil.sha512_digest 'get salted' helm.completion:\nGenerate auto-completions script for Helm for the specified shell (bash or zsh). Return the shell auto-completion content. shell (string) One of ['bash', 'zsh']. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.completion bash helm.create:\nCreates a chart directory along with the common files and directories used in a chart. Return True if succeed, else the error message. name (string) The chart name to create. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.create NAME helm.dependency_build:\nBuild out the charts/ directory from the Chart.lock file. Return True if succeed, else the error message. chart (string) The chart name to build dependency. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.dependency_build CHART helm.dependency_list:\nList all of the dependencies declared in a chart. Return chart dependencies if succeed, else the error message. chart (string) The chart name to list dependency. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.dependency_list CHART helm.dependency_update:\nUpdate the on-disk dependencies to mirror Chart.yaml. Return True if succeed, else the error message. chart (string) The chart name to update dependency. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.dependency_update CHART helm.env:\nPrints out all the environment information in use by Helm. Return Helm environments variables if succeed, else the error message. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.env helm.get_all:\nPrints a human readable collection of information about the notes, hooks, supplied values, and generated manifest file of the given release. Return release information if succeed, else the error message. release (string) Release name to get information from. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.get_all RELEASE helm.get_hooks:\nPrints a human readable collection of information about the hooks of the given release. Return release hooks information if succeed, else the error message. release (string) Release name to get hooks information from. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.get_hooks RELEASE helm.get_manifest:\nPrints a human readable collection of information about the manifest of the given release. Return release manifest information if succeed, else the error message. release (string) Release name to get manifest information from. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.get_manifest RELEASE helm.get_notes:\nPrints a human readable collection of information about the notes of the given release. Return release notes information if succeed, else the error message. release (string) Release name to get notes information from. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.get_notes RELEASE helm.get_values:\nPrints a human readable collection of information about the values of the given release. Return release values information if succeed, else the error message. release (string) Release name to get values information from. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.get_values RELEASE # In YAML format salt '*' helm.get_values RELEASE kvflags=\u0026quot;{'output': 'yaml'}\u0026quot; helm.help:\nProvides help for any command in the application. Return the full help if succeed, else the error message. command (string) Command to get help. ex: 'get' flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.help COMMAND helm.history:\nPrints historical revisions for a given release. Return release historic if succeed, else the error message. release (string) Release name to get history from. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.history RELEASE # In YAML format salt '*' helm.history RELEASE kvflags=\u0026quot;{'output': 'yaml'}\u0026quot; helm.install:\nInstalls a chart archive. Return True if succeed, else the error message. release (string) Release name to get values information from. chart (string) Chart name to install. values (string) Absolute path to the values.yaml file. version (string) The exact chart version to install. If this is not specified, the latest version is installed. namespace (string) The namespace scope for this request. set (string or list) Set a values on the command line. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.install RELEASE CHART # With values file. salt '*' helm.install RELEASE CHART values='/path/to/values.yaml' helm.lint:\nTakes a path to a chart and runs a series of tests to verify that the chart is well-formed. Return True if succeed, else the error message. path (string) The path to the chart to lint. values (string) Absolute path to the values.yaml file. namespace (string) The namespace scope for this request. set (string or list) Set a values on the command line. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.lint PATH helm.list:\nLists all of the releases. By default, it lists only releases that are deployed or failed. Return the list of release if succeed, else the error message. namespace (string) The namespace scope for this request. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.list # In YAML format salt '*' helm.list kvflags=\u0026quot;{'output': 'yaml'}\u0026quot; helm.package:\nPackages a chart into a versioned chart archive file. If a path is given, this will look at that path for a chart (which must contain a Chart.yaml file) and then package that directory. Return True if succeed, else the error message. chart (string) Chart name to package. Can be an absolute path. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.package CHART # With destination path. salt '*' helm.package CHART kvflags=\u0026quot;{'destination': '/path/to/the/package'}\u0026quot; helm.plugin_install:\nInstall a Helm plugin from a url to a VCS repo or a local path. Return True if succeed, else the error message. path (string) Path to the local plugin. Can be an url. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.plugin_install PATH helm.plugin_list:\nList installed Helm plugins. Return the plugin list if succeed, else the error message. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.plugin_list helm.plugin_uninstall:\nUninstall a Helm plugin. Return True if succeed, else the error message. plugin (string) The plugin to uninstall. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.plugin_uninstall PLUGIN helm.plugin_update:\nUpdate a Helm plugin. Return True if succeed, else the error message. plugin (string) The plugin to update. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.plugin_update PLUGIN helm.pull:\nRetrieve a package from a package repository, and download it locally. Return True if succeed, else the error message. pkg (string) The package to pull. Can be url or repo/chartname. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.pull PKG # With destination path to write the chart. salt '*' helm.pull PKG kvflags=\u0026quot;{'destination': '/path/to/the/chart'}\u0026quot; helm.repo_add:\nAdd a chart repository. Return True if succeed, else the error message. name (string) The local name of the repository to install. Have to be unique. url (string) The url to the repository. namespace (string) The namespace scope for this request. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.repo_add NAME URL helm.repo_index:\nRead the current directory and generate an index file based on the charts found. Return True if succeed, else the error message. directory (string) The path to the index. namespace (string) The namespace scope for this request. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.index DIRECTORY helm.repo_list:\nList a chart repository. Return the repository list if succeed, else the error message. namespace (string) The namespace scope for this request. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.repo_list # In YAML format salt '*' helm.repo_list kvflags=\u0026quot;{'output': 'yaml'}\u0026quot; helm.repo_manage:\nManage charts repository. Return the summery of all actions. present (list) List of repository to be present. It's a list of dict: [{'name': 'local_name', 'url': 'repository_url'}] absent (list) List of local name repository to be absent. prune (boolean - default: False) If True, all repository already present but not in the present list would be removed. namespace (string) The namespace scope for this request. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.repo_manage present=\u0026quot;[{'name': 'LOCAL_NAME', 'url': 'REPO_URL'}]\u0026quot; absent=\u0026quot;['LOCAL_NAME']\u0026quot; helm.repo_remove:\nRemove a chart repository. Return True if succeed, else the error message. name (string) The local name of the repository to remove. namespace (string) The namespace scope for this request. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.repo_remove NAME helm.repo_update:\nUpdate all charts repository. Return True if succeed, else the error message. namespace (string) The namespace scope for this request. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.repo_update helm.rollback:\nRolls back a release to a previous revision. To see release revision number, execute the history module. Return True if succeed, else the error message. release (string) The name of the release to managed. revision (string) The revision number to roll back to. namespace (string) The namespace scope for this request. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.rollback RELEASE REVISION # In dry-run mode. salt '*' helm.rollback RELEASE REVISION flags=['dry-run'] helm.search_hub:\nSearch the Helm Hub or an instance of Monocular for Helm charts. Return the research result if succeed, else the error message. keyword (string) The keyword to search in the hub. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.search_hub KEYWORD # In YAML format salt '*' helm.search_hub KEYWORD kvflags=\u0026quot;{'output': 'yaml'}\u0026quot; helm.search_repo:\nSearch reads through all of the repositories configured on the system, and looks for matches. Search of these repositories uses the metadata stored on the system. Return the research result if succeed, else the error message. keyword (string) The keyword to search in the repo. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.search_hub KEYWORD # In YAML format salt '*' helm.search_hub KEYWORD kvflags=\u0026quot;{'output': 'yaml'}\u0026quot; helm.show_all:\nInspects a chart (directory, file, or URL) and displays all its content (values.yaml, Charts.yaml, README). Return chart information if succeed, else the error message. chart (string) The chart to inspect. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.show_all CHART helm.show_chart:\nInspects a chart (directory, file, or URL) and displays the contents of the Charts.yaml file. Return chart information if succeed, else the error message. chart (string) The chart to inspect. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.show_chart CHART helm.show_readme:\nInspects a chart (directory, file, or URL) and displays the contents of the README file. Return chart information if succeed, else the error message. chart (string) The chart to inspect. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.show_readme CHART helm.show_values:\nInspects a chart (directory, file, or URL) and displays the contents of the values.yaml file. Return chart information if succeed, else the error message. chart (string) The chart to inspect. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.show_values CHART helm.status:\nShow the status of the release. Return the release status if succeed, else the error message. release (string) The release to status. namespace (string) The namespace scope for this request. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.status RELEASE # In YAML format salt '*' helm.status RELEASE kvflags=\u0026quot;{'output': 'yaml'}\u0026quot; helm.template:\nRender chart templates locally and display the output. Return the chart renderer if succeed, else the error message. name (string) The template name. chart (string) The chart to template. values (string) Absolute path to the values.yaml file. output_dir (string) Absolute path to the output directory. set (string or list) Set a values on the command line. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.template NAME CHART # With values file. salt '*' helm.template NAME CHART values='/path/to/values.yaml' output_dir='path/to/output/dir' helm.test:\nRuns the tests for a release. Return the test result if succeed, else the error message. release (string) The release name to test. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.test RELEASE helm.uninstall:\nUninstall the release name. Return True if succeed, else the error message. release (string) The name of the release to managed. namespace (string) The namespace scope for this request. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.uninstall RELEASE # In dry-run mode. salt '*' helm.uninstall RELEASE flags=['dry-run'] helm.upgrade:\nUpgrades a release to a new version of a chart. Return True if succeed, else the error message. release (string) The name of the release to managed. chart (string) The chart to managed. values (string) Absolute path to the values.yaml file. version (string) The exact chart version to install. If this is not specified, the latest version is installed. namespace (string) The namespace scope for this request. set (string or list) Set a values on the command line. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.upgrade RELEASE CHART # In dry-run mode. salt '*' helm.upgrade RELEASE CHART flags=['dry-run'] # With values file. salt '*' helm.upgrade RELEASE CHART values='/path/to/values.yaml' helm.verify:\nVerify that the given chart has a valid provenance file. Return True if succeed, else the error message. path (string) The path to the chart file. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.verify PATH helm.version:\nShow the version for Helm. Return version information if succeed, else the error message. flags (list) Flags in argument of the command without values. ex: ['help', '--help'] kvflags (dict) Flags in argument of the command with values. ex: {'v': 2, '--v': 4} CLI Example: salt '*' helm.version highstate_doc.markdown_basic_jinja_template:\nReturn text for a simple markdown jinja template This function can be used from the `highstate_doc.render` modules `jinja_template_function` option. highstate_doc.markdown_default_jinja_template:\nReturn text for a markdown jinja template that included a header This function can be used from the `highstate_doc.render` modules `jinja_template_function` option. highstate_doc.markdown_full_jinja_template:\nReturn text for an advanced markdown jinja template This function can be used from the `highstate_doc.render` modules `jinja_template_function` option. highstate_doc.process_lowstates:\nreturn processed lowstate data that was not blacklisted render_module_function is used to provide your own. defaults to from_lowstate highstate_doc.processor_markdown:\nTakes low state data and returns a dict of processed data that is by default used in a jinja template when rendering a markdown highstate_doc. This `lowstate_item_markdown` given a lowstate item, returns a dict like: vars: # the raw lowstate_item that was processed id: # the 'id' of the state. id_full: # combo of the state type and id \u0026quot;state: id\u0026quot; state: # name of the salt state module function: # name of the state function name: # value of 'name:' passed to the salt state module state_function: # the state name and function name markdown: # text data to describe a state requisites: # requisite like [watch_in, require_in] details: # state name, parameters and other details like file contents highstate_doc.read_file:\noutput the contents of a file: this is a workaround if the cp.push module does not work. https://github.com/saltstack/salt/issues/37133 help the master output the contents of a document that might be saved on the minions filesystem. #!/bin/python import os import salt.client s = salt.client.LocalClient() o = s.cmd('*', 'highstate_doc.read_file', ['/root/README.md']) for m in o: d = o.get(m) if d and not d.endswith('is not available.'): # mkdir m #directory = os.path.dirname(file_path) if not os.path.exists(m): os.makedirs(m) with open(m + '/README.md','wb') as fin: fin.write(d) print('ADDED: ' + m + '/README.md') highstate_doc.render:\nRender highstate to a text format (default Markdown) if `jinja_template_text` is not set, `jinja_template_function` is used. jinja_template_text: jinja text that the render uses to create the document. jinja_template_function: a salt module call that returns template text. :options: highstate_doc.markdown_basic_jinja_template highstate_doc.markdown_default_jinja_template highstate_doc.markdown_full_jinja_template hosts.add_host:\nAdd a host to an existing entry, if the entry is not in place then create it with the given host CLI Example: salt '*' hosts.add_host \u0026lt;ip\u0026gt; \u0026lt;alias\u0026gt; hosts.get_alias:\nReturn the list of aliases associated with an ip Aliases (host names) are returned in the order in which they appear in the hosts file. If there are no aliases associated with the IP, an empty list is returned. CLI Example: salt '*' hosts.get_alias \u0026lt;ip addr\u0026gt; hosts.get_ip:\nReturn the ip associated with the named host CLI Example: salt '*' hosts.get_ip \u0026lt;hostname\u0026gt; hosts.has_pair:\nReturn true if the alias is set CLI Example: salt '*' hosts.has_pair \u0026lt;ip\u0026gt; \u0026lt;alias\u0026gt; hosts.list_hosts:\nReturn the hosts found in the hosts file in this format:: {'\u0026lt;ip addr\u0026gt;': ['alias1', 'alias2', ...]} CLI Example: salt '*' hosts.list_hosts hosts.rm_host:\nRemove a host entry from the hosts file CLI Example: salt '*' hosts.rm_host \u0026lt;ip\u0026gt; \u0026lt;alias\u0026gt; hosts.set_comment:\nSet the comment for a host to an existing entry, if the entry is not in place then return False CLI Example: salt '*' hosts.set_comment \u0026lt;ip\u0026gt; \u0026lt;comment\u0026gt; hosts.set_host:\nSet the host entry in the hosts file for the given ip, this will overwrite any previous entry for the given ip Changed in version 2016.3.0 If ``alias`` does not include any host names (it is the empty string or contains only whitespace), all entries for the given IP address are removed. CLI Example: salt '*' hosts.set_host \u0026lt;ip\u0026gt; \u0026lt;alias\u0026gt; http.query:\nNew in version 2015.5.0 Query a resource, and decode the return data Passes through all the parameters described in the :py:func:`utils.http.query function \u0026lt;salt.utils.http.query\u0026gt;`: .. autofunction:: salt.utils.http.query raise_error : True If ``False``, and if a connection cannot be made, the error will be suppressed and the body of the return will simply be ``None``. CLI Example: salt '*' http.query http://somelink.com/ salt '*' http.query http://somelink.com/ method=POST params='{\u0026quot;key1\u0026quot;: \u0026quot;val1\u0026quot;, \u0026quot;key2\u0026quot;: \u0026quot;val2\u0026quot;}' salt '*' http.query http://somelink.com/ method=POST data='\u0026lt;xml\u0026gt;somecontent\u0026lt;/xml\u0026gt;' http.update_ca_bundle:\nUpdate the local CA bundle file from a URL New in version 2015.5.0 CLI Example: salt '*' http.update_ca_bundle salt '*' http.update_ca_bundle target=/path/to/cacerts.pem salt '*' http.update_ca_bundle source=https://example.com/cacerts.pem If the ``target`` is not specified, it will be pulled from the ``ca_cert`` configuration variable available to the minion. If it cannot be found there, it will be placed at ``\u0026lt;\u0026lt;FILE_ROOTS\u0026gt;\u0026gt;/cacerts.pem``. If the ``source`` is not specified, it will be pulled from the ``ca_cert_url`` configuration variable available to the minion. If it cannot be found, it will be downloaded from the cURL website, using an http (not https) URL. USING THE DEFAULT URL SHOULD BE AVOIDED! ``merge_files`` may also be specified, which includes a string or list of strings representing a file or files to be appended to the end of the CA bundle, once it is downloaded. CLI Example: salt '*' http.update_ca_bundle merge_files=/path/to/mycert.pem http.wait_for_successful_query:\nQuery a resource until a successful response, and decode the return data CLI Example: salt '*' http.wait_for_successful_query http://somelink.com/ wait_for=160 request_interval=1 incron.list_tab:\nReturn the contents of the specified user's incrontab CLI Example: salt '*' incron.list_tab root incron.ls:\nThis function is an alias of list_tab.\nReturn the contents of the specified user's incrontab CLI Example: salt '*' incron.list_tab root incron.raw_incron:\nReturn the contents of the user's incrontab CLI Example: salt '*' incron.raw_incron root incron.raw_system_incron:\nReturn the contents of the system wide incrontab CLI Example: salt '*' incron.raw_system_incron incron.rm:\nThis function is an alias of rm_job.\nRemove a incron job for a specified user. If any of the day/time params are specified, the job will only be removed if the specified params match. CLI Example: salt '*' incron.rm_job root /path incron.rm_job:\nRemove a incron job for a specified user. If any of the day/time params are specified, the job will only be removed if the specified params match. CLI Example: salt '*' incron.rm_job root /path incron.set_job:\nSets an incron job up for a specified user. CLI Example: salt '*' incron.set_job root '/root' 'IN_MODIFY' 'echo \u0026quot;$$ $@ $# $% $\u0026amp;\u0026quot;' incron.write_incron_file:\nWrites the contents of a file to a user's incrontab CLI Example: salt '*' incron.write_incron_file root /tmp/new_incron incron.write_incron_file_verbose:\nWrites the contents of a file to a user's incrontab and return error message on error CLI Example: salt '*' incron.write_incron_file_verbose root /tmp/new_incron ini.get_ini:\nRetrieve the whole structure from an ini file and return it as a dictionary. Args: file_name (str): The full path to the ini file. separator (str): The character used to separate keys and values. Standard ini files use the \u0026quot;=\u0026quot; character. The default is ``=``. New in version 2016.11.0 encoding (str): A string value representing encoding of the target ini file. If ``None`` is passed, it uses the system default which is likely ``utf-8``. Default is ``None`` New in version 3006.6 Returns: dict: A dictionary containing the sections along with the values and names contained in each section API Example: import salt.client with salt.client.get_local_client() as sc: sc.cmd('target', 'ini.get_ini', [path_to_ini_file]) CLI Example: salt '*' ini.get_ini /path/to/ini ini.get_option:\nGet value of a key from a section in an ini file. Returns ``None`` if no matching key was found. Args: file_name (str): The full path to the ini file. section (str): A string value representing the section of the ini that the option is in. If the option is not in a section, leave this empty. option (str): A string value representing the option to search for. separator (str): The character used to separate keys and values. Standard ini files use the \u0026quot;=\u0026quot; character. The default is ``=``. New in version 2016.11.0 encoding (str): A string value representing encoding of the target ini file. If ``None`` is passed, it uses the system default which is likely ``utf-8``. Default is ``None`` New in version 3006.6 Returns: str: The value as defined in the ini file, or ``None`` if empty or not found API Example: import salt.client with salt.client.get_local_client() as sc: sc.cmd('target', 'ini.get_option', [path_to_ini_file, section_name, option]) CLI Example: salt '*' ini.get_option /path/to/ini section_name option_name ini.get_section:\nRetrieve a section from an ini file. Returns the section as a dictionary. If the section is not found, an empty dictionary is returned. Args: file_name (str): The full path to the ini file. section (str): A string value representing name of the section to search for. separator (str): The character used to separate keys and values. Standard ini files use the \u0026quot;=\u0026quot; character. The default is ``=``. New in version 2016.11.0 encoding (str): A string value representing encoding of the target ini file. If ``None`` is passed, it uses the system default which is likely ``utf-8``. Default is ``None`` New in version 3006.6 Returns: dict: A dictionary containing the names and values of all items in the section of the ini file. If the section is not found, an empty dictionary is returned API Example: import salt.client with salt.client.get_local_client() as sc: sc.cmd('target', 'ini.get_section', [path_to_ini_file, section_name]) CLI Example: salt '*' ini.get_section /path/to/ini section_name ini.remove_option:\nRemove a key/value pair from a section in an ini file. Returns the value of the removed key, or ``None`` if nothing was removed. Args: file_name (str): The full path to the ini file. section (str): A string value representing the section of the ini that the option is in. If the option is not in a section, leave this empty. option (str): A string value representing the option to search for. separator (str): The character used to separate keys and values. Standard ini files use the \u0026quot;=\u0026quot; character. The default is ``=``. New in version 2016.11.0 encoding (str): A string value representing encoding of the target ini file. If ``None`` is passed, it uses the system default which is likely ``utf-8``. Default is ``None`` New in version 3006.6 Returns: str: A string value representing the option that was removed or ``None`` if nothing was removed API Example: import salt sc = salt.client.get_local_client() sc.cmd('target', 'ini.remove_option', [path_to_ini_file, section_name, option]) CLI Example: salt '*' ini.remove_option /path/to/ini section_name option_name ini.remove_section:\nRemove a section in an ini file. Returns the removed section as a dictionary, or ``None`` if nothing is removed. Args: file_name (str): The full path to the ini file. section (str): A string value representing the name of the section search for. separator (str): The character used to separate keys and values. Standard ini files use the \u0026quot;=\u0026quot; character. The default is ``=``. New in version 2016.11.0 encoding (str): A string value representing encoding of the target ini file. If ``None`` is passed, it uses the system default which is likely ``utf-8``. Default is ``None`` New in version 3006.6 Returns: dict: A dictionary containing the names and values of all items in the section that was removed or ``None`` if nothing was removed API Example: import salt.client with salt.client.get_local_client() as sc: sc.cmd('target', 'ini.remove_section', [path_to_ini_file, section_name]) CLI Example: salt '*' ini.remove_section /path/to/ini section_name ini.set_option:\nEdit an ini file, replacing one or more sections. Returns a dictionary containing the changes made. Args: file_name (str): The full path to the ini file. sections (dict): A dictionary representing the sections to be edited in the ini file. The keys are the section names and the values are a dictionary containing the options. If the ini file does not contain sections the keys and values represent the options. The default is ``None``. separator (str): The character used to separate keys and values. Standard ini files use the \u0026quot;=\u0026quot; character. The default is ``=``. New in version 2016.11.0 encoding (str): A string value representing encoding of the target ini file. If ``None`` is passed, it uses the system default which is likely ``utf-8``. Default is ``None`` New in version 3006.6 Returns: dict: A dictionary representing the changes made to the ini file API Example: import salt.client with salt.client.get_local_client() as sc: sc.cmd( 'target', 'ini.set_option', ['path_to_ini_file', '{\u0026quot;section_to_change\u0026quot;: {\u0026quot;key\u0026quot;: \u0026quot;value\u0026quot;}}'] ) CLI Example: salt '*' ini.set_option /path/to/ini '{section_foo: {key: value}}' inspector.build:\nBuild an image from a current system description. The image is a system image can be output in bootable ISO or QCOW2 formats. Node uses the image building library Kiwi to perform the actual build. Parameters: * **format**: Specifies output format: \u0026quot;qcow2\u0026quot; or \u0026quot;iso. Default: `qcow2`. * **path**: Specifies output path where to store built image. Default: `/tmp`. CLI Example: salt myminion inspector.build salt myminion inspector.build format=iso path=/opt/builds/ inspector.delete:\nRemove description snapshots from the system. ::parameter: all. Default: False. Remove all snapshots, if set to True. CLI Example: salt myminion inspector.delete \u0026lt;ID\u0026gt; \u0026lt;ID1\u0026gt; \u0026lt;ID2\u0026gt;.. salt myminion inspector.delete all=True inspector.export:\nExport an image description for Kiwi. Parameters: * **local**: Specifies True or False if the export has to be in the local file. Default: False. * **path**: If `local=True`, then specifies the path where file with the Kiwi description is written. Default: `/tmp`. CLI Example: salt myminion inspector.export salt myminion inspector.export format=iso path=/opt/builds/ inspector.inspect:\nStart node inspection and save the data to the database for further query. Parameters: * **mode**: Clarify inspection mode: configuration, payload, all (default) payload * **filter**: Comma-separated directories to track payload. * **priority**: (advanced) Set priority of the inspection. Default is low priority. CLI Example: salt '*' inspector.inspect salt '*' inspector.inspect configuration salt '*' inspector.inspect payload filter=/opt,/ext/oracle inspector.query:\nQuery the node for specific information. Parameters: * **scope**: Specify scope of the query. * **System**: Return system data. * **Software**: Return software information. * **Services**: Return known services. * **Identity**: Return user accounts information for this system. accounts Can be either 'local', 'remote' or 'all' (equal to \u0026quot;local,remote\u0026quot;). Remote accounts cannot be resolved on all systems, but only those, which supports 'passwd -S -a'. disabled True (or False, default) to return only disabled accounts. * **payload**: Payload scope parameters: filter Include only results which path starts from the filter string. time Display time in Unix ticks or format according to the configured TZ (default) Values: ticks, tz (default) size Format size. Values: B, KB, MB, GB type Include payload type. Values (comma-separated): directory (or dir), link, file (default) Example (returns everything): type=directory,link,file owners Resolve UID/GID to an actual names or leave them numeric (default). Values: name (default), id brief Return just a list of payload elements, if True. Default: False. * **all**: Return all information (default). CLI Example: salt '*' inspector.query scope=system salt '*' inspector.query scope=payload type=file,link filter=/etc size=Kb brief=False inspector.snapshots:\nList current description snapshots. CLI Example: salt myminion inspector.snapshots introspect.enabled_service_owners:\nReturn which packages own each of the services that are currently enabled. CLI Example: salt myminion introspect.enabled_service_owners introspect.running_service_owners:\nDetermine which packages own the currently running services. By default, excludes files whose full path starts with ``/dev``, ``/home``, ``/media``, ``/proc``, ``/run``, ``/sys``, ``/tmp`` and ``/var``. This can be overridden by passing in a new list to ``exclude``. CLI Example: salt myminion introspect.running_service_owners introspect.service_highstate:\nReturn running and enabled services in a highstate structure. By default also returns package dependencies for those services, which means that package definitions must be created outside this function. To drop the package dependencies, set ``requires`` to False. CLI Example: salt myminion introspect.service_highstate salt myminion introspect.service_highstate requires=False iosconfig.clean:\nReturn a clean version of the config, without any special signs (such as ``!`` as an individual line) or empty lines, but just lines with significant value in the configuration of the network device. config The configuration sent as text. This argument is ignored when ``path`` is configured. path Absolute or remote path from where to load the configuration text. This argument allows any URI supported by :py:func:`cp.get_url \u0026lt;salt.modules.cp.get_url\u0026gt;`), e.g., ``salt://``, ``https://``, ``s3://``, ``ftp:/``, etc. saltenv: ``base`` Salt fileserver environment from which to retrieve the file. Ignored if ``path`` is not a ``salt://`` URL. CLI Example: salt '*' iosconfig.clean path=salt://path/to/my/config.txt salt '*' iosconfig.clean path=https://bit.ly/2mAdq7z iosconfig.diff_text:\nReturn the diff, as text, between the candidate and the running config. candidate_config The candidate configuration sent as text. This argument is ignored when ``candidate_path`` is set. candidate_path Absolute or remote path from where to load the candidate configuration text. This argument allows any URI supported by :py:func:`cp.get_url \u0026lt;salt.modules.cp.get_url\u0026gt;`), e.g., ``salt://``, ``https://``, ``s3://``, ``ftp:/``, etc. running_config The running configuration sent as text. This argument is ignored when ``running_path`` is set. running_path Absolute or remote path from where to load the running configuration text. This argument allows any URI supported by :py:func:`cp.get_url \u0026lt;salt.modules.cp.get_url\u0026gt;`), e.g., ``salt://``, ``https://``, ``s3://``, ``ftp:/``, etc. saltenv: ``base`` Salt fileserver environment from which to retrieve the file. Ignored if ``candidate_path`` or ``running_path`` is not a ``salt://`` URL. CLI Example: salt '*' iosconfig.diff_text candidate_path=salt://path/to/candidate.cfg running_path=salt://path/to/running.cfg iosconfig.diff_tree:\nReturn the diff, as Python dictionary, between the candidate and the running configuration. candidate_config The candidate configuration sent as text. This argument is ignored when ``candidate_path`` is set. candidate_path Absolute or remote path from where to load the candidate configuration text. This argument allows any URI supported by :py:func:`cp.get_url \u0026lt;salt.modules.cp.get_url\u0026gt;`), e.g., ``salt://``, ``https://``, ``s3://``, ``ftp:/``, etc. running_config The running configuration sent as text. This argument is ignored when ``running_path`` is set. running_path Absolute or remote path from where to load the running configuration text. This argument allows any URI supported by :py:func:`cp.get_url \u0026lt;salt.modules.cp.get_url\u0026gt;`), e.g., ``salt://``, ``https://``, ``s3://``, ``ftp:/``, etc. saltenv: ``base`` Salt fileserver environment from which to retrieve the file. Ignored if ``candidate_path`` or ``running_path`` is not a ``salt://`` URL. CLI Example: salt '*' iosconfig.diff_tree candidate_path=salt://path/to/candidate.cfg running_path=salt://path/to/running.cfg iosconfig.merge_diff:\nReturn the merge diff, as text, after merging the merge config into the initial config. initial_config The initial configuration sent as text. This argument is ignored when ``initial_path`` is set. initial_path Absolute or remote path from where to load the initial configuration text. This argument allows any URI supported by :py:func:`cp.get_url \u0026lt;salt.modules.cp.get_url\u0026gt;`), e.g., ``salt://``, ``https://``, ``s3://``, ``ftp:/``, etc. merge_config The config to be merged into the initial config, sent as text. This argument is ignored when ``merge_path`` is set. merge_path Absolute or remote path from where to load the merge configuration text. This argument allows any URI supported by :py:func:`cp.get_url \u0026lt;salt.modules.cp.get_url\u0026gt;`), e.g., ``salt://``, ``https://``, ``s3://``, ``ftp:/``, etc. saltenv: ``base`` Salt fileserver environment from which to retrieve the file. Ignored if ``initial_path`` or ``merge_path`` is not a ``salt://`` URL. CLI Example: salt '*' iosconfig.merge_diff initial_path=salt://path/to/running.cfg merge_path=salt://path/to/merge.cfg iosconfig.merge_text:\nReturn the merge result of the ``initial_config`` with the ``merge_config``, as plain text. initial_config The initial configuration sent as text. This argument is ignored when ``initial_path`` is set. initial_path Absolute or remote path from where to load the initial configuration text. This argument allows any URI supported by :py:func:`cp.get_url \u0026lt;salt.modules.cp.get_url\u0026gt;`), e.g., ``salt://``, ``https://``, ``s3://``, ``ftp:/``, etc. merge_config The config to be merged into the initial config, sent as text. This argument is ignored when ``merge_path`` is set. merge_path Absolute or remote path from where to load the merge configuration text. This argument allows any URI supported by :py:func:`cp.get_url \u0026lt;salt.modules.cp.get_url\u0026gt;`), e.g., ``salt://``, ``https://``, ``s3://``, ``ftp:/``, etc. saltenv: ``base`` Salt fileserver environment from which to retrieve the file. Ignored if ``initial_path`` or ``merge_path`` is not a ``salt://`` URL. CLI Example: salt '*' iosconfig.merge_text initial_path=salt://path/to/running.cfg merge_path=salt://path/to/merge.cfg iosconfig.merge_tree:\nReturn the merge tree of the ``initial_config`` with the ``merge_config``, as a Python dictionary. initial_config The initial configuration sent as text. This argument is ignored when ``initial_path`` is set. initial_path Absolute or remote path from where to load the initial configuration text. This argument allows any URI supported by :py:func:`cp.get_url \u0026lt;salt.modules.cp.get_url\u0026gt;`), e.g., ``salt://``, ``https://``, ``s3://``, ``ftp:/``, etc. merge_config The config to be merged into the initial config, sent as text. This argument is ignored when ``merge_path`` is set. merge_path Absolute or remote path from where to load the merge configuration text. This argument allows any URI supported by :py:func:`cp.get_url \u0026lt;salt.modules.cp.get_url\u0026gt;`), e.g., ``salt://``, ``https://``, ``s3://``, ``ftp:/``, etc. saltenv: ``base`` Salt fileserver environment from which to retrieve the file. Ignored if ``initial_path`` or ``merge_path`` is not a ``salt://`` URL. CLI Example: salt '*' iosconfig.merge_tree initial_path=salt://path/to/running.cfg merge_path=salt://path/to/merge.cfg iosconfig.tree:\nTransform Cisco IOS style configuration to structured Python dictionary. Depending on the value of the ``with_tags`` argument, this function may provide different views, valuable in different situations. config The configuration sent as text. This argument is ignored when ``path`` is configured. path Absolute or remote path from where to load the configuration text. This argument allows any URI supported by :py:func:`cp.get_url \u0026lt;salt.modules.cp.get_url\u0026gt;`), e.g., ``salt://``, ``https://``, ``s3://``, ``ftp:/``, etc. with_tags: ``False`` Whether this function should return a detailed view, with tags. saltenv: ``base`` Salt fileserver environment from which to retrieve the file. Ignored if ``path`` is not a ``salt://`` URL. CLI Example: salt '*' iosconfig.tree path=salt://path/to/my/config.txt salt '*' iosconfig.tree path=https://bit.ly/2mAdq7z ip.apply_network_settings:\nApply global network configuration. CLI Example: salt '*' ip.apply_network_settings ip.build_bond:\nCreate a bond script in /etc/modprobe.d with the passed settings and load the bonding kernel module. CLI Example: salt '*' ip.build_bond bond0 mode=balance-alb ip.build_interface:\nBuild an interface script for a network interface. CLI Example: salt '*' ip.build_interface eth0 eth \u0026lt;settings\u0026gt; ip.build_network_settings:\nBuild the global network script. CLI Example: salt '*' ip.build_network_settings \u0026lt;settings\u0026gt; ip.build_routes:\nAdd route scripts for a network interface using up commands. CLI Example: salt '*' ip.build_routes eth0 \u0026lt;settings\u0026gt; ip.down:\nShutdown a network interface CLI Example: salt '*' ip.down eth0 eth ip.get_bond:\nReturn the content of a bond script CLI Example: salt '*' ip.get_bond bond0 ip.get_interface:\nReturn the contents of an interface script CLI Example: salt '*' ip.get_interface eth0 ip.get_network_settings:\nReturn the contents of the global network script. CLI Example: salt '*' ip.get_network_settings ip.get_routes:\nReturn the routes for the interface CLI Example: salt '*' ip.get_routes eth0 ip.up:\nStart up a network interface CLI Example: salt '*' ip.up eth0 eth iptables.append:\nAppend a rule to the specified table/chain. This function accepts a rule in a standard iptables command format, starting with the chain. Trying to force users to adapt to a new method of creating rules would be irritating at best, and we already have a parser that can handle it. CLI Example: salt '*' iptables.append filter INPUT \\ rule='-m state --state RELATED,ESTABLISHED -j ACCEPT' IPv6: salt '*' iptables.append filter INPUT \\ rule='-m state --state RELATED,ESTABLISHED -j ACCEPT' \\ family=ipv6 iptables.build_rule:\nBuild a well-formatted iptables rule based on kwargs. A `table` and `chain` are not required, unless `full` is True. If `full` is `True`, then `table`, `chain` and `command` are required. `command` may be specified as either a short option ('I') or a long option (`--insert`). This will return the iptables command, exactly as it would be used from the command line. If a position is required (as with `-I` or `-D`), it may be specified as `position`. This will only be useful if `full` is True. If `state` is passed, it will be ignored, use `connstate`. If `connstate` is passed in, it will automatically be changed to `state`. To pass in jump options that doesn't take arguments, pass in an empty string. Note: Whereas iptables will accept ``-p``, ``--proto[c[o[l]]]`` as synonyms of ``--protocol``, if ``--proto`` appears in an iptables command after the appearance of ``-m policy``, it is interpreted as the ``--proto`` option of the policy extension (see the iptables-extensions(8) man page). CLI Examples: salt '*' iptables.build_rule match=state \\ connstate=RELATED,ESTABLISHED jump=ACCEPT salt '*' iptables.build_rule filter INPUT command=I position=3 \\ full=True match=state connstate=RELATED,ESTABLISHED jump=ACCEPT salt '*' iptables.build_rule filter INPUT command=A \\ full=True match=state connstate=RELATED,ESTABLISHED \\ source='127.0.0.1' jump=ACCEPT .. Invert Rules salt '*' iptables.build_rule filter INPUT command=A \\ full=True match=state connstate=RELATED,ESTABLISHED \\ source='!127.0.0.1' jump=ACCEPT salt '*' iptables.build_rule filter INPUT command=A \\ full=True match=state connstate=RELATED,ESTABLISHED \\ destination='not 127.0.0.1' jump=ACCEPT IPv6: salt '*' iptables.build_rule match=state \\ connstate=RELATED,ESTABLISHED jump=ACCEPT \\ family=ipv6 salt '*' iptables.build_rule filter INPUT command=I position=3 \\ full=True match=state connstate=RELATED,ESTABLISHED jump=ACCEPT \\ family=ipv6 iptables.check:\nCheck for the existence of a rule in the table and chain This function accepts a rule in a standard iptables command format, starting with the chain. Trying to force users to adapt to a new method of creating rules would be irritating at best, and we already have a parser that can handle it. CLI Example: salt '*' iptables.check filter INPUT \\ rule='-m state --state RELATED,ESTABLISHED -j ACCEPT' IPv6: salt '*' iptables.check filter INPUT \\ rule='-m state --state RELATED,ESTABLISHED -j ACCEPT' \\ family=ipv6 iptables.check_chain:\nNew in version 2014.1.0 Check for the existence of a chain in the table CLI Example: salt '*' iptables.check_chain filter INPUT IPv6: salt '*' iptables.check_chain filter INPUT family=ipv6 iptables.delete:\nDelete a rule from the specified table/chain, specifying either the rule in its entirety, or the rule's position in the chain. This function accepts a rule in a standard iptables command format, starting with the chain. Trying to force users to adapt to a new method of creating rules would be irritating at best, and we already have a parser that can handle it. CLI Examples: salt '*' iptables.delete filter INPUT position=3 salt '*' iptables.delete filter INPUT \\ rule='-m state --state RELATED,ESTABLISHED -j ACCEPT' IPv6: salt '*' iptables.delete filter INPUT position=3 family=ipv6 salt '*' iptables.delete filter INPUT \\ rule='-m state --state RELATED,ESTABLISHED -j ACCEPT' \\ family=ipv6 iptables.delete_chain:\nNew in version 2014.1.0 Delete custom chain to the specified table. CLI Example: salt '*' iptables.delete_chain filter CUSTOM_CHAIN IPv6: salt '*' iptables.delete_chain filter CUSTOM_CHAIN family=ipv6 iptables.flush:\nFlush the chain in the specified table, flush all chains in the specified table if not specified chain. CLI Example: salt '*' iptables.flush filter INPUT IPv6: salt '*' iptables.flush filter INPUT family=ipv6 iptables.get_policy:\nReturn the current policy for the specified table/chain CLI Example: salt '*' iptables.get_policy filter INPUT IPv6: salt '*' iptables.get_policy filter INPUT family=ipv6 iptables.get_rules:\nReturn a data structure of the current, in-memory rules CLI Example: salt '*' iptables.get_rules IPv6: salt '*' iptables.get_rules family=ipv6 iptables.get_saved_policy:\nReturn the current policy for the specified table/chain CLI Examples: salt '*' iptables.get_saved_policy filter INPUT salt '*' iptables.get_saved_policy filter INPUT \\ conf_file=/etc/iptables.saved IPv6: salt '*' iptables.get_saved_policy filter INPUT family=ipv6 salt '*' iptables.get_saved_policy filter INPUT \\ conf_file=/etc/iptables.saved family=ipv6 iptables.get_saved_rules:\nReturn a data structure of the rules in the conf file CLI Example: salt '*' iptables.get_saved_rules IPv6: salt '*' iptables.get_saved_rules family=ipv6 iptables.insert:\nInsert a rule into the specified table/chain, at the specified position. This function accepts a rule in a standard iptables command format, starting with the chain. Trying to force users to adapt to a new method of creating rules would be irritating at best, and we already have a parser that can handle it. If the position specified is a negative number, then the insert will be performed counting from the end of the list. For instance, a position of -1 will insert the rule as the second to last rule. To insert a rule in the last position, use the append function instead. CLI Examples: salt '*' iptables.insert filter INPUT position=3 \\ rule='-m state --state RELATED,ESTABLISHED -j ACCEPT' IPv6: salt '*' iptables.insert filter INPUT position=3 \\ rule='-m state --state RELATED,ESTABLISHED -j ACCEPT' \\ family=ipv6 iptables.new_chain:\nNew in version 2014.1.0 Create new custom chain to the specified table. CLI Example: salt '*' iptables.new_chain filter CUSTOM_CHAIN IPv6: salt '*' iptables.new_chain filter CUSTOM_CHAIN family=ipv6 iptables.save:\nSave the current in-memory rules to disk CLI Example: salt '*' iptables.save /etc/sysconfig/iptables IPv6: salt '*' iptables.save /etc/sysconfig/iptables family=ipv6 iptables.set_policy:\nSet the current policy for the specified table/chain CLI Example: salt '*' iptables.set_policy filter INPUT ACCEPT IPv6: salt '*' iptables.set_policy filter INPUT ACCEPT family=ipv6 iptables.version:\nReturn version from iptables --version CLI Example: salt '*' iptables.version IPv6: salt '*' iptables.version family=ipv6 jboss7.create_datasource:\nCreate datasource in running jboss instance jboss_config Configuration dictionary with properties specified above. name Datasource name datasource_properties A dictionary of datasource properties to be created: - driver-name: mysql - connection-url: 'jdbc:mysql://localhost:3306/sampleDatabase' - jndi-name: 'java:jboss/datasources/sampleDS' - user-name: sampleuser - password: secret - min-pool-size: 3 - use-java-context: True profile The profile name (JBoss domain mode only) CLI Example: salt '*' jboss7.create_datasource '{\u0026quot;cli_path\u0026quot;: \u0026quot;integration.modules.sysmod.SysModuleTest.test_valid_docs\u0026quot;, \u0026quot;controller\u0026quot;: \u0026quot;10.11.12.13:9999\u0026quot;, \u0026quot;cli_user\u0026quot;: \u0026quot;jbossadm\u0026quot;, \u0026quot;cli_password\u0026quot;: \u0026quot;jbossadm\u0026quot;}' 'my_datasource' '{\u0026quot;driver-name\u0026quot;: \u0026quot;mysql\u0026quot;, \u0026quot;connection-url\u0026quot;: \u0026quot;jdbc:mysql://localhost:3306/sampleDatabase\u0026quot;, \u0026quot;jndi-name\u0026quot;: \u0026quot;java:jboss/datasources/sampleDS\u0026quot;, \u0026quot;user-name\u0026quot;: \u0026quot;sampleuser\u0026quot;, \u0026quot;password\u0026quot;: \u0026quot;secret\u0026quot;, \u0026quot;min-pool-size\u0026quot;: 3, \u0026quot;use-java-context\u0026quot;: True}' jboss7.create_simple_binding:\nCreate a simple jndi binding in the running jboss instance jboss_config Configuration dictionary with properties specified above. binding_name Binding name to be created value Binding value profile The profile name (JBoss domain mode only) CLI Example: salt '*' jboss7.create_simple_binding \\ '{\u0026quot;cli_path\u0026quot;: \u0026quot;integration.modules.sysmod.SysModuleTest.test_valid_docs\u0026quot;, \\ \u0026quot;controller\u0026quot;: \u0026quot;10.11.12.13:9999\u0026quot;, \u0026quot;cli_user\u0026quot;: \u0026quot;jbossadm\u0026quot;, \u0026quot;cli_password\u0026quot;: \u0026quot;jbossadm\u0026quot;}' \\ my_binding_name my_binding_value jboss7.deploy:\nDeploy the application on the jboss instance from the local file system where minion is running. jboss_config Configuration dictionary with properties specified above. source_file Source file to deploy from CLI Example: salt '*' jboss7.deploy '{\u0026quot;cli_path\u0026quot;: \u0026quot;integration.modules.sysmod.SysModuleTest.test_valid_docs\u0026quot;, \u0026quot;controller\u0026quot;: \u0026quot;10.11.12.13:9999\u0026quot;, \u0026quot;cli_user\u0026quot;: \u0026quot;jbossadm\u0026quot;, \u0026quot;cli_password\u0026quot;: \u0026quot;jbossadm\u0026quot;}' /opt/deploy_files/my_deploy jboss7.list_deployments:\nList all deployments on the jboss instance jboss_config Configuration dictionary with properties specified above. CLI Example: salt '*' jboss7.list_deployments '{\u0026quot;cli_path\u0026quot;: \u0026quot;integration.modules.sysmod.SysModuleTest.test_valid_docs\u0026quot;, \u0026quot;controller\u0026quot;: \u0026quot;10.11.12.13:9999\u0026quot;, \u0026quot;cli_user\u0026quot;: \u0026quot;jbossadm\u0026quot;, \u0026quot;cli_password\u0026quot;: \u0026quot;jbossadm\u0026quot;}' jboss7.read_datasource:\nRead datasource properties in the running jboss instance. jboss_config Configuration dictionary with properties specified above. name Datasource name profile Profile name (JBoss domain mode only) CLI Example: salt '*' jboss7.read_datasource '{\u0026quot;cli_path\u0026quot;: \u0026quot;integration.modules.sysmod.SysModuleTest.test_valid_docs\u0026quot;, \u0026quot;controller\u0026quot;: \u0026quot;10.11.12.13:9999\u0026quot;, \u0026quot;cli_user\u0026quot;: \u0026quot;jbossadm\u0026quot;, \u0026quot;cli_password\u0026quot;: \u0026quot;jbossadm\u0026quot;}' jboss7.read_simple_binding:\nRead jndi binding in the running jboss instance jboss_config Configuration dictionary with properties specified above. binding_name Binding name to be created profile The profile name (JBoss domain mode only) CLI Example: salt '*' jboss7.read_simple_binding '{\u0026quot;cli_path\u0026quot;: \u0026quot;integration.modules.sysmod.SysModuleTest.test_valid_docs\u0026quot;, \u0026quot;controller\u0026quot;: \u0026quot;10.11.12.13:9999\u0026quot;, \u0026quot;cli_user\u0026quot;: \u0026quot;jbossadm\u0026quot;, \u0026quot;cli_password\u0026quot;: \u0026quot;jbossadm\u0026quot;}' my_binding_name jboss7.reload:\nReload running jboss instance jboss_config Configuration dictionary with properties specified above. host The name of the host. JBoss domain mode only - and required if running in domain mode. The host name is the \u0026quot;name\u0026quot; attribute of the \u0026quot;host\u0026quot; element in host.xml CLI Example: salt '*' jboss7.reload '{\u0026quot;cli_path\u0026quot;: \u0026quot;integration.modules.sysmod.SysModuleTest.test_valid_docs\u0026quot;, \u0026quot;controller\u0026quot;: \u0026quot;10.11.12.13:9999\u0026quot;, \u0026quot;cli_user\u0026quot;: \u0026quot;jbossadm\u0026quot;, \u0026quot;cli_password\u0026quot;: \u0026quot;jbossadm\u0026quot;}' jboss7.remove_datasource:\nRemove an existing datasource from the running jboss instance. jboss_config Configuration dictionary with properties specified above. name Datasource name profile The profile (JBoss domain mode only) CLI Example: salt '*' jboss7.remove_datasource '{\u0026quot;cli_path\u0026quot;: \u0026quot;integration.modules.sysmod.SysModuleTest.test_valid_docs\u0026quot;, \u0026quot;controller\u0026quot;: \u0026quot;10.11.12.13:9999\u0026quot;, \u0026quot;cli_user\u0026quot;: \u0026quot;jbossadm\u0026quot;, \u0026quot;cli_password\u0026quot;: \u0026quot;jbossadm\u0026quot;}' my_datasource_name jboss7.status:\nGet status of running jboss instance. jboss_config Configuration dictionary with properties specified above. host The name of the host. JBoss domain mode only - and required if running in domain mode. The host name is the \u0026quot;name\u0026quot; attribute of the \u0026quot;host\u0026quot; element in host.xml server_config The name of the Server Configuration. JBoss Domain mode only - and required if running in domain mode. CLI Example: salt '*' jboss7.status '{\u0026quot;cli_path\u0026quot;: \u0026quot;integration.modules.sysmod.SysModuleTest.test_valid_docs\u0026quot;, \u0026quot;controller\u0026quot;: \u0026quot;10.11.12.13:9999\u0026quot;, \u0026quot;cli_user\u0026quot;: \u0026quot;jbossadm\u0026quot;, \u0026quot;cli_password\u0026quot;: \u0026quot;jbossadm\u0026quot;}' jboss7.stop_server:\nStop running jboss instance jboss_config Configuration dictionary with properties specified above. host The name of the host. JBoss domain mode only - and required if running in domain mode. The host name is the \u0026quot;name\u0026quot; attribute of the \u0026quot;host\u0026quot; element in host.xml CLI Example: salt '*' jboss7.stop_server '{\u0026quot;cli_path\u0026quot;: \u0026quot;integration.modules.sysmod.SysModuleTest.test_valid_docs\u0026quot;, \u0026quot;controller\u0026quot;: \u0026quot;10.11.12.13:9999\u0026quot;, \u0026quot;cli_user\u0026quot;: \u0026quot;jbossadm\u0026quot;, \u0026quot;cli_password\u0026quot;: \u0026quot;jbossadm\u0026quot;}' jboss7.undeploy:\nUndeploy the application from jboss instance jboss_config Configuration dictionary with properties specified above. deployment Deployment name to undeploy CLI Example: salt '*' jboss7.undeploy '{\u0026quot;cli_path\u0026quot;: \u0026quot;integration.modules.sysmod.SysModuleTest.test_valid_docs\u0026quot;, \u0026quot;controller\u0026quot;: \u0026quot;10.11.12.13:9999\u0026quot;, \u0026quot;cli_user\u0026quot;: \u0026quot;jbossadm\u0026quot;, \u0026quot;cli_password\u0026quot;: \u0026quot;jbossadm\u0026quot;}' my_deployment jboss7.update_datasource:\nUpdate an existing datasource in running jboss instance. If the property doesn't exist if will be created, if it does, it will be updated with the new value jboss_config Configuration dictionary with properties specified above. name Datasource name new_properties A dictionary of datasource properties to be updated. For example: - driver-name: mysql - connection-url: 'jdbc:mysql://localhost:3306/sampleDatabase' - jndi-name: 'java:jboss/datasources/sampleDS' - user-name: sampleuser - password: secret - min-pool-size: 3 - use-java-context: True profile The profile name (JBoss domain mode only) CLI Example: salt '*' jboss7.update_datasource '{\u0026quot;cli_path\u0026quot;: \u0026quot;integration.modules.sysmod.SysModuleTest.test_valid_docs\u0026quot;, \u0026quot;controller\u0026quot;: \u0026quot;10.11.12.13:9999\u0026quot;, \u0026quot;cli_user\u0026quot;: \u0026quot;jbossadm\u0026quot;, \u0026quot;cli_password\u0026quot;: \u0026quot;jbossadm\u0026quot;}' 'my_datasource' '{\u0026quot;driver-name\u0026quot;: \u0026quot;mysql\u0026quot;, \u0026quot;connection-url\u0026quot;: \u0026quot;jdbc:mysql://localhost:3306/sampleDatabase\u0026quot;, \u0026quot;jndi-name\u0026quot;: \u0026quot;java:jboss/datasources/sampleDS\u0026quot;, \u0026quot;user-name\u0026quot;: \u0026quot;sampleuser\u0026quot;, \u0026quot;password\u0026quot;: \u0026quot;secret\u0026quot;, \u0026quot;min-pool-size\u0026quot;: 3, \u0026quot;use-java-context\u0026quot;: True}' jboss7.update_simple_binding:\nUpdate the simple jndi binding in the running jboss instance jboss_config Configuration dictionary with properties specified above. binding_name Binding name to be updated value New binding value profile The profile name (JBoss domain mode only) CLI Example: salt '*' jboss7.update_simple_binding '{\u0026quot;cli_path\u0026quot;: \u0026quot;integration.modules.sysmod.SysModuleTest.test_valid_docs\u0026quot;, \u0026quot;controller\u0026quot;: \u0026quot;10.11.12.13:9999\u0026quot;, \u0026quot;cli_user\u0026quot;: \u0026quot;jbossadm\u0026quot;, \u0026quot;cli_password\u0026quot;: \u0026quot;jbossadm\u0026quot;}' my_binding_name my_binding_value jboss7_cli.run_command:\nExecute a command against jboss instance through the CLI interface. jboss_config Configuration dictionary with properties specified above. command Command to execute against jboss instance fail_on_error (default=True) Is true, raise CommandExecutionError exception if execution fails. If false, 'success' property of the returned dictionary is set to False CLI Example: salt '*' jboss7_cli.run_command '{\u0026quot;cli_path\u0026quot;: \u0026quot;integration.modules.sysmod.SysModuleTest.test_valid_docs\u0026quot;, \u0026quot;controller\u0026quot;: \u0026quot;10.11.12.13:9999\u0026quot;, \u0026quot;cli_user\u0026quot;: \u0026quot;jbossadm\u0026quot;, \u0026quot;cli_password\u0026quot;: \u0026quot;jbossadm\u0026quot;}' my_command jboss7_cli.run_operation:\nExecute an operation against jboss instance through the CLI interface. jboss_config Configuration dictionary with properties specified above. operation An operation to execute against jboss instance fail_on_error (default=True) Is true, raise CommandExecutionError exception if execution fails. If false, 'success' property of the returned dictionary is set to False retries: Number of retries in case of \u0026quot;JBAS012144: Could not connect to remote\u0026quot; error. CLI Example: salt '*' jboss7_cli.run_operation '{\u0026quot;cli_path\u0026quot;: \u0026quot;integration.modules.sysmod.SysModuleTest.test_valid_docs\u0026quot;, \u0026quot;controller\u0026quot;: \u0026quot;10.11.12.13:9999\u0026quot;, \u0026quot;cli_user\u0026quot;: \u0026quot;jbossadm\u0026quot;, \u0026quot;cli_password\u0026quot;: \u0026quot;jbossadm\u0026quot;}' my_operation jinja.import_json:\nLoads JSON data from the specified path CLI Example: salt myminion jinja.import_JSON myformula/foo.json jinja.import_yaml:\nLoads YAML data from the specified path CLI Example: salt myminion jinja.import_yaml myformula/foo.yaml jinja.load_map:\nLoads the map at the specified path, and returns the specified value from that map. CLI Example: # Assuming the map is loaded in your formula SLS as follows: # # {% from \u0026quot;myformula/map.jinja\u0026quot; import myformula with context %} # # the following syntax can be used to load the map and check the # results: salt myminion jinja.load_map myformula/map.jinja myformula k8s.create_namespace:\nNew in version 2016.3.0 Create kubernetes namespace from the name, similar to the functionality added to kubectl since v.1.2.0: kubectl create namespaces namespace-name CLI Example: salt '*' k8s.create_namespace namespace_name salt '*' k8s.create_namespace namespace_name http://kube-master.cluster.local k8s.create_secret:\nNew in version 2016.3.0 Create k8s secrets in the defined namespace from the list of files CLI Example: salt '*' k8s.create_secret namespace_name secret_name sources salt '*' k8s.create_secret namespace_name secret_name sources http://kube-master.cluster.local sources are either dictionary of {name: path, name1: path} pairs or array of strings defining paths. Example of paths array: ['/full/path/filename', \u0026quot;file:///full/path/filename\u0026quot;, \u0026quot;salt://secret/storage/file.txt\u0026quot;, \u0026quot;http://user:password@securesite.com/secret-file.json\u0026quot;] Example of dictionaries: {\u0026quot;nameit\u0026quot;: '/full/path/fiename', name2: \u0026quot;salt://secret/storage/file.txt\u0026quot;} optional parameters accepted: update=[false] default value is false if set to false, and secret is already present on the cluster - warning will be returned and no changes to the secret will be done. In case it is set to \u0026quot;true\u0026quot; and secret is present but data is differ - secret will be updated. force=[true] default value is true if the to False, secret will not be created in case one of the files is not valid kubernetes secret. e.g. capital letters in secret name or _ in case force is set to True, wrong files will be skipped but secret will be created any way. saltenv=['base'] default value is base in case 'salt://' path is used, this parameter can change the visibility of files k8s.delete_secret:\nNew in version 2016.3.0 Delete kubernetes secret in the defined namespace. Namespace is the mandatory parameter as well as name. CLI Example: salt '*' k8s.delete_secret namespace_name secret_name salt '*' k8s.delete_secret namespace_name secret_name http://kube-master.cluster.local k8s.get_labels:\nNew in version 2016.3.0 Get labels from the current node CLI Example: salt '*' k8s.get_labels salt '*' k8s.get_labels kube-node.cluster.local http://kube-master.cluster.local k8s.get_namespaces:\nNew in version 2016.3.0 Get one or all kubernetes namespaces. If namespace parameter is omitted, all namespaces will be returned back to user, similar to following kubectl example: kubectl get namespaces -o json In case namespace is set by user, the output will be similar to the one from kubectl: kubectl get namespaces namespace_name -o json CLI Example: salt '*' k8s.get_namespaces salt '*' k8s.get_namespaces namespace_name http://kube-master.cluster.local k8s.get_secrets:\nGet k8s namespaces CLI Example: salt '*' k8s.get_secrets namespace_name salt '*' k8s.get_secrets namespace_name secret_name http://kube-master.cluster.local k8s.label_absent:\nNew in version 2016.3.0 Delete label to the current node CLI Example: salt '*' k8s.label_absent hw/disktype salt '*' k8s.label_absent hw/disktype kube-node.cluster.local http://kube-master.cluster.local k8s.label_folder_absent:\nNew in version 2016.3.0 Delete label folder to the current node CLI Example: salt '*' k8s.label_folder_absent hw salt '*' k8s.label_folder_absent hw/ kube-node.cluster.local http://kube-master.cluster.local k8s.label_present:\nNew in version 2016.3.0 Set label to the current node CLI Example: salt '*' k8s.label_present hw/disktype ssd salt '*' k8s.label_present hw/disktype ssd kube-node.cluster.local http://kube-master.cluster.local k8s.update_secret:\nNew in version 2016.3.0 alias to k8s.create_secret with update=true CLI Example: salt '*' k8s.update_secret namespace_name secret_name sources [apiserver_url] [force=true] [update=false] [saltenv='base'] sources are either dictionary of {name: path, name1: path} pairs or array of strings defining paths. Example of paths array: ['/full/path/filename', \u0026quot;file:///full/path/filename\u0026quot;, \u0026quot;salt://secret/storage/file.txt\u0026quot;, \u0026quot;http://user:password@securesite.com/secret-file.json\u0026quot;] Example of dictionaries: {\u0026quot;nameit\u0026quot;: '/full/path/fiename', name2: \u0026quot;salt://secret/storage/file.txt\u0026quot;} optional parameters accepted: force=[true] default value is true if the to False, secret will not be created in case one of the files is not valid kubernetes secret. e.g. capital letters in secret name or _ in case force is set to True, wrong files will be skipped but secret will be created any way. saltenv=['base'] default value is base in case 'salt://' path is used, this parameter can change the visibility of files kernelpkg.active:\nReturn the version of the running kernel. CLI Example: salt '*' kernelpkg.active kernelpkg.clean-up:\nRemove all unused kernel packages from the system. keep_latest : True In the event that the active kernel is not the latest one installed, setting this to True will retain the latest kernel package, in addition to the active one. If False, all kernel packages other than the active one will be removed. CLI Example: salt '*' kernelpkg.clean-up kernelpkg.latest_available:\nReturn the version of the latest kernel from the package repositories. CLI Example: salt '*' kernelpkg.latest_available kernelpkg.latest_installed:\nReturn the version of the latest installed kernel. CLI Example: salt '*' kernelpkg.latest_installed Note: This function may not return the same value as :py:func:`~salt.modules.kernelpkg_linux_apt.active` if a new kernel has been installed and the system has not yet been rebooted. The :py:func:`~salt.modules.kernelpkg_linux_apt.needs_reboot` function exists to detect this condition. kernelpkg.list_installed:\nReturn a list of all installed kernels. CLI Example: salt '*' kernelpkg.list_installed kernelpkg.needs_reboot:\nDetect if a new kernel version has been installed but is not running. Returns True if a new kernel is installed, False otherwise. CLI Example: salt '*' kernelpkg.needs_reboot kernelpkg.remove:\nRemove a specific version of the kernel. release The release number of an installed kernel. This must be the entire release number as returned by :py:func:`~salt.modules.kernelpkg_linux_apt.list_installed`, not the package name. CLI Example: salt '*' kernelpkg.remove 4.4.0-70-generic kernelpkg.upgrade:\nUpgrade the kernel and optionally reboot the system. reboot : False Request a reboot if a new kernel is available. at_time : immediate Schedule the reboot at some point in the future. This argument is ignored if ``reboot=False``. See :py:func:`~salt.modules.system.reboot` for more details on this argument. CLI Example: salt '*' kernelpkg.upgrade salt '*' kernelpkg.upgrade reboot=True at_time=1 Note: An immediate reboot often shuts down the system before the minion has a chance to return, resulting in errors. A minimal delay (1 minute) is useful to ensure the result is delivered to the master. kernelpkg.upgrade_available:\nDetect if a new kernel version is available in the repositories. Returns True if a new kernel is available, False otherwise. CLI Example: salt '*' kernelpkg.upgrade_available key.finger:\nReturn the minion's public key fingerprint hash_type The hash algorithm used to calculate the fingerprint CLI Example: salt '*' key.finger key.finger_master:\nReturn the fingerprint of the master's public key on the minion. hash_type The hash algorithm used to calculate the fingerprint CLI Example: salt '*' key.finger_master keyboard.get_sys:\nGet current system keyboard setting CLI Example: salt '*' keyboard.get_sys keyboard.get_x:\nGet current X keyboard setting CLI Example: salt '*' keyboard.get_x keyboard.set_sys:\nSet current system keyboard setting CLI Example: salt '*' keyboard.set_sys dvorak keyboard.set_x:\nSet current X keyboard setting CLI Example: salt '*' keyboard.set_x dvorak kmod.available:\nReturn a list of all available kernel modules CLI Example: salt '*' kmod.available kmod.check_available:\nCheck to see if the specified kernel module is available CLI Example: salt '*' kmod.check_available kvm kmod.is_loaded:\nCheck to see if the specified kernel module is loaded CLI Example: salt '*' kmod.is_loaded kvm kmod.load:\nLoad the specified kernel module mod Name of module to add persist Write module to /etc/modules to make it load on system reboot CLI Example: salt '*' kmod.load kvm kmod.lsmod:\nReturn a dict containing information about currently loaded modules CLI Example: salt '*' kmod.lsmod kmod.mod_list:\nReturn a list of the loaded module names only_persist Only return the list of loaded persistent modules CLI Example: salt '*' kmod.mod_list kmod.remove:\nRemove the specified kernel module mod Name of module to remove persist Also remove module from /etc/modules comment If persist is set don't remove line from /etc/modules but only comment it CLI Example: salt '*' kmod.remove kvm kubeadm.alpha_certs_renew:\nNew in version 3001 Renews certificates for a Kubernetes cluster rootfs The path to the real host root filesystem CLI Example: salt '*' kubeadm.alpha_certs_renew kubeadm.alpha_kubeconfig_user:\nNew in version 3001 Outputs a kubeconfig file for an additional user client_name The name of the user. It will be used as the CN if client certificates are created apiserver_advertise_address The IP address the API server is accessible on apiserver_bind_port The port the API server is accessible on (default 6443) cert_dir The path where certificates are stored (default \u0026quot;/etc/kubernetes/pki\u0026quot;) org The organisation of the client certificate token The token that show be used as the authentication mechanism for this kubeconfig, instead of client certificates rootfs The path to the real host root filesystem CLI Example: salt '*' kubeadm.alpha_kubeconfig_user client_name=user kubeadm.alpha_kubelet_config_download:\nNew in version 3001 Downloads the kubelet configuration from the cluster ConfigMap kubelet-config-1.X kubeconfig The kubeconfig file to use when talking to the cluster. The default values in /etc/kubernetes/admin.conf kubelet_version The desired version for the kubelet rootfs The path to the real host root filesystem CLI Example: salt '*' kubeadm.alpha_kubelet_config_download salt '*' kubeadm.alpha_kubelet_config_download kubelet_version='1.14.0' kubeadm.alpha_kubelet_config_enable_dynamic:\nNew in version 3001 Enables or updates dynamic kubelet configuration for a node node_name Name of the node that should enable the dynamic kubelet configuration kubeconfig The kubeconfig file to use when talking to the cluster. The default values in /etc/kubernetes/admin.conf kubelet_version The desired version for the kubelet rootfs The path to the real host root filesystem CLI Example: salt '*' kubeadm.alpha_kubelet_config_enable_dynamic node-1 kubeadm.alpha_selfhosting_pivot:\nNew in version 3001 Converts a static Pod-hosted control plane into a selt-hosted one cert_dir The path where certificates are stored (default \u0026quot;/etc/kubernetes/pki\u0026quot;) config Path to kubeadm configuration file kubeconfig The kubeconfig file to use when talking to the cluster. The default values in /etc/kubernetes/admin.conf store_certs_in_secrets Enable storing certs in secrets rootfs The path to the real host root filesystem CLI Example: salt '*' kubeadm.alpha_selfhost_pivot kubeadm.config_images_list:\nNew in version 3001 Print a list of images kubeadm will use config Path to kubeadm configuration file feature_gates A set of key=value pairs that describe feature gates for various features kubernetes_version Choose a specifig Kubernetes version for the control plane (default \u0026quot;stable-1\u0026quot;) kubeconfig The kubeconfig file to use when talking to the cluster. The default values in /etc/kubernetes/admin.conf rootfs The path to the real host root filesystem CLI Example: salt '*' kubeadm.config_images_list kubeadm.config_images_pull:\nNew in version 3001 Pull images used by kubeadm config Path to kubeadm configuration file cri_socket Path to the CRI socket to connect feature_gates A set of key=value pairs that describe feature gates for various features kubernetes_version Choose a specifig Kubernetes version for the control plane (default \u0026quot;stable-1\u0026quot;) kubeconfig The kubeconfig file to use when talking to the cluster. The default values in /etc/kubernetes/admin.conf rootfs The path to the real host root filesystem CLI Example: salt '*' kubeadm.config_images_pull kubeadm.config_migrate:\nNew in version 3001 Read an older version of the kubeadm configuration API types from a file, and output the similar config object for the newer version old_config Path to the kubeadm config file that is usin the old API version and should be converted new_config Path to the resulting equivalent kubeadm config file using the new API version. If not specified the output will be returned kubeconfig The kubeconfig file to use when talking to the cluster. The default values in /etc/kubernetes/admin.conf rootfs The path to the real host root filesystem CLI Example: salt '*' kubeadm.config_migrate /oldconfig.cfg kubeadm.config_print_init_defaults:\nNew in version 3001 Return default init configuration, that can be used for 'kubeadm init' component_config A comma-separated list for component config API object to print the default values for (valid values: KubeProxyConfiguration, KubeletConfiguration) kubeconfig The kubeconfig file to use when talking to the cluster. The default values in /etc/kubernetes/admin.conf rootfs The path to the real host root filesystem CLI Example: salt '*' kubeadm.config_print_init_defaults kubeadm.config_print_join_defaults:\nNew in version 3001 Return default join configuration, that can be used for 'kubeadm join' component_config A comma-separated list for component config API object to print the default values for (valid values: KubeProxyConfiguration, KubeletConfiguration) kubeconfig The kubeconfig file to use when talking to the cluster. The default values in /etc/kubernetes/admin.conf rootfs The path to the real host root filesystem CLI Example: salt '*' kubeadm.config_print_join_defaults kubeadm.config_upload_from_file:\nNew in version 3001 Upload a configuration file to the in-cluster ConfigMap for kubeadm configuration config Path to a kubeadm configuration file kubeconfig The kubeconfig file to use when talking to the cluster. The default values in /etc/kubernetes/admin.conf rootfs The path to the real host root filesystem CLI Example: salt '*' kubeadm.config_upload_from_file /config.cfg kubeadm.config_upload_from_flags:\nNew in version 3001 Create the in-cluster configuration file for the first time using flags apiserver_advertise_address The IP address the API server will advertise it's listening on apiserver_bind_port The port the API server is accessible on (default 6443) apiserver_cert_extra_sans Optional extra Subject Alternative Names (SANs) to use for the API Server serving certificate cert_dir The path where to save and store the certificates (default \u0026quot;/etc/kubernetes/pki\u0026quot;) cri_socket Path to the CRI socket to connect feature_gates A set of key=value pairs that describe feature gates for various features kubernetes_version Choose a specifig Kubernetes version for the control plane (default \u0026quot;stable-1\u0026quot;) node_name Specify the node name pod_network_cidr Specify range of IP addresses for the pod network service_cidr Use alternative range of IP address for service VIPs (default \u0026quot;10.96.0.0/12\u0026quot;) service_dns_domain Use alternative domain for services (default \u0026quot;cluster.local\u0026quot;) kubeconfig The kubeconfig file to use when talking to the cluster. The default values in /etc/kubernetes/admin.conf rootfs The path to the real host root filesystem CLI Example: salt '*' kubeadm.config_upload_from_flags kubeadm.config_view:\nNew in version 3001 View the kubeadm configuration stored inside the cluster kubeconfig The kubeconfig file to use when talking to the cluster. The default values in /etc/kubernetes/admin.conf rootfs The path to the real host root filesystem CLI Example: salt '*' kubeadm.config_view kubeadm.init:\nNew in version 3001 Command to set up the Kubernetes control plane apiserver_advertise_address The IP address the API server will advertise it's listening on apiserver_bind_port The port the API server is accessible on (default 6443) apiserver_cert_extra_sans Optional extra Subject Alternative Names (SANs) to use for the API Server serving certificate cert_dir The path where to save and store the certificates (default \u0026quot;/etc/kubernetes/pki\u0026quot;) certificate_key Key used to encrypt the control-plane certificates in the kubeadm-certs Secret config Path to a kubeadm configuration file control_plane_endpoint Specify a stable IP address or DNS name for the control plane cri_socket Path to the CRI socket to connect experimental_upload_certs Upload control-plane certificate to the kubeadm-certs Secret. ( kubeadm version =\u0026lt; 1.16 ) upload_certs Upload control-plane certificate to the kubeadm-certs Secret. ( kubeadm version \u0026gt; 1.16 ) feature_gates A set of key=value pairs that describe feature gates for various features ignore_preflight_errors A list of checks whose errors will be shown as warnings image_repository Choose a container registry to pull control plane images from kubernetes_version Choose a specifig Kubernetes version for the control plane (default \u0026quot;stable-1\u0026quot;) node_name Specify the node name pod_network_cidr Specify range of IP addresses for the pod network service_cidr Use alternative range of IP address for service VIPs (default \u0026quot;10.96.0.0/12\u0026quot;) service_dns_domain Use alternative domain for services (default \u0026quot;cluster.local\u0026quot;) skip_certificate_key_print Don't print the key used to encrypt the control-plane certificates skip_phases List of phases to be skipped skip_token_print Skip printing of the default bootstrap token generated by 'kubeadm init' token The token to use for establishing bidirectional trust between nodes and control-plane nodes. The token must match a regular expression, that by default is [a-z0-9]{6}.[a-z0-9]{16} token_ttl The duration defore the token is automatically deleted (1s, 2m, 3h). If set to '0' the token will never expire. Default value is 24h0m0s rootfs The path to the real host root filesystem CLI Example: salt '*' kubeadm.init pod_network_cidr='10.244.0.0/16' kubeadm.join:\nNew in version 3001 Command to join to an existing cluster api_server_endpoint IP address or domain name and port of the API Server apiserver_advertise_address If the node should host a new control plane instance, the IP address the API Server will advertise it's listening on apiserver_bind_port If the node should host a new control plane instance, the port the API Server to bind to (default 6443) certificate_key Use this key to decrypt the certificate secrets uploaded by init config Path to a kubeadm configuration file cri_socket Path to the CRI socket to connect discovery_file For file-based discovery, a file or URL from which to load cluster information discovery_token For token-based discovery, the token used to validate cluster information fetched from the API Server discovery_token_ca_cert_hash For token-based discovery, validate that the root CA public key matches this hash (format: \u0026quot;\u0026lt;type\u0026gt;:\u0026lt;value\u0026gt;\u0026quot;) discovery_token_unsafe_skip_ca_verification For token-based discovery, allow joining without 'discovery-token-ca-cert-hash' pinning experimental_control_plane Create a new control plane instance on this node (kubeadm version =\u0026lt; 1.16) control_plane Create a new control plane instance on this node (kubeadm version \u0026gt; 1.16) ignore_preflight_errors A list of checks whose errors will be shown as warnings node_name Specify the node name skip_phases List of phases to be skipped tls_bootstrap_token Specify the token used to temporarily authenticate with the Kubernetes Control Plane while joining the node token Use this token for both discovery-token and tls-bootstrap-token when those values are not provided rootfs The path to the real host root filesystem CLI Example: salt '*' kubeadm.join 10.160.65.165:6443 token='token' kubeadm.join_params:\nNew in version 3001 Return the parameters required for joining into the cluster create_if_needed If the token bucket is empty and this parameter is True, a new token will be created. CLI Example: salt '*' kubeadm.join_params salt '*' kubeadm.join_params create_if_needed=True kubeadm.reset:\nNew in version 3001 Revert any changes made to this host by 'kubeadm init' or 'kubeadm join' cert_dir The path to the directory where the certificates are stored (default \u0026quot;/etc/kubernetes/pki\u0026quot;) cri_socket Path to the CRI socket to connect ignore_preflight_errors A list of checks whose errors will be shown as warnings kubeconfig The kubeconfig file to use when talking to the cluster. The default values in /etc/kubernetes/admin.conf rootfs The path to the real host root filesystem CLI Example: salt '*' kubeadm.join 10.160.65.165:6443 token='token' kubeadm.token_create:\nNew in version 3001 Create bootstrap tokens on the server token Token to write, if None one will be generated. The token must match a regular expression, that by default is [a-z0-9]{6}.[a-z0-9]{16} config Path to kubeadm configuration file description A human friendly description of how this token is used groups List of extra groups that this token will authenticate, default to ['system:bootstrappers:kubeadm:default-node-token'] ttl The duration defore the token is automatically deleted (1s, 2m, 3h). If set to '0' the token will never expire. Default value is 24h0m0s usages Describes the ways in which this token can be used. The default value is ['signing', 'authentication'] kubeconfig The kubeconfig file to use when talking to the cluster. The default values in /etc/kubernetes/admin.conf rootfs The path to the real host root filesystem CLI Example: salt '*' kubeadm.token_create salt '*' kubeadm.token_create a1b2c.0123456789abcdef salt '*' kubeadm.token_create ttl='6h' salt '*' kubeadm.token_create usages=\u0026quot;['signing']\u0026quot; kubeadm.token_delete:\nNew in version 3001 Delete bootstrap tokens on the server token Token to write, if None one will be generated. The token must match a regular expression, that by default is [a-z0-9]{6}.[a-z0-9]{16} kubeconfig The kubeconfig file to use when talking to the cluster. The default values in /etc/kubernetes/admin.conf rootfs The path to the real host root filesystem CLI Example: salt '*' kubeadm.token_delete a1b2c salt '*' kubeadm.token_create a1b2c.0123456789abcdef kubeadm.token_generate:\nNew in version 3001 Generate and return a bootstrap token, but do not create it on the server kubeconfig The kubeconfig file to use when talking to the cluster. The default values in /etc/kubernetes/admin.conf rootfs The path to the real host root filesystem CLI Example: salt '*' kubeadm.token_generate kubeadm.token_list:\nNew in version 3001 List bootstrap tokens on the server kubeconfig The kubeconfig file to use when talking to the cluster. The default values in /etc/kubernetes/admin.conf rootfs The path to the real host root filesystem CLI Example: salt '*' kubeadm.token_list kubeadm.version:\nNew in version 3001 Return the version of kubeadm kubeconfig The kubeconfig file to use when talking to the cluster. The default values in /etc/kubernetes/admin.conf rootfs The path to the real host root filesystem CLI Example: salt '*' kubeadm.version locale.avail:\nCheck if a locale is available. New in version 2014.7.0 CLI Example: salt '*' locale.avail 'en_US.UTF-8' locale.gen_locale:\nGenerate a locale. Options: New in version 2014.7.0 :param locale: Any locale listed in /usr/share/i18n/locales or /usr/share/i18n/SUPPORTED for Debian and Gentoo based distributions, which require the charmap to be specified as part of the locale when generating it. verbose Show extra warnings about errors that are normally ignored. CLI Example: salt '*' locale.gen_locale en_US.UTF-8 salt '*' locale.gen_locale 'en_IE.UTF-8 UTF-8' # Debian/Gentoo only locale.get_locale:\nGet the current system locale CLI Example: salt '*' locale.get_locale locale.list_avail:\nLists available (compiled) locales CLI Example: salt '*' locale.list_avail locale.set_locale:\nSets the current system locale CLI Example: salt '*' locale.set_locale 'en_US.UTF-8' locate.locate:\nPerforms a file lookup. Valid options (and their defaults) are:: basename=False count=False existing=False follow=True ignore=False nofollow=False wholename=True regex=False database=\u0026lt;locate's default database\u0026gt; limit=\u0026lt;integer, not set by default\u0026gt; See the manpage for ``locate(1)`` for further explanation of these options. CLI Example: salt '*' locate.locate locate.stats:\nReturns statistics about the locate database CLI Example: salt '*' locate.stats locate.updatedb:\nUpdates the locate database CLI Example: salt '*' locate.updatedb locate.version:\nReturns the version of locate CLI Example: salt '*' locate.version log.critical:\nLog message at level CRITICAL. log.debug:\nLog message at level DEBUG. log.error:\nLog message at level ERROR. log.exception:\nLog message at level EXCEPTION. log.info:\nLog message at level INFO. log.warning:\nLog message at level WARNING. logrotate.get:\nGet the value for a specific configuration line. :param str key: The command or stanza block to configure. :param str value: The command value or command of the block specified by the key parameter. :param str conf_file: The logrotate configuration file. :return: The value for a specific configuration line. :rtype: bool|int|str CLI Example: salt '*' logrotate.get rotate salt '*' logrotate.get /var/log/wtmp rotate /etc/logrotate.conf logrotate.set:\nSet a new value for a specific configuration line. :param str key: The command or block to configure. :param str value: The command value or command of the block specified by the key parameter. :param str setting: The command value for the command specified by the value parameter. :param str conf_file: The logrotate configuration file. :return: A boolean representing whether all changes succeeded. :rtype: bool CLI Example: salt '*' logrotate.set rotate 2 Can also be used to set a single value inside a multiline configuration block. For instance, to change rotate in the following block: /var/log/wtmp { monthly create 0664 root root rotate 1 } Use the following command: salt '*' logrotate.set /var/log/wtmp rotate 2 This module also has the ability to scan files inside an include directory, and make changes in the appropriate file. logrotate.show_conf:\nShow parsed configuration :param str conf_file: The logrotate configuration file. :return: The parsed configuration. :rtype: dict CLI Example: salt '*' logrotate.show_conf lowpkg.bin_pkg_info:\nNew in version 2015.8.0 Parses DEB metadata and returns a dictionary of information about the package (name, version, etc.). path Path to the file. Can either be an absolute path to a file on the minion, or a salt fileserver URL (e.g. ``salt://path/to/file.deb``). If a salt fileserver URL is passed, the file will be cached to the minion so that it can be examined. saltenv : base Salt fileserver environment from which to retrieve the package. Ignored if ``path`` is a local file path on the minion. CLI Example: salt '*' lowpkg.bin_pkg_info /root/foo-1.2.3-1ubuntu1_all.deb salt '*' lowpkg.bin_pkg_info salt://foo-1.2.3-1ubuntu1_all.deb lowpkg.file_dict:\nList the files that belong to a package, grouped by package. Not specifying any packages will return a list of _every_ file on the system's package database (not generally recommended). CLI Examples: salt '*' lowpkg.file_dict hostname salt '*' lowpkg.file_dict hostname mount salt '*' lowpkg.file_dict lowpkg.file_list:\nList the files that belong to a package. Not specifying any packages will return a list of _every_ file on the system's package database (not generally recommended). CLI Examples: salt '*' lowpkg.file_list hostname salt '*' lowpkg.file_list hostname mount salt '*' lowpkg.file_list lowpkg.info:\nReturns a detailed summary of package information for provided package names. If no packages are specified, all packages will be returned. New in version 2015.8.1 packages The names of the packages for which to return information. failhard Whether to throw an exception if none of the packages are installed. Defaults to True. New in version 2016.11.3 CLI Example: salt '*' lowpkg.info salt '*' lowpkg.info apache2 bash salt '*' lowpkg.info 'php5*' failhard=false lowpkg.list_pkgs:\nList the packages currently installed in a dict:: {'\u0026lt;package_name\u0026gt;': '\u0026lt;version\u0026gt;'} External dependencies:: Virtual package resolution requires aptitude. Because this function uses dpkg, virtual packages will be reported as not installed. CLI Example: salt '*' lowpkg.list_pkgs salt '*' lowpkg.list_pkgs hostname salt '*' lowpkg.list_pkgs hostname mount lowpkg.unpurge:\nChange package selection for each package specified to 'install' CLI Example: salt '*' lowpkg.unpurge curl mandrill.send:\nSend out the email using the details from the ``message`` argument. message The information on the message to send. This argument must be sent as dictionary with at fields as specified in the Mandrill API documentation. asynchronous: ``False`` Enable a background sending mode that is optimised for bulk sending. In asynchronous mode, messages/send will immediately return a status of \u0026quot;queued\u0026quot; for every recipient. To handle rejections when sending in asynchronous mode, set up a webhook for the 'reject' event. Defaults to false for messages with no more than 10 recipients; messages with more than 10 recipients are always sent asynchronously, regardless of the value of asynchronous. ip_pool The name of the dedicated ip pool that should be used to send the message. If you do not have any dedicated IPs, this parameter has no effect. If you specify a pool that does not exist, your default pool will be used instead. send_at When this message should be sent as a UTC timestamp in ``YYYY-MM-DD HH:MM:SS`` format. If you specify a time in the past, the message will be sent immediately. An additional fee applies for scheduled email, and this feature is only available to accounts with a positive balance. Note: Fur further details please consult the `API documentation \u0026lt;https://mandrillapp.com/api/docs/messages.dart.html\u0026gt;`_. CLI Example: salt '*' mandrill.send message=\u0026quot;{'subject': 'Hi', 'from_email': 'test@example.com', 'to': [{'email': 'recv@example.com', 'type': 'to'}]}\u0026quot; ``message`` structure example (as YAML for readability): message: text: | This is the body of the email. This is the second line. subject: Email subject from_name: Test At Example Dot Com from_email: test@example.com to: - email: recv@example.com type: to name: Recv At Example Dot Com - email: cc@example.com type: cc name: CC At Example Dot Com important: true track_clicks: true track_opens: true attachments: - type: text/x-yaml name: yaml_file.yml content: aV9hbV9zdXBlcl9jdXJpb3VzOiB0cnVl Output example: minion: ---------- comment: out: |_ ---------- _id: c4353540a3c123eca112bbdd704ab6 email: recv@example.com reject_reason: None status: sent result: True match.compound:\nReturn True if the minion ID matches the given compound target minion_id Specify the minion ID to match against the target expression New in version 2014.7.0 CLI Example: salt '*' match.compound 'L@cheese,foo and *' match.data:\nReturn True if the minion matches the given data target CLI Example: salt '*' match.data 'spam:eggs' match.filter_by:\nReturn the first match in a dictionary of target patterns New in version 2014.7.0 CLI Example: salt '*' match.filter_by '{foo*: Foo!, bar*: Bar!}' minion_id=bar03 Pillar Example: # Filter the data for the current minion into a variable: {% set roles = salt['match.filter_by']({ 'web*': ['app', 'caching'], 'db*': ['db'], }, minion_id=grains['id'], default='web*') %} # Make the filtered data available to Pillar: roles: {{ roles | yaml() }} match.glob:\nReturn True if the minion ID matches the given glob target minion_id Specify the minion ID to match against the target expression New in version 2014.7.0 CLI Example: salt '*' match.glob '*' match.grain:\nReturn True if the minion matches the given grain target. The ``delimiter`` argument can be used to specify a different delimiter. CLI Example: salt '*' match.grain 'os:Ubuntu' salt '*' match.grain 'ipv6|2001:db8::ff00:42:8329' delimiter='|' delimiter Specify an alternate delimiter to use when traversing a nested dict New in version 2014.7.0 delim Specify an alternate delimiter to use when traversing a nested dict New in version 0.16.4 .. deprecated:: 2015.8.0 match.grain_pcre:\nReturn True if the minion matches the given grain_pcre target. The ``delimiter`` argument can be used to specify a different delimiter. CLI Example: salt '*' match.grain_pcre 'os:Fedo.*' salt '*' match.grain_pcre 'ipv6|2001:.*' delimiter='|' delimiter Specify an alternate delimiter to use when traversing a nested dict New in version 2014.7.0 delim Specify an alternate delimiter to use when traversing a nested dict New in version 0.16.4 .. deprecated:: 2015.8.0 match.ifelse:\nNew in version 3006.0 Evaluate each pair of arguments up to the last one as a (matcher, value) tuple, returning ``value`` if matched. If none match, returns the last argument. The ``ifelse`` function is like a multi-level if-else statement. It was inspired by CFEngine's ``ifelse`` function which in turn was inspired by Oracle's ``DECODE`` function. It must have an odd number of arguments (from 1 to N). The last argument is the default value, like the ``else`` clause in standard programming languages. Every pair of arguments before the last one are evaluated as a pair. If the first one evaluates true then the second one is returned, as if you had used the first one in a compound match expression. Boolean values can also be used as the first item in a pair, as it will be translated to a match that will always match (\u0026quot;*\u0026quot;) or never match (\u0026quot;SALT_IFELSE_MATCH_NOTHING\u0026quot;) a target system. This is essentially another way to express the ``filter_by`` functionality in way that's familiar to CFEngine or Oracle users. Consider using ``filter_by`` unless this function fits your workflow. CLI Example: salt '*' match.ifelse 'foo*' 'Foo!' 'bar*' 'Bar!' minion_id=bar03 match.ipcidr:\nReturn True if the minion matches the given ipcidr target CLI Example: salt '*' match.ipcidr '192.168.44.0/24' delimiter Pillar Example: '172.16.0.0/12': - match: ipcidr - nodeclass: internal match.list:\nReturn True if the minion ID matches the given list target minion_id Specify the minion ID to match against the target expression New in version 2014.7.0 CLI Example: salt '*' match.list 'server1,server2' match.pcre:\nReturn True if the minion ID matches the given pcre target minion_id Specify the minion ID to match against the target expression New in version 2014.7.0 CLI Example: salt '*' match.pcre '.*' match.pillar:\nReturn True if the minion matches the given pillar target. The ``delimiter`` argument can be used to specify a different delimiter. CLI Example: salt '*' match.pillar 'cheese:foo' salt '*' match.pillar 'clone_url|https://github.com/saltstack/salt.git' delimiter='|' delimiter Specify an alternate delimiter to use when traversing a nested dict New in version 2014.7.0 delim Specify an alternate delimiter to use when traversing a nested dict New in version 0.16.4 .. deprecated:: 2015.8.0 match.pillar_pcre:\nReturn True if the minion matches the given pillar_pcre target. The ``delimiter`` argument can be used to specify a different delimiter. CLI Example: salt '*' match.pillar_pcre 'cheese:(swiss|american)' salt '*' match.pillar_pcre 'clone_url|https://github\\.com/.*\\.git' delimiter='|' delimiter Specify an alternate delimiter to use when traversing a nested dict New in version 2014.7.0 delim Specify an alternate delimiter to use when traversing a nested dict New in version 0.16.4 .. deprecated:: 2015.8.0 match.search_by:\nSearch a dictionary of target strings for matching targets This is the inverse of :py:func:`match.filter_by \u0026lt;salt.modules.match.filter_by\u0026gt;` and allows matching values instead of matching keys. A minion can be matched by multiple entries. New in version 2017.7.0 CLI Example: salt '*' match.search_by '{web: [node1, node2], db: [node2, node]}' Pillar Example: {% set roles = salt.match.search_by({ 'web': ['G@os_family:Debian not nodeX'], 'db': ['L@node2,node3 and G@datacenter:west'], 'caching': ['node3', 'node4'], }) %} # Make the filtered data available to Pillar: roles: {{ roles | yaml() }} mattermost.post_message:\nSend a message to a Mattermost channel. :param channel: The channel name, either will work. :param username: The username of the poster. :param message: The message to send to the Mattermost channel. :param api_url: The Mattermost api url, if not specified in the configuration. :param hook: The Mattermost hook, if not specified in the configuration. :return: Boolean if message was sent successfully. CLI Example: salt '*' mattermost.post_message message='Build is done' mine.delete:\nRemove specific function contents of minion. :param str fun: The name of the function. :rtype: bool :return: True on success. CLI Example: salt '*' mine.delete 'network.interfaces' mine.flush:\nRemove all mine contents of minion. :rtype: bool :return: True on success CLI Example: salt '*' mine.flush mine.get:\nGet data from the mine. :param str tgt: Target whose mine data to get. :param fun: Function to get the mine data of. You can specify multiple functions to retrieve using either a list or a comma-separated string of functions. :type fun: str or list :param str tgt_type: Default ``glob``. Target type to use with ``tgt``. See :ref:`targeting` for more information. Note that all pillar matches, whether using the compound matching system or the pillar matching system, will be exact matches, with globbing disabled. :param bool exclude_minion: Excludes the current minion from the result set. CLI Example: salt '*' mine.get '*' network.interfaces salt '*' mine.get 'os:Fedora' network.interfaces grain salt '*' mine.get 'G@os:Fedora and S@192.168.5.0/24' network.ipaddrs compound .. seealso:: Retrieving Mine data from Pillar and Orchestrate This execution module is intended to be executed on minions. Master-side operations such as Pillar or Orchestrate that require Mine data should use the :py:mod:`Mine Runner module \u0026lt;salt.runners.mine\u0026gt;` instead; it can be invoked from a Pillar SLS file using the :py:func:`saltutil.runner \u0026lt;salt.modules.saltutil.runner\u0026gt;` module. For example: {% set minion_ips = salt.saltutil.runner('mine.get', tgt='*', fun='network.ip_addrs', tgt_type='glob') %} mine.get_docker:\nChanged in version 2017.7.8,2018.3.3 When :conf_minion:`docker.update_mine` is set to ``False`` for a given minion, no mine data will be populated for that minion, and thus none will be returned for it. Changed in version 2019.2.0 :conf_minion:`docker.update_mine` now defaults to ``False`` Get all mine data for :py:func:`docker.ps \u0026lt;salt.modules.dockermod.ps_\u0026gt;` and run an aggregation routine. The ``interfaces`` parameter allows for specifying the network interfaces from which to select IP addresses. The ``cidrs`` parameter allows for specifying a list of subnets which the IP address must match. with_container_id Boolean, to expose container_id in the list of results New in version 2015.8.2 CLI Example: salt '*' mine.get_docker salt '*' mine.get_docker interfaces='eth0' salt '*' mine.get_docker interfaces='[\u0026quot;eth0\u0026quot;, \u0026quot;eth1\u0026quot;]' salt '*' mine.get_docker cidrs='107.170.147.0/24' salt '*' mine.get_docker cidrs='[\u0026quot;107.170.147.0/24\u0026quot;, \u0026quot;172.17.42.0/24\u0026quot;]' salt '*' mine.get_docker interfaces='[\u0026quot;eth0\u0026quot;, \u0026quot;eth1\u0026quot;]' cidrs='[\u0026quot;107.170.147.0/24\u0026quot;, \u0026quot;172.17.42.0/24\u0026quot;]' mine.send:\nSend a specific function and its result to the salt mine. This gets stored in either the local cache, or the salt master's cache. :param str name: Name of the function to add to the mine. The following pameters are extracted from kwargs if present: :param str mine_function: The name of the execution_module.function to run and whose value will be stored in the salt mine. Defaults to ``name``. :param str allow_tgt: Targeting specification for ACL. Specifies which minions are allowed to access this function. Please note both your master and minion need to be on, at least, version 3000 for this to work properly. :param str allow_tgt_type: Type of the targeting specification. This value will be ignored if ``allow_tgt`` is not specified. Please note both your master and minion need to be on, at least, version 3000 for this to work properly. Remaining args and kwargs will be passed on to the function to run. :rtype: bool :return: Whether executing the function and storing the information was successful. Changed in version 3000 Added ``allow_tgt``- and ``allow_tgt_type``-parameters to specify which minions are allowed to access this function. See :ref:`targeting` for more information about targeting. CLI Example: salt '*' mine.send network.ip_addrs interface=eth0 salt '*' mine.send eth0_ip_addrs mine_function=network.ip_addrs interface=eth0 salt '*' mine.send eth0_ip_addrs mine_function=network.ip_addrs interface=eth0 allow_tgt='G@grain:value' allow_tgt_type=compound mine.update:\nCall the configured functions and send the data back up to the master. The functions to be called are merged from the master config, pillar and minion config under the option `mine_functions`: mine_functions: network.ip_addrs: - eth0 disk.usage: [] This function accepts the following arguments: :param bool clear: Default: ``False`` Specifies whether updating will clear the existing values (``True``), or whether it will update them (``False``). :param dict mine_functions: Update (or clear, see ``clear``) the mine data on these functions only. This will need to have the structure as defined on https://docs.saltproject.io/en/latest/topics/mine/index.html#mine-functions This feature can be used when updating the mine for functions that require a refresh at different intervals than the rest of the functions specified under `mine_functions` in the minion/master config or pillar. A potential use would be together with the `scheduler`, for example: schedule: lldp_mine_update: function: mine.update kwargs: mine_functions: net.lldp: [] hours: 12 In the example above, the mine for `net.lldp` would be refreshed every 12 hours, while `network.ip_addrs` would continue to be updated as specified in `mine_interval`. The function cache will be populated with information from executing these functions CLI Example: salt '*' mine.update mine.valid:\nList valid entries in mine configuration. CLI Example: salt '*' mine.valid minion.kill:\nKill the salt minion. timeout int seconds to wait for the minion to die. If you have a monitor that restarts ``salt-minion`` when it dies then this is a great way to restart after a minion upgrade. CLI Example: salt minion[12] minion.kill minion1: ---------- killed: 7874 retcode: 0 minion2: ---------- killed: 29071 retcode: 0 The result of the salt command shows the process ID of the minions and the results of a kill signal to the minion in as the ``retcode`` value: ``0`` is success, anything else is a failure. minion.list:\nReturn a list of accepted, denied, unaccepted and rejected keys. This is the same output as `salt-key -L` CLI Example: salt 'master' minion.list minion.restart:\nKill and restart the salt minion. The configuration key ``minion_restart_command`` is an argv list for the command to restart the minion. If ``minion_restart_command`` is not specified or empty then the ``argv`` of the current process will be used. if the configuration value ``minion_restart_command`` is not set and the ``-d`` (daemonize) argument is missing from ``argv`` then the minion *will* be killed but will *not* be restarted and will require the parent process to perform the restart. This behaviour is intended for managed salt minion processes. CLI Example: salt minion[12] minion.restart minion1: ---------- comment: - Restart using process argv: - /home/omniture/install/bin/salt-minion - -d - -c - /home/omniture/install/etc/salt killed: 10070 restart: ---------- stderr: stdout: retcode: 0 minion2: ---------- comment: - Using configuration minion_restart_command: - /home/omniture/install/bin/salt-minion - --not-an-option - -d - -c - /home/omniture/install/etc/salt - Restart failed killed: 10896 restart: ---------- stderr: Usage: salt-minion salt-minion: error: no such option: --not-an-option stdout: retcode: 64 The result of the command shows the process ID of ``minion1`` that is shutdown (killed) and the results of the restart. If there is a failure in the restart it will be reflected in a non-zero ``retcode`` and possibly output in the ``stderr`` and/or ``stdout`` values along with addition information in the ``comment`` field as is demonstrated with ``minion2``. modjk.bulk_activate:\nActivate all the given workers in the specific load balancer CLI Examples: salt '*' modjk.bulk_activate node1,node2,node3 loadbalancer1 salt '*' modjk.bulk_activate node1,node2,node3 loadbalancer1 other-profile salt '*' modjk.bulk_activate [\u0026quot;node1\u0026quot;,\u0026quot;node2\u0026quot;,\u0026quot;node3\u0026quot;] loadbalancer1 salt '*' modjk.bulk_activate [\u0026quot;node1\u0026quot;,\u0026quot;node2\u0026quot;,\u0026quot;node3\u0026quot;] loadbalancer1 other-profile modjk.bulk_disable:\nDisable all the given workers in the specific load balancer CLI Examples: salt '*' modjk.bulk_disable node1,node2,node3 loadbalancer1 salt '*' modjk.bulk_disable node1,node2,node3 loadbalancer1 other-profile salt '*' modjk.bulk_disable [\u0026quot;node1\u0026quot;,\u0026quot;node2\u0026quot;,\u0026quot;node3\u0026quot;] loadbalancer1 salt '*' modjk.bulk_disable [\u0026quot;node1\u0026quot;,\u0026quot;node2\u0026quot;,\u0026quot;node3\u0026quot;] loadbalancer1 other-profile modjk.bulk_recover:\nRecover all the given workers in the specific load balancer CLI Examples: salt '*' modjk.bulk_recover node1,node2,node3 loadbalancer1 salt '*' modjk.bulk_recover node1,node2,node3 loadbalancer1 other-profile salt '*' modjk.bulk_recover [\u0026quot;node1\u0026quot;,\u0026quot;node2\u0026quot;,\u0026quot;node3\u0026quot;] loadbalancer1 salt '*' modjk.bulk_recover [\u0026quot;node1\u0026quot;,\u0026quot;node2\u0026quot;,\u0026quot;node3\u0026quot;] loadbalancer1 other-profile modjk.bulk_stop:\nStop all the given workers in the specific load balancer CLI Examples: salt '*' modjk.bulk_stop node1,node2,node3 loadbalancer1 salt '*' modjk.bulk_stop node1,node2,node3 loadbalancer1 other-profile salt '*' modjk.bulk_stop [\u0026quot;node1\u0026quot;,\u0026quot;node2\u0026quot;,\u0026quot;node3\u0026quot;] loadbalancer1 salt '*' modjk.bulk_stop [\u0026quot;node1\u0026quot;,\u0026quot;node2\u0026quot;,\u0026quot;node3\u0026quot;] loadbalancer1 other-profile modjk.dump_config:\nDump the original configuration that was loaded from disk CLI Examples: salt '*' modjk.dump_config salt '*' modjk.dump_config other-profile modjk.get_running:\nGet the current running config (not from disk) CLI Examples: salt '*' modjk.get_running salt '*' modjk.get_running other-profile modjk.lb_edit:\nEdit the loadbalancer settings Note: http://tomcat.apache.org/connectors-doc/reference/status.html Data Parameters for the standard Update Action CLI Examples: salt '*' modjk.lb_edit loadbalancer1 \u0026quot;{'vlr': 1, 'vlt': 60}\u0026quot; salt '*' modjk.lb_edit loadbalancer1 \u0026quot;{'vlr': 1, 'vlt': 60}\u0026quot; other-profile modjk.list_configured_members:\nReturn a list of member workers from the configuration files CLI Examples: salt '*' modjk.list_configured_members loadbalancer1 salt '*' modjk.list_configured_members loadbalancer1 other-profile modjk.recover_all:\nSet the all the workers in lbn to recover and activate them if they are not CLI Examples: salt '*' modjk.recover_all loadbalancer1 salt '*' modjk.recover_all loadbalancer1 other-profile modjk.reset_stats:\nReset all runtime statistics for the load balancer CLI Examples: salt '*' modjk.reset_stats loadbalancer1 salt '*' modjk.reset_stats loadbalancer1 other-profile modjk.version:\nReturn the modjk version CLI Examples: salt '*' modjk.version salt '*' modjk.version other-profile modjk.worker_activate:\nSet the worker to activate state in the lbn load balancer CLI Examples: salt '*' modjk.worker_activate node1 loadbalancer1 salt '*' modjk.worker_activate node1 loadbalancer1 other-profile modjk.worker_disable:\nSet the worker to disable state in the lbn load balancer CLI Examples: salt '*' modjk.worker_disable node1 loadbalancer1 salt '*' modjk.worker_disable node1 loadbalancer1 other-profile modjk.worker_edit:\nEdit the worker settings Note: http://tomcat.apache.org/connectors-doc/reference/status.html Data Parameters for the standard Update Action CLI Examples: salt '*' modjk.worker_edit node1 loadbalancer1 \u0026quot;{'vwf': 500, 'vwd': 60}\u0026quot; salt '*' modjk.worker_edit node1 loadbalancer1 \u0026quot;{'vwf': 500, 'vwd': 60}\u0026quot; other-profile modjk.worker_recover:\nSet the worker to recover this module will fail if it is in OK state CLI Examples: salt '*' modjk.worker_recover node1 loadbalancer1 salt '*' modjk.worker_recover node1 loadbalancer1 other-profile modjk.worker_status:\nReturn the state of the worker CLI Examples: salt '*' modjk.worker_status node1 salt '*' modjk.worker_status node1 other-profile modjk.worker_stop:\nSet the worker to stopped state in the lbn load balancer CLI Examples: salt '*' modjk.worker_activate node1 loadbalancer1 salt '*' modjk.worker_activate node1 loadbalancer1 other-profile modjk.workers:\nReturn a list of member workers and their status CLI Examples: salt '*' modjk.workers salt '*' modjk.workers other-profile mount.active:\nList the active mounts. CLI Example: salt '*' mount.active mount.automaster:\nList the contents of the auto master CLI Example: salt '*' mount.automaster mount.delete_mount_cache:\nNew in version 2018.3.0 Provide information if the path is mounted CLI Example: salt '*' mount.delete_mount_cache /mnt/share mount.filesystems:\nNew in version 2018.3.3 List the contents of the filesystems CLI Example: salt '*' mount.filesystems mount.fstab:\nChanged in version 2016.3.2 List the contents of the fstab CLI Example: salt '*' mount.fstab mount.get_device_from_path:\nReturn the underlying device for a specified path. New in version 3006.0 path The path for the function to evaluate. CLI Example: salt '*' mount.get_device_from_path / mount.get_mount_from_path:\nReturn the mount providing a specified path. New in version 3006.0 path The path for the function to evaluate. CLI Example: salt '*' mount.get_mount_from_path /opt/some/nested/path mount.is_fuse_exec:\nReturns true if the command passed is a fuse mountable application. CLI Example: salt '*' mount.is_fuse_exec sshfs mount.is_mounted:\nNew in version 2014.7.0 Provide information if the path is mounted CLI Example: salt '*' mount.is_mounted /mnt/share mount.mount:\nMount a device CLI Example: salt '*' mount.mount /mnt/foo /dev/sdz1 True mount.read_mount_cache:\nNew in version 2018.3.0 Provide information if the path is mounted CLI Example: salt '*' mount.read_mount_cache /mnt/share mount.remount:\nAttempt to remount a device, if the device is not already mounted, mount is called CLI Example: salt '*' mount.remount /mnt/foo /dev/sdz1 True mount.rm_automaster:\nRemove the mount point from the auto_master CLI Example: salt '*' mount.rm_automaster /mnt/foo /dev/sdg mount.rm_filesystems:\nNew in version 2018.3.3 Remove the mount point from the filesystems CLI Example: salt '*' mount.rm_filesystems /mnt/foo /dev/sdg mount.rm_fstab:\nChanged in version 2016.3.2 Remove the mount point from the fstab CLI Example: salt '*' mount.rm_fstab /mnt/foo /dev/sdg mount.rm_vfstab:\nNew in version 2016.3.2 Remove the mount point from the vfstab CLI Example: salt '*' mount.rm_vfstab /mnt/foo /device/c0t0d0p0 mount.set_automaster:\nVerify that this mount is represented in the auto_salt, change the mount to match the data passed, or add the mount if it is not present. CLI Example: salt '*' mount.set_automaster /mnt/foo /dev/sdz1 ext4 mount.set_filesystems:\nNew in version 2018.3.3 Verify that this mount is represented in the filesystems, change the mount to match the data passed, or add the mount if it is not present on AIX If the entry is found via `match_on` and `not_change` is True, the current line will be preserved. Provide information if the path is mounted :param name: The name of the mount point where the device is mounted. :param device: The device that is being mounted. :param vfstype: The file system that is used (AIX has two fstypes, fstype and vfstype - similar to Linux fstype) :param opts: Additional options used when mounting the device. :param mount: Mount if not mounted, default True. :param config: Configuration file, default /etc/filesystems. :param match: File systems type to match on, default auto CLI Example: salt '*' mount.set_filesystems /mnt/foo /dev/sdz1 jfs2 mount.set_fstab:\nVerify that this mount is represented in the fstab, change the mount to match the data passed, or add the mount if it is not present. If the entry is found via `match_on` and `not_change` is True, the current line will be preserved. CLI Example: salt '*' mount.set_fstab /mnt/foo /dev/sdz1 ext4 mount.set_vfstab:\nNew in version 2016.3.2 Verify that this mount is represented in the fstab, change the mount to match the data passed, or add the mount if it is not present. If the entry is found via `match_on` and `not_change` is True, the current line will be preserved. CLI Example: salt '*' mount.set_vfstab /mnt/foo /device/c0t0d0p0 ufs mount.swapoff:\nDeactivate a named swap mount Changed in version 2016.3.2 CLI Example: salt '*' mount.swapoff /root/swapfile mount.swapon:\nActivate a swap disk Changed in version 2016.3.2 CLI Example: salt '*' mount.swapon /root/swapfile mount.swaps:\nReturn a dict containing information on active swap Changed in version 2016.3.2 CLI Example: salt '*' mount.swaps mount.umount:\nAttempt to unmount a device by specifying the directory it is mounted on CLI Example: salt '*' mount.umount /mnt/foo New in version 2015.5.0 salt '*' mount.umount /mnt/foo /dev/xvdc1 mount.vfstab:\nNew in version 2016.3.2 List the contents of the vfstab CLI Example: salt '*' mount.vfstab mount.write_mount_cache:\nNew in version 2018.3.0 Provide information if the path is mounted :param real_name: The real name of the mount point where the device is mounted. :param device: The device that is being mounted. :param mkmnt: Whether or not the mount point should be created. :param fstype: The file system that is used. :param mount_opts: Additional options used when mounting the device. :return: Boolean if message was sent successfully. CLI Example: salt '*' mount.write_mount_cache /mnt/share /dev/sda1 False ext4 defaults,nosuid msteams.post_card:\nSend a message to an MS Teams channel. :param message: The message to send to the MS Teams channel. :param hook_url: The Teams webhook URL, if not specified in the configuration. :param title: Optional title for the posted card :param theme_color: Optional hex colour highlight for the posted card :return: Boolean if message was sent successfully. CLI Example: salt '*' msteams.post_card message=\u0026quot;Build is done\u0026quot; nagios_rpc.host_status:\nCheck status of a particular host By default statuses are returned in a numeric format. Parameters: hostname The hostname to check the status of the service in Nagios. numeric Turn to false in order to return status in text format ('OK' instead of 0, 'Warning' instead of 1 etc) :return: status: 'OK', 'Warning', 'Critical' or 'Unknown' CLI Example: salt '*' nagios_rpc.host_status hostname=webserver.domain.com salt '*' nagios_rpc.host_status hostname=webserver.domain.com numeric=False nagios_rpc.service_status:\nCheck status of a particular service on a host on it in Nagios. By default statuses are returned in a numeric format. Parameters: hostname The hostname to check the status of the service in Nagios. service The service to check the status of in Nagios. numeric Turn to false in order to return status in text format ('OK' instead of 0, 'Warning' instead of 1 etc) :return: status: 'OK', 'Warning', 'Critical' or 'Unknown' CLI Example: salt '*' nagios_rpc.service_status hostname=webserver.domain.com service='HTTP' salt '*' nagios_rpc.service_status hostname=webserver.domain.com service='HTTP' numeric=False namecheap_domains.check:\nChecks the availability of domains domains_to_check array of strings List of domains to check Returns a dictionary mapping the each domain name to a boolean denoting whether or not it is available. CLI Example: salt 'my-minion' namecheap_domains.check domain-to-check namecheap_domains.create:\nTry to register the specified domain name domain_name The domain name to be registered years Number of years to register Returns the following information: - Whether or not the domain was renewed successfully - Whether or not WhoisGuard is enabled - Whether or not registration is instant - The amount charged for registration - The domain ID - The order ID - The transaction ID CLI Example: salt 'my-minion' namecheap_domains.create my-domain-name 2 namecheap_domains.get_info:\nReturns information about the requested domain returns a dictionary of information about the domain_name domain_name string Domain name to get information about CLI Example: salt 'my-minion' namecheap_domains.get_info my-domain-name namecheap_domains.get_list:\nReturns a list of domains for the particular user as a list of objects offset by ``page`` length of ``page_size`` list_type : ALL One of ``ALL``, ``EXPIRING``, ``EXPIRED`` search_term Keyword to look for on the domain list page : 1 Number of result page to return page_size : 20 Number of domains to be listed per page (minimum: ``10``, maximum: ``100``) sort_by One of ``NAME``, ``NAME_DESC``, ``EXPIREDATE``, ``EXPIREDATE_DESC``, ``CREATEDATE``, or ``CREATEDATE_DESC`` CLI Example: salt 'my-minion' namecheap_domains.get_list namecheap_domains.get_tld_list:\nReturns a list of TLDs as objects CLI Example: salt 'my-minion' namecheap_domains.get_tld_list namecheap_domains.reactivate:\nTry to reactivate the expired domain name Returns the following information: - Whether or not the domain was reactivated successfully - The amount charged for reactivation - The order ID - The transaction ID CLI Example: salt 'my-minion' namecheap_domains.reactivate my-domain-name namecheap_domains.renew:\nTry to renew the specified expiring domain name for a specified number of years domain_name The domain name to be renewed years Number of years to renew Returns the following information: - Whether or not the domain was renewed successfully - The domain ID - The order ID - The transaction ID - The amount charged for renewal CLI Example: salt 'my-minion' namecheap_domains.renew my-domain-name 5 namecheap_domains_dns.get_hosts:\nRetrieves DNS host record settings for the requested domain. returns a dictionary of information about the requested domain sld SLD of the domain name tld TLD of the domain name CLI Example: salt 'my-minion' namecheap_domains_dns.get_hosts sld tld namecheap_domains_dns.get_list:\nGets a list of DNS servers associated with the requested domain. returns a dictionary of information about requested domain sld SLD of the domain name tld TLD of the domain name CLI Example: salt 'my-minion' namecheap_domains_dns.get_list sld tld namecheap_domains_dns.set_custom:\nSets domain to use custom DNS servers. returns True if the custom nameservers were set successfully sld SLD of the domain name tld TLD of the domain name nameservers array of strings List of nameservers to be associated with this domain CLI Example: salt 'my-minion' namecheap_domains_dns.set_custom sld tld nameserver namecheap_domains_dns.set_default:\nSets domain to use namecheap default DNS servers. Required for free services like Host record management, URL forwarding, email forwarding, dynamic DNS and other value added services. sld SLD of the domain name tld TLD of the domain name Returns ``True`` if the domain was successfully pointed at the default DNS servers. CLI Example: salt 'my-minion' namecheap_domains_dns.set_default sld tld namecheap_domains_dns.set_hosts:\nSets DNS host records settings for the requested domain. returns True if the host records were set successfully sld SLD of the domain name tld TLD of the domain name hosts Must be passed as a list of Python dictionaries, with each dictionary containing the following keys: - **hostname** - **recordtype** - One of ``A``, ``AAAA``, ``CNAME``, ``MX``, ``MXE``, ``TXT``, ``URL``, ``URL301``, or ``FRAME`` - **address** - URL or IP address - **ttl** - An integer between 60 and 60000 (default: ``1800``) Additionally, the ``mxpref`` key can be present, but must be accompanied by an ``emailtype`` key. CLI Example: salt 'my-minion' namecheap_domains_dns.set_hosts sld tld hosts namecheap_domains_ns.create:\nCreates a new nameserver. Returns ``True`` if the nameserver was created successfully. sld SLD of the domain name tld TLD of the domain name nameserver Nameserver to create ip Nameserver IP address CLI Example: salt '*' namecheap_domains_ns.create sld tld nameserver ip namecheap_domains_ns.delete:\nDeletes a nameserver. Returns ``True`` if the nameserver was deleted successfully sld SLD of the domain name tld TLD of the domain name nameserver Nameserver to delete CLI Example: salt '*' namecheap_domains_ns.delete sld tld nameserver namecheap_domains_ns.get_info:\nRetrieves information about a registered nameserver. Returns the following information: - IP Address set for the nameserver - Domain name which was queried - A list of nameservers and their statuses sld SLD of the domain name tld TLD of the domain name nameserver Nameserver to retrieve CLI Example: salt '*' namecheap_domains_ns.get_info sld tld nameserver namecheap_domains_ns.update:\nDeletes a nameserver. Returns ``True`` if the nameserver was updated successfully. sld SLD of the domain name tld TLD of the domain name nameserver Nameserver to create old_ip Current ip address new_ip New ip address CLI Example: salt '*' namecheap_domains_ns.update sld tld nameserver old_ip new_ip namecheap_ssl.activate:\nActivates a newly-purchased SSL certificate. Returns a dictionary of result values. csr_file Path to Certificate Signing Request file certificate_id Unique ID of the SSL certificate you wish to activate web_server_type The type of certificate format to return. Possible values include: - apache2 - apacheapachessl - apacheopenssl - apacheraven - apachessl - apachessleay - c2net - cobaltseries - cpanel - domino - dominogo4625 - dominogo4626 - ensim - hsphere - ibmhttp - iis - iis4 - iis5 - iplanet - ipswitch - netscape - other - plesk - tomcat - weblogic - website - webstar - zeusv3 approver_email The email ID which is on the approver email list. Note: ``http_dc_validation`` must be set to ``False`` if this option is used. http_dc_validation : False Whether or not to activate using HTTP-based validation. Note: For other parameters which may be required, see here__. .. __: https://www.namecheap.com/support/api/methods/ssl/activate.aspx CLI Example: salt 'my-minion' namecheap_ssl.activate my-csr-file my-cert-id apachessl namecheap_ssl.create:\nCreates a new SSL certificate. Returns the following information: - Whether or not the SSL order was successful - The certificate ID - The order ID - The transaction ID - The amount charged for the order - The date on which the certificate was created - The date on which the certificate will expire - The type of SSL certificate - The number of years for which the certificate was purchased - The current status of the SSL certificate years : 1 Number of years to register certificate_type Type of SSL Certificate. Possible values include: - EV Multi Domain SSL - EV SSL - EV SSL SGC - EssentialSSL - EssentialSSL Wildcard - InstantSSL - InstantSSL Pro - Multi Domain SSL - PositiveSSL - PositiveSSL Multi Domain - PositiveSSL Wildcard - PremiumSSL - PremiumSSL Wildcard - QuickSSL Premium - RapidSSL - RapidSSL Wildcard - SGC Supercert - SSL Web Server - SSL Webserver EV - SSL123 - Secure Site - Secure Site Pro - Secure Site Pro with EV - Secure Site with EV - True BusinessID - True BusinessID Multi Domain - True BusinessID Wildcard - True BusinessID with EV - True BusinessID with EV Multi Domain - Unified Communications promotional_code An optional promo code to use when creating the certificate sans_to_add : 0 This parameter defines the number of add-on domains to be purchased in addition to the default number of domains included with a multi-domain certificate. Each certificate that supports SANs has the default number of domains included. You may check the default number of domains included and the maximum number of domains that can be added to it in the table below. +----------+----------------+----------------------+-------------------+----------------+ | Provider | Product name | Default number of | Maximum number of | Maximum number | | | | domains (domain from | total domains | of domains | | | | CSR is counted here) | | that can be | | | | | | passed in | | | | | | sans_to_add | | | | | | parameter | +----------+----------------+----------------------+-------------------+----------------+ | Comodo | PositiveSSL | 3 | 100 | 97 | | | Multi-Domain | | | | +----------+----------------+----------------------+-------------------+----------------+ | Comodo | Multi-Domain | 3 | 100 | 97 | | | SSL | | | | +----------+----------------+----------------------+-------------------+----------------+ | Comodo | EV Multi- | 3 | 100 | 97 | | | Domain SSL | | | | +----------+----------------+----------------------+-------------------+----------------+ | Comodo | Unified | 3 | 100 | 97 | | | Communications | | | | +----------+----------------+----------------------+-------------------+----------------+ | GeoTrust | QuickSSL | 1 | 1 domain + | The only | | | Premium | | 4 subdomains | supported | | | | | | value is 4 | +----------+----------------+----------------------+-------------------+----------------+ | GeoTrust | True | 5 | 25 | 20 | | | BusinessID | | | | | | with EV | | | | | | Multi-Domain | | | | +----------+----------------+----------------------+-------------------+----------------+ | GeoTrust | True Business | 5 | 25 | 20 | | | ID Multi- | | | | | | Domain | | | | +----------+----------------+----------------------+-------------------+----------------+ | Thawte | SSL Web | 1 | 25 | 24 | | | Server | | | | +----------+----------------+----------------------+-------------------+----------------+ | Thawte | SSL Web | 1 | 25 | 24 | | | Server with | | | | | | EV | | | | +----------+----------------+----------------------+-------------------+----------------+ | Thawte | SGC Supercerts | 1 | 25 | 24 | +----------+----------------+----------------------+-------------------+----------------+ | Symantec | Secure Site | 1 | 25 | 24 | | | Pro with EV | | | | +----------+----------------+----------------------+-------------------+----------------+ | Symantec | Secure Site | 1 | 25 | 24 | | | with EV | | | | +----------+----------------+----------------------+-------------------+----------------+ | Symantec | Secure Site | 1 | 25 | 24 | +----------+----------------+----------------------+-------------------+----------------+ | Symantec | Secure Site | 1 | 25 | 24 | | | Pro | | | | +----------+----------------+----------------------+-------------------+----------------+ CLI Example: salt 'my-minion' namecheap_ssl.create 2 RapidSSL namecheap_ssl.get_info:\nRetrieves information about the requested SSL certificate. Returns a dictionary of information about the SSL certificate with two keys: - **ssl** - Contains the metadata information - **certificate** - Contains the details for the certificate such as the CSR, Approver, and certificate data certificate_id Unique ID of the SSL certificate returncertificate : False Set to ``True`` to ask for the certificate in response returntype Optional type for the returned certificate. Can be either \u0026quot;Individual\u0026quot; (for X.509 format) or \u0026quot;PKCS7\u0026quot; Note: Required if ``returncertificate`` is ``True`` CLI Example: salt 'my-minion' namecheap_ssl.get_info my-cert-id namecheap_ssl.get_list:\nReturns a list of SSL certificates for a particular user ListType : All Possible values: - All - Processing - EmailSent - TechnicalProblem - InProgress - Completed - Deactivated - Active - Cancelled - NewPurchase - NewRenewal SearchTerm Keyword to look for on the SSL list Page : 1 Page number to return PageSize : 20 Total number of SSL certificates to display per page (minimum: ``10``, maximum: ``100``) SoryBy One of ``PURCHASEDATE``, ``PURCHASEDATE_DESC``, ``SSLTYPE``, ``SSLTYPE_DESC``, ``EXPIREDATETIME``, ``EXPIREDATETIME_DESC``, ``Host_Name``, or ``Host_Name_DESC`` CLI Example: salt 'my-minion' namecheap_ssl.get_list Processing namecheap_ssl.parse_csr:\nParses the CSR. Returns a dictionary of result values. csr_file Path to Certificate Signing Request file certificate_type Type of SSL Certificate. Possible values include: - EV Multi Domain SSL - EV SSL - EV SSL SGC - EssentialSSL - EssentialSSL Wildcard - InstantSSL - InstantSSL Pro - Multi Domain SSL - PositiveSSL - PositiveSSL Multi Domain - PositiveSSL Wildcard - PremiumSSL - PremiumSSL Wildcard - QuickSSL Premium - RapidSSL - RapidSSL Wildcard - SGC Supercert - SSL Web Server - SSL Webserver EV - SSL123 - Secure Site - Secure Site Pro - Secure Site Pro with EV - Secure Site with EV - True BusinessID - True BusinessID Multi Domain - True BusinessID Wildcard - True BusinessID with EV - True BusinessID with EV Multi Domain - Unified Communications http_dc_validation : False Set to ``True`` if a Comodo certificate and validation should be done with files instead of emails and to return the info to do so CLI Example: salt 'my-minion' namecheap_ssl.parse_csr my-csr-file PremiumSSL namecheap_ssl.reissue:\nReissues a purchased SSL certificate. Returns a dictionary of result values. csr_file Path to Certificate Signing Request file certificate_id Unique ID of the SSL certificate you wish to activate web_server_type The type of certificate format to return. Possible values include: - apache2 - apacheapachessl - apacheopenssl - apacheraven - apachessl - apachessleay - c2net - cobaltseries - cpanel - domino - dominogo4625 - dominogo4626 - ensim - hsphere - ibmhttp - iis - iis4 - iis5 - iplanet - ipswitch - netscape - other - plesk - tomcat - weblogic - website - webstar - zeusv3 approver_email The email ID which is on the approver email list. Note: ``http_dc_validation`` must be set to ``False`` if this option is used. http_dc_validation : False Whether or not to activate using HTTP-based validation. Note: For other parameters which may be required, see here__. .. __: https://www.namecheap.com/support/api/methods/ssl/reissue.aspx CLI Example: salt 'my-minion' namecheap_ssl.reissue my-csr-file my-cert-id apachessl namecheap_ssl.renew:\nRenews an SSL certificate if it is ACTIVE and Expires \u0026lt;= 30 days. Returns the following information: - The certificate ID - The order ID - The transaction ID - The amount charged for the order years : 1 Number of years to register certificate_id Unique ID of the SSL certificate you wish to renew certificate_type Type of SSL Certificate. Possible values include: - EV Multi Domain SSL - EV SSL - EV SSL SGC - EssentialSSL - EssentialSSL Wildcard - InstantSSL - InstantSSL Pro - Multi Domain SSL - PositiveSSL - PositiveSSL Multi Domain - PositiveSSL Wildcard - PremiumSSL - PremiumSSL Wildcard - QuickSSL Premium - RapidSSL - RapidSSL Wildcard - SGC Supercert - SSL Web Server - SSL Webserver EV - SSL123 - Secure Site - Secure Site Pro - Secure Site Pro with EV - Secure Site with EV - True BusinessID - True BusinessID Multi Domain - True BusinessID Wildcard - True BusinessID with EV - True BusinessID with EV Multi Domain - Unified Communications promotional_code An optional promo code to use when renewing the certificate CLI Example: salt 'my-minion' namecheap_ssl.renew 1 my-cert-id RapidSSL namecheap_users.check_balances:\nChecks if the provided minimum value is present in the user's account. Returns a boolean. Returns ``False`` if the user's account balance is less than the provided minimum or ``True`` if greater than the minimum. minimum : 100 The value to check CLI Example: salt 'my-minion' namecheap_users.check_balances salt 'my-minion' namecheap_users.check_balances minimum=150 namecheap_users.get_balances:\nGets information about fund in the user's account. This method returns the following information: Available Balance, Account Balance, Earned Amount, Withdrawable Amount and Funds Required for AutoRenew. Note: If a domain setup with automatic renewal is expiring within the next 90 days, the FundsRequiredForAutoRenew attribute shows the amount needed in your Namecheap account to complete auto renewal. CLI Example: salt 'my-minion' namecheap_users.get_balances network.active_tcp:\nReturn a dict containing information on all of the running TCP connections (currently linux and solaris only) Changed in version 2015.8.4 Added support for SunOS CLI Example: salt '*' network.active_tcp network.arp:\nReturn the arp table from the minion Changed in version 2015.8.0 Added support for SunOS CLI Example: salt '*' network.arp network.calc_net:\nReturns the CIDR of a subnet based on an IP address (CIDR notation supported) and optional netmask. CLI Example: salt '*' network.calc_net 172.17.0.5 255.255.255.240 salt '*' network.calc_net 2a02:f6e:a000:80:84d8:8332:7866:4e07/64 New in version 2015.8.0 network.connect:\nTest connectivity to a host using a particular port from the minion. New in version 2014.7.0 CLI Example: salt '*' network.connect archlinux.org 80 salt '*' network.connect archlinux.org 80 timeout=3 salt '*' network.connect archlinux.org 80 timeout=3 family=ipv4 salt '*' network.connect google-public-dns-a.google.com port=53 proto=udp timeout=3 network.convert_cidr:\nreturns the network address, subnet mask and broadcast address of a cidr address New in version 2016.3.0 CLI Example: salt '*' network.convert_cidr 172.31.0.0/16 network.default_route:\nReturn default route(s) from routing table Changed in version 2015.8.0 Added support for SunOS (Solaris 10, Illumos, SmartOS) Changed in version 2016.11.4 Added support for AIX CLI Example: salt '*' network.default_route network.dig:\nPerforms a DNS lookup with dig CLI Example: salt '*' network.dig archlinux.org network.fqdns:\nReturn all known FQDNs for the system by enumerating all interfaces and then trying to reverse resolve them (excluding 'lo' interface). CLI Example: salt '*' network.fqdns network.get_bufsize:\nReturn network buffer sizes as a dict (currently linux only) CLI Example: salt '*' network.get_bufsize eth0 network.get_fqdn:\nGet fully qualified domain name CLI Example: salt '*' network.get_fqdn network.get_hostname:\nGet hostname CLI Example: salt '*' network.get_hostname network.get_route:\nReturn routing information for given destination ip New in version 2015.5.3 Changed in version 2015.8.0 Added support for SunOS (Solaris 10, Illumos, SmartOS) Added support for OpenBSD Changed in version 2016.11.4 Added support for AIX CLI Example: salt '*' network.get_route 10.10.10.10 network.hw_addr:\nReturn the hardware address (a.k.a. MAC address) for a given interface CLI Example: salt '*' network.hw_addr eth0 network.hwaddr:\nThis function is an alias of hw_addr.\nReturn the hardware address (a.k.a. MAC address) for a given interface CLI Example: salt '*' network.hw_addr eth0 network.ifacestartswith:\nRetrieve the interface name from a specific CIDR New in version 2016.11.0 CLI Example: salt '*' network.ifacestartswith 10.0 network.in_subnet:\nReturns True if host is within specified subnet, otherwise False. CLI Example: salt '*' network.in_subnet 10.0.0.0/16 network.interface:\nReturn the inet address for a given interface New in version 2014.7.0 CLI Example: salt '*' network.interface eth0 network.interface_ip:\nReturn the inet address for a given interface New in version 2014.7.0 CLI Example: salt '*' network.interface_ip eth0 network.interfaces:\nReturn a dictionary of information about all the interfaces on the minion CLI Example: salt '*' network.interfaces network.ip_addrs:\nReturns a list of IPv4 addresses assigned to the host. 127.0.0.1 is ignored, unless 'include_loopback=True' is indicated. If 'interface' is provided, then only IP addresses from that interface will be returned. Providing a CIDR via 'cidr=\u0026quot;10.0.0.0/8\u0026quot;' will return only the addresses which are within that subnet. If 'type' is 'public', then only public addresses will be returned. Ditto for 'type'='private'. Changed in version 3001 ``interface`` can now be a single interface name or a list of interfaces. Globbing is also supported. CLI Example: salt '*' network.ip_addrs network.ip_addrs6:\nReturns a list of IPv6 addresses assigned to the host. ::1 is ignored, unless 'include_loopback=True' is indicated. If 'interface' is provided, then only IP addresses from that interface will be returned. Providing a CIDR via 'cidr=\u0026quot;2000::/3\u0026quot;' will return only the addresses which are within that subnet. Changed in version 3001 ``interface`` can now be a single interface name or a list of interfaces. Globbing is also supported. CLI Example: salt '*' network.ip_addrs6 network.ip_in_subnet:\nReturns True if given IP is within specified subnet, otherwise False. CLI Example: salt '*' network.ip_in_subnet 172.17.0.4 172.16.0.0/12 network.ip_neighs:\nReturn the ip neighbour (arp) table from the minion for IPv4 addresses New in version 3007.0 CLI Example: salt '*' network.ip_neighs network.ip_neighs6:\nReturn the ip neighbour (arp) table from the minion for IPv6 addresses New in version 3007.0 CLI Example: salt '*' network.ip_neighs6 network.ip_networks:\nNew in version 3001 Returns a list of IPv4 networks to which the minion belongs. interface Restrict results to the specified interface(s). This value can be either a single interface name or a list of interfaces. Globbing is also supported. CLI Example: salt '*' network.ip_networks salt '*' network.ip_networks interface=docker0 salt '*' network.ip_networks interface=docker0,enp* salt '*' network.ip_networks interface=eth* network.ip_networks6:\nNew in version 3001 Returns a list of IPv6 networks to which the minion belongs. interface Restrict results to the specified interface(s). This value can be either a single interface name or a list of interfaces. Globbing is also supported. CLI Example: salt '*' network.ip_networks6 salt '*' network.ip_networks6 interface=docker0 salt '*' network.ip_networks6 interface=docker0,enp* salt '*' network.ip_networks6 interface=eth* network.ipaddrs:\nThis function is an alias of ip_addrs.\nReturns a list of IPv4 addresses assigned to the host. 127.0.0.1 is ignored, unless 'include_loopback=True' is indicated. If 'interface' is provided, then only IP addresses from that interface will be returned. Providing a CIDR via 'cidr=\u0026quot;10.0.0.0/8\u0026quot;' will return only the addresses which are within that subnet. If 'type' is 'public', then only public addresses will be returned. Ditto for 'type'='private'. Changed in version 3001 ``interface`` can now be a single interface name or a list of interfaces. Globbing is also supported. CLI Example: salt '*' network.ip_addrs network.ipaddrs6:\nThis function is an alias of ip_addrs6.\nReturns a list of IPv6 addresses assigned to the host. ::1 is ignored, unless 'include_loopback=True' is indicated. If 'interface' is provided, then only IP addresses from that interface will be returned. Providing a CIDR via 'cidr=\u0026quot;2000::/3\u0026quot;' will return only the addresses which are within that subnet. Changed in version 3001 ``interface`` can now be a single interface name or a list of interfaces. Globbing is also supported. CLI Example: salt '*' network.ip_addrs6 network.iphexval:\nRetrieve the hexadecimal representation of an IP address New in version 2016.11.0 CLI Example: salt '*' network.iphexval 10.0.0.1 network.ipneighs:\nThis function is an alias of ip_neighs.\nReturn the ip neighbour (arp) table from the minion for IPv4 addresses New in version 3007.0 CLI Example: salt '*' network.ip_neighs network.ipneighs6:\nThis function is an alias of ip_neighs6.\nReturn the ip neighbour (arp) table from the minion for IPv6 addresses New in version 3007.0 CLI Example: salt '*' network.ip_neighs6 network.is_loopback:\nCheck if the given IP address is a loopback address New in version 2014.7.0 Changed in version 2015.8.0 IPv6 support CLI Example: salt '*' network.is_loopback 127.0.0.1 network.is_private:\nCheck if the given IP address is a private address New in version 2014.7.0 Changed in version 2015.8.0 IPv6 support CLI Example: salt '*' network.is_private 10.0.0.3 network.mod_bufsize:\nModify network interface buffers (currently linux only) CLI Example: salt '*' network.mod_bufsize tx=\u0026lt;val\u0026gt; rx=\u0026lt;val\u0026gt; rx-mini=\u0026lt;val\u0026gt; rx-jumbo=\u0026lt;val\u0026gt; network.mod_hostname:\nModify hostname Changed in version 2015.8.0 Added support for SunOS (Solaris 10, Illumos, SmartOS) CLI Example: salt '*' network.mod_hostname master.saltstack.com network.netstat:\nReturn information on open ports and states Note: On BSD minions, the output contains PID info (where available) for each netstat entry, fetched from sockstat/fstat output. Changed in version 2014.1.4 Added support for OpenBSD, FreeBSD, and NetBSD Changed in version 2015.8.0 Added support for SunOS Changed in version 2016.11.4 Added support for AIX CLI Example: salt '*' network.netstat network.ping:\nPerforms an ICMP ping to a host Changed in version 2015.8.0 Added support for SunOS CLI Example: salt '*' network.ping archlinux.org New in version 2015.5.0 Return a True or False instead of ping output. salt '*' network.ping archlinux.org return_boolean=True Set the time to wait for a response in seconds. salt '*' network.ping archlinux.org timeout=3 network.reverse_ip:\nReturns the reversed IP address Changed in version 2015.8.0 IPv6 support CLI Example: salt '*' network.reverse_ip 172.17.0.4 network.routes:\nReturn currently configured routes from routing table Changed in version 2015.8.0 Added support for SunOS (Solaris 10, Illumos, SmartOS) Changed in version 2016.11.4 Added support for AIX CLI Example: salt '*' network.routes network.subnets:\nReturns a list of IPv4 subnets to which the host belongs CLI Example: salt '*' network.subnets salt '*' network.subnets interfaces=eth1 network.subnets6:\nReturns a list of IPv6 subnets to which the host belongs CLI Example: salt '*' network.subnets network.traceroute:\nPerforms a traceroute to a 3rd party host Changed in version 2015.8.0 Added support for SunOS Changed in version 2016.11.4 Added support for AIX CLI Example: salt '*' network.traceroute archlinux.org network.wol:\nSend Wake On Lan packet to a host CLI Example: salt '*' network.wol 08-00-27-13-69-77 salt '*' network.wol 080027136977 255.255.255.255 7 salt '*' network.wol 08:00:27:13:69:77 255.255.255.255 7 nexus.get_latest_release:\nGets the latest release of the artifact nexus_url URL of nexus instance repository Release repository in nexus to retrieve artifact from, for example: libs-releases group_id Group Id of the artifact artifact_id Artifact Id of the artifact packaging Packaging type (jar,war,ear,etc) target_dir Target directory to download artifact to (default: /tmp) target_file Target file to download artifact to (by default it is target_dir/artifact_id-version.packaging) classifier Artifact classifier name (ex: sources,javadoc,etc). Optional parameter. username nexus username. Optional parameter. password nexus password. Optional parameter. nexus.get_latest_snapshot:\nGets latest snapshot of the given artifact nexus_url URL of nexus instance repository Snapshot repository in nexus to retrieve artifact from, for example: libs-snapshots group_id Group Id of the artifact artifact_id Artifact Id of the artifact packaging Packaging type (jar,war,ear,etc) target_dir Target directory to download artifact to (default: /tmp) target_file Target file to download artifact to (by default it is target_dir/artifact_id-snapshot_version.packaging) classifier Artifact classifier name (ex: sources,javadoc,etc). Optional parameter. username nexus username. Optional parameter. password nexus password. Optional parameter. nexus.get_release:\nGets the specified release of the artifact nexus_url URL of nexus instance repository Release repository in nexus to retrieve artifact from, for example: libs-releases group_id Group Id of the artifact artifact_id Artifact Id of the artifact packaging Packaging type (jar,war,ear,etc) version Version of the artifact target_dir Target directory to download artifact to (default: /tmp) target_file Target file to download artifact to (by default it is target_dir/artifact_id-version.packaging) classifier Artifact classifier name (ex: sources,javadoc,etc). Optional parameter. username nexus username. Optional parameter. password nexus password. Optional parameter. nexus.get_snapshot:\nGets snapshot of the desired version of the artifact nexus_url URL of nexus instance repository Snapshot repository in nexus to retrieve artifact from, for example: libs-snapshots group_id Group Id of the artifact artifact_id Artifact Id of the artifact packaging Packaging type (jar,war,ear,etc) version Version of the artifact target_dir Target directory to download artifact to (default: /tmp) target_file Target file to download artifact to (by default it is target_dir/artifact_id-snapshot_version.packaging) classifier Artifact classifier name (ex: sources,javadoc,etc). Optional parameter. username nexus username. Optional parameter. password nexus password. Optional parameter. nexus.get_snapshot_version_string:\nGets the specific version string of a snapshot of the desired version of the artifact nexus_url URL of nexus instance repository Snapshot repository in nexus to retrieve artifact from, for example: libs-snapshots group_id Group Id of the artifact artifact_id Artifact Id of the artifact packaging Packaging type (jar,war,ear,etc) version Version of the artifact classifier Artifact classifier name (ex: sources,javadoc,etc). Optional parameter. username nexus username. Optional parameter. password nexus password. Optional parameter. nftables.append:\nAppend a rule to the specified table \u0026amp; chain. This function accepts a rule in a standard nftables command format, starting with the chain. Trying to force users to adapt to a new method of creating rules would be irritating at best, and we already have a parser that can handle it. CLI Example: salt '*' nftables.append filter input \\ rule='tcp dport 22 log accept' IPv6: salt '*' nftables.append filter input \\ rule='tcp dport 22 log accept' \\ family=ipv6 nftables.build_rule:\nBuild a well-formatted nftables rule based on kwargs. A `table` and `chain` are not required, unless `full` is True. If `full` is `True`, then `table`, `chain` and `command` are required. `command` may be specified as either insert, append, or delete. This will return the nftables command, exactly as it would be used from the command line. If a position is required (as with `insert` or `delete`), it may be specified as `position`. This will only be useful if `full` is True. If `connstate` is passed in, it will automatically be changed to `state`. CLI Examples: salt '*' nftables.build_rule match=state \\ connstate=RELATED,ESTABLISHED jump=ACCEPT salt '*' nftables.build_rule filter input command=insert position=3 \\ full=True match=state state=related,established jump=accept IPv6: salt '*' nftables.build_rule match=state \\ connstate=related,established jump=accept \\ family=ipv6 salt '*' nftables.build_rule filter input command=insert position=3 \\ full=True match=state state=related,established jump=accept \\ family=ipv6 nftables.check:\nCheck for the existence of a rule in the table and chain This function accepts a rule in a standard nftables command format, starting with the chain. Trying to force users to adapt to a new method of creating rules would be irritating at best, and we already have a parser that can handle it. CLI Example: salt '*' nftables.check filter input \\ rule='tcp dport 22 log accept' IPv6: salt '*' nftables.check filter input \\ rule='tcp dport 22 log accept' \\ family=ipv6 nftables.check_chain:\nNew in version 2014.7.0 Check for the existence of a chain in the table CLI Example: salt '*' nftables.check_chain filter input IPv6: salt '*' nftables.check_chain filter input family=ipv6 nftables.check_table:\nCheck for the existence of a table CLI Example: salt '*' nftables.check_table nat nftables.delete:\nDelete a rule from the specified table \u0026amp; chain, specifying either the rule in its entirety, or the rule's position in the chain. This function accepts a rule in a standard nftables command format, starting with the chain. Trying to force users to adapt to a new method of creating rules would be irritating at best, and we already have a parser that can handle it. CLI Examples: salt '*' nftables.delete filter input position=3 salt '*' nftables.delete filter input \\ rule='tcp dport 22 log accept' IPv6: salt '*' nftables.delete filter input position=3 family=ipv6 salt '*' nftables.delete filter input \\ rule='tcp dport 22 log accept' \\ family=ipv6 nftables.delete_chain:\nNew in version 2014.7.0 Delete the chain from the specified table. CLI Example: salt '*' nftables.delete_chain filter input salt '*' nftables.delete_chain filter foo IPv6: salt '*' nftables.delete_chain filter input family=ipv6 salt '*' nftables.delete_chain filter foo family=ipv6 nftables.delete_table:\nNew in version 2014.7.0 Create new custom table. CLI Example: salt '*' nftables.delete_table filter IPv6: salt '*' nftables.delete_table filter family=ipv6 nftables.flush:\nFlush the chain in the specified table, flush all chains in the specified table if chain is not specified. CLI Example: salt '*' nftables.flush filter salt '*' nftables.flush filter input IPv6: salt '*' nftables.flush filter input family=ipv6 nftables.get_policy:\nNew in version 3002 Return the current policy for the specified table/chain table Name of the table containing the chain to check chain Name of the chain to get the policy for family Networking family, either ipv4 or ipv6 CLI Example: salt '*' nftables.get_policy filter input IPv6: salt '*' nftables.get_policy filter input family=ipv6 nftables.get_rule_handle:\nGet the handle for a particular rule This function accepts a rule in a standard nftables command format, starting with the chain. Trying to force users to adapt to a new method of creating rules would be irritating at best, and we already have a parser that can handle it. CLI Example: salt '*' nftables.get_rule_handle filter input \\ rule='tcp dport 22 log accept' IPv6: salt '*' nftables.get_rule_handle filter input \\ rule='tcp dport 22 log accept' \\ family=ipv6 nftables.get_rules:\nReturn a data structure of the current, in-memory rules CLI Example: salt '*' nftables.get_rules salt '*' nftables.get_rules family=ipv6 nftables.get_rules_json:\nNew in version 3002 Return a list of dictionaries comprising the current, in-memory rules family Networking family, either ipv4 or ipv6 CLI Example: salt '*' nftables.get_rules_json salt '*' nftables.get_rules_json family=ipv6 nftables.get_saved_rules:\nReturn a data structure of the rules in the conf file CLI Example: salt '*' nftables.get_saved_rules nftables.insert:\nInsert a rule into the specified table \u0026amp; chain, at the specified position. If position is not specified, rule will be inserted in first position. This function accepts a rule in a standard nftables command format, starting with the chain. Trying to force users to adapt to a new method of creating rules would be irritating at best, and we already have a parser that can handle it. CLI Examples: salt '*' nftables.insert filter input \\ rule='tcp dport 22 log accept' salt '*' nftables.insert filter input position=3 \\ rule='tcp dport 22 log accept' IPv6: salt '*' nftables.insert filter input \\ rule='tcp dport 22 log accept' \\ family=ipv6 salt '*' nftables.insert filter input position=3 \\ rule='tcp dport 22 log accept' \\ family=ipv6 nftables.list_tables:\nReturn a data structure of the current, in-memory tables CLI Example: salt '*' nftables.list_tables salt '*' nftables.list_tables family=ipv6 nftables.new_chain:\nNew in version 2014.7.0 Create new chain to the specified table. CLI Example: salt '*' nftables.new_chain filter input salt '*' nftables.new_chain filter input \\ table_type=filter hook=input priority=0 salt '*' nftables.new_chain filter foo IPv6: salt '*' nftables.new_chain filter input family=ipv6 salt '*' nftables.new_chain filter input \\ table_type=filter hook=input priority=0 family=ipv6 salt '*' nftables.new_chain filter foo family=ipv6 nftables.new_table:\nNew in version 2014.7.0 Create new custom table. CLI Example: salt '*' nftables.new_table filter IPv6: salt '*' nftables.new_table filter family=ipv6 nftables.save:\nChanged in version 3002 Save the current in-memory rules to disk. On systems where /etc/nftables is a directory, a file named salt-all-in-one.nft will be dropped inside by default. The main nftables configuration will need to include this file. CLI Example: salt '*' nftables.save /etc/nftables nftables.set_policy:\nNew in version 3002 Set the current policy for the specified table/chain. This only works on chains with an existing base chain. table Name of the table containing the chain to modify chain Name of the chain to set the policy for policy accept or drop family Networking family, either ipv4 or ipv6 CLI Example: salt '*' nftables.set_policy filter input accept IPv6: salt '*' nftables.set_policy filter input accept family=ipv6 nftables.version:\nReturn version from nftables --version CLI Example: salt '*' nftables.version nova.boot:\nBoot (create) a new instance name Name of the new instance (must be first) flavor_id Unique integer ID for the flavor image_id Unique integer ID for the image timeout How long to wait, after creating the instance, for the provider to return information about it (default 300 seconds). New in version 2014.1.0 CLI Example: salt '*' nova.boot myinstance flavor_id=4596 image_id=2 The flavor_id and image_id are obtained from nova.flavor_list and nova.image_list salt '*' nova.flavor_list salt '*' nova.image_list nova.delete:\nDelete an instance instance_id ID of the instance to be deleted CLI Example: salt '*' nova.delete 1138 nova.flavor_create:\nAdd a flavor to nova (nova flavor-create). The following parameters are required: name Name of the new flavor (must be first) flavor_id Unique integer ID for the new flavor ram Memory size in MB disk Disk size in GB vcpus Number of vcpus CLI Example: salt '*' nova.flavor_create myflavor flavor_id=6 ram=4096 disk=10 vcpus=1 nova.flavor_delete:\nDelete a flavor from nova by id (nova flavor-delete) CLI Example: salt '*' nova.flavor_delete 7 nova.flavor_list:\nReturn a list of available flavors (nova flavor-list) CLI Example: salt '*' nova.flavor_list nova.image_list:\nReturn a list of available images (nova images-list + nova image-show) If a name is provided, only that image will be displayed. CLI Examples: salt '*' nova.image_list salt '*' nova.image_list myimage nova.image_meta_delete:\nDelete a key=value pair from the metadata for an image (nova image-meta set) CLI Examples: salt '*' nova.image_meta_delete 6f52b2ff-0b31-4d84-8fd1-af45b84824f6 keys=cheese salt '*' nova.image_meta_delete name=myimage keys=salad,beans nova.image_meta_set:\nSets a key=value pair in the metadata for an image (nova image-meta set) CLI Examples: salt '*' nova.image_meta_set 6f52b2ff-0b31-4d84-8fd1-af45b84824f6 cheese=gruyere salt '*' nova.image_meta_set name=myimage salad=pasta beans=baked nova.keypair_add:\nAdd a keypair to nova (nova keypair-add) CLI Examples: salt '*' nova.keypair_add mykey pubfile=/home/myuser/.ssh/id_rsa.pub salt '*' nova.keypair_add mykey pubkey='ssh-rsa \u0026lt;key\u0026gt; myuser@mybox' nova.keypair_delete:\nAdd a keypair to nova (nova keypair-delete) CLI Example: salt '*' nova.keypair_delete mykey nova.keypair_list:\nReturn a list of available keypairs (nova keypair-list) CLI Example: salt '*' nova.keypair_list nova.list:\nTo maintain the feel of the nova command line, this function simply calls the server_list function. CLI Example: salt '*' nova.list nova.lock:\nLock an instance instance_id ID of the instance to be locked CLI Example: salt '*' nova.lock 1138 nova.resume:\nResume an instance instance_id ID of the instance to be resumed CLI Example: salt '*' nova.resume 1138 nova.secgroup_create:\nAdd a secgroup to nova (nova secgroup-create) CLI Example: salt '*' nova.secgroup_create mygroup 'This is my security group' nova.secgroup_delete:\nDelete a secgroup to nova (nova secgroup-delete) CLI Example: salt '*' nova.secgroup_delete mygroup nova.secgroup_list:\nReturn a list of available security groups (nova items-list) CLI Example: salt '*' nova.secgroup_list nova.server_by_name:\nReturn information about a server name Server Name CLI Example: salt '*' nova.server_by_name myserver profile=openstack nova.server_list:\nReturn list of active servers CLI Example: salt '*' nova.server_list nova.server_list_detailed:\nReturn detailed list of active servers CLI Example: salt '*' nova.server_list_detailed nova.server_show:\nReturn detailed information for an active server CLI Example: salt '*' nova.server_show \u0026lt;server_id\u0026gt; nova.show:\nTo maintain the feel of the nova command line, this function simply calls the server_show function. CLI Example: salt '*' nova.show nova.suspend:\nSuspend an instance instance_id ID of the instance to be suspended CLI Example: salt '*' nova.suspend 1138 nova.volume_attach:\nAttach a block storage volume name Name of the new volume to attach server_name Name of the server to attach to device Name of the device on the server profile Profile to build on CLI Example: salt '*' nova.volume_attach myblock slice.example.com profile=openstack salt '*' nova.volume_attach myblock server.example.com device='/dev/xvdb' profile=openstack nova.volume_create:\nCreate a block storage volume name Name of the new volume (must be first) size Volume size snapshot Block storage snapshot id voltype Type of storage profile Profile to build on CLI Example: salt '*' nova.volume_create myblock size=300 profile=openstack nova.volume_delete:\nDestroy the volume name Name of the volume profile Profile to build on CLI Example: salt '*' nova.volume_delete myblock profile=openstack nova.volume_detach:\nAttach a block storage volume name Name of the new volume to attach server_name Name of the server to detach from profile Profile to build on CLI Example: salt '*' nova.volume_detach myblock profile=openstack nova.volume_list:\nList storage volumes search_opts Dictionary of search options profile Profile to use CLI Example: salt '*' nova.volume_list search_opts='{\u0026quot;display_name\u0026quot;: \u0026quot;myblock\u0026quot;}' profile=openstack nova.volume_show:\nCreate a block storage volume name Name of the volume profile Profile to use CLI Example: salt '*' nova.volume_show myblock profile=openstack npm.cache_clean:\nClean cached NPM packages. If no path for a specific package is provided the entire cache will be cleared. path The cache subpath to delete, or None to clear the entire cache runas The user to run NPM with env Environment variables to set when invoking npm. Uses the same ``env`` format as the :py:func:`cmd.run \u0026lt;salt.modules.cmdmod.run\u0026gt;` execution function. force Force cleaning of cache. Required for npm@5 and greater New in version 2016.11.6 CLI Example: salt '*' npm.cache_clean force=True npm.cache_list:\nList NPM cached packages. If no path for a specific package is provided this will list all the cached packages. path The cache subpath to list, or None to list the entire cache runas The user to run NPM with env Environment variables to set when invoking npm. Uses the same ``env`` format as the :py:func:`cmd.run \u0026lt;salt.modules.cmdmod.run\u0026gt;` execution function. CLI Example: salt '*' npm.cache_clean npm.cache_path:\nList path of the NPM cache directory. runas The user to run NPM with env Environment variables to set when invoking npm. Uses the same ``env`` format as the :py:func:`cmd.run \u0026lt;salt.modules.cmdmod.run\u0026gt;` execution function. CLI Example: salt '*' npm.cache_path npm.install:\nInstall an NPM package. If no directory is specified, the package will be installed globally. If no package is specified, the dependencies (from package.json) of the package in the given directory will be installed. pkg A package name in any format accepted by NPM, including a version identifier pkgs A list of package names in the same format as the ``name`` parameter New in version 2014.7.0 dir The target directory in which to install the package, or None for global installation runas The user to run NPM with registry The NPM registry to install the package from. New in version 2014.7.0 env Environment variables to set when invoking npm. Uses the same ``env`` format as the :py:func:`cmd.run \u0026lt;salt.modules.cmdmod.run\u0026gt;` execution function. New in version 2014.7.0 silent Whether or not to run NPM install with --silent flag. New in version 2016.3.0 dry_run Whether or not to run NPM install with --dry-run flag. New in version 2015.8.4 silent Whether or not to run NPM install with --silent flag. New in version 2015.8.5 CLI Example: salt '*' npm.install coffee-script salt '*' npm.install coffee-script@1.0.1 npm.list:\nList installed NPM packages. If no directory is specified, this will return the list of globally- installed packages. pkg Limit package listing by name dir The directory whose packages will be listed, or None for global installation runas The user to run NPM with New in version 2014.7.0 env Environment variables to set when invoking npm. Uses the same ``env`` format as the :py:func:`cmd.run \u0026lt;salt.modules.cmdmod.run\u0026gt;` execution function. New in version 2014.7.0 depth Limit the depth of the packages listed New in version 2016.11.6,2017.7.0 CLI Example: salt '*' npm.list npm.uninstall:\nUninstall an NPM package. If no directory is specified, the package will be uninstalled globally. pkg A package name in any format accepted by NPM dir The target directory from which to uninstall the package, or None for global installation runas The user to run NPM with env Environment variables to set when invoking npm. Uses the same ``env`` format as the :py:func:`cmd.run \u0026lt;salt.modules.cmdmod.run\u0026gt;` execution function. New in version 2015.5.3 CLI Example: salt '*' npm.uninstall coffee-script nspawn.bootstrap_container:\nBootstrap a container from package servers, if dist is None the os the minion is running as will be created, otherwise the needed bootstrapping tools will need to be available on the host. CLI Example: salt myminion nspawn.bootstrap_container \u0026lt;name\u0026gt; nspawn.bootstrap_salt:\nBootstrap a container from package servers, if dist is None the os the minion is running as will be created, otherwise the needed bootstrapping tools will need to be available on the host. CLI Example: salt '*' nspawn.bootstrap_salt arch1 nspawn.copy_to:\nCopy a file from the host into a container name Container name source File to be copied to the container dest Destination on the container. Must be an absolute path. overwrite : False Unless this option is set to ``True``, then if a file exists at the location specified by the ``dest`` argument, an error will be raised. makedirs : False Create the parent directory on the container if it does not already exist. CLI Example: salt 'minion' nspawn.copy_to /tmp/foo /root/foo nspawn.cp:\nThis function is an alias of copy_to.\nCopy a file from the host into a container name Container name source File to be copied to the container dest Destination on the container. Must be an absolute path. overwrite : False Unless this option is set to ``True``, then if a file exists at the location specified by the ``dest`` argument, an error will be raised. makedirs : False Create the parent directory on the container if it does not already exist. CLI Example: salt 'minion' nspawn.copy_to /tmp/foo /root/foo nspawn.destroy:\nThis function is an alias of remove.\nRemove the named container Warning: This function will remove all data associated with the container. It will not, however, remove the btrfs subvolumes created by pulling container images (:mod:`nspawn.pull_raw \u0026lt;salt.modules.nspawn.pull_raw\u0026gt;`, :mod:`nspawn.pull_tar \u0026lt;salt.modules.nspawn.pull_tar\u0026gt;`, :mod:`nspawn.pull_dkr \u0026lt;salt.modules.nspawn.pull_dkr\u0026gt;`). stop : False If ``True``, the container will be destroyed even if it is running/frozen. CLI Examples: salt '*' nspawn.remove foo salt '*' nspawn.remove foo stop=True nspawn.disable:\nSet the named container to *not* be launched at boot CLI Example: salt myminion nspawn.enable \u0026lt;name\u0026gt; nspawn.enable:\nSet the named container to be launched at boot CLI Example: salt myminion nspawn.enable \u0026lt;name\u0026gt; nspawn.exists:\nReturns true if the named container exists CLI Example: salt myminion nspawn.exists \u0026lt;name\u0026gt; nspawn.info:\nReturn info about a container Note: The container must be running for ``machinectl`` to gather information about it. If the container is stopped, then this function will start it. start : False If ``True``, then the container will be started to retrieve the info. A ``Started`` key will be in the return data if the container was started. CLI Example: salt myminion nspawn.info arch1 salt myminion nspawn.info arch1 force_start=False nspawn.list:\nThis function is an alias of list_running.\nLists running nspawn containers Note: ``nspawn.list`` also works to list running containers CLI Example: salt myminion nspawn.list_running salt myminion nspawn.list nspawn.list_all:\nLists all nspawn containers CLI Example: salt myminion nspawn.list_all nspawn.list_running:\nLists running nspawn containers Note: ``nspawn.list`` also works to list running containers CLI Example: salt myminion nspawn.list_running salt myminion nspawn.list nspawn.list_stopped:\nLists stopped nspawn containers CLI Example: salt myminion nspawn.list_stopped nspawn.pid:\nReturns the PID of a container name Container name CLI Example: salt myminion nspawn.pid arch1 nspawn.poweroff:\nIssue a clean shutdown to the container. Equivalent to running ``machinectl poweroff`` on the named container. For convenience, running ``nspawn.stop``(as shown in the CLI examples below) is equivalent to running ``nspawn.poweroff``. Note: ``machinectl poweroff`` is only supported in systemd \u0026gt;= 219. On earlier systemd versions, running this function will simply issue a clean shutdown via ``systemctl``. CLI Examples: salt myminion nspawn.poweroff arch1 salt myminion nspawn.stop arch1 nspawn.pull_dkr:\nExecute a ``machinectl pull-dkr`` to download a docker image and add it to /var/lib/machines as a new container. Note: **Requires systemd \u0026gt;= 219** url URL from which to download the container name Name for the new container index URL of the Docker index server from which to pull (must be an ``http://`` or ``https://`` URL). CLI Examples: salt myminion nspawn.pull_dkr centos/centos6 cent6 index=https://get.docker.com salt myminion nspawn.pull_docker centos/centos6 cent6 index=https://get.docker.com nspawn.pull_docker:\nThis function is an alias of pull_dkr.\nExecute a ``machinectl pull-dkr`` to download a docker image and add it to /var/lib/machines as a new container. Note: **Requires systemd \u0026gt;= 219** url URL from which to download the container name Name for the new container index URL of the Docker index server from which to pull (must be an ``http://`` or ``https://`` URL). CLI Examples: salt myminion nspawn.pull_dkr centos/centos6 cent6 index=https://get.docker.com salt myminion nspawn.pull_docker centos/centos6 cent6 index=https://get.docker.com nspawn.pull_raw:\nExecute a ``machinectl pull-raw`` to download a .qcow2 or raw disk image, and add it to /var/lib/machines as a new container. Note: **Requires systemd \u0026gt;= 219** url URL from which to download the container name Name for the new container verify : False Perform signature or checksum verification on the container. See the ``machinectl(1)`` man page (section titled \u0026quot;Image Transfer Commands\u0026quot;) for more information on requirements for image verification. To perform signature verification, use ``verify=signature``. For checksum verification, use ``verify=checksum``. By default, no verification will be performed. CLI Examples: salt myminion nspawn.pull_raw http://ftp.halifax.rwth-aachen.de/fedora/linux/releases/21/Cloud/Images/x86_64/Fedora-Cloud-Base-20141203-21.x86_64.raw.xz fedora21 nspawn.pull_tar:\nExecute a ``machinectl pull-raw`` to download a .tar container image, and add it to /var/lib/machines as a new container. Note: **Requires systemd \u0026gt;= 219** url URL from which to download the container name Name for the new container verify : False Perform signature or checksum verification on the container. See the ``machinectl(1)`` man page (section titled \u0026quot;Image Transfer Commands\u0026quot;) for more information on requirements for image verification. To perform signature verification, use ``verify=signature``. For checksum verification, use ``verify=checksum``. By default, no verification will be performed. CLI Examples: salt myminion nspawn.pull_tar http://foo.domain.tld/containers/archlinux-2015.02.01.tar.gz arch2 nspawn.reboot:\nReboot the container by sending a SIGINT to its init process. Equivalent to running ``machinectl reboot`` on the named container. For convenience, running ``nspawn.restart`` (as shown in the CLI examples below) is equivalent to running ``nspawn.reboot``. Note: ``machinectl reboot`` is only supported in systemd \u0026gt;= 219. On earlier systemd versions, running this function will instead restart the container via ``systemctl``. CLI Examples: salt myminion nspawn.reboot arch1 salt myminion nspawn.restart arch1 nspawn.remove:\nRemove the named container Warning: This function will remove all data associated with the container. It will not, however, remove the btrfs subvolumes created by pulling container images (:mod:`nspawn.pull_raw \u0026lt;salt.modules.nspawn.pull_raw\u0026gt;`, :mod:`nspawn.pull_tar \u0026lt;salt.modules.nspawn.pull_tar\u0026gt;`, :mod:`nspawn.pull_dkr \u0026lt;salt.modules.nspawn.pull_dkr\u0026gt;`). stop : False If ``True``, the container will be destroyed even if it is running/frozen. CLI Examples: salt '*' nspawn.remove foo salt '*' nspawn.remove foo stop=True nspawn.restart:\nThis is a compatibility function which simply calls nspawn.reboot. nspawn.retcode:\nRun :mod:`cmd.retcode \u0026lt;salt.modules.cmdmod.retcode\u0026gt;` within a container name Name of the container in which to run the command cmd Command to run no_start : False If the container is not running, don't start it preserve_state : True After running the command, return the container to its previous state stdin : None Standard input to be used for the command output_loglevel : debug Level at which to log the output from the command. Set to ``quiet`` to suppress logging. use_vt : False Use SaltStack's utils.vt to stream output to console. Assumes ``output=all``. keep_env : None If not passed, only a sane default PATH environment variable will be set. If ``True``, all environment variables from the container's host will be kept. Otherwise, a comma-separated list (or Python list) of environment variable names can be passed, and those environment variables will be kept. CLI Example: salt myminion nspawn.retcode mycontainer 'ip addr show' nspawn.run:\nRun :mod:`cmd.run \u0026lt;salt.modules.cmdmod.run\u0026gt;` within a container name Name of the container in which to run the command cmd Command to run no_start : False If the container is not running, don't start it preserve_state : True After running the command, return the container to its previous state stdin : None Standard input to be used for the command output_loglevel : debug Level at which to log the output from the command. Set to ``quiet`` to suppress logging. use_vt : False Use SaltStack's utils.vt to stream output to console. keep_env : None If not passed, only a sane default PATH environment variable will be set. If ``True``, all environment variables from the container's host will be kept. Otherwise, a comma-separated list (or Python list) of environment variable names can be passed, and those environment variables will be kept. CLI Example: salt myminion nspawn.run mycontainer 'ip addr show' nspawn.run_all:\nRun :mod:`cmd.run_all \u0026lt;salt.modules.cmdmod.run_all\u0026gt;` within a container Note: While the command is run within the container, it is initiated from the host. Therefore, the PID in the return dict is from the host, not from the container. name Name of the container in which to run the command cmd Command to run no_start : False If the container is not running, don't start it preserve_state : True After running the command, return the container to its previous state stdin : None Standard input to be used for the command output_loglevel : debug Level at which to log the output from the command. Set to ``quiet`` to suppress logging. use_vt : False Use SaltStack's utils.vt to stream output to console. Assumes ``output=all``. keep_env : None If not passed, only a sane default PATH environment variable will be set. If ``True``, all environment variables from the container's host will be kept. Otherwise, a comma-separated list (or Python list) of environment variable names can be passed, and those environment variables will be kept. CLI Example: salt myminion nspawn.run_all mycontainer 'ip addr show' nspawn.run_stderr:\nRun :mod:`cmd.run_stderr \u0026lt;salt.modules.cmdmod.run_stderr\u0026gt;` within a container name Name of the container in which to run the command cmd Command to run no_start : False If the container is not running, don't start it preserve_state : True After running the command, return the container to its previous state stdin : None Standard input to be used for the command output_loglevel : debug Level at which to log the output from the command. Set to ``quiet`` to suppress logging. use_vt : False Use SaltStack's utils.vt to stream output to console. Assumes ``output=all``. keep_env : None If not passed, only a sane default PATH environment variable will be set. If ``True``, all environment variables from the container's host will be kept. Otherwise, a comma-separated list (or Python list) of environment variable names can be passed, and those environment variables will be kept. CLI Example: salt myminion nspawn.run_stderr mycontainer 'ip addr show' nspawn.run_stdout:\nRun :mod:`cmd.run_stdout \u0026lt;salt.modules.cmdmod.run_stdout\u0026gt;` within a container name Name of the container in which to run the command cmd Command to run no_start : False If the container is not running, don't start it preserve_state : True After running the command, return the container to its previous state stdin : None Standard input to be used for the command output_loglevel : debug Level at which to log the output from the command. Set to ``quiet`` to suppress logging. use_vt : False Use SaltStack's utils.vt to stream output to console. Assumes ``output=all``. keep_env : None If not passed, only a sane default PATH environment variable will be set. If ``True``, all environment variables from the container's host will be kept. Otherwise, a comma-separated list (or Python list) of environment variable names can be passed, and those environment variables will be kept. CLI Example: salt myminion nspawn.run_stdout mycontainer 'ip addr show' nspawn.start:\nStart the named container CLI Example: salt myminion nspawn.start \u0026lt;name\u0026gt; nspawn.state:\nReturn state of container (running or stopped) CLI Example: salt myminion nspawn.state \u0026lt;name\u0026gt; nspawn.stop:\nThis is a compatibility function which provides the logic for nspawn.poweroff and nspawn.terminate. nspawn.terminate:\nKill all processes in the container without issuing a clean shutdown. Equivalent to running ``machinectl terminate`` on the named container. For convenience, running ``nspawn.stop`` and passing ``kill=True`` (as shown in the CLI examples below) is equivalent to running ``nspawn.terminate``. Note: ``machinectl terminate`` is only supported in systemd \u0026gt;= 219. On earlier systemd versions, running this function will simply issue a clean shutdown via ``systemctl``. CLI Examples: salt myminion nspawn.terminate arch1 salt myminion nspawn.stop arch1 kill=True nxos.add_config:\nAdd one or more config lines to the NX-OS device running config. lines Configuration lines to add save_config If False, don't save configuration commands to startup configuration. If True, save configuration to startup configuration. Default: True salt '*' nxos.add_config 'snmp-server community TESTSTRINGHERE group network-operator' Note: For more than one config added per command, lines should be a list. nxos.check_password:\nVerify user password. username Username on which to perform password check password Password to check encrypted Whether or not the password is encrypted Default: False .. code-block: bash salt '*' nxos.check_password username=admin password=admin salt '*' nxos.check_password username=admin \\ password='$5$2fWwO2vK$s7.Hr3YltMNHuhywQQ3nfOd.gAPHgs3SOBYYdGT3E.A' \\ encrypted=True nxos.check_role:\nVerify role assignment for user. salt '*' nxos.check_role username=admin role=network-admin nxos.check_upgrade_impact:\nDisplay upgrade impact information without actually upgrading the device. system_image (Mandatory Option) Path on bootflash: to system image upgrade file. kickstart_image Path on bootflash: to kickstart image upgrade file. (Not required if using combined system/kickstart image file) Default: None issu In Service Software Upgrade (non-disruptive). When True, the upgrade will abort if issu is not possible. When False: Force (disruptive) Upgrade/Downgrade. Default: True timeout Timeout in seconds for long running 'install all' impact command. Default: 900 error_pattern Use the option to pass in a regular expression to search for in the output of the 'install all impact' command that indicates an error has occurred. This option is only used when proxy minion connection type is ssh and otherwise ignored. salt 'n9k' nxos.check_upgrade_impact system_image=nxos.9.2.1.bin salt 'n7k' nxos.check_upgrade_impact system_image=n7000-s2-dk9.8.1.1.bin \\ kickstart_image=n7000-s2-kickstart.8.1.1.bin issu=False nxos.cmd:\nNOTE: This function is preserved for backwards compatibility. This allows commands to be executed using either of the following syntactic forms. salt '*' nxos.cmd \u0026lt;function\u0026gt; or salt '*' nxos.\u0026lt;function\u0026gt; command function from `salt.modules.nxos` to run args positional args to pass to `command` function kwargs key word arguments to pass to `command` function salt '*' nxos.cmd sendline 'show ver' salt '*' nxos.cmd show_run salt '*' nxos.cmd check_password username=admin password='$5$lkjsdfoi$blahblahblah' encrypted=True nxos.config:\nConfigures the Nexus switch with the specified commands. This method is used to send configuration commands to the switch. It will take either a string or a list and prepend the necessary commands to put the session into config mode. Warning: All the commands will be applied directly to the running-config. config_file The source file with the configuration commands to be sent to the device. The file can also be a template that can be rendered using the template engine of choice. This can be specified using the absolute path to the file, or using one of the following URL schemes: - ``salt://``, to fetch the file from the Salt fileserver. - ``http://`` or ``https://`` - ``ftp://`` - ``s3://`` - ``swift://`` commands The commands to send to the switch in config mode. If the commands argument is a string it will be cast to a list. The list of commands will also be prepended with the necessary commands to put the session in config mode. Note: This argument is ignored when ``config_file`` is specified. template_engine: ``jinja`` The template engine to use when rendering the source file. Default: ``jinja``. To simply fetch the file without attempting to render, set this argument to ``None``. context Variables to add to the template context. defaults Default values of the context_dict. save_config If False, don't save configuration commands to startup configuration. If True, save configuration to startup configuration. Default: True CLI Example: salt '*' nxos.config commands=\u0026quot;['spanning-tree mode mstp']\u0026quot; salt '*' nxos.config config_file=salt://config.txt salt '*' nxos.config config_file=https://bit.ly/2LGLcDy context=\u0026quot;{'servers': ['1.2.3.4']}\u0026quot; nxos.delete_config:\nDelete one or more config lines to the switch running config. lines Configuration lines to remove. save_config If False, don't save configuration commands to startup configuration. If True, save configuration to startup configuration. Default: True salt '*' nxos.delete_config 'snmp-server community TESTSTRINGHERE group network-operator' Note: For more than one config deleted per command, lines should be a list. nxos.find:\nFind all instances where the pattern is in the running configuration. salt '*' nxos.find '^snmp-server.*$' Note: This uses the `re.MULTILINE` regex format for python, and runs the regex against the whole show_run output. nxos.get_roles:\nGet roles assigned to a username. .. code-block: bash salt '*' nxos.get_roles username=admin nxos.get_user:\nGet username line from switch. .. code-block: bash salt '*' nxos.get_user username=admin nxos.grains:\nGet grains for minion. .. code-block: bash salt '*' nxos.grains nxos.grains_refresh:\nRefresh the grains for the NX-OS device. .. code-block: bash salt '*' nxos.grains_refresh nxos.ping:\nPing the device on the other end of the connection. .. code-block: bash salt '*' nxos.ping nxos.remove_user:\nRemove user from switch. username Username to remove save_config If False, don't save configuration commands to startup configuration. If True, save configuration to startup configuration. Default: True salt '*' nxos.remove_user username=daniel nxos.replace:\nReplace string or full line matches in switch's running config. If full_match is set to True, then the whole line will need to be matched as part of the old value. salt '*' nxos.replace 'TESTSTRINGHERE' 'NEWTESTSTRINGHERE' nxos.save_running_config:\nSave the running configuration to startup configuration. salt '*' nxos.save_running_config nxos.sendline:\nSend arbitrary commands to the NX-OS device. command The command or list of commands to be sent. ['cmd1', 'cmd2'] is converted to 'cmd1 ; cmd2'. method: ``cli_show_ascii``: Return raw test or unstructured output. ``cli_show``: Return structured output. ``cli_conf``: Send configuration commands to the device. Defaults to ``cli_show_ascii``. NOTE: method is ignored for SSH proxy minion. All data is returned unstructured. error_pattern Use the option to pass in a regular expression to search for in the returned output of the command that indicates an error has occurred. This option is only used when proxy minion connection type is ssh and otherwise ignored. .. code-block: bash salt '*' nxos.sendline 'show run | include \u0026quot;^username admin password\u0026quot;' salt '*' nxos.sendline \u0026quot;['show inventory', 'show version']\u0026quot; salt '*' nxos.sendline 'show inventory ; show version' nxos.set_password:\nSet users password on switch. username Username to configure password Password to configure for username encrypted Whether or not to encrypt the password Default: False role Configure role for the username Default: None crypt_salt Configure crypt_salt setting Default: None algorithm Encryption algorithm Default: sha256 save_config If False, don't save configuration commands to startup configuration. If True, save configuration to startup configuration. Default: True salt '*' nxos.set_password admin TestPass salt '*' nxos.set_password admin \\ password='$5$2fWwO2vK$s7.Hr3YltMNHuhywQQ3nfOd.gAPHgs3SOBYYdGT3E.A' \\ encrypted=True nxos.set_role:\nAssign role to username. username Username for role configuration role Configure role for username save_config If False, don't save configuration commands to startup configuration. If True, save configuration to startup configuration. Default: True salt '*' nxos.set_role username=daniel role=vdc-admin. nxos.show:\nExecute one or more show (non-configuration) commands. commands The commands to be executed. raw_text: ``True`` Whether to return raw text or structured data. NOTE: raw_text option is ignored for SSH proxy minion. Data is returned unstructured. CLI Example: salt-call --local nxos.show 'show version' salt '*' nxos.show 'show bgp sessions ; show processes' raw_text=False salt 'regular-minion' nxos.show 'show interfaces' host=sw01.example.com username=test password=test nxos.show_run:\nShortcut to run `show running-config` on the NX-OS device. salt '*' nxos.show_run nxos.show_ver:\nShortcut to run `show version` on the NX-OS device. salt '*' nxos.show_ver nxos.system_info:\nReturn system information for grains of the minion. salt '*' nxos.system_info nxos.unset_role:\nRemove role from username. username Username for role removal role Role to remove save_config If False, don't save configuration commands to startup configuration. If True, save configuration to startup configuration. Default: True salt '*' nxos.unset_role username=daniel role=vdc-admin nxos.upgrade:\nUpgrade NX-OS switch. system_image (Mandatory Option) Path on bootflash: to system image upgrade file. kickstart_image Path on bootflash: to kickstart image upgrade file. (Not required if using combined system/kickstart image file) Default: None issu Set this option to True when an In Service Software Upgrade or non-disruptive upgrade is required. The upgrade will abort if issu is not possible. Default: True timeout Timeout in seconds for long running 'install all' upgrade command. Default: 900 error_pattern Use the option to pass in a regular expression to search for in the output of the 'install all upgrade command that indicates an error has occurred. This option is only used when proxy minion connection type is ssh and otherwise ignored. salt 'n9k' nxos.upgrade system_image=nxos.9.2.1.bin salt 'n7k' nxos.upgrade system_image=n7000-s2-dk9.8.1.1.bin \\ kickstart_image=n7000-s2-kickstart.8.1.1.bin issu=False nxos_api.config:\nConfigures the Nexus switch with the specified commands. This method is used to send configuration commands to the switch. It will take either a string or a list and prepend the necessary commands to put the session into config mode. Warning: All the commands will be applied directly into the running-config. config_file The source file with the configuration commands to be sent to the device. The file can also be a template that can be rendered using the template engine of choice. This can be specified using the absolute path to the file, or using one of the following URL schemes: - ``salt://``, to fetch the file from the Salt fileserver. - ``http://`` or ``https://`` - ``ftp://`` - ``s3://`` - ``swift://`` commands The commands to send to the switch in config mode. If the commands argument is a string it will be cast to a list. The list of commands will also be prepended with the necessary commands to put the session in config mode. Note: This argument is ignored when ``config_file`` is specified. template_engine: ``jinja`` The template engine to use when rendering the source file. Default: ``jinja``. To simply fetch the file without attempting to render, set this argument to ``None``. context Variables to add to the template context. defaults Default values of the context_dict. transport: ``https`` Specifies the type of connection transport to use. Valid values for the connection are ``http``, and ``https``. host: ``localhost`` The IP address or DNS host name of the connection device. username: ``admin`` The username to pass to the device to authenticate the NX-API connection. password The password to pass to the device to authenticate the NX-API connection. port The TCP port of the endpoint for the NX-API connection. If this keyword is not specified, the default value is automatically determined by the transport type (``80`` for ``http``, or ``443`` for ``https``). timeout: ``60`` Time in seconds to wait for the device to respond. Default: 60 seconds. verify: ``True`` Either a boolean, in which case it controls whether we verify the NX-API TLS certificate, or a string, in which case it must be a path to a CA bundle to use. Defaults to ``True``. CLI Example: salt '*' nxos_api.config commands=\u0026quot;['spanning-tree mode mstp']\u0026quot; salt '*' nxos_api.config config_file=salt://config.txt salt '*' nxos_api.config config_file=https://bit.ly/2LGLcDy context=\u0026quot;{'servers': ['1.2.3.4']}\u0026quot; nxos_api.rpc:\nExecute an arbitrary RPC request via the Nexus API. commands The commands to be executed. method: ``cli`` The type of the response, i.e., raw text (``cli_ascii``) or structured document (``cli``). Defaults to ``cli`` (structured data). transport: ``https`` Specifies the type of connection transport to use. Valid values for the connection are ``http``, and ``https``. host: ``localhost`` The IP address or DNS host name of the connection device. username: ``admin`` The username to pass to the device to authenticate the NX-API connection. password The password to pass to the device to authenticate the NX-API connection. port The TCP port of the endpoint for the NX-API connection. If this keyword is not specified, the default value is automatically determined by the transport type (``80`` for ``http``, or ``443`` for ``https``). timeout: ``60`` Time in seconds to wait for the device to respond. Default: 60 seconds. verify: ``True`` Either a boolean, in which case it controls whether we verify the NX-API TLS certificate, or a string, in which case it must be a path to a CA bundle to use. Defaults to ``True``. CLI Example: salt-call --local nxos_api.rpc 'show version' nxos_api.show:\nExecute one or more show (non-configuration) commands. commands The commands to be executed. Multiple commands should be specified as a list. raw_text: ``True`` Whether to return raw text or structured data. transport: ``https`` Specifies the type of connection transport to use. Valid values for the connection are ``http``, and ``https``. host: ``localhost`` The IP address or DNS host name of the connection device. username: ``admin`` The username to pass to the device to authenticate the NX-API connection. password The password to pass to the device to authenticate the NX-API connection. port The TCP port of the endpoint for the NX-API connection. If this keyword is not specified, the default value is automatically determined by the transport type (``80`` for ``http``, or ``443`` for ``https``). timeout: ``60`` Time in seconds to wait for the device to respond. Default: 60 seconds. verify: ``True`` Either a boolean, in which case it controls whether we verify the NX-API TLS certificate, or a string, in which case it must be a path to a CA bundle to use. Defaults to ``True``. CLI Example: salt-call --local nxos_api.show 'show version' salt '*' nxos_api.show \u0026quot;['show bgp sessions','show processes']\u0026quot; raw_text=False salt 'regular-minion' nxos_api.show 'show interfaces' host=sw01.example.com username=test password=test nxos_upgrade.check_upgrade_impact:\nDisplay upgrade impact information without actually upgrading the device. system_image (Mandatory Option) Path on bootflash: to system image upgrade file. kickstart_image Path on bootflash: to kickstart image upgrade file. (Not required if using combined system/kickstart image file) Default: None issu In Service Software Upgrade (non-disruptive). When True, the upgrade will abort if issu is not possible. When False: Force (disruptive) Upgrade/Downgrade. Default: True timeout Timeout in seconds for long running 'install all' impact command. Default: 900 error_pattern Use the option to pass in a regular expression to search for in the output of the 'install all impact' command that indicates an error has occurred. This option is only used when proxy minion connection type is ssh and otherwise ignored. salt 'n9k' nxos.check_upgrade_impact system_image=nxos.9.2.1.bin salt 'n7k' nxos.check_upgrade_impact system_image=n7000-s2-dk9.8.1.1.bin \\ kickstart_image=n7000-s2-kickstart.8.1.1.bin issu=False nxos_upgrade.upgrade:\nUpgrade NX-OS switch. system_image (Mandatory Option) Path on bootflash: to system image upgrade file. kickstart_image Path on bootflash: to kickstart image upgrade file. (Not required if using combined system/kickstart image file) Default: None issu Set this option to True when an In Service Software Upgrade or non-disruptive upgrade is required. The upgrade will abort if issu is not possible. Default: True timeout Timeout in seconds for long running 'install all' upgrade command. Default: 900 error_pattern Use the option to pass in a regular expression to search for in the output of the 'install all upgrade command that indicates an error has occurred. This option is only used when proxy minion connection type is ssh and otherwise ignored. salt 'n9k' nxos.upgrade system_image=nxos.9.2.1.bin salt 'n7k' nxos.upgrade system_image=n7000-s2-dk9.8.1.1.bin \\ kickstart_image=n7000-s2-kickstart.8.1.1.bin issu=False openscap.xccdf:\nRun ``oscap xccdf`` commands on minions. It uses cp.push_dir to upload the generated files to the salt master in the master's minion files cachedir (defaults to ``/var/cache/salt/master/minions/minion-id/files``) It needs ``file_recv`` set to ``True`` in the master configuration file. CLI Example: salt '*' openscap.xccdf \u0026quot;eval --profile Default /usr/share/openscap/scap-yast2sec-xccdf.xml\u0026quot; openscap.xccdf_eval:\nRun ``oscap xccdf eval`` commands on minions. New in version 3007.0 It uses cp.push_dir to upload the generated files to the salt master in the master's minion files cachedir (defaults to ``/var/cache/salt/master/minions/minion-id/files``) It needs ``file_recv`` set to ``True`` in the master configuration file. xccdffile the path to the xccdf file to evaluate ovalfiles additional oval definition files profile the name of Profile to be evaluated rule the name of a single rule to be evaluated oval_results save OVAL results as well (True or False) results write XCCDF Results into given file report write HTML report into given file fetch_remote_resources download remote content referenced by XCCDF (True or False) tailoring_file use given XCCDF Tailoring file tailoring_id use given DS component as XCCDF Tailoring file remediate automatically execute XCCDF fix elements for failed rules. Use of this option is always at your own risk. (True or False) CLI Example: salt '*' openscap.xccdf_eval /usr/share/openscap/scap-yast2sec-xccdf.xml profile=Default openstack_config.delete:\nDelete a value from an OpenStack configuration file. filename The full path to the configuration file section The section from which to delete the parameter parameter The parameter to delete CLI Example: salt-call openstack_config.delete /etc/keystone/keystone.conf sql connection openstack_config.get:\nGet a value from an OpenStack configuration file. filename The full path to the configuration file section The section from which to search for the parameter parameter The parameter to return CLI Example: salt-call openstack_config.get /etc/keystone/keystone.conf sql connection openstack_config.set:\nSet a value in an OpenStack configuration file. filename The full path to the configuration file section The section in which the parameter will be set parameter The parameter to change value The value to set CLI Example: salt-call openstack_config.set /etc/keystone/keystone.conf sql connection foo opsgenie.post_data:\nPost data to OpsGenie. It's designed for Salt's Event Reactor. After configuring the sls reaction file as shown above, you can trigger the module with your designated tag (og-tag in this case). CLI Example: salt-call event.send 'og-tag' '{\u0026quot;reason\u0026quot; : \u0026quot;Overheating CPU!\u0026quot;}' Required parameters: api_key It's the API Key you've copied while adding integration in OpsGenie. reason It will be used as alert's default message in OpsGenie. action_type OpsGenie supports the default values Create/Close for action_type. You can customise this field with OpsGenie's custom actions for other purposes like adding notes or acknowledging alerts. Optional parameters: name It will be used as alert's alias. If you want to use the close functionality you must provide name field for both states like in this case. out.html_format:\nReturn the formatted string as HTML. data The JSON serializable object. out: ``nested`` The name of the output to use to transform the data. Default: ``nested``. opts Dictionary of configuration options. Default: ``__opts__``. kwargs Arguments to sent to the outputter module. CLI Example: salt '*' out.html_format \u0026quot;{'key': 'value'}\u0026quot; out=yaml out.out_format:\nReturn the formatted outputter string for the Python object. data The JSON serializable object. out: ``nested`` The name of the output to use to transform the data. Default: ``nested``. opts Dictionary of configuration options. Default: ``__opts__``. kwargs Arguments to sent to the outputter module. CLI Example: salt '*' out.out_format \u0026quot;{'key': 'value'}\u0026quot; out.string_format:\nReturn the outputter formatted string, removing the ANSI escape sequences. data The JSON serializable object. out: ``nested`` The name of the output to use to transform the data. Default: ``nested``. opts Dictionary of configuration options. Default: ``__opts__``. kwargs Arguments to sent to the outputter module. CLI Example: salt '*' out.string_format \u0026quot;{'key': 'value'}\u0026quot; out=table pagerduty.create_event:\nCreate an event in PagerDuty. Designed for use in states. CLI Example: salt myminion pagerduty.create_event \u0026lt;service_key\u0026gt; \u0026lt;description\u0026gt; \u0026lt;details\u0026gt; profile=my-pagerduty-account The following parameters are required: service_key This key can be found by using pagerduty.list_services. description This is a short description of the event. details This can be a more detailed description of the event. profile This refers to the configuration profile to use to connect to the PagerDuty service. pagerduty.list_escalation_policies:\nThis function is an alias of list_policies.\nList escalation policies belonging to this account CLI Example: salt myminion pagerduty.list_policies my-pagerduty-account salt myminion pagerduty.list_escalation_policies my-pagerduty-account pagerduty.list_incidents:\nList incidents belonging to this account CLI Example: salt myminion pagerduty.list_incidents my-pagerduty-account pagerduty.list_maintenance_windows:\nThis function is an alias of list_windows.\nList maintenance windows belonging to this account CLI Example: salt myminion pagerduty.list_windows my-pagerduty-account salt myminion pagerduty.list_maintenance_windows my-pagerduty-account pagerduty.list_policies:\nList escalation policies belonging to this account CLI Example: salt myminion pagerduty.list_policies my-pagerduty-account salt myminion pagerduty.list_escalation_policies my-pagerduty-account pagerduty.list_schedules:\nList schedules belonging to this account CLI Example: salt myminion pagerduty.list_schedules my-pagerduty-account pagerduty.list_services:\nList services belonging to this account CLI Example: salt myminion pagerduty.list_services my-pagerduty-account pagerduty.list_users:\nList users belonging to this account CLI Example: salt myminion pagerduty.list_users my-pagerduty-account pagerduty.list_windows:\nList maintenance windows belonging to this account CLI Example: salt myminion pagerduty.list_windows my-pagerduty-account salt myminion pagerduty.list_maintenance_windows my-pagerduty-account pagerduty_util.create_or_update_resource:\ncreate or update any pagerduty resource Helper method for present(). Determining if two resources are the same is different for different PD resource, so this method accepts a diff function. The diff function will be invoked as diff(state_information, object_returned_from_pagerduty), and should return a dict of data to pass to the PagerDuty update API method, or None if no update is to be performed. If no diff method is provided, the default behavor is to scan the keys in the state_information, comparing the matching values in the object_returned_from_pagerduty, and update any values that differ. examples: create_or_update_resource(\u0026quot;user\u0026quot;, [\u0026quot;id\u0026quot;,\u0026quot;name\u0026quot;,\u0026quot;email\u0026quot;]) create_or_update_resource(\u0026quot;escalation_policies\u0026quot;, [\u0026quot;id\u0026quot;,\u0026quot;name\u0026quot;], diff=my_diff_function) pagerduty_util.delete_resource:\ndelete any pagerduty resource Helper method for absent() example: delete_resource(\u0026quot;users\u0026quot;, key, [\u0026quot;id\u0026quot;,\u0026quot;name\u0026quot;,\u0026quot;email\u0026quot;]) # delete by id or name or email pagerduty_util.get_escalation_policies:\nList escalation_policies belonging to this account CLI Example: salt myminion pagerduty.get_escalation_policies pagerduty_util.get_resource:\nGet any single pagerduty resource by key. We allow flexible lookup by any of a list of identifier_fields. So, for example, you can look up users by email address or name by calling: get_resource('users', key, ['name', 'email'], ...) This method is mainly used to translate state sls into pagerduty id's for dependent objects. For example, a pagerduty escalation policy contains one or more schedules, which must be passed by their pagerduty id. We look up the schedules by name (using this method), and then translate the names into id's. This method is implemented by getting all objects of the resource type (cached into __context__), then brute force searching through the list and trying to match any of the identifier_fields. The __context__ cache is purged after any create, update or delete to the resource. pagerduty_util.get_schedules:\nList schedules belonging to this account CLI Example: salt myminion pagerduty.get_schedules pagerduty_util.get_services:\nList services belonging to this account CLI Example: salt myminion pagerduty.get_services pagerduty_util.get_users:\nList users belonging to this account CLI Example: salt myminion pagerduty.get_users pagerduty_util.resource_absent:\nGeneric resource.absent state method. Pagerduty state modules should be a thin wrapper over this method, with a custom diff function. This method calls delete_resource() and formats the result as a salt state return value. example: resource_absent(\u0026quot;users\u0026quot;, [\u0026quot;id\u0026quot;,\u0026quot;name\u0026quot;,\u0026quot;email\u0026quot;]) pagerduty_util.resource_present:\nGeneric resource.present state method. Pagerduty state modules should be a thin wrapper over this method, with a custom diff function. This method calls create_or_update_resource() and formats the result as a salt state return value. example: resource_present(\u0026quot;users\u0026quot;, [\u0026quot;id\u0026quot;,\u0026quot;name\u0026quot;,\u0026quot;email\u0026quot;]) pam.read_file:\nThis is just a test function, to make sure parsing works CLI Example: salt '*' pam.read_file /etc/pam.d/login parallels.clone:\nClone a VM New in version 2016.11.0 :param str name: Name/ID of VM to clone :param str new_name: Name of the new VM :param bool linked: Create a linked virtual machine. :param bool template: Create a virtual machine template instead of a real virtual machine. :param str runas: The user that the prlctl command will be run as Example: salt '*' parallels.clone macvm macvm_new runas=macdev salt '*' parallels.clone macvm macvm_templ template=True runas=macdev parallels.delete:\nDelete a VM New in version 2016.11.0 :param str name: Name/ID of VM to clone :param str runas: The user that the prlctl command will be run as Example: salt '*' parallels.exec macvm 'find /etc/paths.d' runas=macdev parallels.delete_snapshot:\nDelete a snapshot Note: Deleting a snapshot from which other snapshots are dervied will not delete the derived snapshots :param str name: Name/ID of VM whose snapshot will be deleted :param str snap_name: Name/ID of snapshot to delete :param str runas: The user that the prlctl command will be run as :param bool all: Delete all snapshots having the name given New in version 2016.11.0 Example: salt '*' parallels.delete_snapshot macvm 'unneeded snapshot' runas=macdev salt '*' parallels.delete_snapshot macvm 'Snapshot for linked clone' all=True runas=macdev parallels.exec:\nRun a command on a VM :param str name: Name/ID of VM whose exec will be returned :param str command: Command to run on the VM :param str runas: The user that the prlctl command will be run as Example: salt '*' parallels.exec macvm 'find /etc/paths.d' runas=macdev parallels.exists:\nQuery whether a VM exists New in version 2016.11.0 :param str name: Name/ID of VM :param str runas: The user that the prlctl command will be run as Example: salt '*' parallels.exists macvm runas=macdev parallels.list_snapshots:\nList the snapshots :param str name: Name/ID of VM whose snapshots will be listed :param str snap_id: Name/ID of snapshot to display information about. If ``tree=True`` is also specified, display the snapshot subtree having this snapshot as the root snapshot :param bool tree: List snapshots in tree format rather than tabular format :param bool names: List snapshots as ID, name pairs :param str runas: The user that the prlctl command will be run as Example: salt '*' parallels.list_snapshots macvm runas=macdev salt '*' parallels.list_snapshots macvm tree=True runas=macdev salt '*' parallels.list_snapshots macvm snap_name=original runas=macdev salt '*' parallels.list_snapshots macvm names=True runas=macdev parallels.list_vms:\nList information about the VMs :param str name: Name/ID of VM to list Changed in version 2016.11.0 No longer implies ``info=True`` :param str info: List extra information :param bool all: List all non-template VMs :param tuple args: Additional arguments given to ``prctl list`` :param str runas: The user that the prlctl command will be run as :param bool template: List the available virtual machine templates. The real virtual machines will not be included in the output New in version 2016.11.0 Example: salt '*' parallels.list_vms runas=macdev salt '*' parallels.list_vms name=macvm info=True runas=macdev salt '*' parallels.list_vms info=True runas=macdev salt '*' parallels.list_vms ' -o uuid,status' all=True runas=macdev parallels.prlctl:\nExecute a prlctl command :param str sub_cmd: prlctl subcommand to execute :param str args: The arguments supplied to ``prlctl \u0026lt;sub_cmd\u0026gt;`` :param str runas: The user that the prlctl command will be run as Example: salt '*' parallels.prlctl user list runas=macdev salt '*' parallels.prlctl exec 'macvm uname' runas=macdev salt -- '*' parallels.prlctl capture 'macvm --file macvm.display.png' runas=macdev parallels.prlsrvctl:\nExecute a prlsrvctl command New in version 2016.11.0 :param str sub_cmd: prlsrvctl subcommand to execute :param str args: The arguments supplied to ``prlsrvctl \u0026lt;sub_cmd\u0026gt;`` :param str runas: The user that the prlsrvctl command will be run as Example: salt '*' parallels.prlsrvctl info runas=macdev salt '*' parallels.prlsrvctl usb list runas=macdev salt -- '*' parallels.prlsrvctl set '--mem-limit auto' runas=macdev parallels.reset:\nReset a VM by performing a hard shutdown and then a restart :param str name: Name/ID of VM to reset :param str runas: The user that the prlctl command will be run as Example: salt '*' parallels.reset macvm runas=macdev parallels.restart:\nRestart a VM by gracefully shutting it down and then restarting it :param str name: Name/ID of VM to restart :param str runas: The user that the prlctl command will be run as Example: salt '*' parallels.restart macvm runas=macdev parallels.revert_snapshot:\nRevert a VM to a snapshot :param str name: Name/ID of VM to revert to a snapshot :param str snap_name: Name/ID of snapshot to revert to :param str runas: The user that the prlctl command will be run as Example: salt '*' parallels.revert_snapshot macvm base-with-updates runas=macdev parallels.snapshot:\nCreate a snapshot :param str name: Name/ID of VM to take a snapshot of :param str snap_name: Name of snapshot :param str desc: Description of snapshot :param str runas: The user that the prlctl command will be run as Example: salt '*' parallels.create_snapshot macvm snap_name=macvm-original runas=macdev salt '*' parallels.create_snapshot macvm snap_name=macvm-updates desc='clean install with updates' runas=macdev parallels.snapshot_id_to_name:\nAttempt to convert a snapshot ID to a snapshot name. If the snapshot has no name or if the ID is not found or invalid, an empty string will be returned :param str name: Name/ID of VM whose snapshots are inspected :param str snap_id: ID of the snapshot :param bool strict: Raise an exception if a name cannot be found for the given ``snap_id`` :param str runas: The user that the prlctl command will be run as Example data ID: {a5b8999f-5d95-4aff-82de-e515b0101b66} Name: original Date: 2016-03-04 10:50:34 Current: yes State: poweroff Description: original state CLI Example: salt '*' parallels.snapshot_id_to_name macvm a5b8999f-5d95-4aff-82de-e515b0101b66 runas=macdev parallels.snapshot_name_to_id:\nAttempt to convert a snapshot name to a snapshot ID. If the name is not found an empty string is returned. If multiple snapshots share the same name, a list will be returned :param str name: Name/ID of VM whose snapshots are inspected :param str snap_name: Name of the snapshot :param bool strict: Raise an exception if multiple snapshot IDs are found :param str runas: The user that the prlctl command will be run as CLI Example: salt '*' parallels.snapshot_id_to_name macvm original runas=macdev parallels.start:\nStart a VM :param str name: Name/ID of VM to start :param str runas: The user that the prlctl command will be run as Example: salt '*' parallels.start macvm runas=macdev parallels.status:\nStatus of a VM :param str name: Name/ID of VM whose status will be returned :param str runas: The user that the prlctl command will be run as Example: salt '*' parallels.status macvm runas=macdev parallels.stop:\nStop a VM :param str name: Name/ID of VM to stop :param bool kill: Perform a hard shutdown :param str runas: The user that the prlctl command will be run as Example: salt '*' parallels.stop macvm runas=macdev salt '*' parallels.stop macvm kill=True runas=macdev partition.align_check:\nCheck if partition satisfies the alignment constraint of part_type. Type must be \u0026quot;minimal\u0026quot; or \u0026quot;optimal\u0026quot;. CLI Example: salt '*' partition.align_check /dev/sda minimal 1 partition.check:\nChecks if the file system on partition \u0026lt;minor\u0026gt; has any errors. CLI Example: salt '*' partition.check 1 partition.cp:\nCopies the file system on the partition \u0026lt;from-minor\u0026gt; to partition \u0026lt;to-minor\u0026gt;, deleting the original contents of the destination partition. CLI Example: salt '*' partition.cp /dev/sda 2 3 partition.disk_set:\nChanges a flag on selected device. A flag can be either \u0026quot;on\u0026quot; or \u0026quot;off\u0026quot; (make sure to use proper quoting, see :ref:`YAML Idiosyncrasies \u0026lt;yaml-idiosyncrasies\u0026gt;`). Some or all of these flags will be available, depending on what disk label you are using. Valid flags are: * cylinder_alignment * pmbr_boot * implicit_partition_table CLI Example: salt '*' partition.disk_set /dev/sda pmbr_boot '\u0026quot;on\u0026quot;' partition.disk_toggle:\nToggle the state of \u0026lt;flag\u0026gt; on \u0026lt;device\u0026gt;. Valid flags are the same as the disk_set command. CLI Example: salt '*' partition.disk_toggle /dev/sda pmbr_boot partition.exists:\nCheck to see if the partition exists CLI Example: salt '*' partition.exists /dev/sdb1 partition.get_block_device:\nRetrieve a list of disk devices New in version 2014.7.0 CLI Example: salt '*' partition.get_block_device partition.get_id:\nPrints the system ID for the partition. Some typical values are:: b: FAT32 (vfat) 7: HPFS/NTFS 82: Linux Swap 83: Linux 8e: Linux LVM fd: Linux RAID Auto CLI Example: salt '*' partition.get_id /dev/sda 1 partition.list:\nPrints partition information of given \u0026lt;device\u0026gt; CLI Examples: salt '*' partition.list /dev/sda salt '*' partition.list /dev/sda unit=s salt '*' partition.list /dev/sda unit=kB partition.mkfs:\nMakes a file system \u0026lt;fs_type\u0026gt; on partition \u0026lt;device\u0026gt;, destroying all data that resides on that partition. \u0026lt;fs_type\u0026gt; must be one of \u0026quot;ext2\u0026quot;, \u0026quot;fat32\u0026quot;, \u0026quot;fat16\u0026quot;, \u0026quot;linux-swap\u0026quot; or \u0026quot;reiserfs\u0026quot; (if libreiserfs is installed) CLI Example: salt '*' partition.mkfs /dev/sda2 fat32 partition.mklabel:\nCreate a new disklabel (partition table) of label_type. Type should be one of \u0026quot;aix\u0026quot;, \u0026quot;amiga\u0026quot;, \u0026quot;bsd\u0026quot;, \u0026quot;dvh\u0026quot;, \u0026quot;gpt\u0026quot;, \u0026quot;loop\u0026quot;, \u0026quot;mac\u0026quot;, \u0026quot;msdos\u0026quot;, \u0026quot;pc98\u0026quot;, or \u0026quot;sun\u0026quot;. CLI Example: salt '*' partition.mklabel /dev/sda msdos partition.mkpart:\nMake a part_type partition for filesystem fs_type, beginning at start and ending at end (by default in megabytes). part_type should be one of \u0026quot;primary\u0026quot;, \u0026quot;logical\u0026quot;, or \u0026quot;extended\u0026quot;. CLI Examples: salt '*' partition.mkpart /dev/sda primary fs_type=fat32 start=0 end=639 salt '*' partition.mkpart /dev/sda primary start=0 end=639 partition.mkpartfs:\nThe mkpartfs actually is an alias to mkpart and is kept for compatibility. To know the valid options and usage syntax read mkpart documentation. CLI Examples: salt '*' partition.mkpartfs /dev/sda primary fs_type=fat32 start=0 end=639 salt '*' partition.mkpartfs /dev/sda primary start=0 end=639 partition.name:\nSet the name of partition to name. This option works only on Mac, PC98, and GPT disklabels. The name can be placed in quotes, if necessary. CLI Example: salt '*' partition.name /dev/sda 1 'My Documents' partition.probe:\nAsk the kernel to update its local partition data. When no args are specified all block devices are tried. Caution: Generally only works on devices with no mounted partitions and may take a long time to return if specified devices are in use. CLI Examples: salt '*' partition.probe salt '*' partition.probe /dev/sda salt '*' partition.probe /dev/sda /dev/sdb partition.rescue:\nRescue a lost partition that was located somewhere between start and end. If a partition is found, parted will ask if you want to create an entry for it in the partition table. CLI Example: salt '*' partition.rescue /dev/sda 0 8056 partition.resize:\nResizes the partition with number \u0026lt;minor\u0026gt;. The partition will start \u0026lt;start\u0026gt; from the beginning of the disk, and end \u0026lt;end\u0026gt; from the beginning of the disk. resize never changes the minor number. Extended partitions can be resized, so long as the new extended partition completely contains all logical partitions. CLI Example: salt '*' partition.resize /dev/sda 3 200 850 partition.rm:\nRemoves the partition with number \u0026lt;minor\u0026gt;. CLI Example: salt '*' partition.rm /dev/sda 5 partition.set:\nChanges a flag on the partition with number \u0026lt;minor\u0026gt;. A flag can be either \u0026quot;on\u0026quot; or \u0026quot;off\u0026quot; (make sure to use proper quoting, see :ref:`YAML Idiosyncrasies \u0026lt;yaml-idiosyncrasies\u0026gt;`). Some or all of these flags will be available, depending on what disk label you are using. Valid flags are: * boot * root * swap * hidden * raid * lvm * lba * hp-service * palo * prep * msftres * bios_grub * atvrecv * diag * legacy_boot * msftdata * irst * esp * type CLI Example: salt '*' partition.set /dev/sda 1 boot '\u0026quot;on\u0026quot;' partition.set_id:\nSets the system ID for the partition. Some typical values are:: b: FAT32 (vfat) 7: HPFS/NTFS 82: Linux Swap 83: Linux 8e: Linux LVM fd: Linux RAID Auto CLI Example: salt '*' partition.set_id /dev/sda 1 83 partition.system_types:\nList the system types that are supported by the installed version of sfdisk CLI Example: salt '*' partition.system_types partition.toggle:\nToggle the state of \u0026lt;flag\u0026gt; on \u0026lt;partition\u0026gt;. Valid flags are the same as the set command. CLI Example: salt '*' partition.toggle /dev/sda 1 boot peeringdb.get_fac:\nReturn the details of the facility identified using the search filters specified in the query. Note: If no ``id`` or filter arguments are specified, it will return all the possible facilities registered in PeeringDB. The available filters are documented at: https://www.peeringdb.com/apidocs/#!/netfac/netfac_list CLI Example: salt '*' peeringdb.get_fac id=1774 salt '*' peeringdb.get_fac state=UT peeringdb.get_ix:\nReturn the details of an IX (Internet Exchange) using the search filters specified in the query. Note: If no ``id`` or filter arguments are specified, it will return all the possible IXs registered in PeeringDB. The available filters are documented at: https://www.peeringdb.com/apidocs/#!/ix/ix_list CLI Example: salt '*' peeringdb.get_ix id=1 salt '*' peeringdb.get_ix city='Milwaukee' peeringdb.get_ixfac:\nReturn the details of an IX (Internet Exchange) facility using the search filters specified in the query. Note: If no ``id`` or filter arguments are specified, it will return all the possible IX facilities registered in PeeringDB. The available filters are documented at: https://www.peeringdb.com/apidocs/#!/ixfac/ixfac_list CLI Example: salt '*' peeringdb.get_ixfac id=1 salt '*' peeringdb.get_ixfac city='Milwaukee' peeringdb.get_ixlan:\nReturn the details of an IX (Internet Exchange) together with the networks available in this location (and their details), using the search filters specified in the query. Note: If no ``id`` or filter arguments are specified, it will return all the possible IX LAN facilities registered in PeeringDB. The available filters are documented at: https://www.peeringdb.com/apidocs/#!/ixlan/ixlan_list CLI Example: salt '*' peeringdb.get_ixlan id=780 salt '*' peeringdb.get_ixlan city='Milwaukee' peeringdb.get_ixpfx:\nReturn the details of an IX (Internet Exchange) together with the PeeringDB IDs of the networks available in this location, using the search filters specified in the query. Note: If no ``id`` or filter arguments are specified, it will return all the possible IX LAN facilities registered in PeeringDB. The available filters are documented at: https://www.peeringdb.com/apidocs/#!/ixpfx/ixpfx_list CLI Example: salt '*' peeringdb.get_ixpfx id=780 salt '*' peeringdb.get_ixpfx city='Milwaukee' peeringdb.get_net:\nReturn the details of a network identified using the search filters specified in the query. Note: If no ``id`` or filter arguments are specified, it will return all the possible networks registered in PeeringDB. The available filters are documented at: https://www.peeringdb.com/apidocs/#!/net/net_list CLI Example: salt '*' peeringdb.get_net id=4224 salt '*' peeringdb.get_net asn=13335 salt '*' peeringdb.get_net city='Salt Lake City' salt '*' peeringdb.get_net name__startswith=GTT peeringdb.get_netfac:\nReturn the list of facilities used by a particular network, given the ``id`` or other filters specified in the query. Note: If no ``id`` or filter arguments are specified, it will return all the possible network facilities registered in PeeringDB. The available filters are documented at: https://www.peeringdb.com/apidocs/#!/netfac/netfac_list CLI Example: salt '*' peeringdb.get_netfac id=780 salt '*' peeringdb.get_netfac city='Milwaukee' peeringdb.get_netixlan:\nReturn the IP addresses used by a particular network at all the IXs where it is available. The network is selected either via the ``id`` argument or the other filters specified in the query. Note: If no ``id`` or filter arguments are specified, it will return all the possible IP addresses, of all networks, at all IXs, registered in PeeringDB. The available filters are documented at: https://www.peeringdb.com/apidocs/#!/netixlan/netixlan_list CLI Example: salt '*' peeringdb.get_netixlan asn=13335 salt '*' peeringdb.get_netixlan ipaddr4=185.1.114.25 peeringdb.get_org:\nReturn the details of an organisation together with the networks available in this location, using the search filters specified in the query. Note: If no ``id`` or filter arguments are specified, it will return all the possible organisations registered in PeeringDB. The available filters are documented at: https://www.peeringdb.com/apidocs/#!/org/org_list CLI Example: salt '*' peeringdb.get_org id=2 salt '*' peeringdb.get_org city=Duesseldorf peeringdb.get_poc:\nReturn the details of a person of contact together using the search filters specified in the query. Note: If no ``id`` or filter arguments are specified, it will return all the possible contacts registered in PeeringDB. The available filters are documented at: https://www.peeringdb.com/apidocs/#!/poc/poc_list CLI Example: salt '*' peeringdb.get_poc id=6721 salt '*' peeringdb.get_poc email__contains='@cloudflare.com' pillar.data:\nCalls the master for a fresh pillar, generates the pillar data on the fly (same as :py:func:`items`) pillar If specified, allows for a dictionary of pillar data to be made available to pillar and ext_pillar rendering. these pillar variables will also override any variables of the same name in pillar or ext_pillar. pillar_enc If specified, the data passed in the ``pillar`` argument will be passed through this renderer to decrypt it. Note: This will decrypt on the minion side, so the specified renderer must be set up on the minion for this to work. Alternatively, pillar data can be decrypted master-side. For more information, see the :ref:`Pillar Encryption \u0026lt;pillar-encryption\u0026gt;` documentation. Pillar data that is decrypted master-side, is not decrypted until the end of pillar compilation though, so minion-side decryption will be necessary if the encrypted pillar data must be made available in an decrypted state pillar/ext_pillar rendering. pillarenv Pass a specific pillar environment from which to compile pillar data. If not specified, then the minion's :conf_minion:`pillarenv` option is not used, and if that also is not specified then all configured pillar environments will be merged into a single pillar dictionary and returned. saltenv Included only for compatibility with :conf_minion:`pillarenv_from_saltenv`, and is otherwise ignored. CLI Examples: salt '*' pillar.data pillar.ext:\nChanged in version 2016.3.6,2016.11.3,2017.7.0 The supported ext_pillar types are now tunable using the :conf_master:`on_demand_ext_pillar` config option. Earlier releases used a hard-coded default. Generate the pillar and apply an explicit external pillar external A single ext_pillar to add to the ext_pillar configuration. This must be passed as a single section from the ext_pillar configuration (see CLI examples below). For more complicated ``ext_pillar`` configurations, it can be helpful to use the Python shell to load YAML configuration into a dictionary, and figure out \u0026gt;\u0026gt;\u0026gt; import salt.utils.yaml \u0026gt;\u0026gt;\u0026gt; ext_pillar = salt.utils.yaml.safe_load(\u0026quot;\u0026quot;\u0026quot; ... ext_pillar: ... - git: ... - issue38440 https://github.com/terminalmage/git_pillar: ... - env: base ... \u0026quot;\u0026quot;\u0026quot;) \u0026gt;\u0026gt;\u0026gt; ext_pillar {'ext_pillar': [{'git': [{'mybranch https://github.com/myuser/myrepo': [{'env': 'base'}]}]}]} \u0026gt;\u0026gt;\u0026gt; ext_pillar['ext_pillar'][0] {'git': [{'mybranch https://github.com/myuser/myrepo': [{'env': 'base'}]}]} In the above example, the value to pass would be ``{'git': [{'mybranch https://github.com/myuser/myrepo': [{'env': 'base'}]}]}``. Note that this would need to be quoted when passing on the CLI (as in the CLI examples below). pillar : None If specified, allows for a dictionary of pillar data to be made available to pillar and ext_pillar rendering. These pillar variables will also override any variables of the same name in pillar or ext_pillar. New in version 2015.5.0 CLI Examples: salt '*' pillar.ext '{libvirt: _}' salt '*' pillar.ext \u0026quot;{'git': ['master https://github.com/myuser/myrepo']}\u0026quot; salt '*' pillar.ext \u0026quot;{'git': [{'mybranch https://github.com/myuser/myrepo': [{'env': 'base'}]}]}\u0026quot; pillar.fetch:\nNew in version 0.14.0 Attempt to retrieve the named value from :ref:`in-memory pillar data \u0026lt;pillar-in-memory\u0026gt;`. If the pillar key is not present in the in-memory pillar, then the value specified in the ``default`` option (described below) will be returned. If the merge parameter is set to ``True``, the default will be recursively merged into the returned pillar data. The value can also represent a value in a nested dict using a \u0026quot;:\u0026quot; delimiter for the dict. This means that if a dict in pillar looks like this:: {'pkg': {'apache': 'httpd'}} To retrieve the value associated with the ``apache`` key in the ``pkg`` dict this key can be passed as:: pkg:apache key The pillar key to get value from default The value specified by this option will be returned if the desired pillar key does not exist. If a default value is not specified, then it will be an empty string, unless :conf_minion:`pillar_raise_on_missing` is set to ``True``, in which case an error will be raised. merge : ``False`` If ``True``, the retrieved values will be merged into the passed default. When the default and the retrieved value are both dictionaries, the dictionaries will be recursively merged. New in version 2014.7.0 Changed in version 2016.3.7,2016.11.4,2017.7.0 If the default and the retrieved value are not of the same type, then merging will be skipped and the retrieved value will be returned. Earlier releases raised an error in these cases. merge_nested_lists If set to ``False``, lists nested within the retrieved pillar dictionary will *overwrite* lists in ``default``. If set to ``True``, nested lists will be *merged* into lists in ``default``. If unspecified (the default), this option is inherited from the :conf_minion:`pillar_merge_lists` minion config option. Note: This option is ignored when ``merge`` is set to ``False``. New in version 2016.11.6 delimiter Specify an alternate delimiter to use when traversing a nested dict. This is useful for when the desired key contains a colon. See CLI example below for usage. New in version 2014.7.0 pillarenv If specified, this function will query the master to generate fresh pillar data on the fly, specifically from the requested pillar environment. Note that this can produce different pillar data than executing this function without an environment, as its normal behaviour is just to return a value from minion's pillar data in memory (which can be sourced from more than one pillar environment). Using this argument will not affect the pillar data in memory. It will however be slightly slower and use more resources on the master due to the need for the master to generate and send the minion fresh pillar data. This tradeoff in performance however allows for the use case where pillar data is desired only from a single environment. New in version 2017.7.0 saltenv Included only for compatibility with :conf_minion:`pillarenv_from_saltenv`, and is otherwise ignored. New in version 2017.7.0 CLI Example: salt '*' pillar.get pkg:apache salt '*' pillar.get abc::def|ghi delimiter='|' pillar.file_exists:\nNew in version 2016.3.0 This is a master-only function. Calling from the minion is not supported. Use the given path and search relative to the pillar environments to see if a file exists at that path. If the ``saltenv`` argument is given, restrict search to that environment only. Will only work with ``pillar_roots``, not external pillars. Returns True if the file is found, and False otherwise. path The path to the file in question. Will be treated as a relative path saltenv Optional argument to restrict the search to a specific saltenv CLI Example: salt '*' pillar.file_exists foo/bar.sls pillar.filter_by:\nNew in version 2017.7.0 Look up the given pillar in a given dictionary and return the result :param lookup_dict: A dictionary, keyed by a pillar, containing a value or values relevant to systems matching that pillar. For example, a key could be a pillar for a role and the value could the name of a package on that particular OS. The dictionary key can be a globbing pattern. The function will return the corresponding ``lookup_dict`` value where the pillar value matches the pattern. For example: # this will render 'got some salt' if ``role`` begins with 'salt' salt '*' pillar.filter_by '{salt*: got some salt, default: salt is not here}' role :param pillar: The name of a pillar to match with the system's pillar. For example, the value of the \u0026quot;role\u0026quot; pillar could be used to pull values from the ``lookup_dict`` dictionary. The pillar value can be a list. The function will return the ``lookup_dict`` value for a first found item in the list matching one of the ``lookup_dict`` keys. :param merge: A dictionary to merge with the results of the pillar selection from ``lookup_dict``. This allows another dictionary to override the values in the ``lookup_dict``. :param default: default lookup_dict's key used if the pillar does not exist or if the pillar value has no match on lookup_dict. If unspecified the value is \u0026quot;default\u0026quot;. :param base: A lookup_dict key to use for a base dictionary. The pillar-selected ``lookup_dict`` is merged over this and then finally the ``merge`` dictionary is merged. This allows common values for each case to be collected in the base and overridden by the pillar selection dictionary and the merge dictionary. Default is unset. CLI Example: salt '*' pillar.filter_by '{web: Serve it up, db: I query, default: x_x}' role pillar.get:\nNew in version 0.14.0 Attempt to retrieve the named value from :ref:`in-memory pillar data \u0026lt;pillar-in-memory\u0026gt;`. If the pillar key is not present in the in-memory pillar, then the value specified in the ``default`` option (described below) will be returned. If the merge parameter is set to ``True``, the default will be recursively merged into the returned pillar data. The value can also represent a value in a nested dict using a \u0026quot;:\u0026quot; delimiter for the dict. This means that if a dict in pillar looks like this:: {'pkg': {'apache': 'httpd'}} To retrieve the value associated with the ``apache`` key in the ``pkg`` dict this key can be passed as:: pkg:apache key The pillar key to get value from default The value specified by this option will be returned if the desired pillar key does not exist. If a default value is not specified, then it will be an empty string, unless :conf_minion:`pillar_raise_on_missing` is set to ``True``, in which case an error will be raised. merge : ``False`` If ``True``, the retrieved values will be merged into the passed default. When the default and the retrieved value are both dictionaries, the dictionaries will be recursively merged. New in version 2014.7.0 Changed in version 2016.3.7,2016.11.4,2017.7.0 If the default and the retrieved value are not of the same type, then merging will be skipped and the retrieved value will be returned. Earlier releases raised an error in these cases. merge_nested_lists If set to ``False``, lists nested within the retrieved pillar dictionary will *overwrite* lists in ``default``. If set to ``True``, nested lists will be *merged* into lists in ``default``. If unspecified (the default), this option is inherited from the :conf_minion:`pillar_merge_lists` minion config option. Note: This option is ignored when ``merge`` is set to ``False``. New in version 2016.11.6 delimiter Specify an alternate delimiter to use when traversing a nested dict. This is useful for when the desired key contains a colon. See CLI example below for usage. New in version 2014.7.0 pillarenv If specified, this function will query the master to generate fresh pillar data on the fly, specifically from the requested pillar environment. Note that this can produce different pillar data than executing this function without an environment, as its normal behaviour is just to return a value from minion's pillar data in memory (which can be sourced from more than one pillar environment). Using this argument will not affect the pillar data in memory. It will however be slightly slower and use more resources on the master due to the need for the master to generate and send the minion fresh pillar data. This tradeoff in performance however allows for the use case where pillar data is desired only from a single environment. New in version 2017.7.0 saltenv Included only for compatibility with :conf_minion:`pillarenv_from_saltenv`, and is otherwise ignored. New in version 2017.7.0 CLI Example: salt '*' pillar.get pkg:apache salt '*' pillar.get abc::def|ghi delimiter='|' pillar.item:\nNew in version 0.16.2 Return one or more pillar entries from the :ref:`in-memory pillar data \u0026lt;pillar-in-memory\u0026gt;`. delimiter Delimiter used to traverse nested dictionaries. Note: This is different from :py:func:`pillar.get \u0026lt;salt.modules.pillar.get\u0026gt;` in that no default value can be specified. :py:func:`pillar.get \u0026lt;salt.modules.pillar.get\u0026gt;` should probably still be used in most cases to retrieve nested pillar values, as it is a bit more flexible. One reason to use this function instead of :py:func:`pillar.get \u0026lt;salt.modules.pillar.get\u0026gt;` however is when it is desirable to retrieve the values of more than one key, since :py:func:`pillar.get \u0026lt;salt.modules.pillar.get\u0026gt;` can only retrieve one key at a time. New in version 2015.8.0 pillarenv If specified, this function will query the master to generate fresh pillar data on the fly, specifically from the requested pillar environment. Note that this can produce different pillar data than executing this function without an environment, as its normal behaviour is just to return a value from minion's pillar data in memory (which can be sourced from more than one pillar environment). Using this argument will not affect the pillar data in memory. It will however be slightly slower and use more resources on the master due to the need for the master to generate and send the minion fresh pillar data. This tradeoff in performance however allows for the use case where pillar data is desired only from a single environment. New in version 2017.7.6,2018.3.1 saltenv Included only for compatibility with :conf_minion:`pillarenv_from_saltenv`, and is otherwise ignored. New in version 2017.7.6,2018.3.1 CLI Examples: salt '*' pillar.item foo salt '*' pillar.item foo:bar salt '*' pillar.item foo bar baz pillar.items:\nCalls the master for a fresh pillar and generates the pillar data on the fly Contrast with :py:func:`raw` which returns the pillar data that is currently loaded into the minion. pillar If specified, allows for a dictionary of pillar data to be made available to pillar and ext_pillar rendering. these pillar variables will also override any variables of the same name in pillar or ext_pillar. New in version 2015.5.0 pillar_enc If specified, the data passed in the ``pillar`` argument will be passed through this renderer to decrypt it. Note: This will decrypt on the minion side, so the specified renderer must be set up on the minion for this to work. Alternatively, pillar data can be decrypted master-side. For more information, see the :ref:`Pillar Encryption \u0026lt;pillar-encryption\u0026gt;` documentation. Pillar data that is decrypted master-side, is not decrypted until the end of pillar compilation though, so minion-side decryption will be necessary if the encrypted pillar data must be made available in an decrypted state pillar/ext_pillar rendering. New in version 2017.7.0 pillarenv Pass a specific pillar environment from which to compile pillar data. If not specified, then the minion's :conf_minion:`pillarenv` option is not used, and if that also is not specified then all configured pillar environments will be merged into a single pillar dictionary and returned. New in version 2016.11.2 saltenv Included only for compatibility with :conf_minion:`pillarenv_from_saltenv`, and is otherwise ignored. CLI Example: salt '*' pillar.items pillar.keys:\nNew in version 2015.8.0 Attempt to retrieve a list of keys from the named value from the pillar. The value can also represent a value in a nested dict using a \u0026quot;:\u0026quot; delimiter for the dict, similar to how pillar.get works. delimiter Specify an alternate delimiter to use when traversing a nested dict CLI Example: salt '*' pillar.keys web:sites pillar.ls:\nNew in version 2015.8.0 Calls the master for a fresh pillar, generates the pillar data on the fly (same as :py:func:`items`), but only shows the available main keys. pillar If specified, allows for a dictionary of pillar data to be made available to pillar and ext_pillar rendering. these pillar variables will also override any variables of the same name in pillar or ext_pillar. pillar_enc If specified, the data passed in the ``pillar`` argument will be passed through this renderer to decrypt it. Note: This will decrypt on the minion side, so the specified renderer must be set up on the minion for this to work. Alternatively, pillar data can be decrypted master-side. For more information, see the :ref:`Pillar Encryption \u0026lt;pillar-encryption\u0026gt;` documentation. Pillar data that is decrypted master-side, is not decrypted until the end of pillar compilation though, so minion-side decryption will be necessary if the encrypted pillar data must be made available in an decrypted state pillar/ext_pillar rendering. pillarenv Pass a specific pillar environment from which to compile pillar data. If not specified, then the minion's :conf_minion:`pillarenv` option is not used, and if that also is not specified then all configured pillar environments will be merged into a single pillar dictionary and returned. saltenv Included only for compatibility with :conf_minion:`pillarenv_from_saltenv`, and is otherwise ignored. CLI Examples: salt '*' pillar.ls pillar.obfuscate:\nNew in version 2015.8.0 Same as :py:func:`items`, but replace pillar values with a simple type indication. This is useful to avoid displaying sensitive information on console or flooding the console with long output, such as certificates. For many debug or control purposes, the stakes lie more in dispatching than in actual values. In case the value is itself a collection type, obfuscation occurs within the value. For mapping types, keys are not obfuscated. Here are some examples: * ``'secret password'`` becomes ``'\u0026lt;str\u0026gt;'`` * ``['secret', 1]`` becomes ``['\u0026lt;str\u0026gt;', '\u0026lt;int\u0026gt;']`` * ``{'login': 'somelogin', 'pwd': 'secret'}`` becomes ``{'login': '\u0026lt;str\u0026gt;', 'pwd': '\u0026lt;str\u0026gt;'}`` CLI Examples: salt '*' pillar.obfuscate pillar.raw:\nReturn the raw pillar data that is currently loaded into the minion. Contrast with :py:func:`items` which calls the master to fetch the most up-to-date Pillar. CLI Example: salt '*' pillar.raw With the optional key argument, you can select a subtree of the pillar raw data.:: salt '*' pillar.raw key='roles' pip.freeze:\nReturn a list of installed packages either globally or in the specified virtualenv bin_env Path to pip (or to a virtualenv). This can be used to specify the path to the pip to use when more than one Python release is installed (e.g. ``/usr/bin/pip-2.7`` or ``/usr/bin/pip-2.6``. If a directory path is specified, it is assumed to be a virtualenv. user The user under which to run pip cwd Directory from which to run pip Note: If the version of pip available is older than 8.0.3, the list will not include the packages ``pip``, ``wheel``, ``setuptools``, or ``distribute`` even if they are installed. CLI Example: salt '*' pip.freeze bin_env=/home/code/path/to/virtualenv pip.install:\nInstall packages with pip Install packages individually or from a pip requirements file. Install packages globally or to a virtualenv. pkgs Comma separated list of packages to install requirements Path to requirements bin_env Path to pip (or to a virtualenv). This can be used to specify the path to the pip to use when more than one Python release is installed (e.g. ``/usr/bin/pip-2.7`` or ``/usr/bin/pip-2.6``. If a directory path is specified, it is assumed to be a virtualenv. Note: For Windows, if the pip module is being used to upgrade the pip package, bin_env should be the path to the virtualenv or to the python binary that should be used. The pip command is unable to upgrade itself in Windows. use_wheel Prefer wheel archives (requires pip\u0026gt;=1.4) no_use_wheel Force to not use wheel archives (requires pip\u0026gt;=1.4,\u0026lt;10.0.0) no_binary Force to not use binary packages (requires pip \u0026gt;= 7.0.0) Accepts either :all: to disable all binary packages, :none: to empty the set, or one or more package names with commas between them log Log file where a complete (maximum verbosity) record will be kept. If this file doesn't exist and the parent directory is writeable, it will be created. proxy Specify a proxy in the form ``user:passwd@proxy.server:port``. Note that the ``user:password@`` is optional and required only if you are behind an authenticated proxy. If you provide ``user@proxy.server:port`` then you will be prompted for a password. Note: If the Minion has a globaly configured proxy - it will be used even if no proxy was set here. To explicitly disable proxy for pip you should pass ``False`` as a value. timeout Set the socket timeout (default 15 seconds) editable install something editable (e.g. ``git+https://github.com/worldcompany/djangoembed.git#egg=djangoembed``) find_links URL to search for packages index_url Base URL of Python Package Index extra_index_url Extra URLs of package indexes to use in addition to ``index_url`` no_index Ignore package index mirrors Specific mirror URL(s) to query (automatically adds --use-mirrors) Warning: This option has been deprecated and removed in pip version 7.0.0. Please use ``index_url`` and/or ``extra_index_url`` instead. build Unpack packages into ``build`` dir target Install packages into ``target`` dir download Download packages into ``download`` instead of installing them download_cache | cache_dir Cache downloaded packages in ``download_cache`` or ``cache_dir`` dir source Check out ``editable`` packages into ``source`` dir upgrade Upgrade all packages to the newest available version force_reinstall When upgrading, reinstall all packages even if they are already up-to-date. ignore_installed Ignore the installed packages (reinstalling instead) exists_action Default action when a path already exists: (s)witch, (i)gnore, (w)ipe, (b)ackup no_deps Ignore package dependencies no_install Download and unpack all packages, but don't actually install them no_download Don't download any packages, just install the ones already downloaded (completes an install run with ``--no-install``) install_options Extra arguments to be supplied to the setup.py install command (e.g. like ``--install-option='--install-scripts=/usr/local/bin'``). Use multiple --install-option options to pass multiple options to setup.py install. If you are using an option with a directory path, be sure to use absolute path. global_options Extra global options to be supplied to the setup.py call before the install command. user The user under which to run pip cwd Directory from which to run pip pre_releases Include pre-releases in the available versions cert Provide a path to an alternate CA bundle allow_all_external Allow the installation of all externally hosted files allow_external Allow the installation of externally hosted files (comma separated list) allow_unverified Allow the installation of insecure and unverifiable files (comma separated list) process_dependency_links Enable the processing of dependency links env_vars Set environment variables that some builds will depend on. For example, a Python C-module may have a Makefile that needs INCLUDE_PATH set to pick up a header file while compiling. This must be in the form of a dictionary or a mapping. Example: salt '*' pip.install django_app env_vars=\u0026quot;{'CUSTOM_PATH': '/opt/django_app'}\u0026quot; trusted_host Mark this host as trusted, even though it does not have valid or any HTTPS. use_vt Use VT terminal emulation (see output while installing) no_cache_dir Disable the cache. extra_args pip keyword and positional arguments not yet implemented in salt salt '*' pip.install pandas extra_args=\u0026quot;[{'--latest-pip-kwarg':'param'}, '--latest-pip-arg']\u0026quot; Warning: If unsupported options are passed here that are not supported in a minion's version of pip, a `No such option error` will be thrown. Will be translated into the following pip command: pip install pandas --latest-pip-kwarg param --latest-pip-arg disable_version_check Pip may periodically check PyPI to determine whether a new version of pip is available to download. Passing True for this option disables that check. CLI Example: salt '*' pip.install \u0026lt;package name\u0026gt;,\u0026lt;package2 name\u0026gt; salt '*' pip.install requirements=/path/to/requirements.txt salt '*' pip.install \u0026lt;package name\u0026gt; bin_env=/path/to/virtualenv salt '*' pip.install \u0026lt;package name\u0026gt; bin_env=/path/to/pip_bin Complicated CLI Example: salt '*' pip.install markdown,django editable=git+https://github.com/worldcompany/djangoembed.git#egg=djangoembed upgrade=True no_deps=True pip.is_installed:\nNew in version 2018.3.0 Changed in version 3006.0 Filter list of installed modules and return True if ``pkgname`` exists in the list of packages installed. CLI Example: salt '*' pip.is_installed salt pip.list:\nChanged in version 3006.0 Output list of installed apps from ``pip list`` in JSON format and check to see if ``prefix`` exists in the list of packages installed. Note: If the version of pip available is older than 9.0.0, parsing the ``freeze`` function output will be used to determine the name and version of installed modules. CLI Example: salt '*' pip.list salt pip.list_all_versions:\nNew in version 2017.7.3 List all available versions of a pip package pkg The package to check bin_env Path to pip (or to a virtualenv). This can be used to specify the path to the pip to use when more than one Python release is installed (e.g. ``/usr/bin/pip-2.7`` or ``/usr/bin/pip-2.6``. If a directory path is specified, it is assumed to be a virtualenv. include_alpha Include alpha versions in the list include_beta Include beta versions in the list include_rc Include release candidates versions in the list user The user under which to run pip cwd Directory from which to run pip index_url Base URL of Python Package Index New in version 2019.2.0 extra_index_url Additional URL of Python Package Index New in version 2019.2.0 CLI Example: salt '*' pip.list_all_versions \u0026lt;package name\u0026gt; pip.list_freeze_parse:\nNew in version 3006.0 Filter list of installed apps from ``freeze`` and check to see if ``prefix`` exists in the list of packages installed. Note: If the version of pip available is older than 8.0.3, the packages ``wheel``, ``setuptools``, and ``distribute`` will not be reported by this function even if they are installed. Unlike :py:func:`pip.freeze \u0026lt;salt.modules.pip.freeze\u0026gt;`, this function always reports the version of pip which is installed. CLI Example: salt '*' pip.list_freeze_parse salt pip.list_upgrades:\nCheck whether or not an upgrade is available for all packages CLI Example: salt '*' pip.list_upgrades pip.uninstall:\nUninstall packages individually or from a pip requirements file pkgs comma separated list of packages to install requirements Path to requirements file bin_env Path to pip (or to a virtualenv). This can be used to specify the path to the pip to use when more than one Python release is installed (e.g. ``/usr/bin/pip-2.7`` or ``/usr/bin/pip-2.6``. If a directory path is specified, it is assumed to be a virtualenv. log Log file where a complete (maximum verbosity) record will be kept proxy Specify a proxy in the format ``user:passwd@proxy.server:port``. Note that the ``user:password@`` is optional and required only if you are behind an authenticated proxy. If you provide ``user@proxy.server:port`` then you will be prompted for a password. Note: If the Minion has a globaly configured proxy - it will be used even if no proxy was set here. To explicitly disable proxy for pip you should pass ``False`` as a value. timeout Set the socket timeout (default 15 seconds) user The user under which to run pip cwd Directory from which to run pip use_vt Use VT terminal emulation (see output while installing) CLI Example: salt '*' pip.uninstall \u0026lt;package name\u0026gt;,\u0026lt;package2 name\u0026gt; salt '*' pip.uninstall requirements=/path/to/requirements.txt salt '*' pip.uninstall \u0026lt;package name\u0026gt; bin_env=/path/to/virtualenv salt '*' pip.uninstall \u0026lt;package name\u0026gt; bin_env=/path/to/pip_bin pip.upgrade:\nNew in version 2015.5.0 Upgrades outdated pip packages. Note: On Windows you can't update salt from pip using salt, so salt will be skipped Returns a dict containing the changes. {'\u0026lt;package\u0026gt;': {'old': '\u0026lt;old-version\u0026gt;', 'new': '\u0026lt;new-version\u0026gt;'}} CLI Example: salt '*' pip.upgrade pip.upgrade_available:\nNew in version 2015.5.0 Check whether or not an upgrade is available for a given package CLI Example: salt '*' pip.upgrade_available \u0026lt;package name\u0026gt; pip.version:\nNew in version 0.17.0 Returns the version of pip. Use ``bin_env`` to specify the path to a virtualenv and get the version of pip in that virtualenv. If unable to detect the pip version, returns ``None``. Changed in version 3001.1 The ``user`` parameter was added, to allow specifying the user who runs the version command. CLI Example: salt '*' pip.version pkg.add_repo_key:\nNew in version 2017.7.0 Add a repo key using ``apt-key add``. :param str path: The path of the key file to import. :param str text: The key data to import, in string form. :param str keyserver: The server to download the repo key specified by the keyid. :param str keyid: The key id of the repo key to add. :param str saltenv: The environment the key file resides in. :param bool aptkey: Use the binary apt-key. :param str keydir: The directory path to save keys. The default directory is /etc/apt/keyrings/ which is the recommended path for adding third party keys. This argument is only used when aptkey is False. :param str keyfile: The name of the key to add. This is only required when aptkey is False and you are using a keyserver. This argument is only used when aptkey is False. :return: A boolean representing whether the repo key was added. :rtype: bool Warning: The apt-key binary is deprecated and will last be available in Debian 11 and Ubuntu 22.04. It is recommended to use aptkey=False when using this module. CLI Examples: salt '*' pkg.add_repo_key 'salt://apt/sources/test.key' salt '*' pkg.add_repo_key text=\u0026quot;'$KEY1'\u0026quot; salt '*' pkg.add_repo_key keyserver='keyserver.example' keyid='0000AAAA' pkg.autoremove:\nNew in version 2015.5.0 Remove packages not required by another package using ``apt-get autoremove``. list_only : False Only retrieve the list of packages to be auto-removed, do not actually perform the auto-removal. purge : False Also remove package config data when autoremoving packages. New in version 2015.8.0 CLI Example: salt '*' pkg.autoremove salt '*' pkg.autoremove list_only=True salt '*' pkg.autoremove purge=True pkg.available_version:\nThis function is an alias of latest_version.\nChanged in version 3007.0 Return the latest version of the named package available for upgrade or installation. If more than one package name is specified, a dict of name/version pairs is returned. If the latest version of a given package is already installed, an empty string will be returned for that package. A specific repo can be requested using the ``fromrepo`` keyword argument. cache_valid_time New in version 2016.11.0 Skip refreshing the package database if refresh has already occurred within \u0026lt;value\u0026gt; seconds CLI Example: salt '*' pkg.latest_version \u0026lt;package name\u0026gt; salt '*' pkg.latest_version \u0026lt;package name\u0026gt; fromrepo=unstable salt '*' pkg.latest_version \u0026lt;package1\u0026gt; \u0026lt;package2\u0026gt; \u0026lt;package3\u0026gt; ... pkg.del_repo:\nDelete a repo from the sources.list / sources.list.d If the .list file is in the sources.list.d directory and the file that the repo exists in does not contain any other repo configuration, the file itself will be deleted. The repo passed in must be a fully formed repository definition string. CLI Examples: salt '*' pkg.del_repo \u0026quot;myrepo definition\u0026quot; pkg.del_repo_key:\nNew in version 2015.8.0 Remove a repo key using ``apt-key del`` name Repo from which to remove the key. Unnecessary if ``keyid`` is passed. keyid The KeyID of the GPG key to remove keyid_ppa : False If set to ``True``, the repo's GPG key ID will be looked up from ppa.launchpad.net and removed. Note: Setting this option to ``True`` requires that the ``name`` param also be passed. aptkey Use the binary apt-key. keydir The directory path to save keys. The default directory is /etc/apt/keyrings/ which is the recommended path for adding third party keys. Warning: The apt-key binary is deprecated and will last be available in Debian 11 and Ubuntu 22.04. It is recommended to use aptkey=False when using this module. CLI Examples: salt '*' pkg.del_repo_key keyid=0123ABCD salt '*' pkg.del_repo_key name='ppa:foo/bar' keyid_ppa=True pkg.file_dict:\nList the files that belong to a package, grouped by package. Not specifying any packages will return a list of _every_ file on the system's package database (not generally recommended). CLI Examples: salt '*' pkg.file_dict httpd salt '*' pkg.file_dict httpd postfix salt '*' pkg.file_dict pkg.file_list:\nList the files that belong to a package. Not specifying any packages will return a list of _every_ file on the system's package database (not generally recommended). CLI Examples: salt '*' pkg.file_list httpd salt '*' pkg.file_list httpd postfix salt '*' pkg.file_list pkg.get_repo:\nDisplay a repo from the sources.list / sources.list.d The repo passed in needs to be a complete repo entry. CLI Examples: salt '*' pkg.get_repo \u0026quot;myrepo definition\u0026quot; pkg.get_repo_keys:\nNew in version 2017.7.0 List known repo key details. :param bool aptkey: Use the binary apt-key. :param str keydir: The directory path to save keys. The default directory is /etc/apt/keyrings/ which is the recommended path for adding third party keys. This argument is only used when aptkey is False. :return: A dictionary containing the repo keys. :rtype: dict CLI Examples: salt '*' pkg.get_repo_keys pkg.get_selections:\nView package state from the dpkg database. Returns a dict of dicts containing the state, and package names: {'\u0026lt;host\u0026gt;': {'\u0026lt;state\u0026gt;': ['pkg1', ... ] }, ... } CLI Example: salt '*' pkg.get_selections salt '*' pkg.get_selections 'python-*' salt '*' pkg.get_selections state=hold salt '*' pkg.get_selections 'openssh*' state=hold pkg.hold:\nNew in version 2014.7.0 Set package in 'hold' state, meaning it will not be upgraded. name The name of the package, e.g., 'tmux' CLI Example: salt '*' pkg.hold \u0026lt;package name\u0026gt; pkgs A list of packages to hold. Must be passed as a python list. CLI Example: salt '*' pkg.hold pkgs='[\u0026quot;foo\u0026quot;, \u0026quot;bar\u0026quot;]' pkg.info_installed:\nReturn the information of the named package(s) installed on the system. New in version 2015.8.1 names The names of the packages for which to return information. failhard Whether to throw an exception if none of the packages are installed. Defaults to True. New in version 2016.11.3 CLI Example: salt '*' pkg.info_installed \u0026lt;package1\u0026gt; salt '*' pkg.info_installed \u0026lt;package1\u0026gt; \u0026lt;package2\u0026gt; \u0026lt;package3\u0026gt; ... salt '*' pkg.info_installed \u0026lt;package1\u0026gt; failhard=false pkg.install:\nChanged in version 2015.8.12,2016.3.3,2016.11.0 On minions running systemd\u0026gt;=205, `systemd-run(1)`_ is now used to isolate commands which modify installed packages from the ``salt-minion`` daemon's control group. This is done to keep systemd from killing any apt-get/dpkg commands spawned by Salt when the ``salt-minion`` service is restarted. (see ``KillMode`` in the `systemd.kill(5)`_ manpage for more information). If desired, usage of `systemd-run(1)`_ can be suppressed by setting a :mod:`config option \u0026lt;salt.modules.config.get\u0026gt;` called ``systemd.scope``, with a value of ``False`` (no quotes). .. _`systemd-run(1)`: https://www.freedesktop.org/software/systemd/man/systemd-run.html .. _`systemd.kill(5)`: https://www.freedesktop.org/software/systemd/man/systemd.kill.html Install the passed package, add refresh=True to update the dpkg database. name The name of the package to be installed. Note that this parameter is ignored if either \u0026quot;pkgs\u0026quot; or \u0026quot;sources\u0026quot; is passed. Additionally, please note that this option can only be used to install packages from a software repository. To install a package file manually, use the \u0026quot;sources\u0026quot; option. 32-bit packages can be installed on 64-bit systems by appending the architecture designation (``:i386``, etc.) to the end of the package name. CLI Example: salt '*' pkg.install \u0026lt;package name\u0026gt; refresh Whether or not to refresh the package database before installing. cache_valid_time New in version 2016.11.0 Skip refreshing the package database if refresh has already occurred within \u0026lt;value\u0026gt; seconds fromrepo Specify a package repository to install from (e.g., ``apt-get -t unstable install somepackage``) skip_verify Skip the GPG verification check (e.g., ``--allow-unauthenticated``, or ``--force-bad-verify`` for install from package file). debconf Provide the path to a debconf answers file, processed before installation. version Install a specific version of the package, e.g. 1.2.3~0ubuntu0. Ignored if \u0026quot;pkgs\u0026quot; or \u0026quot;sources\u0026quot; is passed. Changed in version 2018.3.0 version can now contain comparison operators (e.g. ``\u0026gt;1.2.3``, ``\u0026lt;=2.0``, etc.) reinstall : False Specifying reinstall=True will use ``apt-get install --reinstall`` rather than simply ``apt-get install`` for requested packages that are already installed. If a version is specified with the requested package, then ``apt-get install --reinstall`` will only be used if the installed version matches the requested version. New in version 2015.8.0 ignore_epoch : False Only used when the version of a package is specified using a comparison operator (e.g. ``\u0026gt;4.1``). If set to ``True``, then the epoch will be ignored when comparing the currently-installed version to the desired version. New in version 2018.3.0 Multiple Package Installation Options: pkgs A list of packages to install from a software repository. Must be passed as a python list. CLI Example: salt '*' pkg.install pkgs='[\u0026quot;foo\u0026quot;, \u0026quot;bar\u0026quot;]' salt '*' pkg.install pkgs='[\u0026quot;foo\u0026quot;, {\u0026quot;bar\u0026quot;: \u0026quot;1.2.3-0ubuntu0\u0026quot;}]' sources A list of DEB packages to install. Must be passed as a list of dicts, with the keys being package names, and the values being the source URI or local path to the package. Dependencies are automatically resolved and marked as auto-installed. 32-bit packages can be installed on 64-bit systems by appending the architecture designation (``:i386``, etc.) to the end of the package name. Changed in version 2014.7.0 CLI Example: salt '*' pkg.install sources='[{\u0026quot;foo\u0026quot;: \u0026quot;salt://foo.deb\u0026quot;},{\u0026quot;bar\u0026quot;: \u0026quot;salt://bar.deb\u0026quot;}]' force_yes Passes ``--force-yes`` to the apt-get command. Don't use this unless you know what you're doing. New in version 0.17.4 install_recommends Whether to install the packages marked as recommended. Default is True. New in version 2015.5.0 only_upgrade Only upgrade the packages, if they are already installed. Default is False. New in version 2015.5.0 force_conf_new Always install the new version of any configuration files. New in version 2015.8.0 Returns a dict containing the new package names and versions:: {'\u0026lt;package\u0026gt;': {'old': '\u0026lt;old-version\u0026gt;', 'new': '\u0026lt;new-version\u0026gt;'}} pkg.latest_version:\nChanged in version 3007.0 Return the latest version of the named package available for upgrade or installation. If more than one package name is specified, a dict of name/version pairs is returned. If the latest version of a given package is already installed, an empty string will be returned for that package. A specific repo can be requested using the ``fromrepo`` keyword argument. cache_valid_time New in version 2016.11.0 Skip refreshing the package database if refresh has already occurred within \u0026lt;value\u0026gt; seconds CLI Example: salt '*' pkg.latest_version \u0026lt;package name\u0026gt; salt '*' pkg.latest_version \u0026lt;package name\u0026gt; fromrepo=unstable salt '*' pkg.latest_version \u0026lt;package1\u0026gt; \u0026lt;package2\u0026gt; \u0026lt;package3\u0026gt; ... pkg.list_downloaded:\nNew in version 3000 List prefetched packages downloaded by apt in the local disk. root operate on a different root directory. CLI Example: salt '*' pkg.list_downloaded pkg.list_pkgs:\nList the packages currently installed in a dict:: {'\u0026lt;package_name\u0026gt;': '\u0026lt;version\u0026gt;'} removed If ``True``, then only packages which have been removed (but not purged) will be returned. purge_desired If ``True``, then only packages which have been marked to be purged, but can't be purged due to their status as dependencies for other installed packages, will be returned. Note that these packages will appear in installed Changed in version 2014.1.1 Packages in this state now correctly show up in the output of this function. CLI Example: salt '*' pkg.list_pkgs salt '*' pkg.list_pkgs versions_as_list=True pkg.list_repo_pkgs:\nNew in version 2017.7.0 Returns all available packages. Optionally, package names (and name globs) can be passed and the results will be filtered to packages matching those names. This function can be helpful in discovering the version or repo to specify in a :mod:`pkg.installed \u0026lt;salt.states.pkg.installed\u0026gt;` state. The return data will be a dictionary mapping package names to a list of version numbers, ordered from newest to oldest. For example: { 'bash': ['4.3-14ubuntu1.1', '4.3-14ubuntu1'], 'nginx': ['1.10.0-0ubuntu0.16.04.4', '1.9.15-0ubuntu1'] } CLI Examples: salt '*' pkg.list_repo_pkgs salt '*' pkg.list_repo_pkgs foo bar baz pkg.list_repos:\nLists all repos in the sources.list (and sources.lists.d) files CLI Example: salt '*' pkg.list_repos salt '*' pkg.list_repos disabled=True pkg.list_upgrades:\nList all available package upgrades. refresh Whether to refresh the package database before listing upgrades. Default: True. cache_valid_time New in version 2016.11.0 Skip refreshing the package database if refresh has already occurred within \u0026lt;value\u0026gt; seconds dist_upgrade Whether to list the upgrades using dist-upgrade vs upgrade. Default is to use dist-upgrade. CLI Example: salt '*' pkg.list_upgrades pkg.mod_repo:\nModify one or more values for a repo. If the repo does not exist, it will be created, so long as the definition is well formed. For Ubuntu the ``ppa:\u0026lt;project\u0026gt;/repo`` format is acceptable. ``ppa:`` format can only be used to create a new repository. The following options are available to modify a repo definition: architectures A comma-separated list of supported architectures, e.g. ``amd64`` If this option is not set, all architectures (configured in the system) will be used. comps A comma separated list of components for the repo, e.g. ``main`` file A file name to be used keyserver Keyserver to get gpg key from keyid Key ID or a list of key IDs to load with the ``keyserver`` argument key_url URL to a GPG key to add to the APT GPG keyring key_text GPG key in string form to add to the APT GPG keyring New in version 2018.3.0 consolidate : False If ``True``, will attempt to de-duplicate and consolidate sources comments Sometimes you want to supply additional information, but not as enabled configuration. All comments provided here will be joined into a single string and appended to the repo configuration with a comment marker (#) before it. New in version 2015.8.9 refresh : True Enable or disable (True or False) refreshing of the apt package database. The previous ``refresh_db`` argument was deprecated in favour of ``refresh```. The ``refresh_db`` argument will still continue to work to ensure backwards compatibility, but please change to using the preferred ``refresh``. Note: Due to the way keys are stored for APT, there is a known issue where the key won't be updated unless another change is made at the same time. Keys should be properly added on initial configuration. CLI Examples: salt '*' pkg.mod_repo 'myrepo definition' uri=http://new/uri salt '*' pkg.mod_repo 'myrepo definition' comps=main,universe pkg.normalize_name:\nStrips the architecture from the specified package name, if necessary. CLI Example: salt '*' pkg.normalize_name zsh:amd64 pkg.owner:\nNew in version 2014.7.0 Return the name of the package that owns the file. Multiple file paths can be passed. Like :mod:`pkg.version \u0026lt;salt.modules.aptpkg.version\u0026gt;`, if a single path is passed, a string will be returned, and if multiple paths are passed, a dictionary of file/package name pairs will be returned. If the file is not owned by a package, or is not present on the minion, then an empty string will be returned for that path. CLI Example: salt '*' pkg.owner /usr/bin/apachectl salt '*' pkg.owner /usr/bin/apachectl /usr/bin/basename pkg.parse_arch:\nParse name and architecture from the specified package name. CLI Example: salt '*' pkg.parse_arch zsh:amd64 pkg.purge:\nChanged in version 2015.8.12,2016.3.3,2016.11.0 On minions running systemd\u0026gt;=205, `systemd-run(1)`_ is now used to isolate commands which modify installed packages from the ``salt-minion`` daemon's control group. This is done to keep systemd from killing any apt-get/dpkg commands spawned by Salt when the ``salt-minion`` service is restarted. (see ``KillMode`` in the `systemd.kill(5)`_ manpage for more information). If desired, usage of `systemd-run(1)`_ can be suppressed by setting a :mod:`config option \u0026lt;salt.modules.config.get\u0026gt;` called ``systemd.scope``, with a value of ``False`` (no quotes). .. _`systemd-run(1)`: https://www.freedesktop.org/software/systemd/man/systemd-run.html .. _`systemd.kill(5)`: https://www.freedesktop.org/software/systemd/man/systemd.kill.html Remove packages via ``apt-get purge`` along with all configuration files. name The name of the package to be deleted. Multiple Package Options: pkgs A list of packages to delete. Must be passed as a python list. The ``name`` parameter will be ignored if this option is passed. New in version 0.16.0 Returns a dict containing the changes. CLI Example: salt '*' pkg.purge \u0026lt;package name\u0026gt; salt '*' pkg.purge \u0026lt;package1\u0026gt;,\u0026lt;package2\u0026gt;,\u0026lt;package3\u0026gt; salt '*' pkg.purge pkgs='[\u0026quot;foo\u0026quot;, \u0026quot;bar\u0026quot;]' pkg.refresh_db:\nUpdates the APT database to latest packages based upon repositories Returns a dict, with the keys being package databases and the values being the result of the update attempt. Values can be one of the following: - ``True``: Database updated successfully - ``False``: Problem updating database - ``None``: Database already up-to-date cache_valid_time New in version 2016.11.0 Skip refreshing the package database if refresh has already occurred within \u0026lt;value\u0026gt; seconds failhard If False, return results of Err lines as ``False`` for the package database that encountered the error. If True, raise an error with a list of the package databases that encountered errors. CLI Example: salt '*' pkg.refresh_db pkg.remove:\nChanged in version 2015.8.12,2016.3.3,2016.11.0 On minions running systemd\u0026gt;=205, `systemd-run(1)`_ is now used to isolate commands which modify installed packages from the ``salt-minion`` daemon's control group. This is done to keep systemd from killing any apt-get/dpkg commands spawned by Salt when the ``salt-minion`` service is restarted. (see ``KillMode`` in the `systemd.kill(5)`_ manpage for more information). If desired, usage of `systemd-run(1)`_ can be suppressed by setting a :mod:`config option \u0026lt;salt.modules.config.get\u0026gt;` called ``systemd.scope``, with a value of ``False`` (no quotes). .. _`systemd-run(1)`: https://www.freedesktop.org/software/systemd/man/systemd-run.html .. _`systemd.kill(5)`: https://www.freedesktop.org/software/systemd/man/systemd.kill.html Remove packages using ``apt-get remove``. name The name of the package to be deleted. Multiple Package Options: pkgs A list of packages to delete. Must be passed as a python list. The ``name`` parameter will be ignored if this option is passed. New in version 0.16.0 Returns a dict containing the changes. CLI Example: salt '*' pkg.remove \u0026lt;package name\u0026gt; salt '*' pkg.remove \u0026lt;package1\u0026gt;,\u0026lt;package2\u0026gt;,\u0026lt;package3\u0026gt; salt '*' pkg.remove pkgs='[\u0026quot;foo\u0026quot;, \u0026quot;bar\u0026quot;]' pkg.services_need_restart:\nNew in version 3003 List services that use files which have been changed by the package manager. It might be needed to restart them. Requires checkrestart from the debian-goodies package. CLI Examples: salt '*' pkg.services_need_restart pkg.set_selections:\nChange package state in the dpkg database. The state can be any one of, documented in ``dpkg(1)``: - install - hold - deinstall - purge This command is commonly used to mark specific packages to be held from being upgraded, that is, to be kept at a certain version. When a state is changed to anything but being held, then it is typically followed by ``apt-get -u dselect-upgrade``. Note: Be careful with the ``clear`` argument, since it will start with setting all packages to deinstall state. Returns a dict of dicts containing the package names, and the new and old versions: {'\u0026lt;host\u0026gt;': {'\u0026lt;package\u0026gt;': {'new': '\u0026lt;new-state\u0026gt;', 'old': '\u0026lt;old-state\u0026gt;'} }, ... } CLI Example: salt '*' pkg.set_selections selection='{\u0026quot;install\u0026quot;: [\u0026quot;netcat\u0026quot;]}' salt '*' pkg.set_selections selection='{\u0026quot;hold\u0026quot;: [\u0026quot;openssh-server\u0026quot;, \u0026quot;openssh-client\u0026quot;]}' salt '*' pkg.set_selections salt://path/to/file salt '*' pkg.set_selections salt://path/to/file clear=True pkg.show:\nNew in version 2019.2.0 Runs an ``apt-cache show`` on the passed package names, and returns the results in a nested dictionary. The top level of the return data will be the package name, with each package name mapping to a dictionary of version numbers to any additional information returned by ``apt-cache show``. filter An optional comma-separated list (or quoted Python list) of case-insensitive keys on which to filter. This allows one to restrict the information returned for each package to a smaller selection of pertinent items. refresh : False If ``True``, the apt cache will be refreshed first. By default, no refresh is performed. CLI Examples: salt myminion pkg.show gawk salt myminion pkg.show 'nginx-*' salt myminion pkg.show 'nginx-*' filter=description,provides pkg.unhold:\nNew in version 2014.7.0 Set package current in 'hold' state to install state, meaning it will be upgraded. name The name of the package, e.g., 'tmux' CLI Example: salt '*' pkg.unhold \u0026lt;package name\u0026gt; pkgs A list of packages to unhold. Must be passed as a python list. CLI Example: salt '*' pkg.unhold pkgs='[\u0026quot;foo\u0026quot;, \u0026quot;bar\u0026quot;]' pkg.upgrade:\nChanged in version 2015.8.12,2016.3.3,2016.11.0 On minions running systemd\u0026gt;=205, `systemd-run(1)`_ is now used to isolate commands which modify installed packages from the ``salt-minion`` daemon's control group. This is done to keep systemd from killing any apt-get/dpkg commands spawned by Salt when the ``salt-minion`` service is restarted. (see ``KillMode`` in the `systemd.kill(5)`_ manpage for more information). If desired, usage of `systemd-run(1)`_ can be suppressed by setting a :mod:`config option \u0026lt;salt.modules.config.get\u0026gt;` called ``systemd.scope``, with a value of ``False`` (no quotes). .. _`systemd-run(1)`: https://www.freedesktop.org/software/systemd/man/systemd-run.html .. _`systemd.kill(5)`: https://www.freedesktop.org/software/systemd/man/systemd.kill.html Upgrades all packages via ``apt-get upgrade`` or ``apt-get dist-upgrade`` if ``dist_upgrade`` is ``True``. Returns a dictionary containing the changes: {'\u0026lt;package\u0026gt;': {'old': '\u0026lt;old-version\u0026gt;', 'new': '\u0026lt;new-version\u0026gt;'}} dist_upgrade Whether to perform the upgrade using dist-upgrade vs upgrade. Default is to use upgrade. New in version 2014.7.0 refresh : True If ``True``, the apt cache will be refreshed first. By default, this is ``True`` and a refresh is performed. cache_valid_time New in version 2016.11.0 Skip refreshing the package database if refresh has already occurred within \u0026lt;value\u0026gt; seconds download_only (or downloadonly) Only download the packages, don't unpack or install them. Use downloadonly to be in line with yum and zypper module. New in version 2018.3.0 force_conf_new Always install the new version of any configuration files. New in version 2015.8.0 allow_downgrades Allow apt to downgrade packages without a prompt. New in version 3005 CLI Example: salt '*' pkg.upgrade pkg.upgrade_available:\nCheck whether or not an upgrade is available for a given package CLI Example: salt '*' pkg.upgrade_available \u0026lt;package name\u0026gt; pkg.version:\nReturns a string representing the package version or an empty string if not installed. If more than one package name is specified, a dict of name/version pairs is returned. CLI Example: salt '*' pkg.version \u0026lt;package name\u0026gt; salt '*' pkg.version \u0026lt;package1\u0026gt; \u0026lt;package2\u0026gt; \u0026lt;package3\u0026gt; ... pkg.version_cmp:\nDo a cmp-style comparison on two packages. Return -1 if pkg1 \u0026lt; pkg2, 0 if pkg1 == pkg2, and 1 if pkg1 \u0026gt; pkg2. Return None if there was a problem making the comparison. ignore_epoch : False Set to ``True`` to ignore the epoch when comparing versions New in version 2015.8.10,2016.3.2 CLI Example: salt '*' pkg.version_cmp '0.2.4-0ubuntu1' '0.2.4.1-0ubuntu1' pkg_resource.add_pkg:\nAdd a package to a dict of installed packages. CLI Example: salt '*' pkg_resource.add_pkg '{}' bind 9 pkg_resource.check_extra_requirements:\nCheck if the installed package already has the given requirements. This function will return the result of ``pkg.check_extra_requirements`` if this function exists for the minion, otherwise it will return True. CLI Example: salt '*' pkg_resource.check_extra_requirements \u0026lt;pkgname\u0026gt; \u0026lt;extra_requirements\u0026gt; pkg_resource.format_pkg_list:\nFormats packages according to parameters for list_pkgs. pkg_resource.format_version:\nFormats a version string for list_pkgs. pkg_resource.pack_sources:\nAccepts list of dicts (or a string representing a list of dicts) and packs the key/value pairs into a single dict. ``'[{\u0026quot;foo\u0026quot;: \u0026quot;salt://foo.rpm\u0026quot;}, {\u0026quot;bar\u0026quot;: \u0026quot;salt://bar.rpm\u0026quot;}]'`` would become ``{\u0026quot;foo\u0026quot;: \u0026quot;salt://foo.rpm\u0026quot;, \u0026quot;bar\u0026quot;: \u0026quot;salt://bar.rpm\u0026quot;}`` normalise : True Normalise the package name by removing the architecture, if the architecture of the package is different from the architecture of the operating system. The ability to disable this behaviour is useful for poorly-created packages which include the architecture as an actual part of the name, such as kernel modules which match a specific kernel version. New in version 2015.8.0 CLI Example: salt '*' pkg_resource.pack_sources '[{\u0026quot;foo\u0026quot;: \u0026quot;salt://foo.rpm\u0026quot;}, {\u0026quot;bar\u0026quot;: \u0026quot;salt://bar.rpm\u0026quot;}]' pkg_resource.parse_targets:\nParses the input to pkg.install and returns back the package(s) to be installed. Returns a list of packages, as well as a string noting whether the packages are to come from a repository or a binary package. CLI Example: salt '*' pkg_resource.parse_targets pkg_resource.sort_pkglist:\nAccepts a dict obtained from pkg.list_pkgs() and sorts in place the list of versions for any packages that have multiple versions installed, so that two package lists can be compared to one another. CLI Example: salt '*' pkg_resource.sort_pkglist '[\u0026quot;3.45\u0026quot;, \u0026quot;2.13\u0026quot;]' pkg_resource.stringify:\nTakes a dict of package name/version information and joins each list of installed versions into a string. CLI Example: salt '*' pkg_resource.stringify 'vim: 7.127' pkg_resource.version:\nCommon interface for obtaining the version of installed packages. CLI Example: salt '*' pkg_resource.version vim salt '*' pkg_resource.version foo bar baz salt '*' pkg_resource.version 'python*' pkg_resource.version_clean:\nClean the version string removing extra data. This function will simply try to call ``pkg.version_clean``. CLI Example: salt '*' pkg_resource.version_clean \u0026lt;version_string\u0026gt; pkg_resource.version_compare:\nNew in version 3001 Perform a version comparison, using (where available) platform-specific version comparison tools to make the comparison. ver1 The first version to be compared oper One of `==`, `!=`, `\u0026gt;=`, `\u0026lt;=`, `\u0026gt;`, `\u0026lt;` ver2 The second version to be compared Note: To avoid shell interpretation, each of the above values should be quoted when this function is used on the CLI. ignore_epoch : False If ``True``, both package versions will have their epoch prefix stripped before comparison. This function is useful in Jinja templates, to perform specific actions when a package's version meets certain criteria. For example: {%- set postfix_version = salt.pkg.version('postfix') %} {%- if postfix_version and salt.pkg_resource.version_compare(postfix_version, '\u0026gt;=', '3.3', ignore_epoch=True) %} {#- do stuff #} {%- endif %} CLI Examples: salt myminion pkg_resource.version_compare '3.5' '\u0026lt;=' '2.4' salt myminion pkg_resource.version_compare '3.5' '\u0026lt;=' '2.4' ignore_epoch=True postfix.delete:\nDelete message(s) from the mail queue CLI Example: salt '*' postfix.delete 5C33CA0DEA salt '*' postfix.delete ALL postfix.hold:\nPut message(s) on hold from the mail queue CLI Example: salt '*' postfix.hold 5C33CA0DEA salt '*' postfix.hold ALL postfix.requeue:\nRequeue message(s) in the mail queue CLI Example: salt '*' postfix.requeue 5C33CA0DEA salt '*' postfix.requeue ALL postfix.set_main:\nSet a single config value in the main.cf file. If the value does not already exist, it will be appended to the end. CLI Example: salt \u0026lt;minion\u0026gt; postfix.set_main mailq_path /usr/bin/mailq postfix.set_master:\nSet a single config value in the master.cf file. If the value does not already exist, it will be appended to the end. Because of shell parsing issues, '-' cannot be set as a value, as is normal in the master.cf file; either 'y', 'n' or a number should be used when calling this function from the command line. If the value used matches the default, it will internally be converted to a '-'. Calling this function from the Python API is not affected by this limitation The settings and their default values, in order, are: service (required), conn_type (required), private (y), unpriv (y), chroot (y), wakeup (n), maxproc (100), command (required). By default, this function will write out the changes to the master.cf file, and then returns the full contents of the file. By setting the ``write_conf`` option to ``False``, it will skip writing the file. CLI Example: salt \u0026lt;minion\u0026gt; postfix.set_master smtp inet n y n n 100 smtpd postfix.show_main:\nReturn a dict of active config values. This does not include comments, spacing or order. Bear in mind that order is functionally important in the main.cf file, since keys can be referred to as variables. This means that the data returned from this function should not be used for direct modification of the main.cf file; other functions are available for that. CLI Examples: salt \u0026lt;minion\u0026gt; postfix.show_main salt \u0026lt;minion\u0026gt; postfix.show_main path=/path/to/main.cf postfix.show_master:\nReturn a dict of active config values. This does not include comments, spacing or order. The data returned from this function should not be used for direct modification of the main.cf file; other functions are available for that. CLI Examples: salt \u0026lt;minion\u0026gt; postfix.show_master salt \u0026lt;minion\u0026gt; postfix.show_master path=/path/to/master.cf postfix.show_queue:\nShow contents of the mail queue CLI Example: salt '*' postfix.show_queue postfix.unhold:\nSet held message(s) in the mail queue to unheld CLI Example: salt '*' postfix.unhold 5C33CA0DEA salt '*' postfix.unhold ALL ps.boot_time:\nReturn the boot time in number of seconds since the epoch began. CLI Example: time_format Optionally specify a `strftime`_ format string. Use ``time_format='%c'`` to get a nicely-formatted locale specific date and time (i.e. ``Fri May 2 19:08:32 2014``). .. _strftime: https://docs.python.org/2/library/datetime.html#strftime-strptime-behaviour New in version 2014.1.4 salt '*' ps.boot_time ps.cpu_percent:\nReturn the percent of time the CPU is busy. interval the number of seconds to sample CPU usage over per_cpu if True return an array of CPU percent busy for each CPU, otherwise aggregate all percents into one number CLI Example: salt '*' ps.cpu_percent ps.cpu_times:\nReturn the percent of time the CPU spends in each state, e.g. user, system, idle, nice, iowait, irq, softirq. per_cpu if True return an array of percents for each CPU, otherwise aggregate all percents into one number CLI Example: salt '*' ps.cpu_times ps.disk_io_counters:\nReturn disk I/O statistics. CLI Example: salt '*' ps.disk_io_counters salt '*' ps.disk_io_counters device=sda1 ps.disk_partition_usage:\nReturn a list of disk partitions plus the mount point, filesystem and usage statistics. CLI Example: salt '*' ps.disk_partition_usage ps.disk_partitions:\nReturn a list of disk partitions and their device, mount point, and filesystem type. all if set to False, only return local, physical partitions (hard disk, USB, CD/DVD partitions). If True, return all filesystems. CLI Example: salt '*' ps.disk_partitions ps.disk_usage:\nGiven a path, return a dict listing the total available space as well as the free space, and used space. CLI Example: salt '*' ps.disk_usage /home ps.get_pid_list:\nReturn a list of process ids (PIDs) for all running processes. CLI Example: salt '*' ps.get_pid_list ps.get_users:\nReturn logged-in users. CLI Example: salt '*' ps.get_users ps.kill_pid:\nKill a process by PID. salt 'minion' ps.kill_pid pid [signal=signal_number] pid PID of process to kill. signal Signal to send to the process. See manpage entry for kill for possible values. Default: 15 (SIGTERM). **Example:** Send SIGKILL to process with PID 2000: salt 'minion' ps.kill_pid 2000 signal=9 ps.lsof:\nRetrieve the lsof information of the given process name. CLI Example: salt '*' ps.lsof apache2 ps.netstat:\nRetrieve the netstat information of the given process name. CLI Example: salt '*' ps.netstat apache2 ps.network_io_counters:\nReturn network I/O statistics. CLI Example: salt '*' ps.network_io_counters salt '*' ps.network_io_counters interface=eth0 ps.num_cpus:\nReturn the number of CPUs. CLI Example: salt '*' ps.num_cpus ps.pgrep:\nReturn the pids for processes matching a pattern. If full is true, the full command line is searched for a match, otherwise only the name of the command is searched. salt '*' ps.pgrep pattern [user=username] [full=(true|false)] pattern Pattern to search for in the process list. user Limit matches to the given username. Default: All users. full A boolean value indicating whether only the name of the command or the full command line should be matched against the pattern. pattern_is_regex This flag enables ps.pgrep to mirror the regex search functionality found in the pgrep command line utility. New in version 3001 **Examples:** Find all httpd processes on all 'www' minions: salt 'www.*' ps.pgrep httpd Find all bash processes owned by user 'tom': salt '*' ps.pgrep bash user=tom ps.pkill:\nKill processes matching a pattern. salt '*' ps.pkill pattern [user=username] [signal=signal_number] \\ [full=(true|false)] pattern Pattern to search for in the process list. user Limit matches to the given username. Default: All users. signal Signal to send to the process(es). See manpage entry for kill for possible values. Default: 15 (SIGTERM). full A boolean value indicating whether only the name of the command or the full command line should be matched against the pattern. **Examples:** Send SIGHUP to all httpd processes on all 'www' minions: salt 'www.*' ps.pkill httpd signal=1 Send SIGKILL to all bash processes owned by user 'tom': salt '*' ps.pkill bash signal=9 user=tom ps.proc_info:\nReturn a dictionary of information for a process id (PID). CLI Example: salt '*' ps.proc_info 2322 salt '*' ps.proc_info 2322 attrs='[\u0026quot;pid\u0026quot;, \u0026quot;name\u0026quot;]' pid PID of process to query. attrs Optional list of desired process attributes. The list of possible attributes can be found here: https://psutil.readthedocs.io/en/latest/#processes ps.psaux:\nRetrieve information corresponding to a \u0026quot;ps aux\u0026quot; filtered with the given pattern. It could be just a name or a regular expression (using python search from \u0026quot;re\u0026quot; module). CLI Example: salt '*' ps.psaux www-data.+apache2 ps.ss:\nRetrieve the ss information of the given process name. CLI Example: salt '*' ps.ss apache2 New in version 2016.11.6 ps.status:\nNew in version 3006.0 Returns a list of processes according to their state. CLI Example: salt '*' ps.status STATUS where ``STATUS`` is one of * running * sleeping * disk_sleep * stopped * tracing_stop * zombie * dead * wake_kill * waking * parked (Linux) * idle (Linux, macOS, FreeBSD) * locked (FreeBSD) * waiting (FreeBSD) * suspended (NetBSD) See https://psutil.readthedocs.io/en/latest/index.html?highlight=status#process-status-constants ps.swap_memory:\nNew in version 2014.7.0 Return a dict that describes swap memory statistics. Note: This function is only available in psutil version 0.6.0 and above. CLI Example: salt '*' ps.swap_memory ps.top:\nReturn a list of top CPU consuming processes during the interval. num_processes = return the top N CPU consuming processes interval = the number of seconds to sample CPU usage over CLI Examples: salt '*' ps.top salt '*' ps.top 5 10 ps.total_physical_memory:\nReturn the total number of bytes of physical memory. CLI Example: salt '*' ps.total_physical_memory ps.virtual_memory:\nNew in version 2014.7.0 Return a dict that describes statistics about system memory usage. Note: This function is only available in psutil version 0.6.0 and above. CLI Example: salt '*' ps.virtual_memory publish.full_data:\nReturn the full data about the publication, this is invoked in the same way as the publish function CLI Example: salt system.example.com publish.full_data '*' cmd.run 'ls -la /tmp' .. admonition:: Attention If you need to pass a value to a function argument and that value contains an equal sign, you **must** include the argument name. For example: salt '*' publish.full_data test.kwarg arg='cheese=spam' publish.publish:\nPublish a command from the minion out to other minions. Publications need to be enabled on the Salt master and the minion needs to have permission to publish the command. The Salt master will also prevent a recursive publication loop, this means that a minion cannot command another minion to command another minion as that would create an infinite command loop. The ``tgt_type`` argument is used to pass a target other than a glob into the execution, the available options are: - glob - pcre - grain - grain_pcre - pillar - pillar_pcre - ipcidr - range - compound Changed in version 2017.7.0 The ``expr_form`` argument has been renamed to ``tgt_type``, earlier releases must use ``expr_form``. Note that for pillar matches must be exact, both in the pillar matcher and the compound matcher. No globbing is supported. The arguments sent to the minion publish function are separated with commas. This means that for a minion executing a command with multiple args it will look like this: salt system.example.com publish.publish '*' user.add 'foo,1020,1020' salt system.example.com publish.publish 'os:Fedora' network.interfaces '' grain CLI Example: salt system.example.com publish.publish '*' cmd.run 'ls -la /tmp' .. admonition:: Attention If you need to pass a value to a function argument and that value contains an equal sign, you **must** include the argument name. For example: salt '*' publish.publish test.kwarg arg='cheese=spam' Multiple keyword arguments should be passed as a list. salt '*' publish.publish test.kwarg arg=\u0026quot;['cheese=spam','spam=cheese']\u0026quot; When running via salt-call, the `via_master` flag may be set to specific which master the publication should be sent to. Only one master may be specified. If unset, the publication will be sent only to the first master in minion configuration. publish.runner:\nExecute a runner on the master and return the data from the runner function CLI Example: salt publish.runner manage.down pushover.post_message:\nSend a message to a Pushover user or group. :param user: The user or group to send to, must be key of user or group not email address. :param message: The message to send to the PushOver user or group. :param title: Specify who the message is from. :param priority: The priority of the message, defaults to 0. :param expire: The message should expire after N number of seconds. :param retry: The number of times the message should be retried. :param sound: The sound to associate with the message. :param api_version: The PushOver API version, if not specified in the configuration. :param token: The PushOver token, if not specified in the configuration. :return: Boolean if message was sent successfully. CLI Example: salt '*' pushover.post_message user='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' title='Message from Salt' message='Build is done' salt '*' pushover.post_message user='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' title='Message from Salt' message='Build is done' priority='2' expire='720' retry='5' pyenv.default:\nReturns or sets the currently defined default python. python=None The version to set as the default. Should match one of the versions listed by :mod:`pyenv.versions \u0026lt;salt.modules.pyenv.versions\u0026gt;`. Leave blank to return the current default. CLI Example: salt '*' pyenv.default salt '*' pyenv.default 2.0.0-p0 pyenv.do:\nExecute a python command with pyenv's shims from the user or the system. CLI Example: salt '*' pyenv.do 'gem list bundler' salt '*' pyenv.do 'gem list bundler' deploy pyenv.do_with_python:\nExecute a python command with pyenv's shims using a specific python version. CLI Example: salt '*' pyenv.do_with_python 2.0.0-p0 'gem list bundler' salt '*' pyenv.do_with_python 2.0.0-p0 'gem list bundler' deploy pyenv.install:\nInstall pyenv systemwide CLI Example: salt '*' pyenv.install pyenv.install_python:\nInstall a python implementation. python The version of python to install, should match one of the versions listed by pyenv.list CLI Example: salt '*' pyenv.install_python 2.0.0-p0 pyenv.is_installed:\nCheck if pyenv is installed. CLI Example: salt '*' pyenv.is_installed pyenv.list:\nList the installable versions of python. CLI Example: salt '*' pyenv.list pyenv.rehash:\nRun pyenv rehash to update the installed shims. CLI Example: salt '*' pyenv.rehash pyenv.uninstall_python:\nUninstall a python implementation. python The version of python to uninstall. Should match one of the versions listed by :mod:`pyenv.versions \u0026lt;salt.modules.pyenv.versions\u0026gt;` CLI Example: salt '*' pyenv.uninstall_python 2.0.0-p0 pyenv.update:\nUpdates the current versions of pyenv and python-Build CLI Example: salt '*' pyenv.update pyenv.versions:\nList the installed versions of python. CLI Example: salt '*' pyenv.versions random.get_str:\nNew in version 2014.7.0 Changed in version 3004 Changed the default character set used to include symbols and implemented arguments to control the used character set. Returns a random string of the specified length. length : 20 Any valid number of bytes. chars : None New in version 3004 String with any character that should be used to generate random string. This argument supersedes all other character controlling arguments. lowercase : True New in version 3004 Use lowercase letters in generated random string. (see :py:data:`string.ascii_lowercase`) This argument is superseded by chars. uppercase : True New in version 3004 Use uppercase letters in generated random string. (see :py:data:`string.ascii_uppercase`) This argument is superseded by chars. digits : True New in version 3004 Use digits in generated random string. (see :py:data:`string.digits`) This argument is superseded by chars. printable : False New in version 3004 Use printable characters in generated random string and includes lowercase, uppercase, digits, punctuation and whitespace. (see :py:data:`string.printable`) It is disabled by default as includes whitespace characters which some systems do not handle well in passwords. This argument also supersedes all other classes because it includes them. This argument is superseded by chars. punctuation : True New in version 3004 Use punctuation characters in generated random string. (see :py:data:`string.punctuation`) This argument is superseded by chars. whitespace : False New in version 3004 Use whitespace characters in generated random string. (see :py:data:`string.whitespace`) It is disabled by default as some systems do not handle whitespace characters in passwords well. This argument is superseded by chars. CLI Example: salt '*' random.get_str 128 salt '*' random.get_str 128 chars='abc123.!()' salt '*' random.get_str 128 lowercase=False whitespace=True random.hash:\nNew in version 2014.7.0 Encodes a value with the specified encoder. value The value to be hashed. algorithm : sha512 The algorithm to use. May be any valid algorithm supported by hashlib. CLI Example: salt '*' random.hash 'I am a string' md5 random.rand_int:\nReturns a random integer number between the start and end number. New in version 2015.5.3 start : 1 Any valid integer number end : 10 Any valid integer number seed : Optional hashable object Changed in version 2019.2.0 Added seed argument. Will return the same result when run with the same seed. CLI Example: salt '*' random.rand_int 1 10 random.sample:\nReturn a given sample size from a list. By default, the random number generator uses the current system time unless given a seed value. New in version 3005 value A list to e used as input. size The sample size to return. seed Any value which will be hashed as a seed for random. CLI Example: salt '*' random.sample '[\u0026quot;one\u0026quot;, \u0026quot;two\u0026quot;]' 1 seed=\u0026quot;something\u0026quot; random.seed:\nReturns a random number within a range. Optional hash argument can be any hashable object. If hash is omitted or None, the id of the minion is used. New in version 2015.8.0 hash: None Any hashable object. range: 10 Any valid integer number CLI Example: salt '*' random.seed 10 hash=None random.shadow_hash:\nGenerates a salted hash suitable for /etc/shadow. crypt_salt : None Salt to be used in the generation of the hash. If one is not provided, a random salt will be generated. password : None Value to be salted and hashed. If one is not provided, a random password will be generated. algorithm : sha512 Hash algorithm to use. CLI Example: salt '*' random.shadow_hash 'My5alT' 'MyP@asswd' md5 random.shuffle:\nReturn a shuffled copy of an input list. By default, the random number generator uses the current system time unless given a seed value. New in version 3005 value A list to be used as input. seed Any value which will be hashed as a seed for random. CLI Example: salt '*' random.shuffle '[\u0026quot;one\u0026quot;, \u0026quot;two\u0026quot;]' seed=\u0026quot;something\u0026quot; random.str_encode:\nNew in version 2014.7.0 value The value to be encoded. encoder : base64 The encoder to use on the subsequent string. CLI Example: salt '*' random.str_encode 'I am a new string' base64 random_org.generateBlobs:\nList all Slack users. :param api_key: The Random.org api key. :param api_version: The Random.org api version. :param format: Specifies the format in which the blobs will be returned. Values allowed are base64 and hex. :return: The user list. CLI Example: salt '*' get_integers number=5 min=1 max=6 salt '*' get_integers number=5 min=1 max=6 random_org.generateDecimalFractions:\nGenerates true random decimal fractions :param api_key: The Random.org api key. :param api_version: The Random.org api version. :param number: How many random decimal fractions you need. Must be within the [1,1e4] range. :param decimalPlaces: The number of decimal places to use. Must be within the [1,20] range. :param replacement: Specifies whether the random numbers should be picked with replacement. The default (true) will cause the numbers to be picked with replacement, i.e., the resulting numbers may contain duplicate values (like a series of dice rolls). If you want the numbers picked to be unique (like raffle tickets drawn from a container), set this value to false. :return: A list of decimal fraction CLI Example: salt '*' random_org.generateDecimalFractions number=10 decimalPlaces=4 salt '*' random_org.generateDecimalFractions number=10 decimalPlaces=4 replacement=True random_org.generateGaussians:\nThis method generates true random numbers from a Gaussian distribution (also known as a normal distribution). :param api_key: The Random.org api key. :param api_version: The Random.org api version. :param number: How many random numbers you need. Must be within the [1,1e4] range. :param mean: The distribution's mean. Must be within the [-1e6,1e6] range. :param standardDeviation: The distribution's standard deviation. Must be within the [-1e6,1e6] range. :param significantDigits: The number of significant digits to use. Must be within the [2,20] range. :return: The user list. CLI Example: salt '*' random_org.generateGaussians number=10 mean=0.0 standardDeviation=1.0 significantDigits=8 random_org.generateIntegers:\nGenerate random integers :param api_key: The Random.org api key. :param api_version: The Random.org api version. :param number: The number of integers to generate :param minimum: The lower boundary for the range from which the random numbers will be picked. Must be within the [-1e9,1e9] range. :param maximum: The upper boundary for the range from which the random numbers will be picked. Must be within the [-1e9,1e9] range. :param replacement: Specifies whether the random numbers should be picked with replacement. The default (true) will cause the numbers to be picked with replacement, i.e., the resulting numbers may contain duplicate values (like a series of dice rolls). If you want the numbers picked to be unique (like raffle tickets drawn from a container), set this value to false. :param base: Specifies the base that will be used to display the numbers. Values allowed are 2, 8, 10 and 16. This affects the JSON types and formatting of the resulting data as discussed below. :return: A list of integers. CLI Example: salt '*' random_org.generateIntegers number=5 minimum=1 maximum=6 salt '*' random_org.generateIntegers number=5 minimum=2 maximum=255 base=2 random_org.generateStrings:\nGenerate random strings. :param api_key: The Random.org api key. :param api_version: The Random.org api version. :param number: The number of strings to generate. :param length: The length of each string. Must be within the [1,20] range. All strings will be of the same length :param characters: A string that contains the set of characters that are allowed to occur in the random strings. The maximum number of characters is 80. :param replacement: Specifies whether the random strings should be picked with replacement. The default (true) will cause the strings to be picked with replacement, i.e., the resulting list of strings may contain duplicates (like a series of dice rolls). If you want the strings to be unique (like raffle tickets drawn from a container), set this value to false. :return: A list of strings. CLI Example: salt '*' random_org.generateStrings number=5 length=8 characters='abcdefghijklmnopqrstuvwxyz' salt '*' random_org.generateStrings number=10 length=16 characters'abcdefghijklmnopqrstuvwxyz' random_org.generateUUIDs:\nGenerate a list of random UUIDs :param api_key: The Random.org api key. :param api_version: The Random.org api version. :param number: How many random UUIDs you need. Must be within the [1,1e3] range. :return: A list of UUIDs CLI Example: salt '*' random_org.generateUUIDs number=5 random_org.getUsage:\nShow current usages statistics :param api_key: The Random.org api key. :param api_version: The Random.org api version. :return: The current usage statistics. CLI Example: salt '*' random_org.getUsage salt '*' random_org.getUsage api_key=peWcBiMOS9HrZG15peWcBiMOS9HrZG15 api_version=1 rbenv.default:\nReturns or sets the currently defined default ruby ruby The version to set as the default. Should match one of the versions listed by :py:func:`rbenv.versions \u0026lt;salt.modules.rbenv.versions\u0026gt;`. Leave blank to return the current default. CLI Example: salt '*' rbenv.default salt '*' rbenv.default 2.0.0-p0 rbenv.do:\nExecute a ruby command with rbenv's shims from the user or the system CLI Example: salt '*' rbenv.do 'gem list bundler' salt '*' rbenv.do 'gem list bundler' deploy rbenv.do_with_ruby:\nExecute a ruby command with rbenv's shims using a specific ruby version CLI Example: salt '*' rbenv.do_with_ruby 2.0.0-p0 'gem list bundler' salt '*' rbenv.do_with_ruby 2.0.0-p0 'gem list bundler' runas=deploy rbenv.install:\nInstall rbenv systemwide CLI Example: salt '*' rbenv.install rbenv.install_ruby:\nInstall a ruby implementation. ruby The version of Ruby to install, should match one of the versions listed by :py:func:`rbenv.list \u0026lt;salt.modules.rbenv.list\u0026gt;` runas The user under which to run rbenv. If not specified, then rbenv will be run as the user under which Salt is running. Additional environment variables can be configured in pillar / grains / master: rbenv: build_env: 'CONFIGURE_OPTS=\u0026quot;--no-tcmalloc\u0026quot; CFLAGS=\u0026quot;-fno-tree-dce\u0026quot;' CLI Example: salt '*' rbenv.install_ruby 2.0.0-p0 rbenv.is_installed:\nCheck if rbenv is installed CLI Example: salt '*' rbenv.is_installed rbenv.list:\nList the installable versions of ruby runas The user under which to run rbenv. If not specified, then rbenv will be run as the user under which Salt is running. CLI Example: salt '*' rbenv.list rbenv.rehash:\nRun ``rbenv rehash`` to update the installed shims runas The user under which to run rbenv. If not specified, then rbenv will be run as the user under which Salt is running. CLI Example: salt '*' rbenv.rehash rbenv.uninstall_ruby:\nUninstall a ruby implementation. ruby The version of ruby to uninstall. Should match one of the versions listed by :py:func:`rbenv.versions \u0026lt;salt.modules.rbenv.versions\u0026gt;`. runas The user under which to run rbenv. If not specified, then rbenv will be run as the user under which Salt is running. CLI Example: salt '*' rbenv.uninstall_ruby 2.0.0-p0 rbenv.update:\nUpdates the current versions of rbenv and ruby-build runas The user under which to run rbenv. If not specified, then rbenv will be run as the user under which Salt is running. CLI Example: salt '*' rbenv.update rbenv.versions:\nList the installed versions of ruby CLI Example: salt '*' rbenv.versions rest_sample_utils.fix_outage:\n\u0026quot;Fix\u0026quot; the outage CLI Example: salt 'rest-sample-proxy' rest_sample.fix_outage rest_sample_utils.get_test_string:\nHelper function to test cross-calling to the __proxy__ dunder. CLI Example: salt 'rest-sample-proxy' rest_sample.get_test_string restartcheck.restartcheck:\nAnalyses files openeded by running processes and seeks for packages which need to be restarted. Args: ignorelist: string or list of packages to be ignored. blacklist: string or list of file paths to be ignored. excludepid: string or list of process IDs to be ignored. verbose: boolean, enables extensive output. timeout: int, timeout in minute. Returns: Dict on error: ``{ 'result': False, 'comment': '\u0026lt;reason\u0026gt;' }``. String with checkrestart output if some package seems to need to be restarted or if no packages need restarting. New in version 2015.8.3 CLI Example: salt '*' restartcheck.restartcheck ret.get_fun:\nReturn info about last time fun was called on each minion CLI Example: salt '*' ret.get_fun mysql network.interfaces ret.get_jid:\nReturn the information for a specified job id CLI Example: salt '*' ret.get_jid redis 20421104181954700505 ret.get_jids:\nReturn a list of all job ids CLI Example: salt '*' ret.get_jids mysql ret.get_minions:\nReturn a list of all minions CLI Example: salt '*' ret.get_minions mysql rsync.config:\nChanged in version 2016.3.0 Return data now contains just the contents of the rsyncd.conf as a string, instead of a dictionary as returned from :py:func:`cmd.run_all \u0026lt;salt.modules.cmdmod.run_all\u0026gt;`. Returns the contents of the rsync config file conf_path : /etc/rsyncd.conf Path to the config file CLI Example: salt '*' rsync.config rsync.rsync:\nChanged in version 2016.3.0 Return data now contains just the output of the rsync command, instead of a dictionary as returned from :py:func:`cmd.run_all \u0026lt;salt.modules.cmdmod.run_all\u0026gt;`. Rsync files from src to dst src The source location where files will be rsynced from. dst The destination location where files will be rsynced to. delete : False Whether to enable the rsync `--delete` flag, which will delete extraneous files from dest dirs force : False Whether to enable the rsync `--force` flag, which will force deletion of dirs even if not empty. update : False Whether to enable the rsync `--update` flag, which forces rsync to skip any files which exist on the destination and have a modified time that is newer than the source file. passwordfile A file that contains a password for accessing an rsync daemon. The file should contain just the password. exclude Whether to enable the rsync `--exclude` flag, which will exclude files matching a PATTERN. excludefrom Whether to enable the rsync `--excludefrom` flag, which will read exclude patterns from a file. dryrun : False Whether to enable the rsync `--dry-run` flag, which will perform a trial run with no changes made. rsh Whether to enable the rsync `--rsh` flag, to specify the remote shell to use. additional_opts Any additional rsync options, should be specified as a list. saltenv Specify a salt fileserver environment to be used. CLI Example: salt '*' rsync.rsync /path/to/src /path/to/dest delete=True update=True passwordfile=/etc/pass.crt exclude=exclude/dir salt '*' rsync.rsync /path/to/src delete=True excludefrom=/xx.ini salt '*' rsync.rsync /path/to/src delete=True exclude='[exclude1/dir,exclude2/dir]' additional_opts='[\u0026quot;--partial\u0026quot;, \u0026quot;--bwlimit=5000\u0026quot;]' rsync.version:\nChanged in version 2016.3.0 Return data now contains just the version number as a string, instead of a dictionary as returned from :py:func:`cmd.run_all \u0026lt;salt.modules.cmdmod.run_all\u0026gt;`. Returns rsync version CLI Example: salt '*' rsync.version rvm.do:\nExecute a command in an RVM controlled environment. ruby Which ruby to use command The rvm command to execute runas The user under which to run rvm. If not specified, then rvm will be run as the user under which Salt is running. cwd The directory from which to run the rvm command. Defaults to the user's home directory. CLI Example: salt '*' rvm.do 2.0.0 \u0026lt;command\u0026gt; rvm.gemset_copy:\nCopy all gems from one gemset to another. source The name of the gemset to copy, complete with ruby version destination The destination gemset runas The user under which to run rvm. If not specified, then rvm will be run as the user under which Salt is running. CLI Example: salt '*' rvm.gemset_copy foobar bazquo rvm.gemset_create:\nCreates a gemset. ruby The ruby version for which to create the gemset gemset The name of the gemset to create runas The user under which to run rvm. If not specified, then rvm will be run as the user under which Salt is running. CLI Example: salt '*' rvm.gemset_create 2.0.0 foobar rvm.gemset_delete:\nDelete a gemset ruby The ruby version to which the gemset belongs gemset The gemset to delete runas The user under which to run rvm. If not specified, then rvm will be run as the user under which Salt is running. CLI Example: salt '*' rvm.gemset_delete 2.0.0 foobar rvm.gemset_empty:\nRemove all gems from a gemset. ruby The ruby version to which the gemset belongs gemset The gemset to empty runas The user under which to run rvm. If not specified, then rvm will be run as the user under which Salt is running. CLI Example: salt '*' rvm.gemset_empty 2.0.0 foobar rvm.gemset_list:\nList all gemsets for the given ruby. ruby : default The ruby version for which to list the gemsets runas The user under which to run rvm. If not specified, then rvm will be run as the user under which Salt is running. CLI Example: salt '*' rvm.gemset_list rvm.gemset_list_all:\nList all gemsets for all installed rubies. Note that you must have set a default ruby before this can work. runas The user under which to run rvm. If not specified, then rvm will be run as the user under which Salt is running. CLI Example: salt '*' rvm.gemset_list_all rvm.get:\nUpdate RVM version : stable Which version of RVM to install, (e.g. stable or head) CLI Example: salt '*' rvm.get rvm.install:\nInstall RVM system-wide runas The user under which to run the rvm installer script. If not specified, then it be run as the user under which Salt is running. CLI Example: salt '*' rvm.install rvm.install_ruby:\nInstall a ruby implementation. ruby The version of ruby to install runas The user under which to run rvm. If not specified, then rvm will be run as the user under which Salt is running. env Environment to set for the install command. Useful for exporting compilation flags such as RUBY_CONFIGURE_OPTS opts List of options to pass to the RVM installer (ie -C, --patch, etc) CLI Example: salt '*' rvm.install_ruby 1.9.3-p385 rvm.is_installed:\nCheck if RVM is installed. CLI Example: salt '*' rvm.is_installed rvm.list:\nList all rvm-installed rubies runas The user under which to run rvm. If not specified, then rvm will be run as the user under which Salt is running. CLI Example: salt '*' rvm.list rvm.reinstall_ruby:\nReinstall a ruby implementation ruby The version of ruby to reinstall runas The user under which to run rvm. If not specified, then rvm will be run as the user under which Salt is running. CLI Example: salt '*' rvm.reinstall_ruby 1.9.3-p385 rvm.rubygems:\nInstalls a specific rubygems version in the given ruby ruby The ruby for which to install rubygems version The version of rubygems to install, or 'remove' to use the version that ships with 1.9 runas The user under which to run rvm. If not specified, then rvm will be run as the user under which Salt is running. CLI Example: salt '*' rvm.rubygems 2.0.0 1.8.24 rvm.set_default:\nSet the default ruby ruby The version of ruby to make the default runas The user under which to run rvm. If not specified, then rvm will be run as the user under which Salt is running. CLI Example: salt '*' rvm.set_default 2.0.0 rvm.wrapper:\nInstall RVM wrapper scripts ruby_string Ruby/gemset to install wrappers for wrapper_prefix What to prepend to the name of the generated wrapper binaries runas The user under which to run rvm. If not specified, then rvm will be run as the user under which Salt is running. binaries : None The names of the binaries to create wrappers for. When nothing is given, wrappers for ruby, gem, rake, irb, rdoc, ri and testrb are generated. CLI Example: salt '*' rvm.wrapper \u0026lt;ruby_string\u0026gt; \u0026lt;wrapper_prefix\u0026gt; s3.delete:\nDelete a bucket, or delete an object from a bucket. CLI Example to delete a bucket:: salt myminion s3.delete mybucket CLI Example to delete an object from a bucket:: salt myminion s3.delete mybucket remoteobject s3.get:\nList the contents of a bucket, or return an object from a bucket. Set return_bin to True in order to retrieve an object wholesale. Otherwise, Salt will attempt to parse an XML response. CLI Example to list buckets: salt myminion s3.get CLI Example to list the contents of a bucket: salt myminion s3.get mybucket CLI Example to return the binary contents of an object: salt myminion s3.get mybucket myfile.png return_bin=True CLI Example to save the binary contents of an object to a local file: salt myminion s3.get mybucket myfile.png local_file=/tmp/myfile.png It is also possible to perform an action on a bucket. Currently, S3 supports the following actions:: acl cors lifecycle policy location logging notification tagging versions requestPayment versioning website To perform an action on a bucket: salt myminion s3.get mybucket myfile.png action=acl s3.head:\nReturn the metadata for a bucket, or an object in a bucket. CLI Examples: salt myminion s3.head mybucket salt myminion s3.head mybucket myfile.png s3.put:\nCreate a new bucket, or upload an object to a bucket. CLI Example to create a bucket: salt myminion s3.put mybucket CLI Example to upload an object to a bucket: salt myminion s3.put mybucket remotepath local_file=/path/to/file s6.available:\nReturns ``True`` if the specified service is available, otherwise returns ``False``. CLI Example: salt '*' s6.available foo s6.full_restart:\nCalls s6.restart() function CLI Example: salt '*' s6.full_restart \u0026lt;service name\u0026gt; s6.get_all:\nReturn a list of all available services CLI Example: salt '*' s6.get_all s6.missing:\nThe inverse of s6.available. Returns ``True`` if the specified service is not available, otherwise returns ``False``. CLI Example: salt '*' s6.missing foo s6.reload:\nSend a HUP to service via s6 CLI Example: salt '*' s6.reload \u0026lt;service name\u0026gt; s6.restart:\nRestart service via s6. This will stop/start service CLI Example: salt '*' s6.restart \u0026lt;service name\u0026gt; s6.start:\nStarts service via s6 CLI Example: salt '*' s6.start \u0026lt;service name\u0026gt; s6.status:\nReturn the status for a service via s6, return pid if running CLI Example: salt '*' s6.status \u0026lt;service name\u0026gt; s6.stop:\nStops service via s6 CLI Example: salt '*' s6.stop \u0026lt;service name\u0026gt; s6.term:\nSend a TERM to service via s6 CLI Example: salt '*' s6.term \u0026lt;service name\u0026gt; salt_proxy.configure_proxy:\nCreate the salt proxy file and start the proxy process if required Parameters: proxyname: Name to be used for this proxy (should match entries in pillar) start: Boolean indicating if the process should be started default = True CLI Example: salt deviceminion salt_proxy.configure_proxy p8000 salt_proxy.is_running:\nCheck if the salt-proxy process associated with this proxy (name) is running. Returns True if the process is running False otherwise Parameters: proxyname: String name of the proxy (p8000 for example) CLI Example: salt deviceminion salt_proxy.is_running p8000 salt_version.equal:\nReturns a boolean (True) if the minion's current version code name matches the named version. name The release code name to check the version against. CLI Example: salt '*' salt_version.equal 'Oxygen' salt_version.get_release_number:\nReturns the release number of a given release code name in a ``MAJOR.PATCH`` format (for Salt versions \u0026lt; 3000) or ``MAJOR`` for newer Salt versions. If the release name has not been given an assigned release number, the function returns a string. If the release cannot be found, it returns ``None``. name The release code name for which to find a release number. CLI Example: salt '*' salt_version.get_release_number 'Oxygen' salt_version.greater_than:\nReturns a boolean (True) if the minion's current version code name is greater than the named version. name The release code name to check the version against. CLI Example: salt '*' salt_version.greater_than 'Oxygen' salt_version.less_than:\nReturns a boolean (True) if the minion's current version code name is less than the named version. name The release code name to check the version against. CLI Example: salt '*' salt_version.less_than 'Oxygen' saltcheck.parallel_scheck: triggers salt-call in parallel\nsaltcheck.report_highstate_tests:\nReport on tests for states assigned to the minion through highstate. Quits with the exit code for the number of missing tests. CLI Example: salt '*' saltcheck.report_highstate_tests New in version 3000 saltcheck.run_highstate_tests:\nExecute all tests for states assigned to the minion through highstate and return results :param str saltenv: optional saltenv. Defaults to base :param bool only_fails: boolean to only print failure results :param bool junit: boolean to print results in junit format New in version 3007.0 CLI Example: salt '*' saltcheck.run_highstate_tests saltcheck.run_state_tests:\nExecute tests for a salt state and return results Nested states will also be tested :param str state: state name for which to run associated .tst test files :param str saltenv: optional saltenv. Defaults to base :param bool check_all: boolean to run all tests in state/saltcheck-tests directory :param bool only_fails: boolean to only print failure results :param bool junit: boolean to print results in junit format New in version 3007.0 CLI Example: salt '*' saltcheck.run_state_tests postfix,common Tests will be run in parallel by adding \u0026quot;saltcheck_parallel: True\u0026quot; in minion config. When enabled, saltcheck will use up to the number of cores detected. This can be limited by setting the \u0026quot;saltcheck_processes\u0026quot; value to an integer to set the maximum number of parallel processes. saltcheck.run_state_tests_ssh:\nThis function is an alias of run_state_tests.\nExecute tests for a salt state and return results Nested states will also be tested :param str state: state name for which to run associated .tst test files :param str saltenv: optional saltenv. Defaults to base :param bool check_all: boolean to run all tests in state/saltcheck-tests directory :param bool only_fails: boolean to only print failure results :param bool junit: boolean to print results in junit format New in version 3007.0 CLI Example: salt '*' saltcheck.run_state_tests postfix,common Tests will be run in parallel by adding \u0026quot;saltcheck_parallel: True\u0026quot; in minion config. When enabled, saltcheck will use up to the number of cores detected. This can be limited by setting the \u0026quot;saltcheck_processes\u0026quot; value to an integer to set the maximum number of parallel processes. saltcheck.run_test:\nExecute one saltcheck test and return result :param keyword arg test: CLI Example: salt '*' saltcheck.run_test test='{\u0026quot;module_and_function\u0026quot;: \u0026quot;test.echo\u0026quot;, \u0026quot;assertion\u0026quot;: \u0026quot;assertEqual\u0026quot;, \u0026quot;expected_return\u0026quot;: \u0026quot;This works!\u0026quot;, \u0026quot;args\u0026quot;:[\u0026quot;This works!\u0026quot;] }' saltcheck.state_apply:\nRuns :py:func:`state.apply \u0026lt;salt.modules.state.apply\u0026gt;` with given options to set up test data. Intended to be used for optional test setup or teardown Reference the :py:func:`state.apply \u0026lt;salt.modules.state.apply\u0026gt;` module documentation for arguments and usage options CLI Example: salt '*' saltcheck.state_apply postfix saltutil.clear_cache:\nForcibly removes all caches on a minion. New in version 2014.7.0 WARNING: The safest way to clear a minion cache is by first stopping the minion and then deleting the cache files before restarting it. CLI Example: salt '*' saltutil.clear_cache saltutil.clear_job_cache:\nForcibly removes job cache folders and files on a minion. New in version 2018.3.0 WARNING: The safest way to clear a minion cache is by first stopping the minion and then deleting the cache files before restarting it. CLI Example: salt '*' saltutil.clear_job_cache hours=12 saltutil.cmd:\nChanged in version 2017.7.0 The ``expr_form`` argument has been renamed to ``tgt_type``, earlier releases must use ``expr_form``. Assuming this minion is a master, execute a salt command CLI Example: salt '*' saltutil.cmd saltutil.cmd_iter:\nChanged in version 2017.7.0 The ``expr_form`` argument has been renamed to ``tgt_type``, earlier releases must use ``expr_form``. Assuming this minion is a master, execute a salt command CLI Example: salt '*' saltutil.cmd_iter saltutil.find_cached_job:\nReturn the data for a specific cached job id. Note this only works if cache_jobs has previously been set to True on the minion. CLI Example: salt '*' saltutil.find_cached_job \u0026lt;job id\u0026gt; saltutil.find_job:\nReturn the data for a specific job id that is currently running. jid The job id to search for and return data. CLI Example: salt '*' saltutil.find_job \u0026lt;job id\u0026gt; Note that the find_job function only returns job information when the job is still running. If the job is currently running, the output looks something like this: # salt my-minion saltutil.find_job 20160503150049487736 my-minion: ---------- arg: - 30 fun: test.sleep jid: 20160503150049487736 pid: 9601 ret: tgt: my-minion tgt_type: glob user: root If the job has already completed, the job cannot be found and therefore the function returns an empty dictionary, which looks like this on the CLI: # salt my-minion saltutil.find_job 20160503150049487736 my-minion: ---------- saltutil.is_running:\nIf the named function is running return the data associated with it/them. The argument can be a glob CLI Example: salt '*' saltutil.is_running state.highstate saltutil.kill_all_jobs:\nSends a kill signal (SIGKILL 9) to all currently running jobs CLI Example: salt '*' saltutil.kill_all_jobs saltutil.kill_job:\nSends a kill signal (SIGKILL 9) to the named salt job's process CLI Example: salt '*' saltutil.kill_job \u0026lt;job id\u0026gt; saltutil.list_extmods:\nNew in version 2017.7.0 List Salt modules which have been synced externally CLI Examples: salt '*' saltutil.list_extmods saltutil.mmodule:\nLoads minion modules from an environment so that they can be used in pillars for that environment CLI Example: salt '*' saltutil.mmodule base test.ping saltutil.pillar_refresh:\nThis function is an alias of refresh_pillar.\nSignal the minion to refresh the in-memory pillar data. See :ref:`pillar-in-memory`. :param wait: Wait for pillar refresh to complete, defaults to False. :type wait: bool, optional :param timeout: How long to wait in seconds, only used when wait is True, defaults to 30. :type timeout: int, optional :param clean_cache: Clean the pillar cache, only used when `pillar_cache` is True. Defaults to True :type clean_cache: bool, optional New in version 3005 :return: Boolean status, True when the pillar_refresh event was fired successfully. CLI Example: salt '*' saltutil.refresh_pillar salt '*' saltutil.refresh_pillar wait=True timeout=60 saltutil.refresh_beacons:\nSignal the minion to refresh the beacons. CLI Example: salt '*' saltutil.refresh_beacons saltutil.refresh_grains:\nNew in version 2016.3.6,2016.11.4,2017.7.0 Refresh the minion's grains without syncing custom grains modules from ``salt://_grains``. Note: The available execution modules will be reloaded as part of this proceess, as grains can affect which modules are available. refresh_pillar : True Set to ``False`` to keep pillar data from being refreshed. clean_pillar_cache : False Set to ``True`` to refresh pillar cache. CLI Examples: salt '*' saltutil.refresh_grains saltutil.refresh_matchers:\nSignal the minion to refresh its matchers. CLI Example: salt '*' saltutil.refresh_matchers saltutil.refresh_modules:\nSignal the minion to refresh the module and grain data The default is to refresh module asynchronously. To block until the module refresh is complete, set the 'async' flag to False. CLI Example: salt '*' saltutil.refresh_modules saltutil.refresh_pillar:\nSignal the minion to refresh the in-memory pillar data. See :ref:`pillar-in-memory`. :param wait: Wait for pillar refresh to complete, defaults to False. :type wait: bool, optional :param timeout: How long to wait in seconds, only used when wait is True, defaults to 30. :type timeout: int, optional :param clean_cache: Clean the pillar cache, only used when `pillar_cache` is True. Defaults to True :type clean_cache: bool, optional New in version 3005 :return: Boolean status, True when the pillar_refresh event was fired successfully. CLI Example: salt '*' saltutil.refresh_pillar salt '*' saltutil.refresh_pillar wait=True timeout=60 saltutil.regen_keys:\nUsed to regenerate the minion keys. CLI Example: salt '*' saltutil.regen_keys saltutil.revoke_auth:\nThe minion sends a request to the master to revoke its own key. Note that the minion session will be revoked and the minion may not be able to return the result of this command back to the master. If the 'preserve_minion_cache' flag is set to True, the master cache for this minion will not be removed. CLI Example: salt '*' saltutil.revoke_auth saltutil.runner:\nExecute a runner function. This function must be run on the master, either by targeting a minion running on a master or by using salt-call on a master. New in version 2014.7.0 name The name of the function to run kwargs Any keyword arguments to pass to the runner function CLI Example: In this example, assume that `master_minion` is a minion running on a master. salt master_minion saltutil.runner jobs.list_jobs salt master_minion saltutil.runner test.arg arg=\u0026quot;['baz']\u0026quot; kwarg=\u0026quot;{'foo': 'bar'}\u0026quot; saltutil.running:\nReturn the data on all running salt processes on the minion CLI Example: salt '*' saltutil.running saltutil.signal_job:\nSends a signal to the named salt job's process CLI Example: salt '*' saltutil.signal_job \u0026lt;job id\u0026gt; 15 saltutil.sync_all:\nChanged in version 3007.0 On masterless minions, master top modules are now synced as well. When ``refresh`` is set to ``True``, this module's cache containing the environments from which extension modules are synced when ``saltenv`` is not specified will be refreshed. Changed in version 2015.8.11,2016.3.2 On masterless minions, pillar modules are now synced, and refreshed when ``refresh`` is set to ``True``. Sync down all of the dynamic modules from the file server for a specific environment. This function synchronizes custom modules, states, beacons, grains, returners, output modules, renderers, and utils. refresh : True Also refresh the execution modules and recompile pillar data available to the minion. If this is a masterless minion, also refresh the environments from which extension modules are synced after syncing master tops. This refresh will be performed even if no new dynamic modules are synced. Set to ``False`` to prevent this refresh. .. important:: If this function is executed using a :py:func:`module.run \u0026lt;salt.states.module.run\u0026gt;` state, the SLS file will not have access to newly synced execution modules unless a ``refresh`` argument is added to the state, like so: load_my_custom_module: module.run: - name: saltutil.sync_all - refresh: True See :ref:`here \u0026lt;reloading-modules\u0026gt;` for a more detailed explanation of why this is necessary. extmod_whitelist : None dictionary of modules to sync based on type extmod_blacklist : None dictionary of modules to blacklist based on type clean_pillar_cache : False Set to ``True`` to refresh pillar cache. CLI Examples: salt '*' saltutil.sync_all salt '*' saltutil.sync_all saltenv=dev salt '*' saltutil.sync_all saltenv=base,dev salt '*' saltutil.sync_all extmod_whitelist={'modules': ['custom_module']} saltutil.sync_beacons:\nNew in version 2015.5.1 Sync beacons from ``salt://_beacons`` to the minion saltenv The fileserver environment from which to sync. To sync from more than one environment, pass a comma-separated list. If not passed, then all environments configured in the :ref:`top files \u0026lt;states-top\u0026gt;` will be checked for beacons to sync. If no top files are found, then the ``base`` environment will be synced. refresh : True If ``True``, refresh the available beacons on the minion. This refresh will be performed even if no new beacons are synced. Set to ``False`` to prevent this refresh. extmod_whitelist : None comma-separated list of modules to sync extmod_blacklist : None comma-separated list of modules to blacklist based on type CLI Example: salt '*' saltutil.sync_beacons salt '*' saltutil.sync_beacons saltenv=dev salt '*' saltutil.sync_beacons saltenv=base,dev saltutil.sync_clouds:\nNew in version 2017.7.0 Sync cloud modules from ``salt://_cloud`` to the minion saltenv : base The fileserver environment from which to sync. To sync from more than one environment, pass a comma-separated list. refresh : True If ``True``, refresh the available execution modules on the minion. This refresh will be performed even if no new utility modules are synced. Set to ``False`` to prevent this refresh. extmod_whitelist : None comma-separated list of modules to sync extmod_blacklist : None comma-separated list of modules to blacklist based on type CLI Examples: salt '*' saltutil.sync_clouds salt '*' saltutil.sync_clouds saltenv=dev salt '*' saltutil.sync_clouds saltenv=base,dev saltutil.sync_engines:\nNew in version 2016.3.0 Sync engine modules from ``salt://_engines`` to the minion saltenv The fileserver environment from which to sync. To sync from more than one environment, pass a comma-separated list. If not passed, then all environments configured in the :ref:`top files \u0026lt;states-top\u0026gt;` will be checked for engines to sync. If no top files are found, then the ``base`` environment will be synced. refresh : True If ``True``, refresh the available execution modules on the minion. This refresh will be performed even if no new engine modules are synced. Set to ``False`` to prevent this refresh. extmod_whitelist : None comma-separated list of modules to sync extmod_blacklist : None comma-separated list of modules to blacklist based on type CLI Examples: salt '*' saltutil.sync_engines salt '*' saltutil.sync_engines saltenv=base,dev saltutil.sync_executors:\nNew in version 3000 Sync executors from ``salt://_executors`` to the minion saltenv The fileserver environment from which to sync. To sync from more than one environment, pass a comma-separated list. If not passed, then all environments configured in the :ref:`top files \u0026lt;states-top\u0026gt;` will be checked for log handlers to sync. If no top files are found, then the ``base`` environment will be synced. refresh : True If ``True``, refresh the available execution modules on the minion. This refresh will be performed even if no new log handlers are synced. Set to ``False`` to prevent this refresh. extmod_whitelist : None comma-seperated list of modules to sync extmod_blacklist : None comma-seperated list of modules to blacklist based on type CLI Examples: salt '*' saltutil.sync_executors salt '*' saltutil.sync_executors saltenv=dev salt '*' saltutil.sync_executors saltenv=base,dev saltutil.sync_grains:\nNew in version 0.10.0 Sync grains modules from ``salt://_grains`` to the minion saltenv The fileserver environment from which to sync. To sync from more than one environment, pass a comma-separated list. If not passed, then all environments configured in the :ref:`top files \u0026lt;states-top\u0026gt;` will be checked for grains modules to sync. If no top files are found, then the ``base`` environment will be synced. refresh : True If ``True``, refresh the available execution modules and recompile pillar data for the minion. This refresh will be performed even if no new grains modules are synced. Set to ``False`` to prevent this refresh. extmod_whitelist : None comma-separated list of modules to sync extmod_blacklist : None comma-separated list of modules to blacklist based on type clean_pillar_cache : False Set to ``True`` to refresh pillar cache. CLI Examples: salt '*' saltutil.sync_grains salt '*' saltutil.sync_grains saltenv=dev salt '*' saltutil.sync_grains saltenv=base,dev saltutil.sync_log_handlers:\nNew in version 2015.8.0 Sync log handlers from ``salt://_log_handlers`` to the minion saltenv The fileserver environment from which to sync. To sync from more than one environment, pass a comma-separated list. If not passed, then all environments configured in the :ref:`top files \u0026lt;states-top\u0026gt;` will be checked for log handlers to sync. If no top files are found, then the ``base`` environment will be synced. refresh : True If ``True``, refresh the available execution modules on the minion. This refresh will be performed even if no new log handlers are synced. Set to ``False`` to prevent this refresh. extmod_whitelist : None comma-separated list of modules to sync extmod_blacklist : None comma-separated list of modules to blacklist based on type CLI Examples: salt '*' saltutil.sync_log_handlers salt '*' saltutil.sync_log_handlers saltenv=dev salt '*' saltutil.sync_log_handlers saltenv=base,dev saltutil.sync_matchers:\nNew in version 2019.2.0 Sync engine modules from ``salt://_matchers`` to the minion saltenv The fileserver environment from which to sync. To sync from more than one environment, pass a comma-separated list. If not passed, then all environments configured in the :ref:`top files \u0026lt;states-top\u0026gt;` will be checked for engines to sync. If no top files are found, then the ``base`` environment will be synced. refresh : True If ``True``, refresh the available execution modules on the minion. This refresh will be performed even if no new matcher modules are synced. Set to ``False`` to prevent this refresh. extmod_whitelist : None comma-separated list of modules to sync extmod_blacklist : None comma-separated list of modules to blacklist based on type CLI Examples: salt '*' saltutil.sync_matchers salt '*' saltutil.sync_matchers saltenv=base,dev saltutil.sync_modules:\nNew in version 0.10.0 Sync execution modules from ``salt://_modules`` to the minion saltenv The fileserver environment from which to sync. To sync from more than one environment, pass a comma-separated list. If not passed, then all environments configured in the :ref:`top files \u0026lt;states-top\u0026gt;` will be checked for execution modules to sync. If no top files are found, then the ``base`` environment will be synced. refresh : True If ``True``, refresh the available execution modules on the minion. This refresh will be performed even if no new execution modules are synced. Set to ``False`` to prevent this refresh. .. important:: If this function is executed using a :py:func:`module.run \u0026lt;salt.states.module.run\u0026gt;` state, the SLS file will not have access to newly synced execution modules unless a ``refresh`` argument is added to the state, like so: load_my_custom_module: module.run: - name: saltutil.sync_modules - refresh: True See :ref:`here \u0026lt;reloading-modules\u0026gt;` for a more detailed explanation of why this is necessary. extmod_whitelist : None comma-separated list of modules to sync extmod_blacklist : None comma-separated list of modules to blacklist based on type CLI Example: salt '*' saltutil.sync_modules salt '*' saltutil.sync_modules saltenv=dev salt '*' saltutil.sync_modules saltenv=base,dev saltutil.sync_output:\nSync outputters from ``salt://_output`` to the minion saltenv The fileserver environment from which to sync. To sync from more than one environment, pass a comma-separated list. If not passed, then all environments configured in the :ref:`top files \u0026lt;states-top\u0026gt;` will be checked for outputters to sync. If no top files are found, then the ``base`` environment will be synced. refresh : True If ``True``, refresh the available execution modules on the minion. This refresh will be performed even if no new outputters are synced. Set to ``False`` to prevent this refresh. extmod_whitelist : None comma-separated list of modules to sync extmod_blacklist : None comma-separated list of modules to blacklist based on type CLI Examples: salt '*' saltutil.sync_output salt '*' saltutil.sync_output saltenv=dev salt '*' saltutil.sync_output saltenv=base,dev saltutil.sync_outputters:\nThis function is an alias of sync_output.\nSync outputters from ``salt://_output`` to the minion saltenv The fileserver environment from which to sync. To sync from more than one environment, pass a comma-separated list. If not passed, then all environments configured in the :ref:`top files \u0026lt;states-top\u0026gt;` will be checked for outputters to sync. If no top files are found, then the ``base`` environment will be synced. refresh : True If ``True``, refresh the available execution modules on the minion. This refresh will be performed even if no new outputters are synced. Set to ``False`` to prevent this refresh. extmod_whitelist : None comma-separated list of modules to sync extmod_blacklist : None comma-separated list of modules to blacklist based on type CLI Examples: salt '*' saltutil.sync_output salt '*' saltutil.sync_output saltenv=dev salt '*' saltutil.sync_output saltenv=base,dev saltutil.sync_pillar:\nNew in version 2015.8.11,2016.3.2 Sync pillar modules from the ``salt://_pillar`` directory on the Salt fileserver. This function is environment-aware, pass the desired environment to grab the contents of the ``_pillar`` directory from that environment. The default environment, if none is specified, is ``base``. refresh : True Also refresh the execution modules available to the minion, and refresh pillar data. extmod_whitelist : None comma-separated list of modules to sync extmod_blacklist : None comma-separated list of modules to blacklist based on type clean_pillar_cache : False Set to ``True`` to refresh pillar cache. Note: This function will raise an error if executed on a traditional (i.e. not masterless) minion CLI Examples: salt '*' saltutil.sync_pillar salt '*' saltutil.sync_pillar saltenv=dev saltutil.sync_proxymodules:\nNew in version 2015.8.2 Sync proxy modules from ``salt://_proxy`` to the minion saltenv The fileserver environment from which to sync. To sync from more than one environment, pass a comma-separated list. If not passed, then all environments configured in the :ref:`top files \u0026lt;states-top\u0026gt;` will be checked for proxy modules to sync. If no top files are found, then the ``base`` environment will be synced. refresh : True If ``True``, refresh the available execution modules on the minion. This refresh will be performed even if no new proxy modules are synced. Set to ``False`` to prevent this refresh. extmod_whitelist : None comma-separated list of modules to sync extmod_blacklist : None comma-separated list of modules to blacklist based on type CLI Examples: salt '*' saltutil.sync_proxymodules salt '*' saltutil.sync_proxymodules saltenv=dev salt '*' saltutil.sync_proxymodules saltenv=base,dev saltutil.sync_renderers:\nNew in version 0.10.0 Sync renderers from ``salt://_renderers`` to the minion saltenv The fileserver environment from which to sync. To sync from more than one environment, pass a comma-separated list. If not passed, then all environments configured in the :ref:`top files \u0026lt;states-top\u0026gt;` will be checked for renderers to sync. If no top files are found, then the ``base`` environment will be synced. refresh : True If ``True``, refresh the available execution modules on the minion. This refresh will be performed even if no new renderers are synced. Set to ``False`` to prevent this refresh. extmod_whitelist : None comma-separated list of modules to sync extmod_blacklist : None comma-separated list of modules to blacklist based on type CLI Examples: salt '*' saltutil.sync_renderers salt '*' saltutil.sync_renderers saltenv=dev salt '*' saltutil.sync_renderers saltenv=base,dev saltutil.sync_returners:\nNew in version 0.10.0 Sync returners from ``salt://_returners`` to the minion saltenv The fileserver environment from which to sync. To sync from more than one environment, pass a comma-separated list. If not passed, then all environments configured in the :ref:`top files \u0026lt;states-top\u0026gt;` will be checked for returners to sync. If no top files are found, then the ``base`` environment will be synced. refresh : True If ``True``, refresh the available execution modules on the minion. This refresh will be performed even if no new returners are synced. Set to ``False`` to prevent this refresh. extmod_whitelist : None comma-separated list of modules to sync extmod_blacklist : None comma-separated list of modules to blacklist based on type CLI Examples: salt '*' saltutil.sync_returners salt '*' saltutil.sync_returners saltenv=dev saltutil.sync_sdb:\nNew in version 2015.5.8,2015.8.3 Sync sdb modules from ``salt://_sdb`` to the minion saltenv The fileserver environment from which to sync. To sync from more than one environment, pass a comma-separated list. If not passed, then all environments configured in the :ref:`top files \u0026lt;states-top\u0026gt;` will be checked for sdb modules to sync. If no top files are found, then the ``base`` environment will be synced. extmod_whitelist : None comma-separated list of modules to sync extmod_blacklist : None comma-separated list of modules to blacklist based on type CLI Example: salt '*' saltutil.sync_sdb salt '*' saltutil.sync_sdb saltenv=dev salt '*' saltutil.sync_sdb saltenv=base,dev saltutil.sync_serializers:\nNew in version 2019.2.0 Sync serializers from ``salt://_serializers`` to the minion saltenv The fileserver environment from which to sync. To sync from more than one environment, pass a comma-separated list. If not passed, then all environments configured in the :ref:`top files \u0026lt;states-top\u0026gt;` will be checked for serializer modules to sync. If no top files are found, then the ``base`` environment will be synced. refresh : True If ``True``, refresh the available execution modules on the minion. This refresh will be performed even if no new serializer modules are synced. Set to ``False`` to prevent this refresh. extmod_whitelist : None comma-seperated list of modules to sync extmod_blacklist : None comma-seperated list of modules to blacklist based on type CLI Examples: salt '*' saltutil.sync_serializers salt '*' saltutil.sync_serializers saltenv=dev salt '*' saltutil.sync_serializers saltenv=base,dev saltutil.sync_states:\nNew in version 0.10.0 Sync state modules from ``salt://_states`` to the minion saltenv The fileserver environment from which to sync. To sync from more than one environment, pass a comma-separated list. If not passed, then all environments configured in the :ref:`top files \u0026lt;states-top\u0026gt;` will be checked for state modules to sync. If no top files are found, then the ``base`` environment will be synced. refresh : True If ``True``, refresh the available states on the minion. This refresh will be performed even if no new state modules are synced. Set to ``False`` to prevent this refresh. extmod_whitelist : None comma-separated list of modules to sync extmod_blacklist : None comma-separated list of modules to blacklist based on type CLI Examples: salt '*' saltutil.sync_states salt '*' saltutil.sync_states saltenv=dev salt '*' saltutil.sync_states saltenv=base,dev saltutil.sync_thorium:\nNew in version 2018.3.0 Sync Thorium modules from ``salt://_thorium`` to the minion saltenv The fileserver environment from which to sync. To sync from more than one environment, pass a comma-separated list. If not passed, then all environments configured in the :ref:`top files \u0026lt;states-top\u0026gt;` will be checked for engines to sync. If no top files are found, then the ``base`` environment will be synced. refresh: ``True`` If ``True``, refresh the available execution modules on the minion. This refresh will be performed even if no new Thorium modules are synced. Set to ``False`` to prevent this refresh. extmod_whitelist comma-separated list of modules to sync extmod_blacklist comma-separated list of modules to blacklist based on type CLI Examples: salt '*' saltutil.sync_thorium salt '*' saltutil.sync_thorium saltenv=base,dev saltutil.sync_tops:\nNew in version 3007.0 Sync master tops from ``salt://_tops`` to the minion. saltenv The fileserver environment from which to sync. To sync from more than one environment, pass a comma-separated list. If not passed, then all environments configured in the :ref:`top files \u0026lt;states-top\u0026gt;` will be checked for master tops to sync. If no top files are found, then the ``base`` environment will be synced. refresh : True Refresh this module's cache containing the environments from which extension modules are synced when ``saltenv`` is not specified. This refresh will be performed even if no new master tops are synced. Set to ``False`` to prevent this refresh. extmod_whitelist : None comma-separated list of modules to sync extmod_blacklist : None comma-separated list of modules to blacklist based on type Note: This function will raise an error if executed on a traditional (i.e. not masterless) minion CLI Examples: salt '*' saltutil.sync_tops salt '*' saltutil.sync_tops saltenv=dev saltutil.sync_utils:\nNew in version 2014.7.0 Sync utility modules from ``salt://_utils`` to the minion saltenv The fileserver environment from which to sync. To sync from more than one environment, pass a comma-separated list. If not passed, then all environments configured in the :ref:`top files \u0026lt;states-top\u0026gt;` will be checked for utility modules to sync. If no top files are found, then the ``base`` environment will be synced. refresh : True If ``True``, refresh the available execution modules on the minion. This refresh will be performed even if no new utility modules are synced. Set to ``False`` to prevent this refresh. extmod_whitelist : None comma-separated list of modules to sync extmod_blacklist : None comma-separated list of modules to blacklist based on type CLI Examples: salt '*' saltutil.sync_utils salt '*' saltutil.sync_utils saltenv=dev salt '*' saltutil.sync_utils saltenv=base,dev saltutil.sync_wrapper:\nNew in version 3007.0 Sync salt-ssh wrapper modules from ``salt://_wrapper`` to the minion. saltenv The fileserver environment from which to sync. To sync from more than one environment, pass a comma-separated list. If not passed, then all environments configured in the :ref:`top files \u0026lt;states-top\u0026gt;` will be checked for wrappers to sync. If no top files are found, then the ``base`` environment will be synced. refresh : True If ``True``, refresh the available wrapper modules on the minion. This refresh will be performed even if no wrappers are synced. Set to ``False`` to prevent this refresh. extmod_whitelist : None comma-seperated list of modules to sync extmod_blacklist : None comma-seperated list of modules to blacklist based on type Note: This function will raise an error if executed on a traditional (i.e. not masterless) minion. CLI Examples: salt '*' saltutil.sync_wrapper salt '*' saltutil.sync_wrapper saltenv=dev salt '*' saltutil.sync_wrapper saltenv=base,dev saltutil.term_all_jobs:\nSends a termination signal (SIGTERM 15) to all currently running jobs CLI Example: salt '*' saltutil.term_all_jobs saltutil.term_job:\nSends a termination signal (SIGTERM 15) to the named salt job's process CLI Example: salt '*' saltutil.term_job \u0026lt;job id\u0026gt; saltutil.update:\nUpdate the salt minion from the URL defined in opts['update_url'] VMware, Inc provides the latest builds here: update_url: https://repo.saltproject.io/windows/ Be aware that as of 2014-8-11 there's a bug in esky such that only the latest version available in the update_url can be downloaded and installed. This feature requires the minion to be running a bdist_esky build. The version number is optional and will default to the most recent version available at opts['update_url']. Returns details about the transaction upon completion. CLI Examples: salt '*' saltutil.update salt '*' saltutil.update 0.10.3 saltutil.wheel:\nExecute a wheel module and function. This function must be run against a minion that is local to the master. New in version 2014.7.0 name The name of the function to run args Any positional arguments to pass to the wheel function. A common example of this would be the ``match`` arg needed for key functions. New in version 2015.8.11 kwargs Any keyword arguments to pass to the wheel function CLI Example: salt my-local-minion saltutil.wheel key.accept jerry salt my-local-minion saltutil.wheel minions.connected Note: Since this function must be run against a minion that is running locally on the master in order to get accurate returns, if this function is run against minions that are not local to the master, \u0026quot;empty\u0026quot; returns are expected. The remote minion does not have access to wheel functions and their return data. schedule.add:\nAdd a job to the schedule CLI Example: salt '*' schedule.add job1 function='test.ping' seconds=3600 # If function have some arguments, use job_args salt '*' schedule.add job2 function='cmd.run' job_args=\u0026quot;['date \u0026gt;\u0026gt; /tmp/date.log']\u0026quot; seconds=60 # Add job to Salt minion when the Salt minion is not running salt '*' schedule.add job1 function='test.ping' seconds=3600 offline=True schedule.build_schedule_item:\nBuild a schedule job CLI Example: salt '*' schedule.build_schedule_item job1 function='test.ping' seconds=3600 schedule.copy:\nCopy scheduled job to another minion or minions. CLI Example: salt '*' schedule.copy jobname target schedule.delete:\nDelete a job from the minion's schedule CLI Example: salt '*' schedule.delete job1 # Delete job on Salt minion when the Salt minion is not running salt '*' schedule.delete job1 schedule.disable:\nDisable all scheduled jobs on the minion CLI Example: salt '*' schedule.disable schedule.disable_job:\nDisable a job in the minion's schedule CLI Example: salt '*' schedule.disable_job job1 schedule.enable:\nEnable all scheduled jobs on the minion CLI Example: salt '*' schedule.enable schedule.enable_job:\nEnable a job in the minion's schedule CLI Example: salt '*' schedule.enable_job job1 schedule.is_enabled:\nList a Job only if its enabled If job is not specified, indicate if the scheduler is enabled or disabled. New in version 2015.5.3 CLI Example: salt '*' schedule.is_enabled name=job_name salt '*' schedule.is_enabled schedule.job_status:\nShow the information for a particular job. CLI Example: salt '*' schedule.job_status job_name schedule.list:\nList the jobs currently scheduled on the minion CLI Example: salt '*' schedule.list # Show all jobs including hidden internal jobs salt '*' schedule.list show_all=True # Hide disabled jobs from list of jobs salt '*' schedule.list show_disabled=False schedule.modify:\nModify an existing job in the schedule CLI Example: salt '*' schedule.modify job1 function='test.ping' seconds=3600 # Modify job on Salt minion when the Salt minion is not running salt '*' schedule.modify job1 function='test.ping' seconds=3600 offline=True schedule.move:\nMove scheduled job to another minion or minions. CLI Example: salt '*' schedule.move jobname target schedule.postpone_job:\nPostpone a job in the minion's schedule Current time and new time should be in date string format, default value is %Y-%m-%dT%H:%M:%S. New in version 2018.3.0 CLI Example: salt '*' schedule.postpone_job job current_time new_time salt '*' schedule.postpone_job job current_time new_time time_fmt='%Y-%m-%dT%H:%M:%S' schedule.purge:\nPurge all the jobs currently scheduled on the minion CLI Example: salt '*' schedule.purge # Purge jobs on Salt minion salt '*' schedule.purge schedule.reload:\nReload saved scheduled jobs on the minion CLI Example: salt '*' schedule.reload schedule.run_job:\nRun a scheduled job on the minion immediately CLI Example: salt '*' schedule.run_job job1 salt '*' schedule.run_job job1 force=True Force the job to run even if it is disabled. schedule.save:\nSave all scheduled jobs on the minion CLI Example: salt '*' schedule.save schedule.show_next_fire_time:\nShow the next fire time for scheduled job New in version 2018.3.0 CLI Example: salt '*' schedule.show_next_fire_time job_name schedule.skip_job:\nSkip a job in the minion's schedule at specified time. Time to skip should be specified as date string format, default value is %Y-%m-%dT%H:%M:%S. New in version 2018.3.0 CLI Example: salt '*' schedule.skip_job job time scsi.ls:\nList SCSI devices, with details CLI Examples: salt '*' scsi.ls salt '*' scsi.ls get_size=False get_size : True Get the size information for scsi devices. This option should be set to False for older OS distributions (RHEL6 and older) due to lack of support for the '-s' option in lsscsi. New in version 2015.5.10 scsi.rescan_all:\nList scsi devices CLI Example: salt '*' scsi.rescan_all 0 sdb.delete:\nDelete a value from a db, using a uri in the form of ``sdb://\u0026lt;profile\u0026gt;/\u0026lt;key\u0026gt;``. If the uri provided does not start with ``sdb://`` or the value is not successfully deleted, return ``False``. CLI Example: salt '*' sdb.delete sdb://mymemcached/foo sdb.get:\nGet a value from a db, using a uri in the form of ``sdb://\u0026lt;profile\u0026gt;/\u0026lt;key\u0026gt;``. If the uri provided is not valid, then it will be returned as-is, unless ``strict=True`` was passed. CLI Example: salt '*' sdb.get sdb://mymemcached/foo strict=True sdb.get_or_set_hash:\nPerform a one-time generation of a hash and write it to sdb. If that value has already been set return the value instead. This is useful for generating passwords or keys that are specific to multiple minions that need to be stored somewhere centrally. State Example: some_mysql_user: mysql_user: - present - host: localhost - password: '{{ salt[\u0026quot;sdb.get_or_set_hash\u0026quot;](\u0026quot;sdb://mymemcached/some_user_pass\u0026quot;) }}' CLI Example: salt '*' sdb.get_or_set_hash 'sdb://mymemcached/SECRET_KEY' 50 Warning: This function could return strings which may contain characters which are reserved as directives by the YAML parser, such as strings beginning with ``%``. To avoid issues when using the output of this function in an SLS file containing YAML+Jinja, surround the call with single quotes. sdb.set:\nSet a value in a db, using a uri in the form of ``sdb://\u0026lt;profile\u0026gt;/\u0026lt;key\u0026gt;``. If the uri provided does not start with ``sdb://`` or the value is not successfully set, return ``False``. CLI Example: salt '*' sdb.set sdb://mymemcached/foo bar seed.apply:\nSeed a location (disk image, directory, or block device) with the minion config, approve the minion's key, and/or install salt-minion. CLI Example: salt 'minion' seed.apply path id [config=config_data] \\ [gen_key=(true|false)] [approve_key=(true|false)] \\ [install=(true|false)] path Full path to the directory, device, or disk image on the target minion's file system. id Minion id with which to seed the path. config Minion configuration options. By default, the 'master' option is set to the target host's 'master'. approve_key Request a pre-approval of the generated minion key. Requires that the salt-master be configured to either auto-accept all keys or expect a signing request from the target host. Default: true. install Install salt-minion, if absent. Default: true. prep_install Prepare the bootstrap script, but don't run it. Default: false seed.mkconfig:\nGenerate keys and config and put them in a tmp directory. pub_key absolute path or file content of an optional preseeded salt key priv_key absolute path or file content of an optional preseeded salt key CLI Example: salt 'minion' seed.mkconfig [config=config_data] [tmp=tmp_dir] \\ [id_=minion_id] [approve_key=(true|false)] seed.prep_bootstrap:\nUpdate and get the random script to a random place CLI Example: salt '*' seed.prep_bootstrap /tmp serverdensity_device.create:\nFunction to create device in Server Density. For more info, see the `API docs`__. .. __: https://apidocs.serverdensity.com/Inventory/Devices/Creating CLI Example: salt '*' serverdensity_device.create lama salt '*' serverdensity_device.create rich_lama group=lama_band installedRAM=32768 serverdensity_device.delete:\nDelete a device from Server Density. For more information, see the `API docs`__. .. __: https://apidocs.serverdensity.com/Inventory/Devices/Deleting CLI Example: salt '*' serverdensity_device.delete 51f7eafcdba4bb235e000ae4 serverdensity_device.get_sd_auth:\nReturns requested Server Density authentication value from pillar. CLI Example: salt '*' serverdensity_device.get_sd_auth \u0026lt;val\u0026gt; serverdensity_device.install_agent:\nFunction downloads Server Density installation agent, and installs sd-agent with agent_key. Optionally the agent_version would select the series to use (defaults on the v1 one). CLI Example: salt '*' serverdensity_device.install_agent c2bbdd6689ff46282bdaa07555641498 salt '*' serverdensity_device.install_agent c2bbdd6689ff46282bdaa07555641498 2 serverdensity_device.ls:\nList devices in Server Density Results will be filtered by any params passed to this function. For more information, see the API docs on listing_ and searching_. .. _listing: https://apidocs.serverdensity.com/Inventory/Devices/Listing .. _searching: https://apidocs.serverdensity.com/Inventory/Devices/Searching CLI Example: salt '*' serverdensity_device.ls salt '*' serverdensity_device.ls name=lama salt '*' serverdensity_device.ls name=lama group=lama_band installedRAM=32768 serverdensity_device.update:\nUpdates device information in Server Density. For more information see the `API docs`__. .. __: https://apidocs.serverdensity.com/Inventory/Devices/Updating CLI Example: salt '*' serverdensity_device.update 51f7eafcdba4bb235e000ae4 name=lama group=lama_band salt '*' serverdensity_device.update 51f7eafcdba4bb235e000ae4 name=better_lama group=rock_lamas swapSpace=512 service.available:\nNew in version 0.10.4 Check that the given service is available taking into account template units. CLI Example: salt '*' service.available sshd service.disable:\nChanged in version 2015.8.12,2016.3.3,2016.11.0 On minions running systemd\u0026gt;=205, `systemd-run(1)`_ is now used to isolate commands run by this function from the ``salt-minion`` daemon's control group. This is done to avoid a race condition in cases where the ``salt-minion`` service is restarted while a service is being modified. If desired, usage of `systemd-run(1)`_ can be suppressed by setting a :mod:`config option \u0026lt;salt.modules.config.get\u0026gt;` called ``systemd.scope``, with a value of ``False`` (no quotes). .. _`systemd-run(1)`: https://www.freedesktop.org/software/systemd/man/systemd-run.html Disable the named service to not start when the system boots no_block : False Set to ``True`` to start the service using ``--no-block``. New in version 2017.7.0 root Enable/disable/mask unit files in the specified root directory CLI Example: salt '*' service.disable \u0026lt;service name\u0026gt; service.disabled:\nReturn if the named service is disabled from starting on boot root Enable/disable/mask unit files in the specified root directory CLI Example: salt '*' service.disabled \u0026lt;service name\u0026gt; service.enable:\nChanged in version 2015.8.12,2016.3.3,2016.11.0 On minions running systemd\u0026gt;=205, `systemd-run(1)`_ is now used to isolate commands run by this function from the ``salt-minion`` daemon's control group. This is done to avoid a race condition in cases where the ``salt-minion`` service is restarted while a service is being modified. If desired, usage of `systemd-run(1)`_ can be suppressed by setting a :mod:`config option \u0026lt;salt.modules.config.get\u0026gt;` called ``systemd.scope``, with a value of ``False`` (no quotes). .. _`systemd-run(1)`: https://www.freedesktop.org/software/systemd/man/systemd-run.html Enable the named service to start when the system boots no_block : False Set to ``True`` to start the service using ``--no-block``. New in version 2017.7.0 unmask : False Set to ``True`` to remove an indefinite mask before attempting to enable the service. New in version 2017.7.0 In previous releases, Salt would simply unmask a service before enabling. This behaviour is no longer the default. unmask_runtime : False Set to ``True`` to remove a runtime mask before attempting to enable the service. New in version 2017.7.0 In previous releases, Salt would simply unmask a service before enabling. This behaviour is no longer the default. root Enable/disable/mask unit files in the specified root directory CLI Example: salt '*' service.enable \u0026lt;service name\u0026gt; service.enabled:\nReturn if the named service is enabled to start on boot root Enable/disable/mask unit files in the specified root directory CLI Example: salt '*' service.enabled \u0026lt;service name\u0026gt; service.execs:\nNew in version 2014.7.0 Return a list of all files specified as ``ExecStart`` for all services. root Enable/disable/mask unit files in the specified root directory CLI Example: salt '*' service.execs service.firstboot:\nNew in version 3001 Call systemd-firstboot to configure basic settings of the system locale Set primary locale (LANG=) locale_message Set message locale (LC_MESSAGES=) keymap Set keymap timezone Set timezone hostname Set host name machine_id Set machine ID root Operate on an alternative filesystem root CLI Example: salt '*' service.firstboot keymap=jp locale=en_US.UTF-8 service.force_reload:\nChanged in version 2015.8.12,2016.3.3,2016.11.0 On minions running systemd\u0026gt;=205, `systemd-run(1)`_ is now used to isolate commands run by this function from the ``salt-minion`` daemon's control group. This is done to avoid a race condition in cases where the ``salt-minion`` service is restarted while a service is being modified. If desired, usage of `systemd-run(1)`_ can be suppressed by setting a :mod:`config option \u0026lt;salt.modules.config.get\u0026gt;` called ``systemd.scope``, with a value of ``False`` (no quotes). .. _`systemd-run(1)`: https://www.freedesktop.org/software/systemd/man/systemd-run.html New in version 0.12.0 Force-reload the specified service with systemd no_block : False Set to ``True`` to start the service using ``--no-block``. New in version 2017.7.0 unmask : False Set to ``True`` to remove an indefinite mask before attempting to force-reload the service. New in version 2017.7.0 In previous releases, Salt would simply unmask a service before force-reloading. This behaviour is no longer the default. unmask_runtime : False Set to ``True`` to remove a runtime mask before attempting to force-reload the service. New in version 2017.7.0 In previous releases, Salt would simply unmask a service before force-reloading. This behaviour is no longer the default. CLI Example: salt '*' service.force_reload \u0026lt;service name\u0026gt; service.get_all:\nReturn a list of all available services root Enable/disable/mask unit files in the specified root directory CLI Example: salt '*' service.get_all service.get_disabled:\nReturn a list of all disabled services root Enable/disable/mask unit files in the specified root directory CLI Example: salt '*' service.get_disabled service.get_enabled:\nReturn a list of all enabled services root Enable/disable/mask unit files in the specified root directory CLI Example: salt '*' service.get_enabled service.get_running:\nReturn a list of all running services, so far as systemd is concerned CLI Example: salt '*' service.get_running service.get_static:\nNew in version 2015.8.5 Return a list of all static services root Enable/disable/mask unit files in the specified root directory CLI Example: salt '*' service.get_static service.mask:\nNew in version 2015.5.0 Changed in version 2015.8.12,2016.3.3,2016.11.0 On minions running systemd\u0026gt;=205, `systemd-run(1)`_ is now used to isolate commands run by this function from the ``salt-minion`` daemon's control group. This is done to avoid a race condition in cases where the ``salt-minion`` service is restarted while a service is being modified. If desired, usage of `systemd-run(1)`_ can be suppressed by setting a :mod:`config option \u0026lt;salt.modules.config.get\u0026gt;` called ``systemd.scope``, with a value of ``False`` (no quotes). .. _`systemd-run(1)`: https://www.freedesktop.org/software/systemd/man/systemd-run.html Mask the specified service with systemd runtime : False Set to ``True`` to mask this service only until the next reboot New in version 2015.8.5 root Enable/disable/mask unit files in the specified root directory CLI Example: salt '*' service.mask foo salt '*' service.mask foo runtime=True service.masked:\nNew in version 2015.8.0 Changed in version 2015.8.5 The return data for this function has changed. If the service is masked, the return value will now be the output of the ``systemctl is-enabled`` command (so that a persistent mask can be distinguished from a runtime mask). If the service is not masked, then ``False`` will be returned. Changed in version 2017.7.0 This function now returns a boolean telling the user whether a mask specified by the new ``runtime`` argument is set. If ``runtime`` is ``False``, this function will return ``True`` if an indefinite mask is set for the named service (otherwise ``False`` will be returned). If ``runtime`` is ``False``, this function will return ``True`` if a runtime mask is set, otherwise ``False``. Check whether or not a service is masked runtime : False Set to ``True`` to check for a runtime mask New in version 2017.7.0 In previous versions, this function would simply return the output of ``systemctl is-enabled`` when the service was found to be masked. However, since it is possible to both have both indefinite and runtime masks on a service simultaneously, this function now only checks for runtime masks if this argument is set to ``True``. Otherwise, it will check for an indefinite mask. root Enable/disable/mask unit files in the specified root directory CLI Examples: salt '*' service.masked foo salt '*' service.masked foo runtime=True service.missing:\nNew in version 2014.1.0 The inverse of :py:func:`service.available \u0026lt;salt.modules.systemd.available\u0026gt;`. Returns ``True`` if the specified service is not available, otherwise returns ``False``. CLI Example: salt '*' service.missing sshd service.offline:\nNew in version 3004 Check if systemd is working in offline mode, where is not possible to talk with PID 1. CLI Example: salt '*' service.offline service.reload:\nChanged in version 2015.8.12,2016.3.3,2016.11.0 On minions running systemd\u0026gt;=205, `systemd-run(1)`_ is now used to isolate commands run by this function from the ``salt-minion`` daemon's control group. This is done to avoid a race condition in cases where the ``salt-minion`` service is restarted while a service is being modified. If desired, usage of `systemd-run(1)`_ can be suppressed by setting a :mod:`config option \u0026lt;salt.modules.config.get\u0026gt;` called ``systemd.scope``, with a value of ``False`` (no quotes). .. _`systemd-run(1)`: https://www.freedesktop.org/software/systemd/man/systemd-run.html Reload the specified service with systemd no_block : False Set to ``True`` to reload the service using ``--no-block``. New in version 2017.7.0 unmask : False Set to ``True`` to remove an indefinite mask before attempting to reload the service. New in version 2017.7.0 In previous releases, Salt would simply unmask a service before reloading. This behaviour is no longer the default. unmask_runtime : False Set to ``True`` to remove a runtime mask before attempting to reload the service. New in version 2017.7.0 In previous releases, Salt would simply unmask a service before reloading. This behaviour is no longer the default. CLI Example: salt '*' service.reload \u0026lt;service name\u0026gt; service.restart:\nChanged in version 2015.8.12,2016.3.3,2016.11.0 On minions running systemd\u0026gt;=205, `systemd-run(1)`_ is now used to isolate commands run by this function from the ``salt-minion`` daemon's control group. This is done to avoid a race condition in cases where the ``salt-minion`` service is restarted while a service is being modified. If desired, usage of `systemd-run(1)`_ can be suppressed by setting a :mod:`config option \u0026lt;salt.modules.config.get\u0026gt;` called ``systemd.scope``, with a value of ``False`` (no quotes). .. _`systemd-run(1)`: https://www.freedesktop.org/software/systemd/man/systemd-run.html Restart the specified service with systemd no_block : False Set to ``True`` to start the service using ``--no-block``. New in version 2017.7.0 unmask : False Set to ``True`` to remove an indefinite mask before attempting to restart the service. New in version 2017.7.0 In previous releases, Salt would simply unmask a service before restarting. This behaviour is no longer the default. unmask_runtime : False Set to ``True`` to remove a runtime mask before attempting to restart the service. New in version 2017.7.0 In previous releases, Salt would simply unmask a service before restarting. This behaviour is no longer the default. CLI Example: salt '*' service.restart \u0026lt;service name\u0026gt; service.show:\nNew in version 2014.7.0 Show properties of one or more units/jobs or the manager root Enable/disable/mask unit files in the specified root directory CLI Example: salt '*' service.show \u0026lt;service name\u0026gt; service.start:\nChanged in version 2015.8.12,2016.3.3,2016.11.0 On minions running systemd\u0026gt;=205, `systemd-run(1)`_ is now used to isolate commands run by this function from the ``salt-minion`` daemon's control group. This is done to avoid a race condition in cases where the ``salt-minion`` service is restarted while a service is being modified. If desired, usage of `systemd-run(1)`_ can be suppressed by setting a :mod:`config option \u0026lt;salt.modules.config.get\u0026gt;` called ``systemd.scope``, with a value of ``False`` (no quotes). .. _`systemd-run(1)`: https://www.freedesktop.org/software/systemd/man/systemd-run.html Start the specified service with systemd no_block : False Set to ``True`` to start the service using ``--no-block``. New in version 2017.7.0 unmask : False Set to ``True`` to remove an indefinite mask before attempting to start the service. New in version 2017.7.0 In previous releases, Salt would simply unmask a service before starting. This behaviour is no longer the default. unmask_runtime : False Set to ``True`` to remove a runtime mask before attempting to start the service. New in version 2017.7.0 In previous releases, Salt would simply unmask a service before starting. This behaviour is no longer the default. CLI Example: salt '*' service.start \u0026lt;service name\u0026gt; service.status:\nReturn the status for a service via systemd. If the name contains globbing, a dict mapping service name to True/False values is returned. Changed in version 2018.3.0 The service name can now be a glob (e.g. ``salt*``) Args: name (str): The name of the service to check sig (str): Not implemented Returns: bool: True if running, False otherwise dict: Maps service name to True if running, False otherwise CLI Example: salt '*' service.status \u0026lt;service name\u0026gt; [service signature] service.stop:\nChanged in version 2015.8.12,2016.3.3,2016.11.0 On minions running systemd\u0026gt;=205, `systemd-run(1)`_ is now used to isolate commands run by this function from the ``salt-minion`` daemon's control group. This is done to avoid a race condition in cases where the ``salt-minion`` service is restarted while a service is being modified. If desired, usage of `systemd-run(1)`_ can be suppressed by setting a :mod:`config option \u0026lt;salt.modules.config.get\u0026gt;` called ``systemd.scope``, with a value of ``False`` (no quotes). .. _`systemd-run(1)`: https://www.freedesktop.org/software/systemd/man/systemd-run.html Stop the specified service with systemd no_block : False Set to ``True`` to start the service using ``--no-block``. New in version 2017.7.0 CLI Example: salt '*' service.stop \u0026lt;service name\u0026gt; service.systemctl_reload:\nNew in version 0.15.0 Reloads systemctl, an action needed whenever unit files are updated. CLI Example: salt '*' service.systemctl_reload service.unmask:\nNew in version 2015.5.0 Changed in version 2015.8.12,2016.3.3,2016.11.0 On minions running systemd\u0026gt;=205, `systemd-run(1)`_ is now used to isolate commands run by this function from the ``salt-minion`` daemon's control group. This is done to avoid a race condition in cases where the ``salt-minion`` service is restarted while a service is being modified. If desired, usage of `systemd-run(1)`_ can be suppressed by setting a :mod:`config option \u0026lt;salt.modules.config.get\u0026gt;` called ``systemd.scope``, with a value of ``False`` (no quotes). .. _`systemd-run(1)`: https://www.freedesktop.org/software/systemd/man/systemd-run.html Unmask the specified service with systemd runtime : False Set to ``True`` to unmask this service only until the next reboot New in version 2017.7.0 In previous versions, this function would remove whichever mask was identified by running ``systemctl is-enabled`` on the service. However, since it is possible to both have both indefinite and runtime masks on a service simultaneously, this function now removes a runtime mask only when this argument is set to ``True``, and otherwise removes an indefinite mask. root Enable/disable/mask unit files in the specified root directory CLI Example: salt '*' service.unmask foo salt '*' service.unmask foo runtime=True shadow.default_hash:\nReturns the default hash used for unset passwords CLI Example: salt '*' shadow.default_hash shadow.del_password:\nNew in version 2014.7.0 Delete the password from name user name User to delete root Directory to chroot into CLI Example: salt '*' shadow.del_password username shadow.gen_password:\nNew in version 2014.7.0 Generate hashed password Note: When called this function is called directly via remote-execution, the password argument may be displayed in the system's process list. This may be a security risk on certain systems. password Plaintext password to be hashed. crypt_salt Crpytographic salt. If not given, a random 8-character salt will be generated. algorithm The following hash algorithms are supported: * md5 * blowfish (not in mainline glibc, only available in distros that add it) * sha256 * sha512 (default) CLI Example: salt '*' shadow.gen_password 'I_am_password' salt '*' shadow.gen_password 'I_am_password' crypt_salt='I_am_salt' algorithm=sha256 shadow.info:\nReturn information for the specified user name User to get the information for root Directory to chroot into CLI Example: salt '*' shadow.info root shadow.list_users:\nNew in version 2018.3.0 Return a list of all shadow users root Directory to chroot into CLI Example: salt '*' shadow.list_users shadow.lock_password:\nNew in version 2016.11.0 Lock the password from specified user name User to lock root Directory to chroot into CLI Example: salt '*' shadow.lock_password username shadow.set_date:\nSets the value for the date the password was last changed to days since the epoch (January 1, 1970). See man chage. name User to modify date Date the password was last changed root Directory to chroot into CLI Example: salt '*' shadow.set_date username 0 shadow.set_expire:\nChanged in version 2014.7.0 Sets the value for the date the account expires as days since the epoch (January 1, 1970). Using a value of -1 will clear expiration. See man chage. name User to modify date Date the account expires root Directory to chroot into CLI Example: salt '*' shadow.set_expire username -1 shadow.set_inactdays:\nSet the number of days of inactivity after a password has expired before the account is locked. See man chage. name User to modify inactdays Set password inactive after this number of days root Directory to chroot into CLI Example: salt '*' shadow.set_inactdays username 7 shadow.set_maxdays:\nSet the maximum number of days during which a password is valid. See man chage. name User to modify maxdays Maximum number of days during which a password is valid root Directory to chroot into CLI Example: salt '*' shadow.set_maxdays username 90 shadow.set_mindays:\nSet the minimum number of days between password changes. See man chage. name User to modify mindays Minimum number of days between password changes root Directory to chroot into CLI Example: salt '*' shadow.set_mindays username 7 shadow.set_password:\nSet the password for a named user. The password must be a properly defined hash. A password hash can be generated with :py:func:`gen_password`. name User to set the password password Password already hashed use_usermod Use usermod command to better compatibility root Directory to chroot into CLI Example: salt '*' shadow.set_password root '$1$UYCIxa628.9qXjpQCjM4a..' shadow.set_warndays:\nSet the number of days of warning before a password change is required. See man chage. name User to modify warndays Number of days of warning before a password change is required root Directory to chroot into CLI Example: salt '*' shadow.set_warndays username 7 shadow.unlock_password:\nNew in version 2016.11.0 Unlock the password from name user name User to unlock root Directory to chroot into CLI Example: salt '*' shadow.unlock_password username slack.call_hook:\nSend message to Slack incoming webhook. :param message: The topic of message. :param attachment: The message to send to the Slack WebHook. :param colour: The colour of border of left side :param short: An optional flag indicating whether the value is short enough to be displayed side-by-side with other values. :param identifier: The identifier of WebHook. :param channel: The channel to use instead of the WebHook default. :param username: Username to use instead of WebHook default. :param icon_emoji: Icon to use instead of WebHook default. :return: Boolean if message was sent successfully. CLI Example: salt '*' slack.call_hook message='Hello, from SaltStack' slack.find_room:\nFind a room by name and return it. :param name: The room name. :param api_key: The Slack admin api key. :return: The room object. CLI Example: salt '*' slack.find_room name=\u0026quot;random\u0026quot; salt '*' slack.find_room name=\u0026quot;random\u0026quot; api_key=peWcBiMOS9HrZG15peWcBiMOS9HrZG15 slack.find_user:\nFind a user by name and return it. :param name: The user name. :param api_key: The Slack admin api key. :return: The user object. CLI Example: salt '*' slack.find_user name=\u0026quot;ThomasHatch\u0026quot; salt '*' slack.find_user name=\u0026quot;ThomasHatch\u0026quot; api_key=peWcBiMOS9HrZG15peWcBiMOS9HrZG15 slack.list_rooms:\nList all Slack rooms. :param api_key: The Slack admin api key. :return: The room list. CLI Example: salt '*' slack.list_rooms salt '*' slack.list_rooms api_key=peWcBiMOS9HrZG15peWcBiMOS9HrZG15 slack.list_users:\nList all Slack users. :param api_key: The Slack admin api key. :return: The user list. CLI Example: salt '*' slack.list_users salt '*' slack.list_users api_key=peWcBiMOS9HrZG15peWcBiMOS9HrZG15 slack.post_message:\nSend a message to a Slack channel. Changed in version 3003 Added `attachments` and `blocks` kwargs :param channel: The channel name, either will work. :param message: The message to send to the Slack channel. :param from_name: Specify who the message is from. :param api_key: The Slack api key, if not specified in the configuration. :param icon: URL to an image to use as the icon for this message :param attachments: Any attachments to be sent with the message. :param blocks: Any blocks to be sent with the message. :return: Boolean if message was sent successfully. CLI Example: salt '*' slack.post_message channel=\u0026quot;Development Room\u0026quot; message=\u0026quot;Build is done\u0026quot; from_name=\u0026quot;Build Server\u0026quot; slsutil.banner:\nCreate a standardized comment block to include in a templated file. A common technique in configuration management is to include a comment block in managed files, warning users not to modify the file. This function simplifies and standardizes those comment blocks. :param width: The width, in characters, of the banner. Default is 72. :param commentchar: The character to be used in the starting position of each line. This value should be set to a valid line comment character for the syntax of the file in which the banner is being inserted. Multiple character sequences, like '//' are supported. If the file's syntax does not support line comments (such as XML), use the ``blockstart`` and ``blockend`` options. :param borderchar: The character to use in the top and bottom border of the comment box. Must be a single character. :param blockstart: The character sequence to use at the beginning of a block comment. Should be used in conjunction with ``blockend`` :param blockend: The character sequence to use at the end of a block comment. Should be used in conjunction with ``blockstart`` :param title: The first field of the comment block. This field appears centred at the top of the box. :param text: The second filed of the comment block. This field appears left-justified at the bottom of the box. :param newline: Boolean value to indicate whether the comment block should end with a newline. Default is ``False``. **Example 1 - the default banner:** {{ salt['slsutil.banner']() }} ######################################################################## # # # THIS FILE IS MANAGED BY SALT - DO NOT EDIT # # # # The contents of this file are managed by Salt. Any changes to this # # file may be overwritten automatically and without warning. # ######################################################################## **Example 2 - a Javadoc-style banner:** {{ salt['slsutil.banner'](commentchar=' *', borderchar='*', blockstart='/**', blockend=' */') }} /** *********************************************************************** * * * THIS FILE IS MANAGED BY SALT - DO NOT EDIT * * * * The contents of this file are managed by Salt. Any changes to this * * file may be overwritten automatically and without warning. * *********************************************************************** */ **Example 3 - custom text:** {{ set copyright='This file may not be copied or distributed without permission of VMware, Inc.' }} {{ salt['slsutil.banner'](title='Copyright 2019 VMware, Inc.', text=copyright, width=60) }} ############################################################ # # # Copyright 2019 VMware, Inc. # # # # This file may not be copied or distributed without # # permission of VMware, Inc. # ############################################################ slsutil.boolstr:\nConvert a boolean value into a string. This function is intended to be used from within file templates to provide an easy way to take boolean values stored in Pillars or Grains, and write them out in the appropriate syntax for a particular file template. :param value: The boolean value to be converted :param true: The value to return if ``value`` is ``True`` :param false: The value to return if ``value`` is ``False`` In this example, a pillar named ``smtp:encrypted`` stores a boolean value, but the template that uses that value needs ``yes`` or ``no`` to be written, based on the boolean value. *Note: this is written on two lines for clarity. The same result could be achieved in one line.* {% set encrypted = salt[pillar.get]('smtp:encrypted', false) %} use_tls: {{ salt['slsutil.boolstr'](encrypted, 'yes', 'no') }} Result (assuming the value is ``True``): use_tls: yes slsutil.deserialize:\nDeserialize a Python object using one of the available :ref:`all-salt.serializers`. CLI Example: salt '*' slsutil.deserialize 'json' '{\u0026quot;foo\u0026quot;: \u0026quot;Foo!\u0026quot;}' salt '*' --no-parse=stream_or_string slsutil.deserialize 'json' \\ stream_or_string='{\u0026quot;foo\u0026quot;: \u0026quot;Foo!\u0026quot;}' Jinja Example: {% set python_object = salt.slsutil.deserialize('json', '{\u0026quot;foo\u0026quot;: \u0026quot;Foo!\u0026quot;}') %} slsutil.dir_exists:\nReturn ``True`` if a directory exists in the state tree, ``False`` otherwise. :param str path: The fully qualified path to a directory in the state tree. :param str saltenv: The fileserver environment to search. Default: ``base`` New in version 3004 CLI Example: salt '*' slsutil.dir_exists nginx/files slsutil.file_exists:\nReturn ``True`` if a file exists in the state tree, ``False`` otherwise. New in version 3004 :param str path: The fully qualified path to a file in the state tree. :param str saltenv: The fileserver environment to search. Default: ``base`` CLI Example: salt '*' slsutil.file_exists nginx/defaults.yaml slsutil.findup:\nFind the first path matching a filename or list of filenames in a specified directory or the nearest ancestor directory. Returns the full path to the first file found. New in version 3004 :param str startpath: The fileserver path from which to begin the search. An empty string refers to the state tree root. :param filenames: A filename or list of filenames to search for. Searching for directory names is also supported. :param str saltenv: The fileserver environment to search. Default: ``base`` Example: return the path to ``defaults.yaml``, walking up the tree from the state file currently being processed. {{ salt[\u0026quot;slsutil.findup\u0026quot;](tplfile, \u0026quot;defaults.yaml\u0026quot;) }} CLI Example: salt '*' slsutil.findup formulas/shared/nginx map.jinja slsutil.merge:\nMerge a data structure into another by choosing a merge strategy Strategies: * aggregate * list * overwrite * recurse * smart CLI Example: salt '*' slsutil.merge '{foo: Foo}' '{bar: Bar}' slsutil.merge_all:\nNew in version 2019.2.0 Merge a list of objects into each other in order :type lst: Iterable :param lst: List of objects to be merged. :type strategy: String :param strategy: Merge strategy. See utils.dictupdate. :type renderer: String :param renderer: Renderer type. Used to determine strategy when strategy is 'smart'. :type merge_lists: Bool :param merge_lists: Defines whether to merge embedded object lists. CLI Example: $ salt-call --output=txt slsutil.merge_all '[{foo: Foo}, {foo: Bar}]' local: {u'foo': u'Bar'} slsutil.path_exists:\nReturn ``True`` if a path exists in the state tree, ``False`` otherwise. The path could refer to a file or directory. New in version 3004 :param str path: The fully qualified path to a file or directory in the state tree. :param str saltenv: The fileserver environment to search. Default: ``base`` CLI Example: salt '*' slsutil.path_exists nginx/defaults.yaml slsutil.renderer:\nParse a string or file through Salt's renderer system Changed in version 2018.3.0 Add support for Salt fileserver URIs. This is an open-ended function and can be used for a variety of tasks. It makes use of Salt's \u0026quot;renderer pipes\u0026quot; system to run a string or file through a pipe of any of the loaded renderer modules. :param path: The path to a file on Salt's fileserver (any URIs supported by :py:func:`cp.get_url \u0026lt;salt.modules.cp.get_url\u0026gt;`) or on the local file system. :param string: An inline string to be used as the file to send through the renderer system. Note, not all renderer modules can work with strings; the 'py' renderer requires a file, for example. :param default_renderer: The renderer pipe to send the file through; this is overridden by a \u0026quot;she-bang\u0026quot; at the top of the file. :param kwargs: Keyword args to pass to Salt's compile_template() function. Keep in mind the goal of each renderer when choosing a render-pipe; for example, the Jinja renderer processes a text file and produces a string, however the YAML renderer processes a text file and produces a data structure. One possible use is to allow writing \u0026quot;map files\u0026quot;, as are commonly seen in Salt formulas, but without tying the renderer of the map file to the renderer used in the other sls files. In other words, a map file could use the Python renderer and still be included and used by an sls file that uses the default 'jinja|yaml' renderer. For example, the two following map files produce identical results but one is written using the normal 'jinja|yaml' and the other is using 'py': #!jinja|yaml {% set apache = salt.grains.filter_by({ ...normal jinja map file here... }, merge=salt.pillar.get('apache:lookup')) %} {{ apache | yaml() }} #!py def run(): apache = __salt__.grains.filter_by({ ...normal map here but as a python dict... }, merge=__salt__.pillar.get('apache:lookup')) return apache Regardless of which of the above map files is used, it can be accessed from any other sls file by calling this function. The following is a usage example in Jinja: {% set apache = salt.slsutil.renderer('map.sls') %} CLI Example: salt '*' slsutil.renderer salt://path/to/file salt '*' slsutil.renderer /path/to/file salt '*' slsutil.renderer /path/to/file.jinja default_renderer='jinja' salt '*' slsutil.renderer /path/to/file.sls default_renderer='jinja|yaml' salt '*' slsutil.renderer string='Inline template! {{ saltenv }}' salt '*' slsutil.renderer string='Hello, {{ name }}.' name='world' slsutil.serialize:\nSerialize a Python object using one of the available :ref:`all-salt.serializers`. CLI Example: salt '*' --no-parse=obj slsutil.serialize 'json' obj=\u0026quot;{'foo': 'Foo!'} Jinja Example: {% set json_string = salt.slsutil.serialize('json', {'foo': 'Foo!'}) %} slsutil.update:\nMerge ``upd`` recursively into ``dest`` If ``merge_lists=True``, will aggregate list object types instead of replacing. This behaviour is only activated when ``recursive_update=True``. CLI Example: salt '*' slsutil.update '{foo: Foo}' '{bar: Bar}' smbios.get:\nGet an individual DMI string from SMBIOS info string The string to fetch. DMIdecode supports: - ``bios-vendor`` - ``bios-version`` - ``bios-release-date`` - ``system-manufacturer`` - ``system-product-name`` - ``system-version`` - ``system-serial-number`` - ``system-uuid`` - ``baseboard-manufacturer`` - ``baseboard-product-name`` - ``baseboard-version`` - ``baseboard-serial-number`` - ``baseboard-asset-tag`` - ``chassis-manufacturer`` - ``chassis-type`` - ``chassis-version`` - ``chassis-serial-number`` - ``chassis-asset-tag`` - ``processor-family`` - ``processor-manufacturer`` - ``processor-version`` - ``processor-frequency`` clean | Don't return well-known false information | (invalid UUID's, serial 000000000's, etcetera) | Defaults to ``True`` CLI Example: salt '*' smbios.get system-uuid clean=False smbios.records:\nReturn DMI records from SMBIOS type Return only records of type(s) The SMBIOS specification defines the following DMI types: ==== ====================================== Type Information ==== ====================================== 0 BIOS 1 System 2 Baseboard 3 Chassis 4 Processor 5 Memory Controller 6 Memory Module 7 Cache 8 Port Connector 9 System Slots 10 On Board Devices 11 OEM Strings 12 System Configuration Options 13 BIOS Language 14 Group Associations 15 System Event Log 16 Physical Memory Array 17 Memory Device 18 32-bit Memory Error 19 Memory Array Mapped Address 20 Memory Device Mapped Address 21 Built-in Pointing Device 22 Portable Battery 23 System Reset 24 Hardware Security 25 System Power Controls 26 Voltage Probe 27 Cooling Device 28 Temperature Probe 29 Electrical Current Probe 30 Out-of-band Remote Access 31 Boot Integrity Services 32 System Boot 33 64-bit Memory Error 34 Management Device 35 Management Device Component 36 Management Device Threshold Data 37 Memory Channel 38 IPMI Device 39 Power Supply 40 Additional Information 41 Onboard Devices Extended Information 42 Management Controller Host Interface ==== ====================================== clean | Don't return well-known false information | (invalid UUID's, serial 000000000's, etcetera) | Defaults to ``True`` CLI Example: salt '*' smbios.records clean=False salt '*' smbios.records 14 salt '*' smbios.records 4 core_count,thread_count,current_speed smtp.send_msg:\nSend a message to an SMTP recipient. To send a message to multiple recipients, the recipients should be in a comma-seperated Python string. Designed for use in states. CLI Examples: salt '*' smtp.send_msg 'admin@example.com' 'This is a salt module test' profile='my-smtp-account' salt '*' smtp.send_msg 'admin@example.com,admin2@example.com' 'This is a salt module test for multiple recipients' profile='my-smtp-account' salt '*' smtp.send_msg 'admin@example.com' 'This is a salt module test' username='myuser' password='verybadpass' sender='admin@example.com' server='smtp.domain.com' salt '*' smtp.send_msg 'admin@example.com' 'This is a salt module test' username='myuser' password='verybadpass' sender='admin@example.com' server='smtp.domain.com' attachments=\u0026quot;['/var/log/messages']\u0026quot; solrcloud.alias_exists:\nCheck alias existence Additional parameters (kwargs) may be passed, they will be proxied to http.query CLI Example: salt '*' solrcloud.alias_exists my_alias solrcloud.alias_get_collections:\nGet collection list for an alias Additional parameters (kwargs) may be passed, they will be proxied to http.query CLI Example: salt '*' solrcloud.alias_get my_alias solrcloud.alias_set_collections:\nDefine an alias Additional parameters (kwargs) may be passed, they will be proxied to http.query CLI Example: salt '*' solrcloud.alias_set my_alias collections=[collection1, colletion2] solrcloud.cluster_status:\nGet cluster status Additional parameters (kwargs) may be passed, they will be proxied to http.query CLI Example: salt '*' solrcloud.cluster_status solrcloud.collection_backup:\nCreate a backup for a collection. Additional parameters (kwargs) may be passed, they will be proxied to http.query CLI Example: salt '*' solrcloud.core_backup collection_name /mnt/nfs_backup solrcloud.collection_backup_all:\nCreate a backup for all collection present on the server. Additional parameters (kwargs) may be passed, they will be proxied to http.query CLI Example: salt '*' solrcloud.core_backup /mnt/nfs_backup solrcloud.collection_check_options:\nCheck collections options CLI Example: salt '*' solrcloud.collection_check_options '{\u0026quot;replicationFactor\u0026quot;:4}' solrcloud.collection_create:\nCreate a collection, Additional parameters (kwargs) may be passed, they will be proxied to http.query CLI Example: salt '*' solrcloud.collection_create collection_name Collection creation options may be passed using the \u0026quot;options\u0026quot; parameter. Do not include option \u0026quot;name\u0026quot; since it already specified by the mandatory parameter \u0026quot;collection_name\u0026quot; salt '*' solrcloud.collection_create collection_name options={\u0026quot;replicationFactor\u0026quot;:2, \u0026quot;numShards\u0026quot;:3} Cores options may be passed using the \u0026quot;properties\u0026quot; key in options. Do not include property \u0026quot;name\u0026quot; salt '*' solrcloud.collection_create collection_name options={\u0026quot;replicationFactor\u0026quot;:2, \u0026quot;numShards\u0026quot;:3, \u0026quot;properties\u0026quot;:{\u0026quot;dataDir\u0026quot;:\u0026quot;/srv/solr/hugePartitionSollection\u0026quot;}} solrcloud.collection_creation_options:\nGet collection option list that can only be defined at creation CLI Example: salt '*' solrcloud.collection_creation_options solrcloud.collection_exists:\nCheck if a collection exists Additional parameters (kwargs) may be passed, they will be proxied to http.query CLI Example: salt '*' solrcloud.collection_exists collection_name solrcloud.collection_get_options:\nGet collection options Additional parameters (kwargs) may be passed, they will be proxied to http.query CLI Example: salt '*' solrcloud.collection_get_options collection_name solrcloud.collection_list:\nList all collections Additional parameters (kwargs) may be passed, they will be proxied to http.query CLI Example: salt '*' solrcloud.collection_list solrcloud.collection_reload:\nCheck if a collection exists Additional parameters (kwargs) may be passed, they will be proxied to http.query CLI Example: salt '*' solrcloud.collection_reload collection_name solrcloud.collection_set_options:\nChange collection options Additional parameters (kwargs) may be passed, they will be proxied to http.query Note that not every parameter can be changed after collection creation CLI Example: salt '*' solrcloud.collection_set_options collection_name options={\u0026quot;replicationFactor\u0026quot;:4} sqlite3.fetch:\nRetrieve data from an sqlite3 db (returns all rows, be careful!) CLI Example: salt '*' sqlite3.fetch /root/test.db 'SELECT * FROM test;' sqlite3.indexes:\nShow all indices in the database, for people with poor spelling skills CLI Example: salt '*' sqlite3.indexes /root/test.db sqlite3.indices:\nShow all indices in the database CLI Example: salt '*' sqlite3.indices /root/test.db sqlite3.modify:\nIssue an SQL query to sqlite3 (with no return data), usually used to modify the database in some way (insert, delete, create, etc) CLI Example: salt '*' sqlite3.modify /root/test.db 'CREATE TABLE test(id INT, testdata TEXT);' sqlite3.sqlite_version:\nReturn version of sqlite CLI Example: salt '*' sqlite3.sqlite_version sqlite3.tables:\nShow all tables in the database CLI Example: salt '*' sqlite3.tables /root/test.db sqlite3.version:\nReturn version of pysqlite CLI Example: salt '*' sqlite3.version ssh.auth_keys:\nReturn the authorised keys for users CLI Example: salt '*' ssh.auth_keys salt '*' ssh.auth_keys root salt '*' ssh.auth_keys user=root salt '*' ssh.auth_keys user=\u0026quot;[user1, user2]\u0026quot; ssh.check_key:\nCheck to see if a key needs updating, returns \u0026quot;update\u0026quot;, \u0026quot;add\u0026quot; or \u0026quot;exists\u0026quot; CLI Example: salt '*' ssh.check_key \u0026lt;user\u0026gt; \u0026lt;key\u0026gt; \u0026lt;enc\u0026gt; \u0026lt;comment\u0026gt; \u0026lt;options\u0026gt; ssh.check_key_file:\nCheck a keyfile from a source destination against the local keys and return the keys to change CLI Example: salt '*' ssh.check_key_file root salt://ssh/keyfile ssh.check_known_host:\nCheck the record in known_hosts file, either by its value or by fingerprint (it's enough to set up either key or fingerprint, you don't need to set up both). If provided key or fingerprint doesn't match with stored value, return \u0026quot;update\u0026quot;, if no value is found for a given host, return \u0026quot;add\u0026quot;, otherwise return \u0026quot;exists\u0026quot;. If neither key, nor fingerprint is defined, then additional validation is not performed. CLI Example: salt '*' ssh.check_known_host \u0026lt;user\u0026gt; \u0026lt;hostname\u0026gt; key='AAAA...FAaQ==' ssh.get_known_host_entries:\nNew in version 2018.3.0 Return information about known host entries from the configfile, if any. If there are no entries for a matching hostname, return None. CLI Example: salt '*' ssh.get_known_host_entries \u0026lt;user\u0026gt; \u0026lt;hostname\u0026gt; ssh.hash_known_hosts:\nHash all the hostnames in the known hosts file. New in version 2014.7.0 user hash known hosts of this user config path to known hosts file: can be absolute or relative to user's home directory CLI Example: salt '*' ssh.hash_known_hosts ssh.host_keys:\nReturn the minion's host keys CLI Example: salt '*' ssh.host_keys salt '*' ssh.host_keys keydir=/etc/ssh salt '*' ssh.host_keys keydir=/etc/ssh private=False salt '*' ssh.host_keys keydir=/etc/ssh certs=False ssh.key_is_encrypted:\nNew in version 2015.8.7 Function to determine whether or not a private key is encrypted with a passphrase. Checks key for a ``Proc-Type`` header with ``ENCRYPTED`` in the value. If found, returns ``True``, otherwise returns ``False``. CLI Example: salt '*' ssh.key_is_encrypted /root/id_rsa ssh.recv_known_host_entries:\nNew in version 2018.3.0 Retrieve information about host public keys from remote server hostname The name of the remote host (e.g. \u0026quot;github.com\u0026quot;) enc Defines what type of key is being used, can be ed25519, ecdsa, ssh-rsa, ssh-dss or any other type as of openssh server version 8.7. port Optional parameter, denoting the port of the remote host on which an SSH daemon is running. By default the port 22 is used. hash_known_hosts : True Hash all hostnames and addresses in the known hosts file. timeout : int Set the timeout for connection attempts. If ``timeout`` seconds have elapsed since a connection was initiated to a host or since the last time anything was read from that host, then the connection is closed and the host in question considered unavailable. Default is 5 seconds. fingerprint_hash_type The fingerprint hash type that the public key fingerprints were originally hashed with. This defaults to ``sha256`` if not specified. New in version 2016.11.4 Changed in version 2017.7.0 default changed from ``md5`` to ``sha256`` CLI Example: salt '*' ssh.recv_known_host_entries \u0026lt;hostname\u0026gt; enc=\u0026lt;enc\u0026gt; port=\u0026lt;port\u0026gt; ssh.rm_auth_key:\nRemove an authorised key from the specified user's authorised key file CLI Example: salt '*' ssh.rm_auth_key \u0026lt;user\u0026gt; \u0026lt;key\u0026gt; ssh.rm_auth_key_from_file:\nRemove an authorised key from the specified user's authorised key file, using a file as source CLI Example: salt '*' ssh.rm_auth_key_from_file \u0026lt;user\u0026gt; salt://ssh_keys/\u0026lt;user\u0026gt;.id_rsa.pub ssh.rm_known_host:\nRemove all keys belonging to hostname from a known_hosts file. CLI Example: salt '*' ssh.rm_known_host \u0026lt;user\u0026gt; \u0026lt;hostname\u0026gt; ssh.set_auth_key:\nAdd a key to the authorized_keys file. The \u0026quot;key\u0026quot; parameter must only be the string of text that is the encoded key. If the key begins with \u0026quot;ssh-rsa\u0026quot; or ends with user@host, remove those from the key before passing it to this function. CLI Example: salt '*' ssh.set_auth_key \u0026lt;user\u0026gt; '\u0026lt;key\u0026gt;' enc='dsa' ssh.set_auth_key_from_file:\nAdd a key to the authorized_keys file, using a file as the source. CLI Example: salt '*' ssh.set_auth_key_from_file \u0026lt;user\u0026gt; salt://ssh_keys/\u0026lt;user\u0026gt;.id_rsa.pub ssh.set_known_host:\nDownload SSH public key from remote host \u0026quot;hostname\u0026quot;, optionally validate its fingerprint against \u0026quot;fingerprint\u0026quot; variable and save the record in the known_hosts file. If such a record does already exists in there, do nothing. user The user who owns the ssh authorised keys file to modify hostname The name of the remote host (e.g. \u0026quot;github.com\u0026quot;) fingerprint The fingerprint of the key which must be present in the known_hosts file (optional if key specified) key The public key which must be presented in the known_hosts file (optional if fingerprint specified) port optional parameter, denoting the port of the remote host, which will be used in case, if the public key will be requested from it. By default the port 22 is used. enc Defines what type of key is being used, can be ed25519, ecdsa, ssh-rsa, ssh-dss or any other type as of openssh server version 8.7. config The location of the authorised keys file relative to the user's home directory, defaults to \u0026quot;.ssh/known_hosts\u0026quot;. If no user is specified, defaults to \u0026quot;/etc/ssh/ssh_known_hosts\u0026quot;. If present, must be an absolute path when a user is not specified. hash_known_hosts : True Hash all hostnames and addresses in the known hosts file. timeout : int Set the timeout for connection attempts. If ``timeout`` seconds have elapsed since a connection was initiated to a host or since the last time anything was read from that host, then the connection is closed and the host in question considered unavailable. Default is 5 seconds. New in version 2016.3.0 fingerprint_hash_type The public key fingerprint hash type that the public key fingerprint was originally hashed with. This defaults to ``sha256`` if not specified. New in version 2016.11.4 Changed in version 2017.7.0 default changed from ``md5`` to ``sha256`` CLI Example: salt '*' ssh.set_known_host \u0026lt;user\u0026gt; fingerprint='xx:xx:..:xx' enc='ssh-rsa' config='.ssh/known_hosts' ssh.user_keys:\nReturn the user's ssh keys on the minion New in version 2014.7.0 CLI Example: salt '*' ssh.user_keys salt '*' ssh.user_keys user=user1 salt '*' ssh.user_keys user=user1 pubfile=/home/user1/.ssh/id_rsa.pub prvfile=/home/user1/.ssh/id_rsa salt '*' ssh.user_keys user=user1 prvfile=False salt '*' ssh.user_keys user=\u0026quot;['user1','user2'] pubfile=id_rsa.pub prvfile=id_rsa As you can see you can tell Salt not to read from the user's private (or public) key file by setting the file path to ``False``. This can be useful to prevent Salt from publishing private data via Salt Mine or others. state.apply:\nNew in version 2015.5.0 This function will call :mod:`state.highstate \u0026lt;salt.modules.state.highstate\u0026gt;` or :mod:`state.sls \u0026lt;salt.modules.state.sls\u0026gt;` based on the arguments passed to this function. It exists as a more intuitive way of applying states. .. rubric:: APPLYING ALL STATES CONFIGURED IN TOP.SLS (A.K.A. :ref:`HIGHSTATE \u0026lt;running-highstate\u0026gt;`) To apply all configured states, simply run ``state.apply`` with no SLS targets, like so: salt '*' state.apply The following additional arguments are also accepted when applying all states configured in top.sls: test Run states in test-only (dry-run) mode mock The mock option allows for the state run to execute without actually calling any states. This then returns a mocked return which will show the requisite ordering as well as fully validate the state run. New in version 2015.8.4 pillar Custom Pillar values, passed as a dictionary of key-value pairs salt '*' state.apply stuff pillar='{\u0026quot;foo\u0026quot;: \u0026quot;bar\u0026quot;}' Note: Values passed this way will override Pillar values set via ``pillar_roots`` or an external Pillar source. exclude Exclude specific states from execution. Accepts a list of sls names, a comma-separated string of sls names, or a list of dictionaries containing ``sls`` or ``id`` keys. Glob-patterns may be used to match multiple states. salt '*' state.apply exclude=bar,baz salt '*' state.apply exclude=foo* salt '*' state.apply exclude=\u0026quot;[{'id': 'id_to_exclude'}, {'sls': 'sls_to_exclude'}]\u0026quot; queue : False Instead of failing immediately when another state run is in progress, a value of ``True`` will queue the new state run to begin running once the other has finished. This option starts a new thread for each queued state run, so use this option sparingly. Changed in version 3006.0 This parameter can also be set via the ``state_queue`` configuration option. Additionally, it can now be set to an integer representing the maximum queue size which can be attained before the state runs will fail to be queued. This can prevent runaway conditions where new threads are started until system performance is hampered. localconfig Optionally, instead of using the minion config, load minion opts from the file specified by this argument, and then merge them with the options from the minion config. This functionality allows for specific states to be run with their own custom minion configuration, including different pillars, file_roots, etc. salt '*' state.apply localconfig=/path/to/minion.yml state_events The state_events option sends progress events as each function in a state run completes execution. New in version 3006.0 .. rubric:: APPLYING INDIVIDUAL SLS FILES (A.K.A. :py:func:`STATE.SLS \u0026lt;salt.modules.state.sls\u0026gt;`) To apply individual SLS files, pass them as a comma-separated list: # Run the states configured in salt://stuff.sls (or salt://stuff/init.sls) salt '*' state.apply stuff # Run the states configured in salt://stuff.sls (or salt://stuff/init.sls) # and salt://pkgs.sls (or salt://pkgs/init.sls). salt '*' state.apply stuff,pkgs # Run the states configured in a more deeply nested directory such as salt://my/organised/stuff.sls (or salt://my/organised/stuff/init.sls) salt '*' state.apply my.organised.stuff The following additional arguments are also accepted when applying individual SLS files: test Run states in test-only (dry-run) mode mock The mock option allows for the state run to execute without actually calling any states. This then returns a mocked return which will show the requisite ordering as well as fully validate the state run. New in version 2015.8.4 pillar Custom Pillar values, passed as a dictionary of key-value pairs salt '*' state.apply stuff pillar='{\u0026quot;foo\u0026quot;: \u0026quot;bar\u0026quot;}' Note: Values passed this way will override Pillar values set via ``pillar_roots`` or an external Pillar source. queue : False Instead of failing immediately when another state run is in progress, a value of ``True`` will queue the new state run to begin running once the other has finished. This option starts a new thread for each queued state run, so use this option sparingly. Changed in version 3006.0 This parameter can also be set via the ``state_queue`` configuration option. Additionally, it can now be set to an integer representing the maximum queue size which can be attained before the state runs will fail to be queued. This can prevent runaway conditions where new threads are started until system performance is hampered. concurrent : False Execute state runs concurrently instead of serially Warning: This flag is potentially dangerous. It is designed for use when multiple state runs can safely be run at the same time. Do *not* use this flag for performance optimisation. saltenv Specify a salt fileserver environment to be used when applying states Changed in version 0.17.0 Argument name changed from ``env`` to ``saltenv`` Changed in version 2014.7.0 If no saltenv is specified, the minion config will be checked for an ``environment`` parameter and if found, it will be used. If none is found, ``base`` will be used. In prior releases, the minion config was not checked and ``base`` would always be assumed when the saltenv was not explicitly set. pillarenv Specify a Pillar environment to be used when applying states. This can also be set in the minion config file using the :conf_minion:`pillarenv` option. When neither the :conf_minion:`pillarenv` minion config option nor this CLI argument is used, all Pillar environments will be merged together. localconfig Optionally, instead of using the minion config, load minion opts from the file specified by this argument, and then merge them with the options from the minion config. This functionality allows for specific states to be run with their own custom minion configuration, including different pillars, file_roots, etc. salt '*' state.apply stuff localconfig=/path/to/minion.yml sync_mods If specified, the desired custom module types will be synced prior to running the SLS files: salt '*' state.apply stuff sync_mods=states,modules salt '*' state.apply stuff sync_mods=all Note: This option is ignored when no SLS files are specified, as a :ref:`highstate \u0026lt;running-highstate\u0026gt;` automatically syncs all custom module types. New in version 2017.7.8,2018.3.3,2019.2.0 state_events The state_events option sends progress events as each function in a state run completes execution. New in version 3006.0 state.check_request:\nNew in version 2015.5.0 Return the state request information, if any CLI Example: salt '*' state.check_request state.clear_cache:\nClear out cached state files, forcing even cache runs to refresh the cache on the next state execution. Remember that the state cache is completely disabled by default, this execution only applies if cache=True is used in states CLI Example: salt '*' state.clear_cache state.clear_request:\nNew in version 2015.5.0 Clear out the state execution request without executing it CLI Example: salt '*' state.clear_request state.disable:\nDisable state runs. CLI Example: salt '*' state.disable highstate salt '*' state.disable highstate,test.succeed_without_changes Note: To disable a state file from running provide the same name that would be passed in a state.sls call. salt '*' state.disable bind.config state.enable:\nEnable state function or sls run CLI Example: salt '*' state.enable highstate salt '*' state.enable test.succeed_without_changes Note: To enable a state file from running provide the same name that would be passed in a state.sls call. salt '*' state.disable bind.config state.event:\nWatch Salt's event bus and block until the given tag is matched New in version 2016.3.0 Changed in version 2019.2.0 ``tagmatch`` can now be either a glob or regular expression. This is useful for utilizing Salt's event bus from shell scripts or for taking simple actions directly from the CLI. Enable debug logging to see ignored events. :param tagmatch: the event is written to stdout for each tag that matches this glob or regular expression. :param count: this number is decremented for each event that matches the ``tagmatch`` parameter; pass ``-1`` to listen forever. :param quiet: do not print to stdout; just block :param sock_dir: path to the Salt master's event socket file. :param pretty: Output the JSON all on a single line if ``False`` (useful for shell tools); pretty-print the JSON output if ``True``. :param node: Watch the minion-side or master-side event bus. CLI Example: salt-call --local state.event pretty=True state.get_pauses:\nGet a report on all of the currently paused state runs and pause run settings. Optionally send in a jid if you only desire to see a single pause data set. state.high:\nExecute the compound calls stored in a single set of high data This function is mostly intended for testing the state system and is not likely to be needed in everyday usage. CLI Example: salt '*' state.high '{\u0026quot;vim\u0026quot;: {\u0026quot;pkg\u0026quot;: [\u0026quot;installed\u0026quot;]}}' state.highstate:\nRetrieve the state data from the salt master for this minion and execute it test Run states in test-only (dry-run) mode pillar Custom Pillar values, passed as a dictionary of key-value pairs salt '*' state.highstate stuff pillar='{\u0026quot;foo\u0026quot;: \u0026quot;bar\u0026quot;}' Note: Values passed this way will override Pillar values set via ``pillar_roots`` or an external Pillar source. Changed in version 2016.3.0 GPG-encrypted CLI Pillar data is now supported via the GPG renderer. See :ref:`here \u0026lt;encrypted-cli-pillar-data\u0026gt;` for details. pillar_enc Specify which renderer to use to decrypt encrypted data located within the ``pillar`` value. Currently, only ``gpg`` is supported. New in version 2016.3.0 exclude Exclude specific states from execution. Accepts a list of sls names, a comma-separated string of sls names, or a list of dictionaries containing ``sls`` or ``id`` keys. Glob-patterns may be used to match multiple states. salt '*' state.highstate exclude=bar,baz salt '*' state.highstate exclude=foo* salt '*' state.highstate exclude=\u0026quot;[{'id': 'id_to_exclude'}, {'sls': 'sls_to_exclude'}]\u0026quot; saltenv Specify a salt fileserver environment to be used when applying states Changed in version 0.17.0 Argument name changed from ``env`` to ``saltenv``. Changed in version 2014.7.0 If no saltenv is specified, the minion config will be checked for a ``saltenv`` parameter and if found, it will be used. If none is found, ``base`` will be used. In prior releases, the minion config was not checked and ``base`` would always be assumed when the saltenv was not explicitly set. pillarenv Specify a Pillar environment to be used when applying states. This can also be set in the minion config file using the :conf_minion:`pillarenv` option. When neither the :conf_minion:`pillarenv` minion config option nor this CLI argument is used, all Pillar environments will be merged together. queue : False Instead of failing immediately when another state run is in progress, a value of ``True`` will queue the new state run to begin running once the other has finished. This option starts a new thread for each queued state run, so use this option sparingly. Changed in version 3006.0 This parameter can also be set via the ``state_queue`` configuration option. Additionally, it can now be set to an integer representing the maximum queue size which can be attained before the state runs will fail to be queued. This can prevent runaway conditions where new threads are started until system performance is hampered. concurrent : False Execute state runs concurrently instead of serially Warning: This flag is potentially dangerous. It is designed for use when multiple state runs can safely be run at the same time. Do *not* use this flag for performance optimisation. localconfig Optionally, instead of using the minion config, load minion opts from the file specified by this argument, and then merge them with the options from the minion config. This functionality allows for specific states to be run with their own custom minion configuration, including different pillars, file_roots, etc. mock The mock option allows for the state run to execute without actually calling any states. This then returns a mocked return which will show the requisite ordering as well as fully validate the state run. New in version 2015.8.4 state_events The state_events option sends progress events as each function in a state run completes execution. New in version 3006.0 CLI Examples: salt '*' state.highstate salt '*' state.highstate whitelist=sls1_to_run,sls2_to_run salt '*' state.highstate exclude=sls_to_exclude salt '*' state.highstate exclude=\u0026quot;[{'id': 'id_to_exclude'}, {'sls': 'sls_to_exclude'}]\u0026quot; salt '*' state.highstate pillar=\u0026quot;{foo: 'Foo!', bar: 'Bar!'}\u0026quot; state.id_exists:\nTests for the existence of a specific ID or list of IDs within the specified SLS file(s). Similar to :py:func:`state.sls_exists \u0026lt;salt.modules.state.sls_exists\u0026gt;`, returns True or False. The default environment is base``, use ``saltenv`` to specify a different environment. New in version 2019.2.0 saltenv Specify a salt fileserver environment from which to look for the SLS files specified in the ``mods`` argument CLI Example: salt '*' state.id_exists create_myfile,update_template filestate saltenv=dev state.list_disabled:\nList the states which are currently disabled CLI Example: salt '*' state.list_disabled state.low:\nExecute a single low data call This function is mostly intended for testing the state system and is not likely to be needed in everyday usage. CLI Example: salt '*' state.low '{\u0026quot;state\u0026quot;: \u0026quot;pkg\u0026quot;, \u0026quot;fun\u0026quot;: \u0026quot;installed\u0026quot;, \u0026quot;name\u0026quot;: \u0026quot;vi\u0026quot;}' state.orchestrate:\nNew in version 2016.11.0 Execute the orchestrate runner from a masterless minion. .. seealso:: More Orchestrate documentation * :ref:`Full Orchestrate Tutorial \u0026lt;orchestrate-runner\u0026gt;` * Docs for the salt state module :py:mod:`salt.states.saltmod` CLI Examples: salt-call --local state.orchestrate webserver salt-call --local state.orchestrate webserver saltenv=dev test=True salt-call --local state.orchestrate webserver saltenv=dev pillarenv=aws state.pause:\nSet up a state id pause, this instructs a running state to pause at a given state id. This needs to pass in the jid of the running state and can optionally pass in a duration in seconds. If a state_id is not passed then the jid referenced will be paused at the beginning of the next state run. The given state id is the id got a given state execution, so given a state that looks like this: vim: pkg.installed: [] The state_id to pass to `pause` is `vim` CLI Examples: salt '*' state.pause 20171130110407769519 salt '*' state.pause 20171130110407769519 vim salt '*' state.pause 20171130110407769519 vim 20 state.pkg:\nExecute a packaged state run, the packaged state run will exist in a tarball available locally. This packaged state can be generated using salt-ssh. CLI Example: salt '*' state.pkg /tmp/salt_state.tgz 760a9353810e36f6d81416366fc426dc md5 state.request:\nNew in version 2015.5.0 Request that the local admin execute a state run via `salt-call state.run_request`. All arguments match those of state.apply. CLI Example: salt '*' state.request salt '*' state.request stuff salt '*' state.request stuff,pkgs state.resume:\nRemove a pause from a jid, allowing it to continue. If the state_id is not specified then the a general pause will be resumed. The given state_id is the id got a given state execution, so given a state that looks like this: vim: pkg.installed: [] The state_id to pass to `rm_pause` is `vim` CLI Examples: salt '*' state.resume 20171130110407769519 salt '*' state.resume 20171130110407769519 vim state.run_request:\nNew in version 2015.5.0 Execute the pending state request CLI Example: salt '*' state.run_request state.running:\nReturn a list of strings that contain state return data if a state function is already running. This function is used to prevent multiple state calls from being run at the same time. CLI Example: salt '*' state.running state.show_highstate:\nRetrieve the highstate data from the salt master and display it Custom Pillar data can be passed with the ``pillar`` kwarg. CLI Example: salt '*' state.show_highstate state.show_low_sls:\nDisplay the low data from a specific sls. The default environment is ``base``, use ``saltenv`` to specify a different environment. saltenv Specify a salt fileserver environment to be used when applying states pillar Custom Pillar values, passed as a dictionary of key-value pairs salt '*' state.show_low_sls stuff pillar='{\u0026quot;foo\u0026quot;: \u0026quot;bar\u0026quot;}' Note: Values passed this way will override Pillar values set via ``pillar_roots`` or an external Pillar source. pillarenv Specify a Pillar environment to be used when applying states. This can also be set in the minion config file using the :conf_minion:`pillarenv` option. When neither the :conf_minion:`pillarenv` minion config option nor this CLI argument is used, all Pillar environments will be merged together. CLI Example: salt '*' state.show_low_sls foo salt '*' state.show_low_sls foo saltenv=dev state.show_lowstate:\nList out the low data that will be applied to this minion CLI Example: salt '*' state.show_lowstate state.show_sls:\nDisplay the state data from a specific sls or list of sls files on the master. The default environment is ``base``, use ``saltenv`` to specify a different environment. This function does not support topfiles. For ``top.sls`` please use ``show_top`` instead. Custom Pillar data can be passed with the ``pillar`` kwarg. saltenv Specify a salt fileserver environment to be used when applying states pillarenv Specify a Pillar environment to be used when applying states. This can also be set in the minion config file using the :conf_minion:`pillarenv` option. When neither the :conf_minion:`pillarenv` minion config option nor this CLI argument is used, all Pillar environments will be merged together. CLI Example: salt '*' state.show_sls core,edit.vim saltenv=dev state.show_state_usage:\nRetrieve the highstate data from the salt master to analyse used and unused states Custom Pillar data can be passed with the ``pillar`` kwarg. CLI Example: salt '*' state.show_state_usage state.show_states:\nReturns the list of states that will be applied on highstate. CLI Example: salt '*' state.show_states New in version 2019.2.0 state.show_top:\nReturn the top data that the minion will use for a highstate CLI Example: salt '*' state.show_top state.single:\nExecute a single state function with the named kwargs, returns False if insufficient data is sent to the command By default, the values of the kwargs will be parsed as YAML. So, you can specify lists values, or lists of single entry key-value maps, as you would in a YAML salt file. Alternatively, JSON format of keyword values is also supported. CLI Example: salt '*' state.single pkg.installed name=vim state.sls:\nExecute the states in one or more SLS files test Run states in test-only (dry-run) mode pillar Custom Pillar values, passed as a dictionary of key-value pairs salt '*' state.sls stuff pillar='{\u0026quot;foo\u0026quot;: \u0026quot;bar\u0026quot;}' Note: Values passed this way will override existing Pillar values set via ``pillar_roots`` or an external Pillar source. Pillar values that are not included in the kwarg will not be overwritten. Changed in version 2016.3.0 GPG-encrypted CLI Pillar data is now supported via the GPG renderer. See :ref:`here \u0026lt;encrypted-cli-pillar-data\u0026gt;` for details. pillar_enc Specify which renderer to use to decrypt encrypted data located within the ``pillar`` value. Currently, only ``gpg`` is supported. New in version 2016.3.0 exclude Exclude specific states from execution. Accepts a list of sls names, a comma-separated string of sls names, or a list of dictionaries containing ``sls`` or ``id`` keys. Glob-patterns may be used to match multiple states. salt '*' state.sls foo,bar,baz exclude=bar,baz salt '*' state.sls foo,bar,baz exclude=ba* salt '*' state.sls foo,bar,baz exclude=\u0026quot;[{'id': 'id_to_exclude'}, {'sls': 'sls_to_exclude'}]\u0026quot; queue : False Instead of failing immediately when another state run is in progress, a value of ``True`` will queue the new state run to begin running once the other has finished. This option starts a new thread for each queued state run, so use this option sparingly. Changed in version 3006.0 This parameter can also be set via the ``state_queue`` configuration option. Additionally, it can now be set to an integer representing the maximum queue size which can be attained before the state runs will fail to be queued. This can prevent runaway conditions where new threads are started until system performance is hampered. concurrent : False Execute state runs concurrently instead of serially Warning: This flag is potentially dangerous. It is designed for use when multiple state runs can safely be run at the same time. Do *not* use this flag for performance optimisation. saltenv Specify a salt fileserver environment to be used when applying states Changed in version 0.17.0 Argument name changed from ``env`` to ``saltenv``. Changed in version 2014.7.0 If no saltenv is specified, the minion config will be checked for an ``environment`` parameter and if found, it will be used. If none is found, ``base`` will be used. In prior releases, the minion config was not checked and ``base`` would always be assumed when the saltenv was not explicitly set. pillarenv Specify a Pillar environment to be used when applying states. This can also be set in the minion config file using the :conf_minion:`pillarenv` option. When neither the :conf_minion:`pillarenv` minion config option nor this CLI argument is used, all Pillar environments will be merged together. localconfig Optionally, instead of using the minion config, load minion opts from the file specified by this argument, and then merge them with the options from the minion config. This functionality allows for specific states to be run with their own custom minion configuration, including different pillars, file_roots, etc. mock The mock option allows for the state run to execute without actually calling any states. This then returns a mocked return which will show the requisite ordering as well as fully validate the state run. New in version 2015.8.4 sync_mods If specified, the desired custom module types will be synced prior to running the SLS files: salt '*' state.sls stuff sync_mods=states,modules salt '*' state.sls stuff sync_mods=all New in version 2017.7.8,2018.3.3,2019.2.0 state_events The state_events option sends progress events as each function in a state run completes execution. New in version 3006.0 CLI Example: # Run the states configured in salt://example.sls (or salt://example/init.sls) salt '*' state.apply example # Run the states configured in salt://core.sls (or salt://core/init.sls) # and salt://edit/vim.sls (or salt://edit/vim/init.sls) salt '*' state.sls core,edit.vim # Run the states configured in a more deeply nested directory such as salt://my/nested/state.sls (or salt://my/nested/state/init.sls) salt '*' state.sls my.nested.state salt '*' state.sls core exclude=\u0026quot;[{'id': 'id_to_exclude'}, {'sls': 'sls_to_exclude'}]\u0026quot; salt '*' state.sls myslsfile pillar=\u0026quot;{foo: 'Foo!', bar: 'Bar!'}\u0026quot; state.sls_exists:\nTests for the existence the of a specific SLS or list of SLS files on the master. Similar to :py:func:`state.show_sls \u0026lt;salt.modules.state.show_sls\u0026gt;`, rather than returning state details, returns True or False. The default environment is ``base``, use ``saltenv`` to specify a different environment. New in version 2019.2.0 saltenv Specify a salt fileserver environment from which to look for the SLS files specified in the ``mods`` argument CLI Example: salt '*' state.sls_exists core,edit.vim saltenv=dev state.sls_id:\nCall a single ID from the named module(s) and handle all requisites The state ID comes *before* the module ID(s) on the command line. id ID to call mods Comma-delimited list of modules to search for given id and its requisites New in version 2014.7.0 saltenv : base Specify a salt fileserver environment to be used when applying states pillarenv Specify a Pillar environment to be used when applying states. This can also be set in the minion config file using the :conf_minion:`pillarenv` option. When neither the :conf_minion:`pillarenv` minion config option nor this CLI argument is used, all Pillar environments will be merged together. pillar Custom Pillar values, passed as a dictionary of key-value pairs salt '*' state.sls_id my_state my_module pillar='{\u0026quot;foo\u0026quot;: \u0026quot;bar\u0026quot;}' Note: Values passed this way will override existing Pillar values set via ``pillar_roots`` or an external Pillar source. Pillar values that are not included in the kwarg will not be overwritten. New in version 2018.3.0 CLI Example: salt '*' state.sls_id my_state my_module salt '*' state.sls_id my_state my_module,a_common_module state.soft_kill:\nSet up a state run to die before executing the given state id, this instructs a running state to safely exit at a given state id. This needs to pass in the jid of the running state. If a state_id is not passed then the jid referenced will be safely exited at the beginning of the next state run. The given state id is the id got a given state execution, so given a state that looks like this: vim: pkg.installed: [] The state_id to pass to `soft_kill` is `vim` CLI Examples: salt '*' state.soft_kill 20171130110407769519 salt '*' state.soft_kill 20171130110407769519 vim state.template:\nExecute the information stored in a template file on the minion. This function does not ask a master for a SLS file to render but instead directly processes the file at the provided path on the minion. CLI Example: salt '*' state.template '\u0026lt;Path to template on the minion\u0026gt;' state.template_str:\nExecute the information stored in a string from an sls template CLI Example: salt '*' state.template_str '\u0026lt;Template String\u0026gt;' state.test:\nNew in version 3001 Alias for `state.apply` with the kwarg `test` forced to `True`. This is a nicety to avoid the need to type out `test=True` and the possibility of a typo causing changes you do not intend. state.top:\nExecute a specific top file instead of the default. This is useful to apply configurations from a different environment (for example, dev or prod), without modifying the default top file. queue : False Instead of failing immediately when another state run is in progress, a value of ``True`` will queue the new state run to begin running once the other has finished. This option starts a new thread for each queued state run, so use this option sparingly. Changed in version 3006.0 This parameter can also be set via the ``state_queue`` configuration option. Additionally, it can now be set to an integer representing the maximum queue size which can be attained before the state runs will fail to be queued. This can prevent runaway conditions where new threads are started until system performance is hampered. saltenv Specify a salt fileserver environment to be used when applying states pillarenv Specify a Pillar environment to be used when applying states. This can also be set in the minion config file using the :conf_minion:`pillarenv` option. When neither the :conf_minion:`pillarenv` minion config option nor this CLI argument is used, all Pillar environments will be merged together. New in version 2017.7.0 CLI Example: salt '*' state.top reverse_top.sls salt '*' state.top prod_top.sls exclude=sls_to_exclude salt '*' state.top dev_top.sls exclude=\u0026quot;[{'id': 'id_to_exclude'}, {'sls': 'sls_to_exclude'}]\u0026quot; status.all_status:\nReturn a composite of all status data and info for this minion. Warning: There is a LOT here! CLI Example: salt '*' status.all_status status.cpuinfo:\nChanged in version 2016.3.2 Return the CPU info for this minion Changed in version 2016.11.4 Added support for AIX Changed in version 2018.3.0 Added support for NetBSD and OpenBSD CLI Example: salt '*' status.cpuinfo status.cpustats:\nReturn the CPU stats for this minion Changed in version 2016.11.4 Added support for AIX Changed in version 2018.3.0 Added support for OpenBSD CLI Example: salt '*' status.cpustats status.custom:\nReturn a custom composite of status data and info for this minion, based on the minion config file. An example config like might be:: status.cpustats.custom: [ 'cpu', 'ctxt', 'btime', 'processes' ] Where status refers to status.py, cpustats is the function where we get our data, and custom is this function It is followed by a list of keys that we want returned. This function is meant to replace all_status(), which returns anything and everything, which we probably don't want. By default, nothing is returned. Warning: Depending on what you include, there can be a LOT here! CLI Example: salt '*' status.custom status.diskstats:\nChanged in version 2016.3.2 Return the disk stats for this minion Changed in version 2016.11.4 Added support for AIX CLI Example: salt '*' status.diskstats status.diskusage:\nReturn the disk usage for this minion Usage:: salt '*' status.diskusage [paths and/or filesystem types] CLI Example: salt '*' status.diskusage # usage for all filesystems salt '*' status.diskusage / /tmp # usage for / and /tmp salt '*' status.diskusage ext? # usage for ext[234] filesystems salt '*' status.diskusage / ext? # usage for / and all ext filesystems status.loadavg:\nReturn the load averages for this minion Changed in version 2016.11.4 Added support for AIX CLI Example: salt '*' status.loadavg :raises CommandExecutionError: If the system cannot report loadaverages to Python status.master:\nNew in version 2014.7.0 Return the connection status with master. Fire an event if the connection to master is not as expected. This function is meant to be run via a scheduled job from the minion. If master_ip is an FQDN/Hostname, it must be resolvable to a valid IPv4 address. Changed in version 2016.11.4 Added support for AIX CLI Example: salt '*' status.master status.meminfo:\nReturn the memory info for this minion Changed in version 2016.11.4 Added support for AIX Changed in version 2018.3.0 Added support for OpenBSD CLI Example: salt '*' status.meminfo status.netdev:\nChanged in version 2016.3.2 Return the network device stats for this minion Changed in version 2016.11.4 Added support for AIX CLI Example: salt '*' status.netdev status.netstats:\nReturn the network stats for this minion Changed in version 2016.11.4 Added support for AIX Changed in version 2018.3.0 Added support for OpenBSD CLI Example: salt '*' status.netstats status.nproc:\nReturn the number of processing units available on this system Changed in version 2016.11.4 Added support for AIX Changed in version 2018.3.0 Added support for Darwin, FreeBSD and OpenBSD CLI Example: salt '*' status.nproc status.pid:\nReturn the PID or an empty string if the process is running or not. Pass a signature to use to find the process via ps. Note you can pass a Python-compatible regular expression to return all pids of processes matching the regexp. Changed in version 2016.11.4 Added support for AIX CLI Example: salt '*' status.pid \u0026lt;sig\u0026gt; status.ping_master:\nNew in version 2016.3.0 Sends ping request to the given master. Fires '__master_failback' event on success. Returns bool result. CLI Example: salt '*' status.ping_master localhost status.procs:\nReturn the process data Changed in version 2016.11.4 Added support for AIX CLI Example: salt '*' status.procs status.proxy_reconnect:\nForces proxy minion reconnection when not alive. proxy_name The virtual name of the proxy module. opts: None Opts dictionary. Not intended for CLI usage. CLI Example: salt '*' status.proxy_reconnect rest_sample status.time:\nNew in version 2016.3.0 Return the current time on the minion, formatted based on the format parameter. Default date format: Monday, 27. July 2015 07:55AM CLI Example: salt '*' status.time salt '*' status.time '%s' status.uptime:\nReturn the uptime for this system. Changed in version 2015.8.9 The uptime function was changed to return a dictionary of easy-to-read key/value pairs containing uptime information, instead of the output from a ``cmd.run`` call. Changed in version 2016.11.0 Support for OpenBSD, FreeBSD, NetBSD, MacOS, and Solaris Changed in version 2016.11.4 Added support for AIX CLI Example: salt '*' status.uptime status.version:\nReturn the system version for this minion Changed in version 2016.11.4 Added support for AIX Changed in version 2018.3.0 Added support for OpenBSD CLI Example: salt '*' status.version status.vmstats:\nChanged in version 2016.3.2 Return the virtual memory stats for this minion Changed in version 2016.11.4 Added support for AIX CLI Example: salt '*' status.vmstats status.w:\nReturn a list of logged in users for this minion, using the w command CLI Example: salt '*' status.w statuspage.create:\nInsert a new entry under a specific endpoint. endpoint: incidents Insert under this specific endpoint. page_id Page ID. Can also be specified in the config file. api_key API key. Can also be specified in the config file. api_version: 1 API version. Can also be specified in the config file. api_url Custom API URL in case the user has a StatusPage service running in a custom environment. CLI Example: salt 'minion' statuspage.create endpoint='components' name='my component' group_id='993vgplshj12' Example output: minion: ---------- comment: out: ---------- created_at: 2017-01-05T19:35:27.135Z description: None group_id: 993vgplshj12 id: mjkmtt5lhdgc name: my component page_id: ksdhgfyiuhaa position: 7 status: operational updated_at: 2017-01-05T19:35:27.135Z result: True statuspage.delete:\nRemove an entry from an endpoint. endpoint: incidents Request a specific endpoint. page_id Page ID. Can also be specified in the config file. api_key API key. Can also be specified in the config file. api_version: 1 API version. Can also be specified in the config file. api_url Custom API URL in case the user has a StatusPage service running in a custom environment. CLI Example: salt 'minion' statuspage.delete endpoint='components' id='ftgks51sfs2d' Example output: minion: ---------- comment: out: None result: True statuspage.retrieve:\nRetrieve a specific endpoint from the Statuspage API. endpoint: incidents Request a specific endpoint. page_id Page ID. Can also be specified in the config file. api_key API key. Can also be specified in the config file. api_version: 1 API version. Can also be specified in the config file. api_url Custom API URL in case the user has a StatusPage service running in a custom environment. CLI Example: salt 'minion' statuspage.retrieve components Example output: minion: ---------- comment: out: |_ ---------- backfilled: False created_at: 2015-01-26T20:25:02.702Z id: kh2qwjbheqdc36 impact: major impact_override: None incident_updates: |_ ---------- affected_components: None body: We are currently investigating this issue. created_at: 2015-01-26T20:25:02.849Z display_at: 2015-01-26T20:25:02.849Z id: zvx7xz2z5skr incident_id: kh2qwjbheqdc36 status: investigating twitter_updated_at: None updated_at: 2015-01-26T20:25:02.849Z wants_twitter_update: False monitoring_at: None name: just testing some stuff page_id: ksdhgfyiuhaa postmortem_body: None postmortem_body_last_updated_at: None postmortem_ignored: False postmortem_notified_subscribers: False postmortem_notified_twitter: False postmortem_published_at: None resolved_at: None scheduled_auto_completed: False scheduled_auto_in_progress: False scheduled_for: None scheduled_remind_prior: False scheduled_reminded_at: None scheduled_until: None shortlink: http://stspg.io/voY status: investigating updated_at: 2015-01-26T20:25:13.379Z result: True statuspage.update:\nUpdate attribute(s) of a specific endpoint. id The unique ID of the endpoint entry. endpoint: incidents Endpoint name. page_id Page ID. Can also be specified in the config file. api_key API key. Can also be specified in the config file. api_version: 1 API version. Can also be specified in the config file. api_url Custom API URL in case the user has a StatusPage service running in a custom environment. CLI Example: salt 'minion' statuspage.update id=dz959yz2nd4l status=resolved Example output: minion: ---------- comment: out: ---------- created_at: 2017-01-03T15:25:30.718Z description: None group_id: 993vgplshj12 id: dz959yz2nd4l name: Management Portal page_id: xzwjjdw87vpf position: 11 status: resolved updated_at: 2017-01-05T15:34:27.676Z result: True supervisord.add:\nActivates any updates in config for process/group. user user to run supervisorctl as conf_file path to supervisord config file bin_env path to supervisorctl bin or path to virtualenv with supervisor installed CLI Example: salt '*' supervisord.add \u0026lt;name\u0026gt; supervisord.custom:\nRun any custom supervisord command user user to run supervisorctl as conf_file path to supervisord config file bin_env path to supervisorctl bin or path to virtualenv with supervisor installed CLI Example: salt '*' supervisord.custom \u0026quot;mstop '*gunicorn*'\u0026quot; supervisord.options:\nNew in version 2014.1.0 Read the config file and return the config options for a given process name Name of the configured process conf_file path to supervisord config file CLI Example: salt '*' supervisord.options foo supervisord.remove:\nRemoves process/group from active config user user to run supervisorctl as conf_file path to supervisord config file bin_env path to supervisorctl bin or path to virtualenv with supervisor installed CLI Example: salt '*' supervisord.remove \u0026lt;name\u0026gt; supervisord.reread:\nReload the daemon's configuration files user user to run supervisorctl as conf_file path to supervisord config file bin_env path to supervisorctl bin or path to virtualenv with supervisor installed CLI Example: salt '*' supervisord.reread supervisord.restart:\nRestart the named service. Process group names should not include a trailing asterisk. user user to run supervisorctl as conf_file path to supervisord config file bin_env path to supervisorctl bin or path to virtualenv with supervisor installed CLI Example: salt '*' supervisord.restart \u0026lt;service\u0026gt; salt '*' supervisord.restart \u0026lt;group\u0026gt;: supervisord.start:\nStart the named service. Process group names should not include a trailing asterisk. user user to run supervisorctl as conf_file path to supervisord config file bin_env path to supervisorctl bin or path to virtualenv with supervisor installed CLI Example: salt '*' supervisord.start \u0026lt;service\u0026gt; salt '*' supervisord.start \u0026lt;group\u0026gt;: supervisord.status:\nList programs and its state user user to run supervisorctl as conf_file path to supervisord config file bin_env path to supervisorctl bin or path to virtualenv with supervisor installed CLI Example: salt '*' supervisord.status supervisord.status_bool:\nCheck for status of a specific supervisord process and return boolean result. name name of the process to check expected_state search for a specific process state. If set to ``None`` - any process state will match. user user to run supervisorctl as conf_file path to supervisord config file bin_env path to supervisorctl bin or path to virtualenv with supervisor installed CLI Example: salt '*' supervisord.status_bool nginx expected_state='RUNNING' supervisord.status_raw:\nDisplay the raw output of status user user to run supervisorctl as conf_file path to supervisord config file bin_env path to supervisorctl bin or path to virtualenv with supervisor installed CLI Example: salt '*' supervisord.status_raw supervisord.stop:\nStop the named service. Process group names should not include a trailing asterisk. user user to run supervisorctl as conf_file path to supervisord config file bin_env path to supervisorctl bin or path to virtualenv with supervisor installed CLI Example: salt '*' supervisord.stop \u0026lt;service\u0026gt; salt '*' supervisord.stop \u0026lt;group\u0026gt;: supervisord.update:\nReload config and add/remove/update as necessary user user to run supervisorctl as conf_file path to supervisord config file bin_env path to supervisorctl bin or path to virtualenv with supervisor installed name name of the process group to update. if none then update any process group that has changes CLI Example: salt '*' supervisord.update sys.argspec:\nReturn the argument specification of functions in Salt execution modules. CLI Example: salt '*' sys.argspec pkg.install salt '*' sys.argspec sys salt '*' sys.argspec Module names can be specified as globs. New in version 2015.5.0 salt '*' sys.argspec 'pkg.*' sys.doc:\nReturn the docstrings for all modules. Optionally, specify a module or a function to narrow the selection. The strings are aggregated into a single document on the master for easy reading. Multiple modules/functions can be specified. CLI Example: salt '*' sys.doc salt '*' sys.doc sys salt '*' sys.doc sys.doc salt '*' sys.doc network.traceroute user.info Modules can be specified as globs. New in version 2015.5.0 salt '*' sys.doc 'sys.*' salt '*' sys.doc 'sys.list_*' sys.list_functions:\nList the functions for all modules. Optionally, specify a module or modules from which to list. CLI Example: salt '*' sys.list_functions salt '*' sys.list_functions sys salt '*' sys.list_functions sys user New in version 0.12.0 salt '*' sys.list_functions 'module.specific_function' Function names can be specified as globs. New in version 2015.5.0 salt '*' sys.list_functions 'sys.list_*' sys.list_modules:\nList the modules loaded on the minion New in version 2015.5.0 CLI Example: salt '*' sys.list_modules Module names can be specified as globs. salt '*' sys.list_modules 's*' sys.list_renderers:\nList the renderers loaded on the minion New in version 2015.5.0 CLI Example: salt '*' sys.list_renderers Render names can be specified as globs. salt '*' sys.list_renderers 'yaml*' sys.list_returner_functions:\nList the functions for all returner modules. Optionally, specify a returner module or modules from which to list. New in version 2014.7.0 CLI Example: salt '*' sys.list_returner_functions salt '*' sys.list_returner_functions mysql salt '*' sys.list_returner_functions mysql etcd Returner names can be specified as globs. New in version 2015.5.0 salt '*' sys.list_returner_functions 'sqlite3.get_*' sys.list_returners:\nList the returners loaded on the minion New in version 2014.7.0 CLI Example: salt '*' sys.list_returners Returner names can be specified as globs. New in version 2015.5.0 salt '*' sys.list_returners 's*' sys.list_runner_functions:\nList the functions for all runner modules. Optionally, specify a runner module or modules from which to list. New in version 2014.7.0 CLI Example: salt '*' sys.list_runner_functions salt '*' sys.list_runner_functions state salt '*' sys.list_runner_functions state virt Runner function names can be specified as globs. New in version 2015.5.0 salt '*' sys.list_runner_functions 'state.*' 'virt.*' sys.list_runners:\nList the runners loaded on the minion New in version 2014.7.0 CLI Example: salt '*' sys.list_runners Runner names can be specified as globs. New in version 2015.5.0 salt '*' sys.list_runners 'm*' sys.list_state_functions:\nList the functions for all state modules. Optionally, specify a state module or modules from which to list. New in version 2014.7.0 CLI Example: salt '*' sys.list_state_functions salt '*' sys.list_state_functions file salt '*' sys.list_state_functions pkg user State function names can be specified as globs. New in version 2015.5.0 salt '*' sys.list_state_functions 'file.*' salt '*' sys.list_state_functions 'file.s*' New in version 2016.9.0 salt '*' sys.list_state_functions 'module.specific_function' sys.list_state_modules:\nList the modules loaded on the minion New in version 2014.7.0 CLI Example: salt '*' sys.list_state_modules State module names can be specified as globs. New in version 2015.5.0 salt '*' sys.list_state_modules 'mysql_*' sys.reload_modules:\nTell the minion to reload the execution modules CLI Example: salt '*' sys.reload_modules sys.renderer_doc:\nReturn the docstrings for all renderers. Optionally, specify a renderer or a function to narrow the selection. The strings are aggregated into a single document on the master for easy reading. Multiple renderers can be specified. New in version 2015.5.0 CLI Example: salt '*' sys.renderer_doc salt '*' sys.renderer_doc cheetah salt '*' sys.renderer_doc jinja json Renderer names can be specified as globs. salt '*' sys.renderer_doc 'c*' 'j*' sys.returner_argspec:\nReturn the argument specification of functions in Salt returner modules. New in version 2015.5.0 CLI Example: salt '*' sys.returner_argspec xmpp salt '*' sys.returner_argspec xmpp smtp salt '*' sys.returner_argspec Returner names can be specified as globs. salt '*' sys.returner_argspec 'sqlite3.*' sys.returner_doc:\nReturn the docstrings for all returners. Optionally, specify a returner or a function to narrow the selection. The strings are aggregated into a single document on the master for easy reading. Multiple returners/functions can be specified. New in version 2014.7.0 CLI Example: salt '*' sys.returner_doc salt '*' sys.returner_doc sqlite3 salt '*' sys.returner_doc sqlite3.get_fun salt '*' sys.returner_doc sqlite3.get_fun etcd.get_fun Returner names can be specified as globs. New in version 2015.5.0 salt '*' sys.returner_doc 'sqlite3.get_*' sys.runner_argspec:\nReturn the argument specification of functions in Salt runner modules. New in version 2015.5.0 CLI Example: salt '*' sys.runner_argspec state salt '*' sys.runner_argspec http salt '*' sys.runner_argspec Runner names can be specified as globs. salt '*' sys.runner_argspec 'winrepo.*' sys.runner_doc:\nReturn the docstrings for all runners. Optionally, specify a runner or a function to narrow the selection. The strings are aggregated into a single document on the master for easy reading. Multiple runners/functions can be specified. New in version 2014.7.0 CLI Example: salt '*' sys.runner_doc salt '*' sys.runner_doc cache salt '*' sys.runner_doc cache.grains salt '*' sys.runner_doc cache.grains mine.get Runner names can be specified as globs. New in version 2015.5.0 salt '*' sys.runner_doc 'cache.clear_*' sys.state_argspec:\nReturn the argument specification of functions in Salt state modules. New in version 2015.5.0 CLI Example: salt '*' sys.state_argspec pkg.installed salt '*' sys.state_argspec file salt '*' sys.state_argspec State names can be specified as globs. salt '*' sys.state_argspec 'pkg.*' sys.state_doc:\nReturn the docstrings for all states. Optionally, specify a state or a function to narrow the selection. The strings are aggregated into a single document on the master for easy reading. Multiple states/functions can be specified. New in version 2014.7.0 CLI Example: salt '*' sys.state_doc salt '*' sys.state_doc service salt '*' sys.state_doc service.running salt '*' sys.state_doc service.running ipables.append State names can be specified as globs. New in version 2015.5.0 salt '*' sys.state_doc 'service.*' 'iptables.*' sys.state_schema:\nReturn a JSON Schema for the given state function(s) New in version 2016.3.0 CLI Example: salt '*' sys.state_schema salt '*' sys.state_schema pkg.installed sysctl.assign:\nAssign a single sysctl parameter for this minion CLI Example: salt '*' sysctl.assign net.ipv4.ip_forward 1 sysctl.default_config:\nLinux hosts using systemd 207 or later ignore ``/etc/sysctl.conf`` and only load from ``/etc/sysctl.d/*.conf``. This function will do the proper checks and return a default config file which will be valid for the Minion. Hosts running systemd \u0026gt;= 207 will use ``/etc/sysctl.d/99-salt.conf``. CLI Example: salt -G 'kernel:Linux' sysctl.default_config sysctl.get:\nReturn a single sysctl parameter for this minion CLI Example: salt '*' sysctl.get net.ipv4.ip_forward sysctl.persist:\nAssign and persist a simple sysctl parameter for this minion. If ``config`` is not specified, a sensible default will be chosen using :mod:`sysctl.default_config \u0026lt;salt.modules.linux_sysctl.default_config\u0026gt;`. CLI Example: salt '*' sysctl.persist net.ipv4.ip_forward 1 sysctl.show:\nReturn a list of sysctl parameters for this minion config: Pull the data from the system configuration file instead of the live data. CLI Example: salt '*' sysctl.show sysfs.attr:\nAccess/write a SysFS attribute. If the attribute is a symlink, its destination is returned :return: value or bool CLI Example: salt '*' sysfs.attr block/sda/queue/logical_block_size sysfs.interfaces:\nGenerate a dictionary with all available interfaces relative to root. Symlinks are not followed. CLI Example: salt '*' sysfs.interfaces block/bcache0/bcache Output example: { \u0026quot;r\u0026quot;: [ \u0026quot;state\u0026quot;, \u0026quot;partial_stripes_expensive\u0026quot;, \u0026quot;writeback_rate_debug\u0026quot;, \u0026quot;stripe_size\u0026quot;, \u0026quot;dirty_data\u0026quot;, \u0026quot;stats_total/cache_hits\u0026quot;, \u0026quot;stats_total/cache_bypass_misses\u0026quot;, \u0026quot;stats_total/bypassed\u0026quot;, \u0026quot;stats_total/cache_readaheads\u0026quot;, \u0026quot;stats_total/cache_hit_ratio\u0026quot;, \u0026quot;stats_total/cache_miss_collisions\u0026quot;, \u0026quot;stats_total/cache_misses\u0026quot;, \u0026quot;stats_total/cache_bypass_hits\u0026quot;, ], \u0026quot;rw\u0026quot;: [ \u0026quot;writeback_rate\u0026quot;, \u0026quot;writeback_rate_update_seconds\u0026quot;, \u0026quot;cache_mode\u0026quot;, \u0026quot;writeback_delay\u0026quot;, \u0026quot;label\u0026quot;, \u0026quot;writeback_running\u0026quot;, \u0026quot;writeback_metadata\u0026quot;, \u0026quot;running\u0026quot;, \u0026quot;writeback_rate_p_term_inverse\u0026quot;, \u0026quot;sequential_cutoff\u0026quot;, \u0026quot;writeback_percent\u0026quot;, \u0026quot;writeback_rate_d_term\u0026quot;, \u0026quot;readahead\u0026quot; ], \u0026quot;w\u0026quot;: [ \u0026quot;stop\u0026quot;, \u0026quot;clear_stats\u0026quot;, \u0026quot;attach\u0026quot;, \u0026quot;detach\u0026quot; ] } Note: * 'r' interfaces are read-only * 'w' interfaces are write-only (e.g. actions) * 'rw' are interfaces that can both be read or written sysfs.read:\nRead from SysFS :param key: file or path in SysFS; if key is a list then root will be prefixed on each key :return: the full (tree of) SysFS attributes under key CLI Example: salt '*' sysfs.read class/net/em1/statistics sysfs.target:\nReturn the basename of a SysFS key path :param key: the location to resolve within SysFS :param full: full path instead of basename :return: fullpath or basename of path CLI Example: salt '*' sysfs.read class/ttyS0 sysfs.write:\nWrite a SysFS attribute/action CLI Example: salt '*' sysfs.write devices/system/cpu/cpu0/cpufreq/scaling_governor 'performance' syslog_ng.config:\nBuilds syslog-ng configuration. This function is intended to be used from the state module, users should not use it directly! name : the id of the Salt document or it is the format of \u0026lt;statement name\u0026gt;.id config : the parsed YAML code write : if True, it writes the config into the configuration file, otherwise just returns it CLI Example: salt '*' syslog_ng.config name='s_local' config=\u0026quot;[{'tcp':[{'ip':'127.0.0.1'},{'port':1233}]}]\u0026quot; syslog_ng.config_test:\nRuns syntax check against cfgfile. If syslog_ng_sbin_dir is specified, it is added to the PATH during the test. CLI Example: salt '*' syslog_ng.config_test salt '*' syslog_ng.config_test /home/user/install/syslog-ng/sbin salt '*' syslog_ng.config_test /home/user/install/syslog-ng/sbin /etc/syslog-ng/syslog-ng.conf syslog_ng.get_config_file:\nReturns the configuration directory, which contains syslog-ng.conf. CLI Example: salt '*' syslog_ng.get_config_file syslog_ng.modules:\nReturns the available modules. If syslog_ng_sbin_dir is specified, it is added to the PATH during the execution of the command syslog-ng. CLI Example: salt '*' syslog_ng.modules salt '*' syslog_ng.modules /home/user/install/syslog-ng/sbin syslog_ng.reload:\nReloads syslog-ng. This function is intended to be used from states. If :mod:`syslog_ng.set_config_file \u0026lt;salt.modules.syslog_ng.set_binary_path\u0026gt;`, is called before, this function will use the set binary path. CLI Example: salt '*' syslog_ng.reload syslog_ng.set_binary_path:\nSets the path, where the syslog-ng binary can be found. This function is intended to be used from states. If syslog-ng is installed via a package manager, users don't need to use this function. CLI Example: salt '*' syslog_ng.set_binary_path name=/usr/sbin syslog_ng.set_config_file:\nSets the configuration's name. This function is intended to be used from states. CLI Example: salt '*' syslog_ng.set_config_file name=/etc/syslog-ng syslog_ng.set_parameters:\nSets variables. CLI Example: salt '*' syslog_ng.set_parameters version='3.6' salt '*' syslog_ng.set_parameters binary_path=/home/user/install/syslog-ng/sbin config_file=/home/user/install/syslog-ng/etc/syslog-ng.conf syslog_ng.start:\nEnsures, that syslog-ng is started via the given parameters. This function is intended to be used from the state module. Users shouldn't use this function, if the service module is available on their system. If :mod:`syslog_ng.set_config_file \u0026lt;salt.modules.syslog_ng.set_binary_path\u0026gt;`, is called before, this function will use the set binary path. CLI Example: salt '*' syslog_ng.start syslog_ng.stats:\nReturns statistics from the running syslog-ng instance. If syslog_ng_sbin_dir is specified, it is added to the PATH during the execution of the command syslog-ng-ctl. CLI Example: salt '*' syslog_ng.stats salt '*' syslog_ng.stats /home/user/install/syslog-ng/sbin syslog_ng.stop:\nKills syslog-ng. This function is intended to be used from the state module. Users shouldn't use this function, if the service module is available on their system. If :mod:`syslog_ng.set_config_file \u0026lt;salt.modules.syslog_ng.set_binary_path\u0026gt;` is called before, this function will use the set binary path. CLI Example: salt '*' syslog_ng.stop syslog_ng.version:\nReturns the version of the installed syslog-ng. If syslog_ng_sbin_dir is specified, it is added to the PATH during the execution of the command syslog-ng. CLI Example: salt '*' syslog_ng.version salt '*' syslog_ng.version /home/user/install/syslog-ng/sbin syslog_ng.write_config:\nWrites the given parameter config into the config file. This function is intended to be used from states. If :mod:`syslog_ng.set_config_file \u0026lt;salt.modules.syslog_ng.set_config_file\u0026gt;`, is called before, this function will use the set config file. CLI Example: salt '*' syslog_ng.write_config config='# comment' syslog_ng.write_version:\nRemoves the previous configuration file, then creates a new one and writes the name line. This function is intended to be used from states. If :mod:`syslog_ng.set_config_file \u0026lt;salt.modules.syslog_ng.set_config_file\u0026gt;`, is called before, this function will use the set config file. CLI Example: salt '*' syslog_ng.write_version name=\u0026quot;3.6\u0026quot; system.get_computer_desc:\nGet ``PRETTY_HOSTNAME`` value stored in ``/etc/machine-info`` If this file doesn't exist or the variable doesn't exist return ``False``. :return: Value of ``PRETTY_HOSTNAME`` in ``/etc/machine-info``. If file/variable does not exist ``False``. :rtype: str CLI Example: salt '*' system.get_computer_desc system.get_computer_name:\nGet hostname. CLI Example: salt '*' network.get_hostname system.get_reboot_required_witnessed:\nNote: This only applies to Minions running on NI Linux RT Determine if at any time during the current boot session the salt minion witnessed an event indicating that a reboot is required. Returns: bool: ``True`` if the a reboot request was witnessed, ``False`` otherwise CLI Example: salt '*' system.get_reboot_required_witnessed system.get_system_date:\nGet the system date :param str utc_offset: The UTC offset in 4 digit (``+0600``) format with an optional sign (``+``/``-``). Will default to ``None`` which will use the local timezone. To set the time based off of UTC use ``+0000``. Note: If being passed through the command line will need to be quoted twice to allow negative offsets (e.g. ``\u0026quot;'+0000'\u0026quot;``). :return: Returns the system date. :rtype: str CLI Example: salt '*' system.get_system_date system.get_system_date_time:\nGet the system date/time. :param str utc_offset: The UTC offset in 4 digit (``+0600``) format with an optional sign (``+``/``-``). Will default to ``None`` which will use the local timezone. To set the time based off of UTC use ``+0000``. Note: If being passed through the command line will need to be quoted twice to allow negative offsets (e.g. ``\u0026quot;'+0000'\u0026quot;``). :return: Returns the system time in ``YYYY-MM-DD hh:mm:ss`` format. :rtype: str CLI Example: salt '*' system.get_system_date_time \u0026quot;'-0500'\u0026quot; system.get_system_time:\nGet the system time. :param str utc_offset: The UTC offset in 4 digit (e.g. ``+0600``) format with an optional sign (``+``/``-``). Will default to ``None`` which will use the local timezone. To set the time based off of UTC use ``+0000``. Note: If being passed through the command line will need to be quoted twice to allow negative offsets (e.g. ``\u0026quot;'+0000'\u0026quot;``). :return: Returns the system time in ``HH:MM:SS AM/PM`` format. :rtype: str CLI Example: salt '*' system.get_system_time system.halt:\nHalt a running system CLI Example: salt '*' system.halt system.has_settable_hwclock:\nReturns ``True`` if the system has a hardware clock capable of being set from software. CLI Example: salt '*' system.has_settable_hwclock system.init:\nChange the system runlevel on sysV compatible systems CLI Example: salt '*' system.init 3 system.poweroff:\nPoweroff a running system CLI Example: salt '*' system.poweroff system.reboot:\nReboot the system at_time The wait time in minutes before the system will be rebooted. CLI Example: salt '*' system.reboot system.set_computer_desc:\nSet ``PRETTY_HOSTNAME`` value stored in ``/etc/machine-info`` This will create the file if it does not exist. If it is unable to create or modify this file, ``False`` is returned. :param str desc: The computer description :return: ``False`` on failure. ``True`` if successful. CLI Example: salt '*' system.set_computer_desc \u0026quot;Michael's laptop\u0026quot; system.set_computer_name:\nModify hostname. CLI Example: salt '*' system.set_computer_name master.saltstack.com system.set_reboot_required_witnessed:\nNote: This only applies to Minions running on NI Linux RT This function is used to remember that an event indicating that a reboot is required was witnessed. This function writes to a temporary filesystem so the event gets cleared upon reboot. Returns: bool: ``True`` if successful, otherwise ``False`` CLI Example: salt '*' system.set_reboot_required_witnessed system.set_system_date:\nSet the system date. Use ``\u0026lt;mm-dd-yy\u0026gt;`` format for the date. :param str newdate: The date to set. Can be any of the following formats: - ``YYYY-MM-DD`` - ``MM-DD-YYYY`` - ``MM-DD-YY`` - ``MM/DD/YYYY`` - ``MM/DD/YY`` - ``YYYY/MM/DD`` CLI Example: salt '*' system.set_system_date '03-28-13' system.set_system_date_time:\nSet the system date and time. Each argument is an element of the date, but not required. If an element is not passed, the current system value for that element will be used. For example, if the year is not passed, the current system year will be used. (Used by :mod:`system.set_system_date \u0026lt;salt.modules.system.set_system_date\u0026gt;` and :mod:`system.set_system_time \u0026lt;salt.modules.system.set_system_time\u0026gt;`) Updates hardware clock, if present, in addition to software (kernel) clock. :param int years: Years digit, e.g.: ``2015`` :param int months: Months digit: ``1``-``12`` :param int days: Days digit: ``1``-``31`` :param int hours: Hours digit: ``0``-``23`` :param int minutes: Minutes digit: ``0``-``59`` :param int seconds: Seconds digit: ``0``-``59`` :param str utc_offset: The UTC offset in 4 digit (``+0600``) format with an optional sign (``+``/``-``). Will default to ``None`` which will use the local timezone. To set the time based off of UTC use ``+0000``. Note: If being passed through the command line will need to be quoted twice to allow negative offsets (e.g. ``\u0026quot;'+0000'\u0026quot;``). :return: ``True`` if successful. Otherwise ``False``. :rtype: bool CLI Example: salt '*' system.set_system_date_time 2015 5 12 11 37 53 \u0026quot;'-0500'\u0026quot; system.set_system_time:\nSet the system time. :param str newtime: The time to set. Can be any of the following formats. - ``HH:MM:SS AM/PM`` - ``HH:MM AM/PM`` - ``HH:MM:SS`` (24 hour) - ``HH:MM`` (24 hour) Note that the Salt command line parser parses the date/time before we obtain the argument (preventing us from doing UTC) Therefore the argument must be passed in as a string. Meaning the text might have to be quoted twice on the command line. :param str utc_offset: The UTC offset in 4 digit (``+0600``) format with an optional sign (``+``/``-``). Will default to ``None`` which will use the local timezone. To set the time based off of UTC use ``+0000``. Note: If being passed through the command line will need to be quoted twice to allow negative offsets (e.g. ``\u0026quot;'+0000'\u0026quot;``) :return: Returns ``True`` if successful. Otherwise ``False``. :rtype: bool CLI Example: salt '*' system.set_system_time \u0026quot;'11:20'\u0026quot; system.shutdown:\nShutdown a running system at_time The wait time in minutes before the system will be shutdown. CLI Example: salt '*' system.shutdown 5 telegram.post_message:\nSend a message to a Telegram chat. :param message: The message to send to the Telegram chat. :param chat_id: (optional) The Telegram chat id. :param token: (optional) The Telegram API token. :return: Boolean if message was sent successfully. CLI Example: salt '*' telegram.post_message message=\u0026quot;Hello Telegram!\u0026quot; telemetry.create_alarm:\ncreate an telemetry alarms. data is a dict of alert configuration data. Returns (bool success, str message) tuple. CLI Example: salt myminion telemetry.create_alarm rs-ds033197 {} profile=telemetry telemetry.delete_alarms: delete an alert specified by alert_id or if not specified blows away all the alerts in the current deployment.\nReturns (bool success, str message) tuple. CLI Example: salt myminion telemetry.delete_alarms rs-ds033197 profile=telemetry telemetry.get_alarms:\nget all the alarms set up against the current deployment Returns dictionary of alarm information CLI Example: salt myminion telemetry.get_alarms rs-ds033197 profile=telemetry telemetry.get_alert_config:\nGet all alert definitions associated with a given deployment or if metric_name is specified, obtain the specific alert config Returns dictionary or list of dictionaries. CLI Example: salt myminion telemetry.get_alert_config rs-ds033197 currentConnections profile=telemetry salt myminion telemetry.get_alert_config rs-ds033197 profile=telemetry telemetry.get_notification_channel_id:\nGiven an email address, creates a notification-channels if one is not found and also returns the corresponding notification channel id. notify_channel Email escalation policy profile A dict of telemetry config information. CLI Example: salt myminion telemetry.get_notification_channel_id userx@company.com profile=telemetry telemetry.update_alarm:\nupdate an telemetry alarms. data is a dict of alert configuration data. Returns (bool success, str message) tuple. CLI Example: salt myminion telemetry.update_alarm rs-ds033197 {} profile=telemetry temp.dir:\nCreate a temporary directory CLI Example: salt '*' temp.dir salt '*' temp.dir prefix='mytemp-' parent='/var/run/' temp.file:\nCreate a temporary file CLI Example: salt '*' temp.file salt '*' temp.file prefix='mytemp-' parent='/var/run/' test.arg:\nPrint out the data passed into the function ``*args`` and ``kwargs``, this is used to both test the publication data and CLI argument passing, but also to display the information available within the publication data. :return: ``{\u0026quot;args\u0026quot;: args, \u0026quot;kwargs\u0026quot;: kwargs}`` :rtype: dict CLI Example: salt '*' test.arg 1 \u0026quot;two\u0026quot; 3.1 txt=\u0026quot;hello\u0026quot; wow='{a: 1, b: \u0026quot;hello\u0026quot;}' test.arg_clean:\nLike :mod:`test.arg \u0026lt;salt.modules.test.arg\u0026gt;` but cleans ``kwargs`` of the ``__pub*`` items CLI Example: salt '*' test.arg_clean 1 \u0026quot;two\u0026quot; 3.1 txt=\u0026quot;hello\u0026quot; wow='{a: 1, b: \u0026quot;hello\u0026quot;}' test.arg_repr:\nPrint out the data passed into the function ``*args`` and ``kwargs``, this is used to both test the publication data and CLI argument passing, but also to display the information available within the publication data. :return: ``{\u0026quot;args\u0026quot;: repr(args), \u0026quot;kwargs\u0026quot;: repr(kwargs)}`` CLI Example: salt '*' test.arg_repr 1 \u0026quot;two\u0026quot; 3.1 txt=\u0026quot;hello\u0026quot; wow='{a: 1, b: \u0026quot;hello\u0026quot;}' test.arg_type:\nPrint out the types of the ``args`` and ``kwargs``. This is used to test the types of the ``args`` and ``kwargs`` passed down to the Minion :rtype: dict CLI Example: salt '*' test.arg_type 1 'int' test.assertion:\nAssert the given argument CLI Example: salt '*' test.assertion False test.attr_call:\nCall grains.items via the attribute CLI Example: salt '*' test.attr_call test.collatz:\nExecute the collatz conjecture from the passed starting number, returns the sequence and the time it took to compute. Used for performance tests. CLI Example: salt '*' test.collatz 3 test.conf_test:\nReturn the value for test.foo in the minion configuration file, or return the default value CLI Example: salt '*' test.conf_test test.cross_test:\nExecute a minion function via the ``__salt__`` object in the test module, used to verify that the Minion functions can be called via the ``__salt__`` module. CLI Example: salt '*' test.cross_test file.gid_to_group 0 test.deprecation_warning:\nReturn True, but also produce two DeprecationWarnings. One by date, the other by the codename - release Oganesson, which should correspond to Salt 3108. CLI Example: salt \\* test.deprecation_warning test.echo:\nReturn a string - used for testing the connection CLI Example: salt '*' test.echo 'foo bar baz quo qux' test.exception:\nRaise an exception Optionally provide an error message or output the full stack. CLI Example: salt '*' test.exception 'Oh noes!' test.false:\nAlways return ``False`` CLI Example: salt '*' test.false test.fib:\nReturn the ``num``-th Fibonacci number, and the time it took to compute in seconds. Used for performance tests. This function is designed to have terrible performance. CLI Example: salt '*' test.fib 3 test.get_opts:\nReturn the configuration options passed to this minion CLI Example: salt '*' test.get_opts test.kwarg:\nPrint out the data passed into the function ``**kwargs``, this is used to both test the publication data and CLI ``kwarg`` passing, but also to display the information available within the publication data. CLI Example: salt '*' test.kwarg num=1 txt=\u0026quot;two\u0026quot; env='{a: 1, b: \u0026quot;hello\u0026quot;}' test.module_report:\nReturn a dict containing all of the execution modules with a report on the overall availability via different references CLI Example: salt '*' test.module_report test.not_loaded:\nList the modules that were not loaded by the salt loader system CLI Example: salt '*' test.not_loaded test.opts_pkg:\nReturn an ``opts`` package with the ``grains`` and ``opts`` for this Minion. This is primarily used to create the options used for Master side state compiling routines CLI Example: salt '*' test.opts_pkg test.outputter:\nTest the outputter, pass in data to return CLI Example: salt '*' test.outputter foobar test.ping:\nUsed to make sure the minion is up and responding. Not an ICMP ping. Returns ``True``. CLI Example: salt '*' test.ping test.provider:\nPass in a function name to discover what provider is being used CLI Example: salt '*' test.provider service test.providers:\nReturn a dict of the provider names and the files that provided them CLI Example: salt '*' test.providers test.raise_exception:\nRaise an exception. Built-in exceptions and those in :mod:`salt.exceptions \u0026lt;salt.internals.salt.exceptions\u0026gt;` can be raised by this test function. If no matching exception is found, then no exception will be raised and this function will return ``False``. This function is designed to test Salt's exception and return code handling. CLI Example: salt '*' test.raise_exception TypeError \u0026quot;An integer is required\u0026quot; salt '*' test.raise_exception salt.exceptions.CommandExecutionError \u0026quot;Something went wrong\u0026quot; test.rand_sleep:\nSleep for a random number of seconds, used to test long-running commands and minions returning at differing intervals CLI Example: salt '*' test.rand_sleep 60 test.rand_str:\nThis function has been renamed to :mod:`test.random_hash \u0026lt;salt.modules.test.random_hash\u0026gt;`. This function will stay to ensure backwards compatibility, but please switch to using the preferred name :mod:`test.random_hash \u0026lt;salt.modules.test.random_hash\u0026gt;`. test.random_hash:\nNew in version 2015.5.2 Changed in version 2018.3.0 Function has been renamed from ``test.rand_str`` to ``test.random_hash`` Generates a random number between 1 and ``size``, then returns a hash of that number. If no ``hash_type`` is passed, the ``hash_type`` specified by the Minion's :conf_minion:`hash_type` config option is used. CLI Example: salt '*' test.random_hash salt '*' test.random_hash hash_type=sha512 test.retcode:\nTest that the returncode system is functioning correctly CLI Example: salt '*' test.retcode 42 test.sleep:\nInstruct the minion to initiate a process that will sleep for a given period of time. CLI Example: salt '*' test.sleep 20 test.stack:\nReturn the current stack trace CLI Example: salt '*' test.stack test.true:\nAlways return ``True`` CLI Example: salt '*' test.true test.try:\nTry to run a module command. On an exception return ``None``. If ``return_try_exception`` is set to ``True``, return the exception. This can be helpful in templates where running a module might fail as expected. Jinja Example: {% for i in range(0,230) %} {{ salt['test.try'](module='ipmi.get_users', bmc_host='172.2.2.'+i)|yaml(False) }} {% endfor %} test.tty:\nDeprecated! Moved to :mod:`cmd.tty \u0026lt;salt.modules.cmdmod.tty\u0026gt;` CLI Example: salt '*' test.tty tty0 'This is a test' salt '*' test.tty pts3 'This is a test' test.version:\nReturn the version of salt on the minion CLI Example: salt '*' test.version test.versions:\nThis function is an alias of versions_report.\nReturns versions of components used by salt CLI Example: salt '*' test.versions_report test.versions_information:\nReport the versions of dependent and system software CLI Example: salt '*' test.versions_information test.versions_report:\nReturns versions of components used by salt CLI Example: salt '*' test.versions_report timezone.get_hwclock:\nGet current hardware clock setting (UTC or localtime) CLI Example: salt '*' timezone.get_hwclock timezone.get_offset:\nGet current numeric timezone offset from UTC (i.e. -0700) CLI Example: salt '*' timezone.get_offset timezone.get_zone:\nGet current timezone (i.e. America/Denver) Changed in version 2016.11.4 Note: On AIX operating systems, Posix values can also be returned 'CST6CDT,M3.2.0/2:00:00,M11.1.0/2:00:00' CLI Example: salt '*' timezone.get_zone timezone.get_zonecode:\nGet current timezone (i.e. PST, MDT, etc) CLI Example: salt '*' timezone.get_zonecode timezone.set_hwclock:\nSets the hardware clock to be either UTC or localtime CLI Example: salt '*' timezone.set_hwclock UTC timezone.set_zone:\nUnlinks, then symlinks /etc/localtime to the set timezone. The timezone is crucial to several system processes, each of which SHOULD be restarted (for instance, whatever you system uses as its cron and syslog daemons). This will not be automagically done and must be done manually! CLI Example: salt '*' timezone.set_zone 'America/Denver' Changed in version 2016.11.4 Note: On AIX operating systems, Posix values are also allowed, see below salt '*' timezone.set_zone 'CST6CDT,M3.2.0/2:00:00,M11.1.0/2:00:00' timezone.zone_compare:\nCompares the given timezone name with the system timezone name. Checks the hash sum between the given timezone, and the one set in /etc/localtime. Returns True if names and hash sums match, and False if not. Mostly useful for running state checks. Changed in version 2016.3.0 Note: On Solaris-like operating systems only a string comparison is done. Changed in version 2016.11.4 Note: On AIX operating systems only a string comparison is done. CLI Example: salt '*' timezone.zone_compare 'America/Denver' tls.ca_exists:\nVerify whether a Certificate Authority (CA) already exists ca_name name of the CA cacert_path absolute path to ca certificates root directory ca_filename alternative filename for the CA New in version 2015.5.3 CLI Example: salt '*' tls.ca_exists test_ca /etc/certs tls.cert_base_path:\nReturn the base path for certs from CLI or from options cacert_path absolute path to ca certificates root directory CLI Example: salt '*' tls.cert_base_path tls.cert_info:\nReturn information for a particular certificate cert path to the certifiate PEM file or string Changed in version 2018.3.4 digest what digest to use for fingerprinting CLI Example: salt '*' tls.cert_info /dir/for/certs/cert.pem tls.create_ca:\nCreate a Certificate Authority (CA) ca_name name of the CA bits number of RSA key bits, default is 2048 days number of days the CA will be valid, default is 365 CN common name in the request, default is \u0026quot;localhost\u0026quot; C country, default is \u0026quot;US\u0026quot; ST state, default is \u0026quot;Utah\u0026quot; L locality, default is \u0026quot;Centerville\u0026quot;, the city where SaltStack originated O organisation, default is \u0026quot;SaltStack\u0026quot; OU organizational unit, default is None emailAddress email address for the CA owner, default is None cacert_path absolute path to ca certificates root directory ca_filename alternative filename for the CA New in version 2015.5.3 digest The message digest algorithm. Must be a string describing a digest algorithm supported by OpenSSL (by EVP_get_digestbyname, specifically). For example, \u0026quot;md5\u0026quot; or \u0026quot;sha1\u0026quot;. Default: 'sha256' replace Replace this certificate even if it exists New in version 2015.5.1 Writes out a CA certificate based upon defined config values. If the file already exists, the function just returns assuming the CA certificate already exists. If the following values were set:: ca.cert_base_path='/etc/pki' ca_name='koji' the resulting CA, and corresponding key, would be written in the following location with appropriate permissions:: /etc/pki/koji/koji_ca_cert.crt /etc/pki/koji/koji_ca_cert.key CLI Example: salt '*' tls.create_ca test_ca tls.create_ca_signed_cert:\nCreate a Certificate (CERT) signed by a named Certificate Authority (CA) If the certificate file already exists, the function just returns assuming the CERT already exists. The CN *must* match an existing CSR generated by create_csr. If it does not, this method does nothing. ca_name name of the CA CN common name matching the certificate signing request days number of days certificate is valid, default is 365 (1 year) cacert_path absolute path to ca certificates root directory ca_filename alternative filename for the CA New in version 2015.5.3 cert_path full path to the certificates directory cert_filename alternative filename for the certificate, useful when using special characters in the CN. If this option is set it will override the certificate filename output effects of ``cert_type``. ``type_ext`` will be completely overridden. New in version 2015.5.3 digest The message digest algorithm. Must be a string describing a digest algorithm supported by OpenSSL (by EVP_get_digestbyname, specifically). For example, \u0026quot;md5\u0026quot; or \u0026quot;sha1\u0026quot;. Default: 'sha256' replace Replace this certificate even if it exists New in version 2015.5.1 cert_type string. Either 'server' or 'client' (see create_csr() for details). If create_csr(type_ext=True) this function **must** be called with the same cert_type so it can find the CSR file. Note: create_csr() defaults to cert_type='server'; therefore, if it was also called with type_ext, cert_type becomes a required argument for create_ca_signed_cert() type_ext bool. If set True, use ``cert_type`` as an extension to the CN when formatting the filename. e.g.: some_subject_CN_server.crt or some_subject_CN_client.crt This facilitates the context where both types are required for the same subject If ``cert_filename`` is `not None`, setting ``type_ext`` has no effect If the following values were set: ca.cert_base_path='/etc/pki' ca_name='koji' CN='test.egavas.org' the resulting signed certificate would be written in the following location: /etc/pki/koji/certs/test.egavas.org.crt CLI Example: salt '*' tls.create_ca_signed_cert test localhost tls.create_csr:\nCreate a Certificate Signing Request (CSR) for a particular Certificate Authority (CA) ca_name name of the CA bits number of RSA key bits, default is 2048 CN common name in the request, default is \u0026quot;localhost\u0026quot; C country, default is \u0026quot;US\u0026quot; ST state, default is \u0026quot;Utah\u0026quot; L locality, default is \u0026quot;Centerville\u0026quot;, the city where SaltStack originated O organisation, default is \u0026quot;SaltStack\u0026quot; NOTE: Must the same as CA certificate or an error will be raised OU organizational unit, default is None emailAddress email address for the request, default is None subjectAltName valid subjectAltNames in full form, e.g. to add DNS entry you would call this function with this value: examples: ['DNS:somednsname.com', 'DNS:1.2.3.4', 'IP:1.2.3.4', 'IP:2001:4801:7821:77:be76:4eff:fe11:e51', 'email:me@i.like.pie.com'] Note: some libraries do not properly query IP: prefixes, instead looking for the given req. source with a DNS: prefix. To be thorough, you may want to include both DNS: and IP: entries if you are using subjectAltNames for destinations for your TLS connections. e.g.: requests to https://1.2.3.4 will fail from python's requests library w/out the second entry in the above list New in version 2015.8.0 cert_type Specify the general certificate type. Can be either `server` or `client`. Indicates the set of common extensions added to the CSR. server: { 'basicConstraints': 'CA:FALSE', 'extendedKeyUsage': 'serverAuth', 'keyUsage': 'digitalSignature, keyEncipherment' } client: { 'basicConstraints': 'CA:FALSE', 'extendedKeyUsage': 'clientAuth', 'keyUsage': 'nonRepudiation, digitalSignature, keyEncipherment' } type_ext boolean. Whether or not to extend the filename with CN_[cert_type] This can be useful if a server and client certificate are needed for the same CN. Defaults to False to avoid introducing an unexpected file naming pattern The files normally named some_subject_CN.csr and some_subject_CN.key will then be saved replace Replace this signing request even if it exists New in version 2015.5.1 Writes out a Certificate Signing Request (CSR) If the file already exists, the function just returns assuming the CSR already exists. If the following values were set:: ca.cert_base_path='/etc/pki' ca_name='koji' CN='test.egavas.org' the resulting CSR, and corresponding key, would be written in the following location with appropriate permissions:: /etc/pki/koji/certs/test.egavas.org.csr /etc/pki/koji/certs/test.egavas.org.key CLI Example: salt '*' tls.create_csr test tls.create_empty_crl:\nCreate an empty Certificate Revocation List. New in version 2015.8.0 ca_name name of the CA cacert_path absolute path to ca certificates root directory ca_filename alternative filename for the CA New in version 2015.5.3 crl_file full path to the CRL file digest The message digest algorithm. Must be a string describing a digest algorithm supported by OpenSSL (by EVP_get_digestbyname, specifically). For example, \u0026quot;md5\u0026quot; or \u0026quot;sha1\u0026quot;. Default: 'sha256' CLI Example: salt '*' tls.create_empty_crl ca_name='koji' ca_filename='ca' crl_file='/etc/openvpn/team1/crl.pem' tls.create_pkcs12:\nCreate a PKCS#12 browser certificate for a particular Certificate (CN) ca_name name of the CA CN common name matching the certificate signing request passphrase used to unlock the PKCS#12 certificate when loaded into the browser cacert_path absolute path to ca certificates root directory replace Replace this certificate even if it exists New in version 2015.5.1 If the following values were set:: ca.cert_base_path='/etc/pki' ca_name='koji' CN='test.egavas.org' the resulting signed certificate would be written in the following location:: /etc/pki/koji/certs/test.egavas.org.p12 CLI Example: salt '*' tls.create_pkcs12 test localhost tls.create_self_signed_cert:\nCreate a Self-Signed Certificate (CERT) tls_dir location appended to the ca.cert_base_path, default is 'tls' bits number of RSA key bits, default is 2048 CN common name in the request, default is \u0026quot;localhost\u0026quot; C country, default is \u0026quot;US\u0026quot; ST state, default is \u0026quot;Utah\u0026quot; L locality, default is \u0026quot;Centerville\u0026quot;, the city where SaltStack originated O organisation, default is \u0026quot;SaltStack\u0026quot; NOTE: Must the same as CA certificate or an error will be raised OU organizational unit, default is None emailAddress email address for the request, default is None cacert_path absolute path to ca certificates root directory digest The message digest algorithm. Must be a string describing a digest algorithm supported by OpenSSL (by EVP_get_digestbyname, specifically). For example, \u0026quot;md5\u0026quot; or \u0026quot;sha1\u0026quot;. Default: 'sha256' replace Replace this certificate even if it exists New in version 2015.5.1 Writes out a Self-Signed Certificate (CERT). If the file already exists, the function just returns. If the following values were set:: ca.cert_base_path='/etc/pki' tls_dir='koji' CN='test.egavas.org' the resulting CERT, and corresponding key, would be written in the following location with appropriate permissions:: /etc/pki/koji/certs/test.egavas.org.crt /etc/pki/koji/certs/test.egavas.org.key CLI Example: salt '*' tls.create_self_signed_cert Passing options from the command line: salt 'minion' tls.create_self_signed_cert CN='test.mysite.org' tls.get_ca:\nGet the certificate path or content ca_name name of the CA as_text if true, return the certificate content instead of the path cacert_path absolute path to ca certificates root directory CLI Example: salt '*' tls.get_ca test_ca as_text=False cacert_path=/etc/certs tls.get_ca_signed_cert:\nGet the certificate path or content ca_name name of the CA CN common name of the certificate as_text if true, return the certificate content instead of the path cacert_path absolute path to certificates root directory cert_filename alternative filename for the certificate, useful when using special characters in the CN New in version 2015.5.3 CLI Example: salt '*' tls.get_ca_signed_cert test_ca CN=localhost as_text=False cacert_path=/etc/certs tls.get_ca_signed_key:\nGet the certificate path or content ca_name name of the CA CN common name of the certificate as_text if true, return the certificate content instead of the path cacert_path absolute path to certificates root directory key_filename alternative filename for the key, useful when using special characters New in version 2015.5.3 in the CN CLI Example: salt '*' tls.get_ca_signed_key test_ca CN=localhost as_text=False cacert_path=/etc/certs tls.get_expiration_date:\nNew in version 2019.2.0 Get a certificate's expiration date cert Full path to the certificate date_format By default this will return the expiration date in YYYY-MM-DD format, use this to specify a different strftime format string. Note that the expiration time will be in UTC. CLI Examples: salt '*' tls.get_expiration_date /path/to/foo.crt salt '*' tls.get_expiration_date /path/to/foo.crt date_format='%d/%m/%Y' tls.get_extensions:\nFetch X509 and CSR extension definitions from tls:extensions: (common|server|client) or set them to standard defaults. New in version 2015.8.0 cert_type: The type of certificate such as ``server`` or ``client``. CLI Example: salt '*' tls.get_extensions client tls.maybe_fix_ssl_version:\nCheck that the X509 version is correct (was incorrectly set in previous salt versions). This will fix the version if needed. ca_name ca authority name cacert_path absolute path to ca certificates root directory ca_filename alternative filename for the CA New in version 2015.5.3 CLI Example: salt '*' tls.maybe_fix_ssl_version test_ca /etc/certs tls.revoke_cert:\nRevoke a certificate. New in version 2015.8.0 ca_name Name of the CA. CN Common name matching the certificate signing request. cacert_path Absolute path to ca certificates root directory. ca_filename Alternative filename for the CA. cert_path Path to the cert file. cert_filename Alternative filename for the certificate, useful when using special characters in the CN. crl_file Full path to the CRL file. digest The message digest algorithm. Must be a string describing a digest algorithm supported by OpenSSL (by EVP_get_digestbyname, specifically). For example, \u0026quot;md5\u0026quot; or \u0026quot;sha1\u0026quot;. Default: 'sha256' CLI Example: salt '*' tls.revoke_cert ca_name='koji' ca_filename='ca' crl_file='/etc/openvpn/team1/crl.pem' tls.set_ca_path:\nIf wanted, store the aforementioned cacert_path in context to be used as the basepath for further operations CLI Example: salt '*' tls.set_ca_path /etc/certs tls.validate:\nNew in version 3000 Validate a certificate against a given CA/CRL. cert path to the certifiate PEM file or string ca_name name of the CA crl_file full path to the CRL file travisci.verify_webhook:\nVerify the webhook signature from travisci signature The signature header from the webhook header body The full payload body from the webhook post Note: The body needs to be the urlencoded version of the body. CLI Example: salt '*' travisci.verify_webhook 'M6NucCX5722bxisQs7e...' 'payload=%7B%22id%22%3A183791261%2C%22repository...' udev.env:\nReturn all environment variables udev has for dev CLI Example: salt '*' udev.env /dev/sda salt '*' udev.env /sys/class/net/eth0 udev.exportdb:\nReturn all the udev database CLI Example: salt '*' udev.exportdb udev.info:\nExtract all info delivered by udevadm CLI Example: salt '*' udev.info /dev/sda salt '*' udev.info /sys/class/net/eth0 udev.links:\nReturn all udev-created device symlinks CLI Example: salt '*' udev.links /dev/sda salt '*' udev.links /sys/class/net/eth0 udev.name:\nReturn the actual dev name(s?) according to udev for dev CLI Example: salt '*' udev.dev /dev/sda salt '*' udev.dev /sys/class/net/eth0 udev.path:\nReturn the physical device path(s?) according to udev for dev CLI Example: salt '*' udev.path /dev/sda salt '*' udev.path /sys/class/net/eth0 uptime.check_exists:\nCheck if a given URL is in being monitored by uptime CLI Example: salt '*' uptime.check_exists http://example.org uptime.checks_list:\nList URL checked by uptime CLI Example: salt '*' uptime.checks_list uptime.create: Create a check on a given URL.\nAdditional parameters can be used and are passed to API (for example interval, maxTime, etc). See the documentation https://github.com/fzaninotto/uptime for a full list of the parameters. CLI Example: salt '*' uptime.create http://example.org uptime.delete:\nDelete a check on a given URL CLI Example: salt '*' uptime.delete http://example.org user.add:\nAdd a user to the minion name Username LOGIN to add uid User ID of the new account gid Name or ID of the primary group of the new account groups List of supplementary groups of the new account home Home directory of the new account shell Login shell of the new account unique If not True, the user account can have a non-unique UID system Create a system account fullname GECOS field for the full name roomnumber GECOS field for the room number workphone GECOS field for the work phone homephone GECOS field for the home phone other GECOS field for other information createhome Create the user's home directory loginclass Login class for the new account (OpenBSD) nologinit Do not add the user to the lastlog and faillog databases root Directory to chroot into usergroup Create and add the user to a new primary group of the same name local (Only on systems with luseradd available) Specifically add the user locally rather than possibly through remote providers (e.g. LDAP) New in version 3007.0 CLI Example: salt '*' user.add name \u0026lt;uid\u0026gt; \u0026lt;gid\u0026gt; \u0026lt;groups\u0026gt; \u0026lt;home\u0026gt; \u0026lt;shell\u0026gt; user.chfullname:\nChange the user's Full Name name User to modify fullname GECOS field for the full name root Directory to chroot into CLI Example: salt '*' user.chfullname foo \u0026quot;Foo Bar\u0026quot; user.chgid:\nChange the default group of the user name User to modify gid Force use GID as new primary group root Directory to chroot into CLI Example: salt '*' user.chgid foo 4376 user.chgroups:\nChange the groups to which this user belongs name User to modify groups Groups to set for the user append : False If ``True``, append the specified group(s). Otherwise, this function will replace the user's groups with the specified group(s). root Directory to chroot into CLI Examples: salt '*' user.chgroups foo wheel,root salt '*' user.chgroups foo wheel,root append=True user.chhome:\nChange the home directory of the user, pass True for persist to move files to the new home directory if the old home directory exist. name User to modify home New home directory for the user account persist Move contents of the home directory to the new location root Directory to chroot into CLI Example: salt '*' user.chhome foo /home/users/foo True user.chhomephone:\nChange the user's Home Phone name User to modify homephone GECOS field for the home phone root Directory to chroot into CLI Example: salt '*' user.chhomephone foo 7735551234 user.chloginclass:\nChange the default login class of the user name User to modify loginclass Login class for the new account root Directory to chroot into Note: This function only applies to OpenBSD systems. CLI Example: salt '*' user.chloginclass foo staff user.chother:\nChange the user's other GECOS attribute name User to modify other GECOS field for other information root Directory to chroot into CLI Example: salt '*' user.chother foobar user.chroomnumber:\nChange the user's Room Number CLI Example: salt '*' user.chroomnumber foo 123 user.chshell:\nChange the default shell of the user name User to modify shell New login shell for the user account root Directory to chroot into CLI Example: salt '*' user.chshell foo /bin/zsh user.chuid:\nChange the uid for a named user name User to modify uid New UID for the user account root Directory to chroot into CLI Example: salt '*' user.chuid foo 4376 user.chworkphone:\nChange the user's Work Phone name User to modify workphone GECOS field for the work phone root Directory to chroot into CLI Example: salt '*' user.chworkphone foo 7735550123 user.delete:\nRemove a user from the minion name Username to delete remove Remove home directory and mail spool force Force some actions that would fail otherwise root Directory to chroot into local (Only on systems with luserdel available): Ensure the user account is removed locally ignoring global account management (default is False). New in version 3007.0 CLI Example: salt '*' user.delete name remove=True force=True user.get_loginclass:\nGet the login class of the user name User to get the information Note: This function only applies to OpenBSD systems. CLI Example: salt '*' user.get_loginclass foo user.getent:\nReturn the list of all info for all users refresh Force a refresh of user information root Directory to chroot into CLI Example: salt '*' user.getent user.info:\nReturn user information name User to get the information root Directory to chroot into CLI Example: salt '*' user.info root user.list_groups:\nReturn a list of groups the named user belongs to name User to get the information CLI Example: salt '*' user.list_groups foo user.list_users:\nReturn a list of all users root Directory to chroot into CLI Example: salt '*' user.list_users user.primary_group:\nReturn the primary group of the named user New in version 2016.3.0 name User to get the information CLI Example: salt '*' user.primary_group saltadmin user.rename:\nChange the username for a named user name User to modify new_name New value of the login name root Directory to chroot into CLI Example: salt '*' user.rename name new_name vault.clear_cache:\nNew in version 3007.0 Delete Vault caches. Will ensure the current token and associated leases are revoked by default. The cache is organised in a hierarchy: ``/vault/connection/session/leases``. (*italics* mark data that is only cached when receiving configuration from a master) ``connection`` contains KV metadata (by default), *configuration* and *(AppRole) auth credentials*. ``session`` contains the currently active token. ``leases`` contains leases issued to the currently active token like database credentials. CLI Example: salt '*' vault.clear_cache salt '*' vault.clear_cache session=True connection Only clear the cached data scoped to a connection. This includes configuration, auth credentials, the currently active auth token as well as leases and KV metadata (by default). Defaults to true. Set this to false to clear all Vault caches. session Only clear the cached data scoped to a session. This only includes leases and the currently active auth token, but not configuration or (AppRole) auth credentials. Defaults to false. Setting this to true will keep the connection cache, regardless of ``connection``. vault.clear_token_cache:\nChanged in version 3001 Changed in version 3007.0 This is now an alias for ``vault.clear_cache`` with ``connection=True``. Delete minion Vault token cache. CLI Example: salt '*' vault.clear_token_cache vault.delete_secret:\nDelete secret at \u0026lt;path\u0026gt;. The vault policy used must allow this. If \u0026lt;path\u0026gt; is on KV v2, the secret will be soft-deleted. CLI Example: salt '*' vault.delete_secret \u0026quot;secret/my/secret\u0026quot; salt '*' vault.delete_secret \u0026quot;secret/my/secret\u0026quot; 1 2 3 Required policy: path \u0026quot;\u0026lt;mount\u0026gt;/\u0026lt;secret\u0026gt;\u0026quot; { capabilities = [\u0026quot;delete\u0026quot;] } # or KV v2 path \u0026quot;\u0026lt;mount\u0026gt;/data/\u0026lt;secret\u0026gt;\u0026quot; { capabilities = [\u0026quot;delete\u0026quot;] } # KV v2 versions path \u0026quot;\u0026lt;mount\u0026gt;/delete/\u0026lt;secret\u0026gt;\u0026quot; { capabilities = [\u0026quot;update\u0026quot;] } path The path to the secret, including mount. New in version 3007.0 For KV v2, you can specify versions to soft-delete as supplemental positional arguments. vault.destroy_secret:\nNew in version 3001 Destroy specified secret versions \u0026lt;path\u0026gt;. The vault policy used must allow this. Only supported on Vault KV version 2. CLI Example: salt '*' vault.destroy_secret \u0026quot;secret/my/secret\u0026quot; 1 2 Required policy: path \u0026quot;\u0026lt;mount\u0026gt;/destroy/\u0026lt;secret\u0026gt;\u0026quot; { capabilities = [\u0026quot;update\u0026quot;] } path The path to the secret, including mount. You can specify versions to destroy as supplemental positional arguments. At least one is required. vault.get_server_config:\nNew in version 3007.0 Return the server connection configuration that's currently in use by Salt. Contains ``url``, ``verify`` and ``namespace``. CLI Example: salt '*' vault.get_server_config vault.list_secrets:\nList secret keys at \u0026lt;path\u0026gt;. The vault policy used must allow this. The path should end with a trailing slash. Changed in version 3001 The ``default`` argument has been added. When the path or path/key combination is not found, an exception will be raised, unless a default is provided. CLI Example: salt '*' vault.list_secrets \u0026quot;secret/my/\u0026quot; Required policy: path \u0026quot;\u0026lt;mount\u0026gt;/\u0026lt;path\u0026gt;\u0026quot; { capabilities = [\u0026quot;list\u0026quot;] } # or KV v2 path \u0026quot;\u0026lt;mount\u0026gt;/metadata/\u0026lt;path\u0026gt;\u0026quot; { capabilities = [\u0026quot;list\u0026quot;] } path The path to the secret, including mount. default New in version 3001 When the path is not found, an exception will be raised, unless a default is provided here. keys_only New in version 3007.0 This function used to return a dictionary like ``{\u0026quot;keys\u0026quot;: [\u0026quot;some/\u0026quot;, \u0026quot;some/key\u0026quot;]}``. Setting this to True will only return the list of keys. For backwards-compatibility reasons, this defaults to False. vault.patch_secret:\nPatch secret dataset at \u0026lt;path\u0026gt;. Fields are specified as arbitrary keyword arguments. Note: This works even for older Vault versions, KV v1 and with missing ``patch`` capability, but will use more than one request to simulate the functionality by issuing a read and update request. For proper, single-request patching, requires versions of KV v2 that support the ``patch`` capability and the ``patch`` capability to be available for the path. Note: This uses JSON Merge Patch format internally. Keys set to ``null`` (JSON/YAML)/``None`` (Python) will be deleted. CLI Example: salt '*' vault.patch_secret \u0026quot;secret/my/secret\u0026quot; password=\u0026quot;baz\u0026quot; Required policy: # Proper patching path \u0026quot;\u0026lt;mount\u0026gt;/data/\u0026lt;secret\u0026gt;\u0026quot; { capabilities = [\u0026quot;patch\u0026quot;] } # OR (!), for older KV v2 setups: path \u0026quot;\u0026lt;mount\u0026gt;/data/\u0026lt;secret\u0026gt;\u0026quot; { capabilities = [\u0026quot;read\u0026quot;, \u0026quot;update\u0026quot;] } # OR (!), for KV v1 setups: path \u0026quot;\u0026lt;mount\u0026gt;/\u0026lt;secret\u0026gt;\u0026quot; { capabilities = [\u0026quot;read\u0026quot;, \u0026quot;update\u0026quot;] } path The path to the secret, including mount. vault.policies_list:\nNew in version 3007.0 List all ACL policies. CLI Example: salt '*' vault.policies_list Required policy: path \u0026quot;sys/policy\u0026quot; { capabilities = [\u0026quot;read\u0026quot;] } vault.policy_delete:\nNew in version 3007.0 Delete an ACL policy. Returns False if the policy did not exist. CLI Example: salt '*' vault.policy_delete salt_minion Required policy: path \u0026quot;sys/policy/\u0026lt;policy\u0026gt;\u0026quot; { capabilities = [\u0026quot;delete\u0026quot;] } policy The name of the policy to delete. vault.policy_fetch:\nNew in version 3007.0 Fetch the rules associated with an ACL policy. Returns None if the policy does not exist. CLI Example: salt '*' vault.policy_fetch salt_minion Required policy: path \u0026quot;sys/policy/\u0026lt;policy\u0026gt;\u0026quot; { capabilities = [\u0026quot;read\u0026quot;] } policy The name of the policy to fetch. vault.policy_write:\nNew in version 3007.0 Create or update an ACL policy. CLI Example: salt '*' vault.policy_write salt_minion 'path \u0026quot;secret/foo\u0026quot; {...}' Required policy: path \u0026quot;sys/policy/\u0026lt;policy\u0026gt;\u0026quot; { capabilities = [\u0026quot;create\u0026quot;, \u0026quot;update\u0026quot;] } policy The name of the policy to create/update. rules Rules to write, formatted as in-line HCL. vault.query:\nNew in version 3007.0 Issue arbitrary queries against the Vault API. CLI Example: salt '*' vault.query GET auth/token/lookup-self Required policy: Depends on the query. You can ask the vault CLI to output the necessary policy: vault read -output-policy auth/token/lookup-self method HTTP method to use. endpoint Vault API endpoint to issue the request against. Do not include ``/v1/``. payload Optional dictionary to use as JSON payload. vault.read_secret:\nReturn the value of \u0026lt;key\u0026gt; at \u0026lt;path\u0026gt; in vault, or entire secret. Changed in version 3001 The ``default`` argument has been added. When the path or path/key combination is not found, an exception will be raised, unless a default is provided. CLI Example: salt '*' vault.read_secret salt/kv/secret Required policy: path \u0026quot;\u0026lt;mount\u0026gt;/\u0026lt;secret\u0026gt;\u0026quot; { capabilities = [\u0026quot;read\u0026quot;] } # or KV v2 path \u0026quot;\u0026lt;mount\u0026gt;/data/\u0026lt;secret\u0026gt;\u0026quot; { capabilities = [\u0026quot;read\u0026quot;] } path The path to the secret, including mount. key The data field at \u0026lt;path\u0026gt; to read. If unspecified, returns the whole dataset. metadata New in version 3001 If using KV v2 backend, display full results, including metadata. Defaults to False. default New in version 3001 When the path or path/key combination is not found, an exception will be raised, unless a default is provided here. vault.update_config:\nNew in version 3007.0 Attempt to update the cached configuration without clearing the currently active Vault session. CLI Example: salt '*' vault.update_config keep_session Only update configuration that can be updated without creating a new login session. If this is false, still tries to keep the active session, but might clear it if the server configuration has changed significantly. Defaults to False. vault.write_raw:\nSet raw data at \u0026lt;path\u0026gt;. The vault policy used must allow this. CLI Example: salt '*' vault.write_raw \u0026quot;secret/my/secret\u0026quot; '{\u0026quot;user\u0026quot;:\u0026quot;foo\u0026quot;,\u0026quot;password\u0026quot;: \u0026quot;bar\u0026quot;}' Required policy: see write_secret path The path to the secret, including mount. raw Secret data to write to \u0026lt;path\u0026gt;. Has to be a mapping. vault.write_secret:\nSet secret dataset at \u0026lt;path\u0026gt;. The vault policy used must allow this. Fields are specified as arbitrary keyword arguments. CLI Example: salt '*' vault.write_secret \u0026quot;secret/my/secret\u0026quot; user=\u0026quot;foo\u0026quot; password=\u0026quot;bar\u0026quot; Required policy: path \u0026quot;\u0026lt;mount\u0026gt;/\u0026lt;secret\u0026gt;\u0026quot; { capabilities = [\u0026quot;create\u0026quot;, \u0026quot;update\u0026quot;] } # or KV v2 path \u0026quot;\u0026lt;mount\u0026gt;/data/\u0026lt;secret\u0026gt;\u0026quot; { capabilities = [\u0026quot;create\u0026quot;, \u0026quot;update\u0026quot;] } path The path to the secret, including mount. vbox_guest.additions_install:\nInstall VirtualBox Guest Additions. Uses the CD, connected by VirtualBox. To connect VirtualBox Guest Additions via VirtualBox graphical interface press 'Host+D' ('Host' is usually 'Right Ctrl'). See https://www.virtualbox.org/manual/ch04.html#idp52733088 for more details. CLI Example: salt '*' vbox_guest.additions_install salt '*' vbox_guest.additions_install reboot=True salt '*' vbox_guest.additions_install upgrade_os=True :param reboot: reboot computer to complete installation :type reboot: bool :param upgrade_os: upgrade OS (to ensure the latests version of kernel and developer tools are installed) :type upgrade_os: bool :return: version of VirtualBox Guest Additions or string with error vbox_guest.additions_mount:\nMount VirtualBox Guest Additions CD to the temp directory. To connect VirtualBox Guest Additions via VirtualBox graphical interface press 'Host+D' ('Host' is usually 'Right Ctrl'). CLI Example: salt '*' vbox_guest.additions_mount :return: True or OSError exception vbox_guest.additions_remove:\nRemove VirtualBox Guest Additions. Firstly it tries to uninstall itself by executing '/opt/VBoxGuestAdditions-VERSION/uninstall.run uninstall'. It uses the CD, connected by VirtualBox if it failes. CLI Example: salt '*' vbox_guest.additions_remove salt '*' vbox_guest.additions_remove force=True :param force: force VirtualBox Guest Additions removing :type force: bool :return: True if VirtualBox Guest Additions were removed successfully else False vbox_guest.additions_umount:\nUnmount VirtualBox Guest Additions CD from the temp directory. CLI Example: salt '*' vbox_guest.additions_umount :param mount_point: directory VirtualBox Guest Additions is mounted to :return: True or an string with error vbox_guest.additions_version:\nCheck VirtualBox Guest Additions version. CLI Example: salt '*' vbox_guest.additions_version :return: version of VirtualBox Guest Additions or False if they are not installed vbox_guest.grant_access_to_shared_folders_to:\nGrant access to auto-mounted shared folders to the users. User is specified by its name. To grant access for several users use argument `users`. Access will be denied to the users not listed in `users` argument. See https://www.virtualbox.org/manual/ch04.html#sf_mount_auto for more details. CLI Example: salt '*' vbox_guest.grant_access_to_shared_folders_to fred salt '*' vbox_guest.grant_access_to_shared_folders_to users ['fred', 'roman'] :param name: name of the user to grant access to auto-mounted shared folders to :type name: str :param users: list of names of users to grant access to auto-mounted shared folders to (if specified, `name` will not be taken into account) :type users: list of str :return: list of users who have access to auto-mounted shared folders vbox_guest.list_shared_folders_users:\nList users who have access to auto-mounted shared folders. See https://www.virtualbox.org/manual/ch04.html#sf_mount_auto for more details. CLI Example: salt '*' vbox_guest.list_shared_folders_users :return: list of users who have access to auto-mounted shared folders virtualenv.create:\nCreate a virtualenv path The path to the virtualenv to be created venv_bin The name (and optionally path) of the virtualenv command. This can also be set globally in the minion config file as ``virtualenv.venv_bin``. Defaults to ``virtualenv``. system_site_packages : False Passthrough argument given to virtualenv or pyvenv distribute : False Passthrough argument given to virtualenv pip : False Install pip after creating a virtual environment. Implies ``distribute=True`` clear : False Passthrough argument given to virtualenv or pyvenv python : None (default) Passthrough argument given to virtualenv extra_search_dir : None (default) Passthrough argument given to virtualenv never_download : None (default) Passthrough argument given to virtualenv if True prompt : None (default) Passthrough argument given to virtualenv if not None symlinks : None Passthrough argument given to pyvenv if True upgrade : None Passthrough argument given to pyvenv if True user : None Set ownership for the virtualenv Note: On Windows you must also pass a ``password`` parameter. Additionally, the user must have permissions to the location where the virtual environment is being created runas : None Set ownership for the virtualenv .. deprecated:: 2014.1.0 ``user`` should be used instead use_vt : False Use VT terminal emulation (see output while installing) New in version 2015.5.0 saltenv : 'base' Specify a different environment. The default environment is ``base``. New in version 2014.1.0 Note: The ``runas`` argument is deprecated as of 2014.1.0. ``user`` should be used instead. CLI Example: salt '*' virtualenv.create /path/to/new/virtualenv Example of using --always-copy environment variable (in case your fs doesn't support symlinks). This will copy files into the virtualenv instead of symlinking them. - env: - VIRTUALENV_ALWAYS_COPY: 1 virtualenv.get_distribution_path:\nReturn the path to a distribution installed inside a virtualenv New in version 2016.3.0 venv Path to the virtualenv. distribution Name of the distribution. Note, all non-alphanumeric characters will be converted to dashes. CLI Example: salt '*' virtualenv.get_distribution_path /path/to/my/venv my_distribution virtualenv.get_resource_content:\nReturn the content of a package resource installed inside a virtualenv New in version 2015.5.0 venv Path to the virtualenv package Name of the package in which the resource resides New in version 2016.3.0 resource Name of the resource of which the content is to be returned New in version 2016.3.0 CLI Example: salt '*' virtualenv.get_resource_content /path/to/my/venv my_package my/resource.xml virtualenv.get_resource_path:\nReturn the path to a package resource installed inside a virtualenv New in version 2015.5.0 venv Path to the virtualenv package Name of the package in which the resource resides New in version 2016.3.0 resource Name of the resource of which the path is to be returned New in version 2016.3.0 CLI Example: salt '*' virtualenv.get_resource_path /path/to/my/venv my_package my/resource.xml virtualenv.get_site_packages:\nReturn the path to the site-packages directory of a virtualenv venv Path to the virtualenv. CLI Example: salt '*' virtualenv.get_site_packages /path/to/my/venv virtualenv.virtualenv_ver:\nreturn virtualenv version if exists vsphere.compare_vm_configs:\nCompares virtual machine current and new configuration, the current is the one which is deployed now, and the new is the target config. Returns the differences between the objects in a dictionary, the keys are the configuration parameter keys and the values are differences objects: either list or recursive difference new_config: New config dictionary with every available parameter current_config Currently deployed configuration vsphere.get_proxy_type:\nReturns the proxy type retrieved either from the pillar of from the proxy minion's config. Returns ``\u0026lt;undefined\u0026gt;`` otherwise. CLI Example: salt '*' vsphere.get_proxy_type vsphere.get_ssh_key:\nRetrieve the authorized_keys entry for root. This function only works for ESXi, not vCenter. :param host: The location of the ESXi Host :param username: Username to connect as :param password: Password for the ESXi web endpoint :param protocol: defaults to https, can be http if ssl is disabled on ESXi :param port: defaults to 443 for https :param certificate_verify: If true require that the SSL connection present a valid certificate. Default: True :return: True if upload is successful CLI Example: salt '*' vsphere.get_ssh_key my.esxi.host root bad-password certificate_verify=True vsphere.get_vm_config:\nQueries and converts the virtual machine properties to the available format from the schema. If the objects attribute is True the config objects will have extra properties, like 'object' which will include the vim.vm.device.VirtualDevice, this is necessary for deletion and update actions. name Name of the virtual machine datacenter Datacenter's name where the virtual machine is available objects Indicates whether to return the vmware object properties (eg. object, key) or just the properties which can be set service_instance vCenter service instance for connection and configuration vsphere.upload_ssh_key:\nUpload an ssh key for root to an ESXi host via http PUT. This function only works for ESXi, not vCenter. Only one ssh key can be uploaded for root. Uploading a second key will replace any existing key. :param host: The location of the ESXi Host :param username: Username to connect as :param password: Password for the ESXi web endpoint :param ssh_key: Public SSH key, will be added to authorized_keys on ESXi :param ssh_key_file: File containing the SSH key. Use 'ssh_key' or ssh_key_file, but not both. :param protocol: defaults to https, can be http if ssl is disabled on ESXi :param port: defaults to 443 for https :param certificate_verify: If true require that the SSL connection present a valid certificate. Default: True :return: Dictionary with a 'status' key, True if upload is successful. If upload is unsuccessful, 'status' key will be False and an 'Error' key will have an informative message. CLI Example: salt '*' vsphere.upload_ssh_key my.esxi.host root bad-password ssh_key_file='/etc/salt/my_keys/my_key.pub' xfs.defragment:\nDefragment mounted XFS filesystem. In order to mount a filesystem, device should be properly mounted and writable. CLI Example: salt '*' xfs.defragment /dev/sda1 xfs.devices:\nGet known XFS formatted devices on the system. CLI Example: salt '*' xfs.devices xfs.dump:\nDump filesystem device to the media (file, tape etc). Required parameters: * **device**: XFS device, content of which to be dumped. * **destination**: Specifies a dump destination. Valid options are: * **label**: Label of the dump. Otherwise automatically generated label is used. * **level**: Specifies a dump level of 0 to 9. * **noerase**: Pre-erase media. Other options are not used in order to let ``xfsdump`` use its default values, as they are most optimal. See the ``xfsdump(8)`` manpage for a more complete description of these options. CLI Example: salt '*' xfs.dump /dev/sda1 /detination/on/the/client salt '*' xfs.dump /dev/sda1 /detination/on/the/client label='Company accountancy' salt '*' xfs.dump /dev/sda1 /detination/on/the/client noerase=True xfs.estimate:\nEstimate the space that an XFS filesystem will take. For each directory estimate the space that directory would take if it were copied to an XFS filesystem. Estimation does not cross mount points. CLI Example: salt '*' xfs.estimate /path/to/file salt '*' xfs.estimate /path/to/dir/* xfs.info:\nGet filesystem geometry information. CLI Example: salt '*' xfs.info /dev/sda1 xfs.inventory:\nDisplay XFS dump inventory without restoration. CLI Example: salt '*' xfs.inventory xfs.mkfs:\nCreate a file system on the specified device. By default wipes out with force. General options: * **label**: Specify volume label. * **ssize**: Specify the fundamental sector size of the filesystem. * **noforce**: Do not force create filesystem, if disk is already formatted. Filesystem geometry options: * **bso**: Block size options. * **gmo**: Global metadata options. * **dso**: Data section options. These options specify the location, size, and other parameters of the data section of the filesystem. * **ino**: Inode options to specify the inode size of the filesystem, and other inode allocation parameters. * **lso**: Log section options. * **nmo**: Naming options. * **rso**: Realtime section options. See the ``mkfs.xfs(8)`` manpage for a more complete description of corresponding options description. CLI Example: salt '*' xfs.mkfs /dev/sda1 salt '*' xfs.mkfs /dev/sda1 dso='su=32k,sw=6' noforce=True salt '*' xfs.mkfs /dev/sda1 dso='su=32k,sw=6' lso='logdev=/dev/sda2,size=10000b' xfs.modify:\nModify parameters of an XFS filesystem. CLI Example: salt '*' xfs.modify /dev/sda1 label='My backup' lazy_counting=False salt '*' xfs.modify /dev/sda1 uuid=False salt '*' xfs.modify /dev/sda1 uuid=True xfs.prune_dump:\nPrunes the dump session identified by the given session id. CLI Example: salt '*' xfs.prune_dump b74a3586-e52e-4a4a-8775-c3334fa8ea2c xml.get_attribute:\nReturn the attributes of the matched xpath element. CLI Example: salt '*' xml.get_attribute /tmp/test.xml \u0026quot;.//element[@id='3']\u0026quot; xml.get_value:\nReturns the value of the matched xpath element CLI Example: salt '*' xml.get_value /tmp/test.xml \u0026quot;.//element\u0026quot; xml.set_attribute:\nSet the requested attribute key and value for matched xpath element. CLI Example: salt '*' xml.set_attribute /tmp/test.xml \u0026quot;.//element[@id='3']\u0026quot; editedby \u0026quot;gal\u0026quot; xml.set_value:\nSets the value of the matched xpath element CLI Example: salt '*' xml.set_value /tmp/test.xml \u0026quot;.//element\u0026quot; \u0026quot;new value\u0026quot; zabbix.apiinfo_version:\nRetrieve the version of the Zabbix API. New in version 2016.3.0 :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: On success string with Zabbix API version, False on failure. CLI Example: salt '*' zabbix.apiinfo_version zabbix.compare_params:\nNew in version 2017.7.0 Compares Zabbix object definition against existing Zabbix object. :param defined: Zabbix object definition taken from sls file. :param existing: Existing Zabbix object taken from result of an API call. :param return_old_value: Default False. If True, returns dict(\u0026quot;old\u0026quot;=old_val, \u0026quot;new\u0026quot;=new_val) for rollback purpose. :return: Params that are different from existing object. Result extended by object ID can be passed directly to Zabbix API update method. CLI Example: salt '*' zabbix.compare_params new_zabbix_object_dict existing_zabbix_onject_dict zabbix.configuration_import:\nNew in version 2017.7.0 Imports Zabbix configuration specified in file to Zabbix server. :param config_file: File with Zabbix config (local or remote) :param rules: Optional - Rules that have to be different from default (defaults are the same as in Zabbix web UI.) :param file_format: Config file format (default: xml) :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) CLI Example: salt '*' zabbix.configuration_import salt://zabbix/config/zabbix_templates.xml \u0026quot;{'screens': {'createMissing': True, 'updateExisting': True}}\u0026quot; zabbix.get_object_id_by_params:\nNew in version 2017.7.0 Get ID of single Zabbix object specified by its name. :param obj: Zabbix object type :param params: Parameters by which object is uniquely identified :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: object ID CLI Example: salt '*' zabbix.get_object_id_by_params object_type params=zabbix_api_query_parameters_dict zabbix.get_zabbix_id_mapper:\nNew in version 2017.7.0 Make ZABBIX_ID_MAPPER constant available to state modules. :return: ZABBIX_ID_MAPPER CLI Example: salt '*' zabbix.get_zabbix_id_mapper zabbix.host_create:\nNew in version 2016.3.0 Create new host Note: This function accepts all standard host properties: keyword argument names differ depending on your zabbix version, see here__. .. __: https://www.zabbix.com/documentation/2.4/manual/api/reference/host/object#host :param host: technical name of the host :param groups: groupids of host groups to add the host to :param interfaces: interfaces to be created for the host :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :param visible_name: string with visible name of the host, use 'visible_name' instead of 'name' parameter to not mess with value supplied from Salt sls file. return: ID of the created host. CLI Example: salt '*' zabbix.host_create technicalname 4 interfaces='{type: 1, main: 1, useip: 1, ip: \u0026quot;192.168.3.1\u0026quot;, dns: \u0026quot;\u0026quot;, port: 10050}' visible_name='Host Visible Name' inventory_mode=0 inventory='{\u0026quot;alias\u0026quot;: \u0026quot;something\u0026quot;}' zabbix.host_delete:\nDelete hosts. New in version 2016.3.0 :param hostids: Hosts (hostids) to delete. :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: IDs of the deleted hosts. CLI Example: salt '*' zabbix.host_delete 10106 zabbix.host_exists:\nChecks if at least one host that matches the given filter criteria exists. New in version 2016.3.0 :param host: technical name of the host :param hostids: Hosts (hostids) to delete. :param name: visible name of the host :param node: name of the node the hosts must belong to (zabbix API \u0026lt; 2.4) :param nodeids: IDs of the node the hosts must belong to (zabbix API \u0026lt; 2.4) :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: IDs of the deleted hosts, False on failure. CLI Example: salt '*' zabbix.host_exists 'Zabbix server' zabbix.host_get:\nNew in version 2016.3.0 Retrieve hosts according to the given parameters Note: This function accepts all optional host.get parameters: keyword argument names differ depending on your zabbix version, see here__. .. __: https://www.zabbix.com/documentation/2.4/manual/api/reference/host/get :param host: technical name of the host :param name: visible name of the host :param hostids: ids of the hosts :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: Array with convenient hosts details, False if no host found or on failure. CLI Example: salt '*' zabbix.host_get 'Zabbix server' zabbix.host_inventory_get:\nRetrieve host inventory according to the given parameters. See: https://www.zabbix.com/documentation/2.4/manual/api/reference/host/object#host_inventory New in version 2019.2.0 :param hostids: ID of the host to query :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: Array with host inventory fields, populated or not, False if host inventory is disabled or on failure. CLI Example: salt '*' zabbix.host_inventory_get 101054 zabbix.host_inventory_set:\nUpdate host inventory items NOTE: This function accepts all standard host: keyword argument names for inventory see: https://www.zabbix.com/documentation/2.4/manual/api/reference/host/object#host_inventory New in version 2019.2.0 :param hostid: ID of the host to update :param clear_old: Set to True in order to remove all existing inventory items before setting the specified items :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: ID of the updated host, False on failure. CLI Example: salt '*' zabbix.host_inventory_set 101054 asset_tag=jml3322 type=vm clear_old=True zabbix.host_list:\nRetrieve all hosts. New in version 2016.3.0 :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: Array with details about hosts, False on failure. CLI Example: salt '*' zabbix.host_list zabbix.host_update:\nNew in version 2016.3.0 Update existing hosts Note: This function accepts all standard host and host.update properties: keyword argument names differ depending on your zabbix version, see the documentation for `host objects`_ and the documentation for `updating hosts`_. .. _`host objects`: https://www.zabbix.com/documentation/2.4/manual/api/reference/host/object#host .. _`updating hosts`: https://www.zabbix.com/documentation/2.4/manual/api/reference/host/update :param hostid: ID of the host to update :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :param visible_name: string with visible name of the host, use 'visible_name' instead of 'name' parameter to not mess with value supplied from Salt sls file. :return: ID of the updated host. CLI Example: salt '*' zabbix.host_update 10084 name='Zabbix server2' zabbix.hostgroup_create:\nNew in version 2016.3.0 Create a host group Note: This function accepts all standard host group properties: keyword argument names differ depending on your zabbix version, see here__. .. __: https://www.zabbix.com/documentation/2.4/manual/api/reference/hostgroup/object#host_group :param name: name of the host group :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: ID of the created host group. CLI Example: salt '*' zabbix.hostgroup_create MyNewGroup zabbix.hostgroup_delete:\nDelete the host group. New in version 2016.3.0 :param hostgroupids: IDs of the host groups to delete :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: ID of the deleted host groups, False on failure. CLI Example: salt '*' zabbix.hostgroup_delete 23 zabbix.hostgroup_exists:\nChecks if at least one host group that matches the given filter criteria exists. New in version 2016.3.0 :param name: names of the host groups :param groupid: host group IDs :param node: name of the node the host groups must belong to (zabbix API \u0026lt; 2.4) :param nodeids: IDs of the nodes the host groups must belong to (zabbix API \u0026lt; 2.4) :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: True if at least one host group exists, False if not or on failure. CLI Example: salt '*' zabbix.hostgroup_exists MyNewGroup zabbix.hostgroup_get:\nNew in version 2016.3.0 Retrieve host groups according to the given parameters Note: This function accepts all standard hostgroup.get properities: keyword argument names differ depending on your zabbix version, see here__. .. __: https://www.zabbix.com/documentation/2.2/manual/api/reference/hostgroup/get :param name: names of the host groups :param groupid: host group IDs :param node: name of the node the host groups must belong to :param nodeids: IDs of the nodes the host groups must belong to :param hostids: return only host groups that contain the given hosts :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: Array with host groups details, False if no convenient host group found or on failure. CLI Example: salt '*' zabbix.hostgroup_get MyNewGroup zabbix.hostgroup_list:\nRetrieve all host groups. New in version 2016.3.0 :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: Array with details about host groups, False on failure. CLI Example: salt '*' zabbix.hostgroup_list zabbix.hostgroup_update:\nNew in version 2016.3.0 Update existing hosts group Note: This function accepts all standard host group properties: keyword argument names differ depending on your zabbix version, see here__. .. __: https://www.zabbix.com/documentation/2.4/manual/api/reference/hostgroup/object#host_group :param groupid: ID of the host group to update :param name: name of the host group :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: IDs of updated host groups. CLI Example: salt '*' zabbix.hostgroup_update 24 name='Renamed Name' zabbix.hostinterface_create:\nNew in version 2016.3.0 Create new host interface Note: This function accepts all standard host group interface: keyword argument names differ depending on your zabbix version, see here__. .. __: https://www.zabbix.com/documentation/3.0/manual/api/reference/hostinterface/object :param hostid: ID of the host the interface belongs to :param ip_: IP address used by the interface :param dns: DNS name used by the interface :param main: whether the interface is used as default on the host (0 - not default, 1 - default) :param port: port number used by the interface :param type: Interface type (1 - agent; 2 - SNMP; 3 - IPMI; 4 - JMX) :param useip: Whether the connection should be made via IP (0 - connect using host DNS name; 1 - connect using host IP address for this host interface) :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: ID of the created host interface, False on failure. CLI Example: salt '*' zabbix.hostinterface_create 10105 192.193.194.197 zabbix.hostinterface_delete:\nDelete host interface New in version 2016.3.0 :param interfaceids: IDs of the host interfaces to delete :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: ID of deleted host interfaces, False on failure. CLI Example: salt '*' zabbix.hostinterface_delete 50 zabbix.hostinterface_get:\nNew in version 2016.3.0 Retrieve host groups according to the given parameters Note: This function accepts all standard hostinterface.get properities: keyword argument names differ depending on your zabbix version, see here__. .. __: https://www.zabbix.com/documentation/2.4/manual/api/reference/hostinterface/get :param hostids: Return only host interfaces used by the given hosts. :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: Array with host interfaces details, False if no convenient host interfaces found or on failure. CLI Example: salt '*' zabbix.hostinterface_get 101054 zabbix.hostinterface_update:\nNew in version 2016.3.0 Update host interface Note: This function accepts all standard hostinterface: keyword argument names differ depending on your zabbix version, see here__. .. __: https://www.zabbix.com/documentation/2.4/manual/api/reference/hostinterface/object#host_interface :param interfaceid: ID of the hostinterface to update :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: ID of the updated host interface, False on failure. CLI Example: salt '*' zabbix.hostinterface_update 6 ip_=0.0.0.2 zabbix.mediatype_create:\nCreate new mediatype Note: This function accepts all standard mediatype properties: keyword argument names differ depending on your zabbix version, see here__. .. __: https://www.zabbix.com/documentation/3.0/manual/api/reference/mediatype/object :param mediatype: media type - 0: email, 1: script, 2: sms, 3: Jabber, 100: Ez Texting :param exec_path: exec path - Required for script and Ez Texting types, see Zabbix API docs :param gsm_modem: exec path - Required for sms type, see Zabbix API docs :param smtp_email: email address from which notifications will be sent, required for email type :param smtp_helo: SMTP HELO, required for email type :param smtp_server: SMTP server, required for email type :param status: whether the media type is enabled - 0: enabled, 1: disabled :param username: authentication user, required for Jabber and Ez Texting types :param passwd: authentication password, required for Jabber and Ez Texting types :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) return: ID of the created mediatype. CLI Example: salt '*' zabbix.mediatype_create 'Email' 0 smtp_email='noreply@example.com' smtp_server='mailserver.example.com' smtp_helo='zabbix.example.com' zabbix.mediatype_delete:\nDelete mediatype :param interfaceids: IDs of the mediatypes to delete :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: ID of deleted mediatype, False on failure. CLI Example: salt '*' zabbix.mediatype_delete 3 zabbix.mediatype_get:\nRetrieve mediatypes according to the given parameters. Args: name: Name or description of the mediatype mediatypeids: ids of the mediatypes optional connection_args: _connection_user: zabbix user (can also be set in opts or pillar, see module's docstring) _connection_password: zabbix password (can also be set in opts or pillar, see module's docstring) _connection_url: url of zabbix frontend (can also be set in opts or pillar, see module's docstring) all optional mediatype.get parameters: keyword argument names depends on your zabbix version, see: https://www.zabbix.com/documentation/2.2/manual/api/reference/mediatype/get Returns: Array with mediatype details, False if no mediatype found or on failure. CLI Example: salt '*' zabbix.mediatype_get name='Email' salt '*' zabbix.mediatype_get mediatypeids=\u0026quot;['1', '2', '3']\u0026quot; zabbix.mediatype_update:\nUpdate existing mediatype Note: This function accepts all standard mediatype properties: keyword argument names differ depending on your zabbix version, see here__. .. __: https://www.zabbix.com/documentation/3.0/manual/api/reference/mediatype/object :param mediatypeid: ID of the mediatype to update :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: IDs of the updated mediatypes, False on failure. CLI Example: salt '*' zabbix.usergroup_update 8 name=\u0026quot;Email update\u0026quot; zabbix.run_query:\nSend Zabbix API call Args: method: actual operation to perform via the API params: parameters required for specific method optional connection_args: _connection_user: zabbix user (can also be set in opts or pillar, see module's docstring) _connection_password: zabbix password (can also be set in opts or pillar, see module's docstring) _connection_url: url of zabbix frontend (can also be set in opts or pillar, see module's docstring) all optional template.get parameters: keyword argument names depends on your zabbix version, see: https://www.zabbix.com/documentation/2.4/manual/api/reference/ Returns: Response from Zabbix API CLI Example: salt '*' zabbix.run_query proxy.create '{\u0026quot;host\u0026quot;: \u0026quot;zabbixproxy.domain.com\u0026quot;, \u0026quot;status\u0026quot;: \u0026quot;5\u0026quot;}' zabbix.substitute_params:\nNew in version 2017.7.0 Go through Zabbix object params specification and if needed get given object ID from Zabbix API and put it back as a value. Definition of the object is done via dict with keys \u0026quot;query_object\u0026quot; and \u0026quot;query_name\u0026quot;. :param input_object: Zabbix object type specified in state file :param extend_params: Specify query with params :param filter_key: Custom filtering key (default: name) :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: Params structure with values converted to string for further comparison purposes CLI Example: salt '*' zabbix.substitute_params '{\u0026quot;query_object\u0026quot;: \u0026quot;object_name\u0026quot;, \u0026quot;query_name\u0026quot;: \u0026quot;specific_object_name\u0026quot;}' zabbix.template_get:\nRetrieve templates according to the given parameters. Args: host: technical name of the template name: visible name of the template hostids: ids of the templates optional connection_args: _connection_user: zabbix user (can also be set in opts or pillar, see module's docstring) _connection_password: zabbix password (can also be set in opts or pillar, see module's docstring) _connection_url: url of zabbix frontend (can also be set in opts or pillar, see module's docstring) all optional template.get parameters: keyword argument names depends on your zabbix version, see: https://www.zabbix.com/documentation/2.4/manual/api/reference/template/get Returns: Array with convenient template details, False if no template found or on failure. CLI Example: salt '*' zabbix.template_get name='Template OS Linux' salt '*' zabbix.template_get templateids=\u0026quot;['10050', '10001']\u0026quot; zabbix.user_addmedia:\nAdd new media to multiple users. Available only for Zabbix version 3.4 or older. New in version 2016.3.0 :param userids: ID of the user that uses the media :param active: Whether the media is enabled (0 enabled, 1 disabled) :param mediatypeid: ID of the media type used by the media :param period: Time when the notifications can be sent as a time period :param sendto: Address, user name or other identifier of the recipient :param severity: Trigger severities to send notifications about :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: IDs of the created media. CLI Example: salt '*' zabbix.user_addmedia 4 active=0 mediatypeid=1 period='1-7,00:00-24:00' sendto='support2@example.com' severity=63 zabbix.user_create:\nNew in version 2016.3.0 Create new zabbix user Note: This function accepts all standard user properties: keyword argument names differ depending on your zabbix version, see here__. .. __: https://www.zabbix.com/documentation/2.0/manual/appendix/api/user/definitions#user :param alias: user alias :param passwd: user's password :param usrgrps: user groups to add the user to :param _connection_user: zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: url of zabbix frontend (can also be set in opts or pillar, see module's docstring) :param firstname: string with firstname of the user, use 'firstname' instead of 'name' parameter to not mess with value supplied from Salt sls file. :return: On success string with id of the created user. CLI Example: salt '*' zabbix.user_create james password007 '[7, 12]' firstname='James Bond' zabbix.user_delete:\nDelete zabbix users. New in version 2016.3.0 :param users: array of users (userids) to delete :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: On success array with userids of deleted users. CLI Example: salt '*' zabbix.user_delete 15 zabbix.user_deletemedia:\nDelete media by id. Available only for Zabbix version 3.4 or older. New in version 2016.3.0 :param mediaids: IDs of the media to delete :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: IDs of the deleted media, False on failure. CLI Example: salt '*' zabbix.user_deletemedia 27 zabbix.user_exists:\nChecks if user with given alias exists. New in version 2016.3.0 :param alias: user alias :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: True if user exists, else False. CLI Example: salt '*' zabbix.user_exists james zabbix.user_get:\nRetrieve users according to the given parameters. New in version 2016.3.0 :param alias: user alias :param userids: return only users with the given IDs :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: Array with details of convenient users, False on failure of if no user found. CLI Example: salt '*' zabbix.user_get james zabbix.user_getmedia:\nNew in version 2016.3.0 Retrieve media according to the given parameters Note: This function accepts all standard usermedia.get properties: keyword argument names differ depending on your zabbix version, see here__. .. __: https://www.zabbix.com/documentation/3.2/manual/api/reference/usermedia/get :param userids: return only media that are used by the given users :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: List of retrieved media, False on failure. CLI Example: salt '*' zabbix.user_getmedia zabbix.user_list:\nRetrieve all of the configured users. New in version 2016.3.0 :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: Array with user details. CLI Example: salt '*' zabbix.user_list zabbix.user_update:\nNew in version 2016.3.0 Update existing users Note: This function accepts all standard user properties: keyword argument names differ depending on your zabbix version, see here__. .. __: https://www.zabbix.com/documentation/2.0/manual/appendix/api/user/definitions#user :param userid: id of the user to update :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: Id of the updated user on success. CLI Example: salt '*' zabbix.user_update 16 visible_name='James Brown' zabbix.usergroup_create:\nNew in version 2016.3.0 Create new user group Note: This function accepts all standard user group properties: keyword argument names differ depending on your zabbix version, see here__. .. __: https://www.zabbix.com/documentation/2.0/manual/appendix/api/usergroup/definitions#user_group :param name: name of the user group :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: IDs of the created user groups. CLI Example: salt '*' zabbix.usergroup_create GroupName zabbix.usergroup_delete:\nNew in version 2016.3.0 :param usergroupids: IDs of the user groups to delete :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: IDs of the deleted user groups. CLI Example: salt '*' zabbix.usergroup_delete 28 zabbix.usergroup_exists:\nChecks if at least one user group that matches the given filter criteria exists New in version 2016.3.0 :param name: names of the user groups :param node: name of the node the user groups must belong to (This will override the nodeids parameter.) :param nodeids: IDs of the nodes the user groups must belong to :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: True if at least one user group that matches the given filter criteria exists, else False. CLI Example: salt '*' zabbix.usergroup_exists Guests zabbix.usergroup_get:\nNew in version 2016.3.0 Retrieve user groups according to the given parameters Note: This function accepts all usergroup_get properties: keyword argument names differ depending on your zabbix version, see here__. .. __: https://www.zabbix.com/documentation/2.4/manual/api/reference/usergroup/get :param name: names of the user groups :param usrgrpids: return only user groups with the given IDs :param userids: return only user groups that contain the given users :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: Array with convenient user groups details, False if no user group found or on failure. CLI Example: salt '*' zabbix.usergroup_get Guests zabbix.usergroup_list:\nRetrieve all enabled user groups. New in version 2016.3.0 :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: Array with enabled user groups details, False on failure. CLI Example: salt '*' zabbix.usergroup_list zabbix.usergroup_update:\nNew in version 2016.3.0 Update existing user group Note: This function accepts all standard user group properties: keyword argument names differ depending on your zabbix version, see here__. .. __: https://www.zabbix.com/documentation/2.4/manual/api/reference/usergroup/object#user_group :param usrgrpid: ID of the user group to update. :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) :return: IDs of the updated user group, False on failure. CLI Example: salt '*' zabbix.usergroup_update 8 name=guestsRenamed zabbix.usermacro_create:\nCreate new host usermacro. :param macro: name of the host usermacro :param value: value of the host usermacro :param hostid: hostid or templateid :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) return: ID of the created host usermacro. CLI Example: salt '*' zabbix.usermacro_create '{$SNMP_COMMUNITY}' 'public' 1 zabbix.usermacro_createglobal:\nCreate new global usermacro. :param macro: name of the global usermacro :param value: value of the global usermacro :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) return: ID of the created global usermacro. CLI Example: salt '*' zabbix.usermacro_createglobal '{$SNMP_COMMUNITY}' 'public' zabbix.usermacro_delete:\nDelete host usermacros. :param macroids: macroids of the host usermacros :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) return: IDs of the deleted host usermacro. CLI Example: salt '*' zabbix.usermacro_delete 21 zabbix.usermacro_deleteglobal:\nDelete global usermacros. :param macroids: macroids of the global usermacros :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) return: IDs of the deleted global usermacro. CLI Example: salt '*' zabbix.usermacro_deleteglobal 21 zabbix.usermacro_get:\nRetrieve user macros according to the given parameters. Args: macro: name of the usermacro hostids: Return macros for the given hostids templateids: Return macros for the given templateids hostmacroids: Return macros with the given hostmacroids globalmacroids: Return macros with the given globalmacroids (implies globalmacro=True) globalmacro: if True, returns only global macros optional connection_args: _connection_user: zabbix user (can also be set in opts or pillar, see module's docstring) _connection_password: zabbix password (can also be set in opts or pillar, see module's docstring) _connection_url: url of zabbix frontend (can also be set in opts or pillar, see module's docstring) Returns: Array with usermacro details, False if no usermacro found or on failure. CLI Example: salt '*' zabbix.usermacro_get macro='{$SNMP_COMMUNITY}' zabbix.usermacro_update:\nUpdate existing host usermacro. :param hostmacroid: id of the host usermacro :param value: new value of the host usermacro :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) return: ID of the update host usermacro. CLI Example: salt '*' zabbix.usermacro_update 1 'public' zabbix.usermacro_updateglobal:\nUpdate existing global usermacro. :param globalmacroid: id of the host usermacro :param value: new value of the host usermacro :param _connection_user: Optional - zabbix user (can also be set in opts or pillar, see module's docstring) :param _connection_password: Optional - zabbix password (can also be set in opts or pillar, see module's docstring) :param _connection_url: Optional - url of zabbix frontend (can also be set in opts, pillar, see module's docstring) return: ID of the update global usermacro. CLI Example: salt '*' zabbix.usermacro_updateglobal 1 'public' zenoss.add_device:\nA function to connect to a zenoss server and add a new device entry. Parameters: device: (Optional) Will use the grain 'fqdn' by default. device_class: (Optional) The device class to use. If none, will determine based on kernel grain. collector: (Optional) The collector to use for this device. Defaults to 'localhost'. prod_state: (Optional) The prodState to set on the device. If none, defaults to 1000 ( production ) CLI Example: salt '*' zenoss.add_device zenoss.device_exists:\nCheck to see if a device already exists in Zenoss. Parameters: device: (Optional) Will use the grain 'fqdn' by default CLI Example: salt '*' zenoss.device_exists zenoss.find_device:\nFind a device in Zenoss. If device not found, returns None. Parameters: device: (Optional) Will use the grain 'fqdn' by default CLI Example: salt '*' zenoss.find_device zenoss.set_prod_state:\nA function to set the prod_state in zenoss. Parameters: prod_state: (Required) Integer value of the state device: (Optional) Will use the grain 'fqdn' by default. CLI Example: salt zenoss.set_prod_state 1000 hostname ","permalink":"https://www.shafiq.in/fr/docs/projects/writing/saltstack/","summary":"\u003cp\u003e\u003cstrong\u003eChapter 1: SaltStack Fundamentals\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e1.1. Introduction to SaltStack\n1.2. History of SaltStack\n1.3. Key Features of SaltStack\n1.4. Advantages of Using SaltStack\n1.5. SaltStack Architecture\n1.6. SaltStack Components\n1.7. SaltStack Terminology\n1.8. SaltStack Use Cases\n1.9. SaltStack vs. Other Configuration Management Tools\n1.10. Real-World Examples of SaltStack Implementation\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eChapter 2: SaltStack Installation and Configuration\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e2.1. Installing SaltStack on Linux\n2.2. Installing SaltStack on Windows\n2.3. Configuring SaltStack Master\n2.4. Configuring SaltStack Minion\n2.5. Setting up SaltStack Environment\n2.6. Understanding SaltStack Configuration Files\n2.7. Managing SaltStack Services\n2.8. Troubleshooting SaltStack Installation Issues\n2.9. Best Practices for SaltStack Configuration\n2.10. Advanced SaltStack Configuration Options\u003c/p\u003e","title":"Saltstack"},{"content":"Notes sur :\nFashion : Développer un style personnel, constituer une garde-robe, et explorer les tendances de la mode. Soins personnels : Soins des cheveux, soins de la peau, maquillage et routines d\u0026rsquo;hygiène personnelle. Auto-présentation : Langage corporel, posture et communication non verbale. Marque personnelle : Créer une marque personnelle cohérente et authentique sur les plateformes en ligne et hors ligne. ","permalink":"https://www.shafiq.in/fr/docs/projects/writing/self-care/","summary":"\u003cp\u003eNotes sur :\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFashion : Développer un style personnel, constituer une garde-robe, et explorer les tendances de la mode.\u003c/li\u003e\n\u003cli\u003eSoins personnels : Soins des cheveux, soins de la peau, maquillage et routines d\u0026rsquo;hygiène personnelle.\u003c/li\u003e\n\u003cli\u003eAuto-présentation : Langage corporel, posture et communication non verbale.\u003c/li\u003e\n\u003cli\u003eMarque personnelle : Créer une marque personnelle cohérente et authentique sur les plateformes en ligne et hors ligne.\u003c/li\u003e\n\u003c/ul\u003e","title":"Self Care"},{"content":"1: Introduction\nL\u0026rsquo;auto-promotion est l\u0026rsquo;un des ingrédients clés du succès au travail. Ce guide vous fournira des conseils et astuces pour vous vendre et progresser dans votre carrière.\n2: Pronoms et communication\nUtiliser les bons pronoms dans la conversation peut être un moyen subtil mais efficace de s\u0026rsquo;auto-promouvoir. S\u0026rsquo;approprier votre travail et éviter l\u0026rsquo;utilisation de \u0026ldquo;nous\u0026rdquo; lors de la discussion des accomplissements individuels peut vous aider à obtenir la reconnaissance que vous méritez.\n3: Managers et opportunités de carrière\nAvoir un patron qui soutient votre travail et qui est disposé à vous donner le crédit pour vos réalisations est essentiel pour l\u0026rsquo;auto-promotion. Changer d\u0026rsquo;emploi régulièrement peut également vous aider à obtenir de nouvelles occasions de vous auto-promouvoir, en particulier lors d\u0026rsquo;entretiens d\u0026rsquo;embauche.\n4: Définir le succès\nDéfinir le succès pour vous-même et vous concentrer sur votre propre croissance personnelle, indépendamment de la reconnaissance externe, peut vous aider à vous sentir comme vous progressez et vous déplacez dans la bonne direction.\n5: Évaluations de rendement\nSi votre lieu de travail tient des évaluations de rendement annuelles, c\u0026rsquo;est l\u0026rsquo;occasion parfaite d\u0026rsquo;énumérer vos accomplissements principaux et d\u0026rsquo;obtenir l\u0026rsquo;attention complète de votre patron. La préparation est essentielle, assurez-vous donc de créer une liste de vos réalisations à l\u0026rsquo;avance.\n6: Parlez et engagez-vous\nÊtre vocal lors des réunions d\u0026rsquo;équipe, exprimer votre opinion avec respect, et vous engager auprès des personnes importantes de l\u0026rsquo;organisation peuvent vous aider à vous faire remarquer et à être promu.\n7: Mettez votre patron en valeur\nMettre votre patron en valeur peut vous aider à sécuriser votre propre avenir. Assurez-vous de montrer à votre patron les résultats de votre travail et de l\u0026rsquo;aider à réussir dans son rôle.\n8: Alliances et réunions en tête-à-tête\nVous allier à des personnes importantes dans l\u0026rsquo;organisation et mettre en place des réunions régulières en tête-à-tête avec eux peut vous aider à établir une relation positive et à vous faire remarquer.\n9: Éviter les erreurs courantes\nÉvitez d\u0026rsquo;embarrasser les collègues en public, gardez vos opinions respectueuses, et soyez généralement compétent pour éviter les erreurs courantes qui peuvent nuire à vos efforts d\u0026rsquo;auto-promotion.\n","permalink":"https://www.shafiq.in/fr/docs/projects/writing/self-promotion-at-work/","summary":"\u003cp\u003e1: Introduction\u003c/p\u003e\n\u003cp\u003eL\u0026rsquo;auto-promotion est l\u0026rsquo;un des ingrédients clés du succès au travail. Ce guide vous fournira des conseils et astuces pour vous vendre et progresser dans votre carrière.\u003c/p\u003e\n\u003cp\u003e2: Pronoms et communication\u003c/p\u003e\n\u003cp\u003eUtiliser les bons pronoms dans la conversation peut être un moyen subtil mais efficace de s\u0026rsquo;auto-promouvoir. S\u0026rsquo;approprier votre travail et éviter l\u0026rsquo;utilisation de \u0026ldquo;nous\u0026rdquo; lors de la discussion des accomplissements individuels peut vous aider à obtenir la reconnaissance que vous méritez.\u003c/p\u003e","title":"Self Promotion at Work"},{"content":"Chapitre 1 : Introduction à Terraform\n1.1 Qu\u0026rsquo;est-ce que Terraform ? 1.2 Historique de Terraform 1.3 Pourquoi utiliser Terraform ? 1.4 Terraform vs. Autres outils IaC 1.5 Cas d\u0026rsquo;usage de Terraform 1.6 Avantages de l\u0026rsquo;utilisation de Terraform 1.7 Idées fausses communes sur Terraform 1.8 Communauté et ressources de Terraform 1.9 Configuration de Terraform pour la première fois 1.10 Conseils pour apprendre Terraform Chapitre 2 : Concepts fondamentaux de Terraform\n2.1 Infrastructure en tant que code (IaC) 2.2 Fournisseurs et plugins 2.3 Ressources et sources de données 2.4 État et gestion d\u0026rsquo;état 2.5 Configuration et fichiers de configuration 2.6 Modules et composition de modules 2.7 Variables d\u0026rsquo;entrée et valeurs de sortie 2.8 Fonctions et composition de fonctions 2.9 Terraform CLI et API 2.10 Débogage et dépannage de Terraform Chapitre 3 : Configuration de Terraform\n3.1 Structure et syntaxe des fichiers de configuration 3.2 Rédaction et formatage des fichiers de configuration 3.3 Utilisation des variables d\u0026rsquo;entrée et des valeurs de sortie 3.4 Création et gestion des ressources 3.5 Utilisation des sources de données et des fournisseurs 3.6 Gestion de l\u0026rsquo;état et des fichiers d\u0026rsquo;état 3.7 Utilisation des modules et composition de modules 3.8 Meilleures pratiques pour la gestion de la configuration 3.9 Erreurs courantes de configuration et solutions 3.10 Techniques de configuration avancées Chapitre 4 : Fournisseurs et plugins Terraform\n4.1 Introduction aux fournisseurs et plugins 4.2 Fournisseurs officiels et communautaires 4.3 Rédaction et publication de fournisseurs personnalisés 4.4 Utilisation des ressources et sources de données spécifiques aux fournisseurs 4.5 Gestion des dépendances et versions des fournisseurs 4.6 Meilleures pratiques pour la gestion des fournisseurs 4.7 Problèmes courants liés aux fournisseurs et solutions 4.8 Utilisation des plugins pour les fonctionnalités avancées 4.9 Création et publication de plugins personnalisés 4.10 Gestion et meilleures pratiques des plugins Chapitre 5 : Modules et composition Terraform\n5.1 Introduction aux modules et à la composition 5.2 Rédaction et publication de modules réutilisables 5.3 Utilisation des modules pour la réutilisation et l\u0026rsquo;abstraction du code 5.4 Versionnage des modules et gestion des dépendances 5.5 Meilleures pratiques pour le développement et l\u0026rsquo;utilisation des modules 5.6 Problèmes courants liés aux modules et solutions 5.7 Techniques de composition de modules avancées 5.8 Utilisation de modules et bibliothèques externes 5.9 Création et gestion des registres de modules 5.10 Test et validation des modules Chapitre 6 : État et gestion d\u0026rsquo;état Terraform\n6.1 Introduction à l\u0026rsquo;état de Terraform 6.2 Compréhension des fichiers d\u0026rsquo;état et de la gestion d\u0026rsquo;état 6.3 Gestion de l\u0026rsquo;état avec les commandes Terraform 6.4 Utilisation de l\u0026rsquo;état pour déboguer et dépanner Terraform 6.5 Meilleures pratiques pour la gestion d\u0026rsquo;état 6.6 Problèmes courants liés à l\u0026rsquo;état et solutions 6.7 Utilisation de l\u0026rsquo;état distant et des backends d\u0026rsquo;état 6.8 Chiffrement d\u0026rsquo;état et meilleures pratiques de sécurité 6.9 Techniques de gestion d\u0026rsquo;état avancées 6.10 Stratégies de migration et de mise à niveau d\u0026rsquo;état Chapitre 7 : Sécurité et gouvernance de Terraform\n7.1 Introduction à la sécurité et à la gouvernance de Terraform 7.2 Meilleures pratiques de sécurité pour les configurations Terraform 7.3 Utilisation des secrets et des données sensibles dans Terraform 7.4 Gestion des identités et des accès (IAM) avec Terraform 7.5 Conformité et audit avec Terraform 7.6 Gouvernance et gestion des politiques avec Terraform 7.7 Problèmes courants liés à la sécurité et solutions 7.8 Utilisation de Terraform pour appliquer les politiques de sécurité 7.9 Fonctionnalités et techniques de sécurité avancées 7.10 Sécurité et gouvernance de Terraform dans l\u0026rsquo;entreprise Chapitre 8 : Mise en réseau et connectivité Terraform\n8.1 Introduction à la mise en réseau et à la connectivité de Terraform 8.2 Création et gestion des ressources réseau 8.3 Utilisation des modules et bibliothèques réseau 8.4 Sécurité du réseau et configuration du pare-feu 8.5 Équilibrage de charge et gestion du trafic 8.6 Gestion des DNS et des domaines avec Terraform 8.7 Architecture réseau et modèles de conception 8.8 Problèmes courants liés au réseau et solutions 8.9 Fonctionnalités et techniques de mise en réseau avancées 8.10 Dépannage et débogage du réseau Chapitre 9 : Stockage et gestion des données Terraform\n9.1 Introduction au stockage et à la gestion des données Terraform 9.2 Création et gestion des ressources de stockage 9.3 Utilisation des modules et bibliothèques de stockage 9.4 Chiffrement des données et meilleures pratiques de sécurité 9.5 Stratégies de sauvegarde et de récupération des données 9.6 Techniques de migration et de mise à niveau des données 9.7 Problèmes courants liés au stockage et solutions 9.8 Fonctionnalités et techniques de stockage avancées 9.9 Dépannage et débogage du stockage 9.10 Gestion des données et gouvernance avec Terraform Chapitre 10 : Calcul et sans serveur Terraform\n10.1 Introduction au calcul et au sans serveur Terraform 10.2 Création et gestion des ressources de calcul 10.3 Utilisation des modules et bibliothèques de calcul 10.4 Informatique sans serveur avec Terraform 10.5 Fonction en tant que service (FaaS) avec Terraform 10.6 Conteneurisation et orchestration avec Terraform 10.7 Problèmes courants liés au calcul et solutions 10.8 Fonctionnalités et techniques de calcul avancées 10.9 Dépannage et débogage du calcul 10.10 Sécurité et gouvernance sans serveur avec Terraform Chapitre 11 : DevOps et automatisation Terraform\n11.1 Introduction à DevOps et à l\u0026rsquo;automatisation Terraform 11.2 Utilisation de Terraform avec les pipelines CI/CD 11.3 Automatisation des déploiements et des restaurations Terraform 11.4 Terraform et outils de gestion de configuration 11.5 Utilisation de Terraform avec les outils IaC (Infrastructure en tant que code) 11.6 Meilleures pratiques pour l\u0026rsquo;automatisation Terraform 11.7 Problèmes courants liés à DevOps et solutions 11.8 Fonctionnalités et techniques DevOps avancées 11.9 Sécurité et gouvernance DevOps avec Terraform 11.10 Utilisation de Terraform avec les méthodologies Agile et Scrum Chapitre 12 : Optimisation et gestion des coûts Terraform\n12.1 Introduction à l\u0026rsquo;optimisation et à la gestion des coûts Terraform 12.2 Comprendre les coûts du cloud et les modèles de tarification 12.3 Utilisation de Terraform pour optimiser l\u0026rsquo;utilisation des ressources 12.4 Redimensionnement et instances réservées avec Terraform 12.5 Estimation et prévision des coûts avec Terraform 12.6 Étiquetage et allocation des coûts avec Terraform 12.7 Problèmes courants liés aux coûts et solutions 12.8 Techniques d\u0026rsquo;optimisation des coûts avancées 12.9 Gouvernance des coûts et gestion des politiques avec Terraform 12.10 Utilisation de Terraform pour réduire les déchets du cloud Chapitre 13 : Surveillance et journalisation Terraform\n13.1 Introduction à la surveillance et à la journalisation Terraform 13.2 Utilisation de Terraform avec les outils de surveillance et de journalisation 13.3 Création et gestion des ressources de surveillance et de journalisation 13.4 Systèmes d\u0026rsquo;alerte et de notification avec Terraform 13.5 Collecte et analyse des journaux avec Terraform 13.6 Problèmes courants liés à la surveillance et solutions 13.7 Fonctionnalités et techniques de surveillance avancées 13.8 Surveillance de la sécurité et gouvernance avec Terraform 13.9 Utilisation de Terraform pour créer des tableaux de bord et des rapports 13.10 Meilleures pratiques de surveillance et de journalisation Chapitre 14 : Sauvegarde et récupération après sinistre Terraform\n14.1 Introduction à la sauvegarde et à la récupération après sinistre Terraform 14.2 Création et gestion des ressources de sauvegarde 14.3 Utilisation de Terraform pour la récupération après sinistre 14.4 Planification de la continuité d\u0026rsquo;activité avec Terraform 14.5 Stratégies de sauvegarde et de récupération des données 14.6 Sauvegarde et récupération des configurations système 14.7 Problèmes courants liés aux sauvegardes et solutions 14.8 Fonctionnalités et techniques de sauvegarde avancées 14.9 Sécurité et gouvernance des sauvegardes avec Terraform 14.10 Planification et exécution de la récupération après sinistre Chapitre 17 : Dépannage et débogage Terraform\n17.1 Introduction au dépannage et au débogage Terraform 17.2 Erreurs Terraform courantes et solutions 17.3 Utilisation des journaux Terraform et des outils de débogage 17.4 Dépannage des fournisseurs et des ressources Terraform 17.5 Débogage des configurations et de l\u0026rsquo;état Terraform 17.6 Utilisation de Terraform pour dépanner les problèmes d\u0026rsquo;infrastructure 17.7 Fonctionnalités et techniques de dépannage avancées 17.8 Dépannage de la sécurité et gouvernance avec Terraform 17.9 Utilisation de Terraform pour créer des outils de dépannage 17.10 Meilleures pratiques de dépannage et de débogage Chapitre 18 : Meilleures pratiques et modèles de conception Terraform\n18.1 Introduction aux meilleures pratiques et modèles de conception Terraform 18.2 Meilleures pratiques de configuration Terraform 18.3 Meilleures pratiques des modules et composition Terraform 18.4 Meilleures pratiques des fournisseurs et ressources Terraform 18.5 Meilleures pratiques de sécurité et gouvernance Terraform 18.6 Meilleures pratiques d\u0026rsquo;optimisation et de gestion des coûts Terraform 18.7 Meilleures pratiques de surveillance et journalisation Terraform 18.8 Meilleures pratiques de sauvegarde et récupération après sinistre Terraform 18.9 Meilleures pratiques de migration et de mise à niveau Terraform 18.10 Meilleures pratiques Terraform Enterprise et évolutivité ","permalink":"https://www.shafiq.in/fr/docs/projects/writing/terraform/","summary":"\u003cp\u003e\u003cstrong\u003eChapitre 1 : Introduction à Terraform\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e1.1 Qu\u0026rsquo;est-ce que Terraform ?\u003c/li\u003e\n\u003cli\u003e1.2 Historique de Terraform\u003c/li\u003e\n\u003cli\u003e1.3 Pourquoi utiliser Terraform ?\u003c/li\u003e\n\u003cli\u003e1.4 Terraform vs. Autres outils IaC\u003c/li\u003e\n\u003cli\u003e1.5 Cas d\u0026rsquo;usage de Terraform\u003c/li\u003e\n\u003cli\u003e1.6 Avantages de l\u0026rsquo;utilisation de Terraform\u003c/li\u003e\n\u003cli\u003e1.7 Idées fausses communes sur Terraform\u003c/li\u003e\n\u003cli\u003e1.8 Communauté et ressources de Terraform\u003c/li\u003e\n\u003cli\u003e1.9 Configuration de Terraform pour la première fois\u003c/li\u003e\n\u003cli\u003e1.10 Conseils pour apprendre Terraform\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eChapitre 2 : Concepts fondamentaux de Terraform\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e2.1 Infrastructure en tant que code (IaC)\u003c/li\u003e\n\u003cli\u003e2.2 Fournisseurs et plugins\u003c/li\u003e\n\u003cli\u003e2.3 Ressources et sources de données\u003c/li\u003e\n\u003cli\u003e2.4 État et gestion d\u0026rsquo;état\u003c/li\u003e\n\u003cli\u003e2.5 Configuration et fichiers de configuration\u003c/li\u003e\n\u003cli\u003e2.6 Modules et composition de modules\u003c/li\u003e\n\u003cli\u003e2.7 Variables d\u0026rsquo;entrée et valeurs de sortie\u003c/li\u003e\n\u003cli\u003e2.8 Fonctions et composition de fonctions\u003c/li\u003e\n\u003cli\u003e2.9 Terraform CLI et API\u003c/li\u003e\n\u003cli\u003e2.10 Débogage et dépannage de Terraform\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eChapitre 3 : Configuration de Terraform\u003c/strong\u003e\u003c/p\u003e","title":"Terraform"}]