2016-10-29 1 views
0

J'ai un python virtualenv exécuté sur un serveur distant. J'essaye de mettre à jour le bashrc du serveur à distance avec l'information suivante using Ansible.Mise à jour de bashrc avec virtualenv info à l'aide de Ansible

export WORKON_HOME=~/TestEnvs 
source /usr/local/bin/virtualenvwrapper.sh 
workon my_virtual_env 

Existe-t-il un moyen d'accomplir cela en utilisant Ansible?

Répondre

9
  1. Utilisez le module Ansible blockinfile pour maintenir les lignes du .bashrc ou /etc/bashrc:

    - name: Ensure virtualenv is sourced from the .bashrc 
        blockinfile: 
        dest: "{{ ansible_env.HOME }}/.bashrc" 
        block: | 
         export WORKON_HOME=~/TestEnvs 
         source /usr/local/bin/virtualenvwrapper.sh 
         workon my_virtual_env 
        marker: '# {mark} ANSIBLE MANAGED BLOCK - virtualenv' 
        insertbefore: BOF 
        create: yes 
    
  2. Ou mieux: créer un répertoire .bashrc.d (ou .bash_profile.d), remplacez votre .bashrc par un appel à la source tous les fichiers dans le répertoire:

    while read filename 
    do 
        source "$filename" 
    done < <(find -L ~/.bashrc.d -type f) 
    

    et ajoutez la virgule ci-dessus nds en tant que fichier séparé. Déplacez les autres commandes du .bashrc actuel vers un autre fichier et placez-le dans le répertoire .bashrc.d.

    Cela vous pouvez facilement réaliser avec file et copy modules dans Ansible.