La directive Ansible Become pour exécuter des commandes en tant qu'utilisateur spécifié

Ansible Become Directive Run Commands



En utilisant Ansible, vous pouvez effectuer diverses opérations sur des machines distantes à l'aide de commandes brutes ou de playbooks Ansible. Par défaut, un playbook Ansible est exécuté sur l'hôte distant en tant que même utilisateur sur le contrôleur Ansible. Cela signifie que si vous devez exécuter une commande en tant qu'autre utilisateur sur la machine distante, vous devrez la spécifier explicitement dans votre playbook Ansible.

Pour implémenter la fonctionnalité d'exécution de commandes en tant qu'autre utilisateur, vous devrez utiliser la fonctionnalité sudo disponible sur les systèmes Linux. La directive Ansible devient vous permet d'exécuter des commandes en tant qu'utilisateur spécifié.







Les informations de l'utilisateur sont spécifiées dans un playbook Ansible à l'aide des variables de devenir, telles que devenir_passe, pour spécifier le mot de passe de l'utilisateur devenu_utilisateur, ainsi que quel utilisateur peut exécuter la commande.



Comment exécuter des tâches Ansible en tant que root

Pour exécuter une commande spécifique en tant qu'utilisateur root dans Ansible, vous pouvez implémenter la directive devenir et définir la valeur sur 'true'. Cela indique à Ansible d'implémenter sudo sans arguments lors de l'exécution de la commande.



Par exemple, considérons un playbook Ansible qui met à jour le package du serveur MySQL, puis le redémarre. Dans les opérations Linux normales, vous devez vous connecter en tant qu'utilisateur root pour effectuer de telles tâches. Dans Ansible, vous pouvez simplement appeler la directive devenir: oui, comme indiqué ci-dessous :





- hébergeurs : tous

devenir:Oui

Tâches:

- nom : course Ansiblecommeroot et mettre à jour le système

Miam:

nom : mysql-server

état : dernier

- Nom:

service.service :
nom : mysqld

état : redémarré

Dans le playbook ci-dessus, nous avons utilisé la directive 'devenir' et n'avons pas spécifié l'utilisateur 'devenir utilisateur', car toutes les commandes sous la directive 'devenir' sont exécutées en tant que root par défaut.

Cela revient à le spécifier comme :



- hébergeurs : tous

devenir:Oui

devenir_utilisateur : root

Tâches:

- nom : course Ansiblecommeroot et mettre à jour le système

Miam:
nom : mysql-server

état : dernier

- nom : service.service :

nom : mysqld

état : redémarré

Comment exécuter des tâches Ansible en tant que Sudo

Pour exécuter une tâche Ansible en tant qu'utilisateur spécifique, plutôt que l'utilisateur root normal, vous pouvez utiliser la directive devenir_utilisateur et transmettre le nom d'utilisateur de l'utilisateur pour exécuter la tâche. C'est un peu comme utiliser la commande sudo -u sous Unix.

Pour implémenter la directive devenir_utilisateur, vous devez d'abord activer la directive devenir, car devenir_utilisateur est inutilisable sans cette directive activée.

Considérez le playbook suivant, dans lequel la commande est exécutée en tant qu'utilisateur personne.

- nom : Exécuter uncommander commeun autre utilisateur(personne)
commander:psaux

devenir:vrai

devenir_méthode :son

devenir_utilisateur : personne

devenir_flags :'-s /bin/bash'

Dans l'extrait de playbook ci-dessus, nous avons implémenté les directives devenir, devenir_utilisateur et autres.

  1. devenir_méthode : Ceci définit la méthode d'élévation des privilèges, telle que su ou sudo.
  2. directive devenir_utilisateur : Ceci spécifie l'utilisateur sous lequel exécuter la commande ; cela n'implique pas de devenir : oui.
  3. devenir_drapeaux : Ceci définit les indicateurs à utiliser pour la tâche spécifiée.

Vous pouvez maintenant exécuter le playbook ci-dessus avec le nom de fichier ansible-playbook.yml et voir le résultat par vous-même. Pour les tâches avec une sortie, vous devrez peut-être implémenter le module de débogage.

Comment exécuter Ansible avec mot de passe

Pour exécuter une directive de devenir qui nécessite un mot de passe, vous pouvez demander à Ansible de demander un mot de passe lors de l'appel du playbook spécifié.

Par exemple, pour exécuter un playbook avec un mot de passe, saisissez la commande ci-dessous :

ansible-playbook devenir_pass.yml--demander-devenir-passer

Vous pouvez également spécifier l'indicateur -K, qui effectue des opérations similaires à la commande ci-dessus. Par exemple:

ansible-playbook devenir_pass.yml

Une fois spécifié, un mot de passe vous sera demandé lors de l'exécution des tâches.

REMARQUE : vous pouvez également utiliser la directive devenir dans les commandes brutes Ansible AD HOC à l'aide de l'indicateur -b. Pour en savoir plus, consultez la documentation fournie ci-dessous :

https://linkfy.to/becomeDocumentation

Conclusion

Après avoir lu cet article, vous devriez maintenant savoir comment utiliser la directive Ansible BECOME pour effectuer une élévation de privilèges pour diverses tâches.

Pour des raisons de sécurité, il est préférable d'implémenter des restrictions pour différents comptes et de spécifier explicitement quand ils sont utilisés. Ainsi, l'élévation des privilèges est un aspect important de l'utilisation de sudo et su dans Ansible.