web-dev-qa-db-fra.com

Comment exécuter apt update et upgrade via le shell Ansible

J'essaie d'utiliser Ansible pour exécuter les deux commandes suivantes:

Sudo apt-get update && Sudo apt-get upgrade -y

Je sais avec ansible que vous pouvez utiliser:

ansible all -m Shell -u user -K -a "uptime"

Lancer la commande suivante le ferait-il? Ou dois-je utiliser une sorte de commande raw

ansible all -m Shell -u user -K -a "Sudo apt-get update && Sudo apt-get upgrade -y"

39
nadermx

Je ne recommanderais pas d’utiliser Shell pour cela, car Ansible a conçu le module apt dans ce but précis. J'ai détaillé en utilisant apt ci-dessous.

Dans un playbook, vous pouvez mettre à jour et mettre à jour de la manière suivante:

- name: Update and upgrade apt packages
  become: true
  apt:
    upgrade: yes
    update_cache: yes
    cache_valid_time: 86400 #One day

La valeur cache_valid_time peut être omise. Son but de la docs :

Mettez à jour le cache d'apt si il est plus ancien que le cache_valid_time. Cette option est définie en secondes.

Il est donc bon d'inclure si vous ne voulez pas mettre à jour le cache alors qu'il vient d'être mis à jour.

Pour ce faire en tant que commande ad hoc, vous pouvez exécuter:

$ ansible all -m apt -a "upgrade=yes update_cache=yes cache_valid_time=86400" --become

les commandes ad-hoc sont décrites en détail ici

Notez que j'utilise --become et become: true. Ceci est un exemple typique d'élévation de privilèges via Ansible. Vous utilisez -u user et -K (demandez le mot de passe d'élévation des privilèges). Utilisez ce qui vous convient le mieux, c'est simplement pour vous montrer le formulaire le plus courant.

89
Tom Manterfield