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?
ansible
ansible-role
Karl
la source
la source
'ERROR! 'async_val' is not a valid attribute for a IncludeRole'.
-a "name=<role_name> public=yes"
, mais cela n'a pas aidé.-m <module-name>
) avec des paires clé = valeur comme arguments (-a key=value
)Il n'y a rien de tel dans Ansible, mais si c'est un cas d'utilisation fréquent pour vous, essayez ce script.
Placez-le quelque part dans votre PATH de recherche sous le nom
ansible-role
:la source
ansible localhost -m include_role -a name=myrole
- fonctionne pour moi!ansible localhost -m include_role -a name=myrole
est cassé depuis ansible 2.8. Il enregistre juste des messages d'erreur cryptiques comme'ERROR! 'async_val' is not a valid attribute for a IncludeRole'.
Vous pouvez également vérifier le référentiel ansible-toolbox . Cela vous permettra d'utiliser quelque chose comme
la source
J'ai écrit un petit plugin Ansible, appelé
auto_tags
, qui génère dynamiquement pour chaque rôle de votre playbook 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"
la source
Avez-vous essayé cela? c'est super cool. J'utilise 'update-os' au lieu du rôle 'apache' pour donner un exemple plus significatif. J'ai un rôle appelé disons
./roles/update-os/
dans mon./
j'ajoute un fichier appelé./role-update-os.yml
qui ressemble à:Rendez ce fichier exécutable (
chmod +x role-update-os.yml
). Vous pouvez maintenant exécuter et limiter à tout ce que vous avez dans votre inventaire,./update-os.yml -i inventory-dev --limit 192.168.0.10
vous pouvez également transmettre les noms de groupe.--limit web,db
> web and db est le groupe défini dans votre inventaire--limit 192.168.0.10,192.168.0.201
Notez que vous pouvez configurer la stratégie ssh-keys et sudoers pour pouvoir s'exécuter sans avoir à taper le mot de passe - idéal pour l'automatisation, il y a des implications de sécurité avec cela. vous devez donc analyser votre environnement pour voir s'il convient.
la source
dans ansible 2.8 cela fonctionne légèrement différemment
la source