2016-07-13 17 views

Trả lời

25

Tôi không biết tính năng này, nhưng bạn có thể sử dụng thẻ để chỉ chạy một vai trò từ sách của bạn.

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

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

Không có điều gì trong Ansible, nhưng nếu đây là trường hợp thường dùng cho bạn, hãy thử tập lệnh này.
Đặt nó ở đâu đó trong PATH tìm kiếm của bạn dưới tên 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

Bạn cũng có thể kiểm tra ansible-toolbox kho. Nó sẽ cho phép bạn sử dụng một cái gì đó giống như

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

Tôi đã viết một plugin nhỏ Ansible, gọi auto_tags, năng tạo động cho mỗi vai trò trong playbook của bạn một thẻ cùng tên. Bạn có thể tìm thấy nó here.

Sau khi cài đặt nó (hướng dẫn trong các ý chính trên) sau đó bạn có thể thực hiện một vai trò cụ thể với:

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

Các vấn đề liên quan