4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Ansible コマンドでパッケージを更新する

Last updated at Posted at 2016-01-08

自分は普段使いの OS として Ubuntu を使っているのだけど、パッケージのアップデートの際に

$ sudo aptitude update && sudo aptitude upgrade

ってコマンド叩くのがなんとなく面倒。

最近自分の環境で Ansible を使ってる事もあり、Ansible の apt モジュールで一括で更新できないかなと試してみた

Ansible コマンドを単体で使う

一般的に Ansible は task をファイルに書いて ansible-playbook を使って実行するけど、たかだかパッケージのアップデートにファイルを用意するとか尚更めんどうなので ansible コマンドを使って実行してみることにした。

ってことでコードがこちら

$ ansible localhost --become --ask-become-pass -m apt -a update_cache=yes -a upgrade=full

コマンド解説

Usage

まず基本の Usage として

$ ansible <host-pattern> [options]

という形式で引数を取る。

なので最初の localhost はそのままどのホストに接続するか? を書いている。

--become, --ask-become-pass

--become--ask-become-pass で root になる事とそのパスワードを対話的に解決する事を指定してる。
--su オプションや --sudo オプションもあるけど今は deprecate になって --become を使えとヘルプメッセージは訴えてくる。

$ ansible
# ...略...
 -b, --become          run operations with become (nopasswd implied)
 -S, --su              run operations with su (deprecated, use become)
 -s, --sudo            run operations with sudo (nopasswd) (deprecated, use become)
# ...略...

-m

-m はモジュールを指定するオプション。
ここでは apt モジュールを選択している。

-a

-a オプションはモジュールに対する引数を指定する。
apt モジュールを使ったアップデートは

apt: update_cache=yes upgrade=full

といった感じで指定するので
-a update_cache=yes-a upgrade=full と直せる。

注意点

その1

普段の Ansible Playbook のように

- name: Upgrade
  become: yes
  apt: update_cache=yes upgrade=full

みたいに「タスクに sudo 権限を与える」といった考え方が適用できないので、はじめの段階で --become で root 権限を必要とする事を書かないといけない。

その2

一括でアップデートからアップグレードまで行うので何をアップグレードするのか確認ができない。
個人的にそこまでバージョンに気をつけなければいけないものはインストールしていないつもりなので盲目的にアップデートかけてるけど、バージョンアップに慎重な人とかは普通に使わないことをおすすめします←

あと何をアップデートしたかもめっちゃ見づらいです。

$ ansible localhost --become --ask-become-pass -m apt -a update_cache=yes -a upgrade=full
SUDO password: 
localhost | success >> {
    "changed": true, 
    "msg": "Reading package lists...\nBuilding dependency tree...\nReading state information...\nReading extended state information...\nInitializing package states...\nWriting extended state information...\nBuilding tag database...\nThe fo
llowing packages will be upgraded:\n  heroku heroku-toolbelt libnss3 libnss3-nssdb \n4 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.\nNeed to get 2,967 kB of archives. After unpacking 0 B will be used.\nWriting extended state information...\nGet: 1 http://security.ubuntu.com/ubuntu/ wily-security/main libnss3-nssdb all 2:3.19.2.1-0ubuntu0.15.10.2 [10.6 kB]\nGet: 2 http://security.ubuntu.com/ubuntu/ wily-security/main libnss3 amd64 2:3.19.2.1-0ubuntu0
.15.10.2 [1,129 kB]\nGet: 3 http://toolbelt.heroku.com/ubuntu/ ./ heroku-toolbelt 3.42.27 [666 B]\nGet: 4 http://toolbelt.heroku.com/ubuntu/ ./ heroku 3.42.27 [1,827 kB]\nFetched 2,967 kB in 8s (345 kB/s)\n(Reading database ... \r(Reading database ... 5%\r(Reading database ... 10%\r(Reading database ... 15%\r(Reading database ... 20%\r(Reading database ... 25%\r(Reading database ... 30%\r(Reading database ... 35%\r(Reading database ... 40%\r(Reading database ... 45%\r(Readi
ng database ... 50%\r(Reading database ... 55%\r(Reading database ... 60%\r(Reading database ... 65%\r(Reading database ... 70%\r(Reading database ... 75%\r(Reading database ... 80%\r(Reading database ... 85%\r(Reading database ... 90%\r(R
eading database ... 95%\r(Reading database ... 100%\r(Reading database ... 282586 files and directories currently installed.)\r\nPreparing to unpack .../heroku-toolbelt_3.42.27_all.deb ...\r\nUnpacking heroku-toolbelt (3.42.27) over (3.42.
25) ...\r\nPreparing to unpack .../heroku_3.42.27_all.deb ...\r\nUnpacking heroku (3.42.27) over (3.42.25) ...\r\nPreparing to unpack .../libnss3-nssdb_2%3a3.19.2.1-0ubuntu0.15.10.2_all.deb ...\r\nUnpacking libnss3-nssdb (2:3.19.2.1-0ubunt
u0.15.10.2) over (2:3.19.2.1-0ubuntu0.15.10.1) ...\r\nPreparing to unpack .../libnss3_2%3a3.19.2.1-0ubuntu0.15.10.2_amd64.deb ...\r\nUnpacking libnss3:amd64 (2:3.19.2.1-0ubuntu0.15.10.2) over (2:3.19.2.1-0ubuntu0.15.10.1) ...\r\nSetting up
 heroku (3.42.27) ...\r\nSetting up heroku-toolbelt (3.42.27) ...\r\nSetting up libnss3-nssdb (2:3.19.2.1-0ubuntu0.15.10.2) ...\r\nSetting up libnss3:amd64 (2:3.19.2.1-0ubuntu0.15.10.2) ...\r\nProcessing triggers for libc-bin (2.21-0ubuntu
4) ...\r\nReading package lists...\nBuilding dependency tree...\nReading state information...\nReading extended state information...\nInitializing package states...\nBuilding tag database...\n", 
    "stderr": "", 
    "stdout": "Reading package lists...\nBuilding dependency tree...\nReading state information...\nReading extended state information...\nInitializing package states...\nWriting extended state information...\nBuilding tag database...\nThe
 following packages will be upgraded:\n  heroku heroku-toolbelt libnss3 libnss3-nssdb \n4 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.\nNeed to get 2,967 kB of archives. After unpacking 0 B will be used.\nWriting e
xtended state information...\nGet: 1 http://security.ubuntu.com/ubuntu/ wily-security/main libnss3-nssdb all 2:3.19.2.1-0ubuntu0.15.10.2 [10.6 kB]\nGet: 2 http://security.ubuntu.com/ubuntu/ wily-security/main libnss3 amd64 2:3.19.2.1-0ubun
tu0.15.10.2 [1,129 kB]\nGet: 3 http://toolbelt.heroku.com/ubuntu/ ./ heroku-toolbelt 3.42.27 [666 B]\nGet: 4 http://toolbelt.heroku.com/ubuntu/ ./ heroku 3.42.27 [1,827 kB]\nFetched 2,967 kB in 8s (345 kB/s)\n(Reading database ... \r(Readi
ng database ... 5%\r(Reading database ... 10%\r(Reading database ... 15%\r(Reading database ... 20%\r(Reading database ... 25%\r(Reading database ... 30%\r(Reading database ... 35%\r(Reading database ... 40%\r(Reading database ... 45%\r(Re
ading database ... 50%\r(Reading database ... 55%\r(Reading database ... 60%\r(Reading database ... 65%\r(Reading database ... 70%\r(Reading database ... 75%\r(Reading database ... 80%\r(Reading database ... 85%\r(Reading database ... 90%\
r(Reading database ... 95%\r(Reading database ... 100%\r(Reading database ... 282586 files and directories currently installed.)\r\nPreparing to unpack .../heroku-toolbelt_3.42.27_all.deb ...\r\nUnpacking heroku-toolbelt (3.42.27) over (3.
42.25) ...\r\nPreparing to unpack .../heroku_3.42.27_all.deb ...\r\nUnpacking heroku (3.42.27) over (3.42.25) ...\r\nPreparing to unpack .../libnss3-nssdb_2%3a3.19.2.1-0ubuntu0.15.10.2_all.deb ...\r\nUnpacking libnss3-nssdb (2:3.19.2.1-0ub
untu0.15.10.2) over (2:3.19.2.1-0ubuntu0.15.10.1) ...\r\nPreparing to unpack .../libnss3_2%3a3.19.2.1-0ubuntu0.15.10.2_amd64.deb ...\r\nUnpacking libnss3:amd64 (2:3.19.2.1-0ubuntu0.15.10.2) over (2:3.19.2.1-0ubuntu0.15.10.1) ...\r\nSetting
 up heroku (3.42.27) ...\r\nSetting up heroku-toolbelt (3.42.27) ...\r\nSetting up libnss3-nssdb (2:3.19.2.1-0ubuntu0.15.10.2) ...\r\nSetting up libnss3:amd64 (2:3.19.2.1-0ubuntu0.15.10.2) ...\r\nProcessing triggers for libc-bin (2.21-0ubu
ntu4) ...\r\nReading package lists...\nBuilding dependency tree...\nReading state information...\nReading extended state information...\nInitializing package states...\nBuilding tag database...\n"
}

ってログが流れて、一発で「あ、heroku 関連と libnss3 関連のもの、計4つのパッケージがアップグレードされたな」ってわかる人は多分いない。

その3

普通にコマンド長い

結論

まぁ普通に aptitude コマンド2回叩けばいいんじゃないかな。

そんな感じで。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?