119 votes

Ansible: Puis-je exécuter le rôle à partir de la ligne de commande?

Supposons que j'ai un rôle appelé "apache"

Maintenant, je veux exécuter ce rôle sur l'hôte 192.168.0.10 à partir de la ligne de commande de l'hôte Ansible.

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

Y-a-t-il un moyen de faire ça?

100voto

Julius Žaromskis Points 372

Avec Ansible 2.7, vous pouvez le faire:

include_role:

 $ ansible localhost -m include_role -a name=bob
localhost | SUCCESS => {
    "changed": false,
    "include_variables": {
        "name": "bob"
    }
}
localhost | SUCCESS => {
    "msg": "bob"
}
 

https://github.com/ansible/ansible/pull/43131

96voto

abuzze Points 746

Je ne suis pas au courant de cette fonctionnalité, mais vous pouvez utiliser des balises pour exécuter un seul rôle à partir de votre Playbook.

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

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

25voto

Konstantin Suvorov Points 34119

Ansible n’existe pas, mais s’il s’agit souvent d’un cas d’utilisation, essayez ce script.
Mettez-le quelque part dans votre PATH interrogeable sous le nom 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
 

18voto

Vous pouvez également consulter le référentiel de ansible-toolbox . Cela vous permettra d'utiliser quelque chose comme

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

16voto

rkrzr Points 1262

J'ai écrit un petit plugin Ansible, appelé auto_tags , qui génère dynamiquement pour chaque rôle de votre livre de jeu une balise du même nom. Vous pouvez le trouver ici .

Après l’avoir installé (les instructions sont dans l’essentiel ci-dessus), vous pouvez alors exécuter un rôle spécifique avec:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X