2016-07-13 18 views

Antwort

25

Ich bin mir dieser Funktion nicht bewusst, aber Sie können Tags verwenden, um nur eine Rolle aus Ihrem Playbook auszuführen.

12

Es gibt keine solche Sache in Ansible, aber wenn dies ein häufiger Anwendungsfall für Sie ist, versuchen Sie dieses Skript.
Legen Sie es irgendwo in Ihrem durchsuchbar PATH unter dem Namen ansible-role:

#!/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

Sie auch ansible-toolbox Repository überprüfen konnten. Es erlaubt Ihnen, etwas ähnliches zu verwenden

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

ich ein kleines ansible Plugin geschrieben haben, genannt auto_tags, dass dynamisch für jede Rolle erzeugt ein Tag mit dem gleichen Namen in Ihrem Textbuch. Sie können es here finden.

Nach der Installation (Anleitungen sind im Kern oben) Sie könnten dann eine spezifische Rolle ausführen mit:

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