How to use ansible vault in python scripts

Sometimes, you need to encrypt data such as passwords, API tokens, etc. in your python scripts to be able to share them securely. ansible-vault is not only for ansible, you can use it in your python scripts too: #!/usr/bin/env python import os from ansible.constants import DEFAULT_VAULT_ID_MATCH from ansible.parsing.vault import VaultLib, VaultSecret vaulted_data = """$ANSIBLE_VAULT;1.2;AES256;main 65616638393834613334623633383233326465623863613531636463636636383532313538643832 3335333637363138663630663336333163326238323235610a343730666335346361633939333335 63306165323239636530366463626632613138666663373735626531386361303063613932373830 3136306435666131390a643434643836366135336662376538633861633637613663633962346565 34613966353462306134636537306636346662383932353332373636643633633061 """ vault_pass = open('{}/.vault_pass'.format(os.environ.get('HOME'))).read().strip().encode('utf-8') vault = VaultLib([ (DEFAULT_VAULT_ID_MATCH, VaultSecret(vault_pass)) ]) cleartext_data = vault....

<span title='2023-09-03 00:00:01 +0000 UTC'>September 3, 2023</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;JC

Multiple ansible versions with python virtualenv

TL;DR export ANSIBLE_VERSION=x.x.x mkdir -p ~/ansible_venv cd ~/ansible_venv python3 -m venv ansible${ANSIBLE_VERSION} source ansible${ANSIBLE_VERSION}/bin/activate pip install --upgrade pip setuptools pip install ansible==${ANSIBLE_VERSION} ansible-lint netaddr pbr hvac jmespath passlib bcrypt . ~/ansible_venv/ansible${ANSIBLE_VERSION}/bin/activate Long story Install python3-venv package: sudo apt install python3-venv Create an ~/ansible_venv directory: mkdir ~/ansible_venv From ~/ansible_venv directory, create your virtual ansible environment: e.g for ansible 2.9.16: python3 -m venv ansible2.9.16 Once this environment created, activate it: source ansible2.9.16/bin/activate You will see your shell has changed, with name of virtualenv you are currently using....

<span title='2021-02-24 14:24:02 +0000 UTC'>February 24, 2021</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;JC

Python, la tête dans les étoiles

Aujourd’hui, un article écrit par Kevin Samuel sous licence Creative Commons qui m’a bien aidé lors de mes débuts en python à comprendre les étoiles et notamment les fameux *f(*args, *kwargs): L’utilisation du signe étoile (*) en Python est très simple, mais certains cas sont peu intuitifs. Les nouveaux venus ont souvent besoin d’un peu plus d’explications que ce que donne la doc. Les utilisateurs d’autres langages sont généralement déroutés car ils sont habitués certaines fonctionnalités qu’on ne retrouvent pas en Python....

<span title='2012-11-03 11:40:20 +0000 UTC'>November 3, 2012</span>&nbsp;·&nbsp;8 min&nbsp;·&nbsp;JC

Backup de jeux MegaCD

Ci-dessous un petit script python trouvé sur cette page permettant de faire un backup d’un jeu du MegaCD de Sega. Un CD est coupé en deux, il contient une partie donnée + une partie audio. Il faut donc ripper séparément les musiques et les datas. Certains jeux comme SonicCD ne peuvent fonctionner sans la musique. Pour y jouer sur PC, il suffit ensuite d’utiliser un émulateur comme Gens. #!/usr/bin/python import os import commands from sys import argv # programs SOURCE_DRIVE = "/dev/cdrom" DD_COMMAND = "/bin/dd" CDPARANOIA_COMMAND = "/usr/bin/cdparanoia --quiet" LAME_COMMAND = "/usr/bin/lame --quiet --preset insane" RM_COMMAND = "/bin/rm" if (len(argv) &lt;2): print "USAGE: rip-sega-cd....

<span title='2010-08-16 17:27:10 +0000 UTC'>August 16, 2010</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;JC

Un serveur web en python

source : Linux Magazine On peut créer un petit serveur web en python. On utilise pour cela les modules BaseHTTPServer et SimpleHTTPServer. import os from BaseHTTPServer import HTTPServer from SimpleHTTPServer import SimpleHTTPRequestHandler os.chdir(os.path.expanduser("~/web")) httpd = HTTPServer(('', 8080), SimpleHTTPRequestHandler) httpd.serve_forever() La classe HTTPServer est instanciée avec 2 paramètres : le premier indique sous forme d’un tuple sur quelle adresse et quel port le serveur doit écouter. Ici la chaîne est vide ce qui signifie que l’on écoute sur toutes les adresses....

<span title='2010-07-21 08:42:37 +0000 UTC'>July 21, 2010</span>&nbsp;·&nbsp;2 min&nbsp;·&nbsp;JC