web-dev-qa-db-ja.com

Ansibleシェル経由でaptの更新とアップグレードを実行する方法

Ansibleを使用して、次の2つのコマンドを実行しようとしています。

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

私はあなたが使用できるansibleを知っています:

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

次のコマンドを実行すると実行されますか?または、何らかの種類のrawコマンドを使用する必要がありますか

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

39
nadermx

Ansibleにはまさにこの目的のために設計されたaptモジュールがあるため、これにシェルを使用することはお勧めしません。以下でaptを使用して詳細に説明しました。

プレイブックでは、次のように更新およびアップグレードできます。

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

cache_valid_time値は省略できます。 docs からの目的:

Cache_valid_timeよりも古い場合、aptキャッシュを更新します。このオプションは秒単位で設定されます。

そのため、キャッシュが最近更新されたばかりのときにキャッシュを更新したくない場合に含めるのは良いことです。

これをアドホックコマンドとして実行するには、次を実行します。

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

アドホックコマンドについて詳しく説明します here

--becomebecome: trueを使用していることに注意してください。これは、Ansibleを介した典型的な特権エスカレーションの例です。 -u user-Kを使用します(特権エスカレーションパスワードを要求します)。どちらを使用してもかまいませんが、これは最も一般的なフォームを表示するためのものです。

89
Tom Manterfield