2016-04-06 17 views
3

Tek bir işletim sisteminde birkaç Ansible sürümü yükleyebilir ve bunları istediğim zaman değiştirebilir miyim? Şimdilik birkaç yayınımız var, Ubuntu için 1.5.4 deyin, ama en son 2.0.1 ve 1.9.4 hala ortada. Hepsine minnettar olacağım ve sadece benim için uygun olana geçeceğim. Evet ise nasıl?Ansible sürümleri arasında nasıl geçiş yapabilirim?

+0

Sizi engelleyen hatalar olmadıkça en son ile çalışmaya başlamanızı öneririm. – smiller171

cevap

9

Ansible sadece bir python paketidir, bu nedenle, eğer hosteniz üzerinde virtualenv kuruluysa, istediğiniz her bir olası versiyon için yeni bir venv yaratmanız yeterli olur ve pip yükleyin.

Yani, örneğin size yanıtlayıcı 'v1.9.5 istiyorsanız yapabileceği: Yalnızca yanıtlayıcı' ait sürüm paketlerini kullanarak sorun değil mi eğer

$ virtualenv ~/venvs/ansible_1_9_5 
$ source ~/venvs/ansible_1_9_5/bin/activate 
$ pip install "ansible==1.9.5" 
$ ansible --version 
     ansible 1.9.5 
     configured module search path = None 
0

sürümü başına bir Virtualenv güzel çalışıyor. (... ve yeni böcek) yanıtlayıcı 'geliştirme yapmak veya sadece istiyorum hata düzeltmeleri memba kaynak kodunu takip için, .zshrc dosyanızda aşağıdaki kullanabilirsiniz (bash yanı elbette çalışır):

function ansible-switch { 
    if [ "$1" != "off" ]; then 
    VIRTUAL_ENV_DISABLE_PROMPT=1 source $ANSIBLE_VIRTUALENV/bin/activate 
    git -C "$ANSIBLE_SOURCE_DIR" checkout -q $1 
    source $ANSIBLE_SOURCE_DIR/hacking/env-setup -q 
    echo "Environment configured to run Ansible from source (branch: $1)" 
    else 
    if [[ -v ANSIBLE_HOME ]]; then 
     export PYTHONPATH=$(echo $PYTHONPATH | sed "[email protected]$ANSIBLE_HOME/lib:@@") 
     export PATH=$(echo $PATH | sed "[email protected]$ANSIBLE_HOME/bin:@@") 
     export MANPATH=$(echo $MANPATH | sed "[email protected]$ANSIBLE_HOME/docs/man:@@") 
     unset ANSIBLE_HOME 
     deactivate 
    fi 
    echo "Environment configured to not run Ansible from source" 
    fi 
} 

if ! [[ -v ANSIBLE_HOME ]]; then 
    ansible-switch devel > /dev/null 
fi 

ANSIBLE_SOURCE_DIR ve ANSIBLE_VIRTUALENV değişkenlerini tanımlamanız gerekir. ANSIBLE_SOURCE_DIR, Ansible kaynak kodunun git klonudur ve ANSIBLE_VIRTUALENV, Python2 ve gerekli tüm Bağlantılı bağımlılıklar ile kurduğunuz virtualenv'dir (kaynaktan çalıştırma hakkında daha fazla bilgi için http://docs.ansible.com/ansible/intro_installation.html#running-from-source'u işaretleyin).

Daha sonra, bu gibi herhangi bir yanıtlayıcı 'git dalına geçebilirsiniz:

ansible-switch devel 

Veya bir etiket:

ansible-switch v2.3.0.0-1 

Böyle bir kaynaktan çalışan kapatabilirsiniz:

ansible-switch off 

Bir kicker olarak, Ansible upstream c ile kendi Ansible çatalımı güncellemek için aşağıdaki betiği ('ansible-update' olarak adlandırılır) kullanırım ommits:

cd "$ANSIBLE_SOURCE_DIR" 
current_branch_tag=$(git symbolic-ref --short HEAD 2>/dev/null) 
if [ $? -ne 0 ]; then 
    current_branch=$(git describe --tags) 
fi 
git checkout devel -q 
git fetch upstream -q 
git rebase upstream/devel -q 
git checkout $current_branch -q 

Bu son bit bir çatalı ve resmi yanıtlayıcı 'uzaktan kumanda olarak memba belirledik varsayar.

İlgili konular