2016-07-13 19 views
24

Bunu yapmanın bir yolu var mı "apache"Ansible: Komut satırından rol yapabilir miyim?

Şimdi yanıtlayıcı 'konak

ansible-playbook -i "192.168.0.10" --role "path to role" 

gelen komut satırından konak 192.168.0.10 üzerinde bu rolü yürütmek istiyoruz adında bir role sahip varsayalım?

cevap

25

Bu özelliğin farkında değilim, ancak etiketleri yalnızca bir kitabınızdaki bir rolü çalıştırmak için kullanabilirsiniz.

roles: 
    - {role: 'mysql', tags: 'mysql'} 
    - {role: 'apache', tags: 'apache'} 

ansible-playbook webserver.yml --tags "apache" 
12

Orada yanıtlayıcı 'böyle bir şey, ama bu bir çoğunlukla sizin için durum kullanmak ise, bu senaryoyu deneyin.
isim ansible-role altında aranabilir PATH içinde bir yere koy:

#!/bin/bash 

if [[ $# < 2 ]]; then 
    cat <<HELP 
Wrapper script for ansible-playbook to apply single role. 

Usage: $0 <host-pattern> <role-name> [ansible-playbook options] 

Examples: 
    $0 dest_host my_role 
    $0 custom_host my_role -i 'custom_host,' -vv --check 
HELP 
    exit 
fi 

HOST_PATTERN=$1 
shift 
ROLE=$1 
shift 

echo "Trying to apply role \"$ROLE\" to host/group \"$HOST_PATTERN\"..." 

export ANSIBLE_ROLES_PATH="$(pwd)/roles" 
export ANSIBLE_RETRY_FILES_ENABLED="False" 
ansible-playbook "[email protected]" /dev/stdin <<END 
--- 
- hosts: $HOST_PATTERN 
    roles: 
    - $ROLE 
END 
5

Ayrıca ansible-toolbox depoyu kontrol edebilir. Bu küçük bir yanıtlayıcı 'eklentisi yazdım

ansible-role --host 192.168.0.10 --gather --user centos --become my-role 
2

gibi bir şey kullanmanızı sağlayacak, yani dinamik oyun kitabında her bir rol aynı adı taşıyan bir etiket için oluşturduğu, auto_tags aradı. here'u bulabilirsiniz.

ansible-playbook -i "192.168.0.10" --tags "name_of_role"

:

(yukarıdaki talimatlar ve özü vardır) yüklemeden sonra önce belirli bir rol yürütebilir