115

「apache」という役割があるとします

ここで、Ansible ホストのコマンドラインからホスト 192.168.0.10 でそのロールを実行したいと考えています。

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

それを行う方法はありますか?

4

8 に答える 8

92

この機能については知りませんが、タグを使用して Playbook から 1 つのロールを実行することができます。

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

ansible-playbook webserver.yml --tags "apache"
于 2016-07-14T21:03:06.443 に答える
25

Ansible にはそのようなものはありませんが、これが頻繁に使用される場合は、このスクリプトを試してください。
name の下の検索可能な PATH 内のどこかに配置します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 "$@" /dev/stdin <<END
---
- hosts: $HOST_PATTERN
  roles:
    - $ROLE
END
于 2016-07-17T08:49:33.397 に答える