questions
This commit is contained in:
parent
dba429c1c6
commit
867b635ba1
4 changed files with 60 additions and 20 deletions
|
@ -8,13 +8,13 @@
|
||||||
- users
|
- users
|
||||||
- lpadmin
|
- lpadmin
|
||||||
- sambashare
|
- sambashare
|
||||||
vars_prompt:
|
# vars_prompt:
|
||||||
- name: username
|
# - name: username
|
||||||
prompt: "Identifiant de l'utilisateur concerné"
|
# prompt: "Identifiant de l'utilisateur concerné"
|
||||||
private: false
|
# private: false
|
||||||
- name: prenom_nom
|
# - name: prenom_nom
|
||||||
prompt: "Prénom et nom de l'utilisateur"
|
# prompt: "Prénom et nom de l'utilisateur"
|
||||||
private: false
|
# private: false
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- name: Configure un compte pour {{ username }}
|
- name: Configure un compte pour {{ username }}
|
||||||
|
|
34
config.yml
34
config.yml
|
@ -1,10 +1,31 @@
|
||||||
|
### Chemin dans lequel se trouvent les playbooks ansible
|
||||||
base_path: ansible
|
base_path: ansible
|
||||||
ansiblemenu:
|
|
||||||
|
### Liste des playbooks ansible
|
||||||
|
# ansible_playbooks:
|
||||||
|
# cle_monplaybook:
|
||||||
|
# # Obligatoire : le nom du fichier playbook
|
||||||
|
# playbook: monplaybook.yml
|
||||||
|
# # Si précisé, texte de la ligne présentée dans le menu pour une exécution
|
||||||
|
# menu_title: "Excuter cle_monplaybook"
|
||||||
|
# # Si précisé, texte d'explication de l'argument à fournir pour exécuter le playbook, l'argument étant à passer sous la forme de --cle_monplaybook
|
||||||
|
# argument_help: "Executer cle_monplaybook"
|
||||||
|
# # Si précisé, liste de questions (syntaxe inquirerpy) à poser avant de lancer le playbook, chaque réponse
|
||||||
|
# # étant fournie au playbook par une entrée ayant pour nom la valeur de var_name dans l'extra_vars fourni à ansible-playbook
|
||||||
|
# questions:
|
||||||
|
# - var_name: valeur1
|
||||||
|
# - type: input
|
||||||
|
# - message: Quelle est la valeur 1 ?
|
||||||
|
# # Si précisé, des variables supplémentaires à passer au playbook à travers l'option --extra_vars d'ansible-playbook
|
||||||
|
# extra_vars:
|
||||||
|
# extra_packages:
|
||||||
|
# # facultatif, pour s'appuyer sur un proxy cache apt tel que apt-cacher-ng (doit répondre à l'adresse `apt-proxy`)
|
||||||
|
# - auto-apt-proxy
|
||||||
|
|
||||||
|
ansible_playbooks:
|
||||||
firstboot:
|
firstboot:
|
||||||
menu_title: Exécuter la préparation au premier démarrage
|
|
||||||
argument_help: Ne présente pas le menu et prépare le système au premier démarrage
|
argument_help: Ne présente pas le menu et prépare le système au premier démarrage
|
||||||
playbook: firstboot.yml
|
playbook: firstboot.yml
|
||||||
menu_hidden: true
|
|
||||||
extra_vars:
|
extra_vars:
|
||||||
extra_packages:
|
extra_packages:
|
||||||
# facultatif, pour s'appuyer sur un proxy cache apt tel que apt-cacher-ng (doit répondre à l'adresse `apt-proxy`)
|
# facultatif, pour s'appuyer sur un proxy cache apt tel que apt-cacher-ng (doit répondre à l'adresse `apt-proxy`)
|
||||||
|
@ -24,6 +45,13 @@ ansiblemenu:
|
||||||
menu_title: Ajoute un utilisateur
|
menu_title: Ajoute un utilisateur
|
||||||
argument_help: Ne présente pas le menu et ajoute un utilisateur
|
argument_help: Ne présente pas le menu et ajoute un utilisateur
|
||||||
playbook: ajoute-utilisateur.yml
|
playbook: ajoute-utilisateur.yml
|
||||||
|
questions:
|
||||||
|
- var_name: username
|
||||||
|
type: input
|
||||||
|
message: "Identifiant de l'utilisateur concerné"
|
||||||
|
- var_name: prenom_nom
|
||||||
|
type: input
|
||||||
|
message: "Prénom et nom de l'utilisateur"
|
||||||
|
|
||||||
ajoute-sudoer:
|
ajoute-sudoer:
|
||||||
menu_title: Ajoute un administrateur
|
menu_title: Ajoute un administrateur
|
||||||
|
|
|
@ -1,13 +1,23 @@
|
||||||
import subprocess
|
import subprocess
|
||||||
import json
|
import json
|
||||||
|
from InquirerPy import inquirer
|
||||||
|
from InquirerPy import prompt
|
||||||
|
|
||||||
def runAnsiblePlaybook(config, key):
|
def runAnsiblePlaybook(config, key):
|
||||||
if 'extra_vars' in config['ansiblemenu'][key]:
|
extra_vars={}
|
||||||
subprocess.check_call(['ansible-playbook', config['ansiblemenu'][key]['playbook'],
|
if 'questions' in config['ansible_playbooks'][key]:
|
||||||
'--extra-vars', json.dumps(config['ansiblemenu'][key]['extra_vars']) ],
|
for question in config['ansible_playbooks'][key]['questions']:
|
||||||
|
extra_vars[question['var_name']] = prompt(questions)
|
||||||
|
|
||||||
|
if 'extra_vars' in config['ansible_playbooks'][key]:
|
||||||
|
extra_vars = extra_vars | config['ansible_playbooks'][key]['extra_vars']
|
||||||
|
|
||||||
|
if len(extra_vars) > 0:
|
||||||
|
subprocess.check_call(['ansible-playbook', config['ansible_playbooks'][key]['playbook'],
|
||||||
|
'--extra-vars', json.dumps(config['ansible_playbooks'][key]['extra_vars']) ],
|
||||||
cwd=config['base_path'])
|
cwd=config['base_path'])
|
||||||
else:
|
else:
|
||||||
subprocess.check_call(['ansible-playbook', config['ansiblemenu'][key]['playbook']], cwd=config['base_path'])
|
subprocess.check_call(['ansible-playbook', config['ansible_playbooks'][key]['playbook']], cwd=config['base_path'])
|
||||||
|
|
||||||
def pullAnsiblePlaybook(url, playbook):
|
def pullAnsiblePlaybook(url, playbook):
|
||||||
subprocess.check_call(['ansible-pull', '-U', url, playbook])
|
subprocess.check_call(['ansible-pull', '-U', url, playbook])
|
||||||
|
|
|
@ -127,18 +127,20 @@ def main():
|
||||||
currentBranch = GitActions.getBranch()
|
currentBranch = GitActions.getBranch()
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(prog="linuxinstaller.py", description="Menu de configuration Libretic")
|
parser = argparse.ArgumentParser(prog="linuxinstaller.py", description="Menu de configuration Libretic")
|
||||||
for entry in config['ansiblemenu']:
|
for entry in config['ansible_playbooks']:
|
||||||
parser.add_argument("--" + entry, help=config['ansiblemenu'][entry]['argument_help'], action='store_true')
|
if 'argument_help' in config['ansible_playbooks'][entry]:
|
||||||
|
parser.add_argument("--" + entry, help=config['ansible_playbooks'][entry]['argument_help'], action='store_true')
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
menu_main = {
|
menu_main = {
|
||||||
"Définir le hostname": hostnameChoice,
|
"Définir le hostname": hostnameChoice,
|
||||||
}
|
}
|
||||||
|
|
||||||
for entry in config['ansiblemenu']:
|
for entry in config['ansible_playbooks']:
|
||||||
if not config['ansiblemenu'][entry].get('menu_hidden', False):
|
if 'menu_title' in config['ansible_playbooks'][entry]:
|
||||||
menu_main = menu_main | {
|
menu_main = menu_main | {
|
||||||
config['ansiblemenu'][entry]['menu_title']: lambda e=entry: AnsibleActions.runAnsiblePlaybook(config, e)
|
config['ansible_playbooks'][entry]['menu_title']: lambda e=entry: AnsibleActions.runAnsiblePlaybook(config, e)
|
||||||
}
|
}
|
||||||
|
|
||||||
menu_main = menu_main | {
|
menu_main = menu_main | {
|
||||||
|
@ -149,7 +151,7 @@ def main():
|
||||||
|
|
||||||
# Exécute les options passées sur la ligne de commande
|
# Exécute les options passées sur la ligne de commande
|
||||||
cmdlineOptionPassed = False
|
cmdlineOptionPassed = False
|
||||||
for entry in config['ansiblemenu']:
|
for entry in config['ansible_playbooks']:
|
||||||
if entry in list(arg for arg in vars(args) if getattr(args, arg)):
|
if entry in list(arg for arg in vars(args) if getattr(args, arg)):
|
||||||
AnsibleActions.runAnsiblePlaybook(config, entry)
|
AnsibleActions.runAnsiblePlaybook(config, entry)
|
||||||
cmdlineOptionPassed = True
|
cmdlineOptionPassed = True
|
||||||
|
|
Loading…
Reference in a new issue