apt modlueのオプションが色々あるので見てみる


はじめに

ansible aptモジュール サンプルを作ったはいいけどそれなりにパラメータが有るので色々試してみようと思う

長いのでサイドバーの目次からオプション毎に見てね

注意

ここに書いてないオプションはこっちで既にやっているので書いてない場合がある。

- machine specs

ansible version : 2.7.10 (pip)
OS version : ubuntu 16.04.5 ( in conoha VPS)

  • official page : apt

パラメータ一覧

本当は表形式にしたかったけど断念。(mac使い慣れてないのだ。。。)
以下の様に結構多い。前述のサンプル以外で使っていないものを中心に調べてみようと思う

parameter_all
- hosts: all
  user: root
  tasks:
  - name: Install the package "libvirt-bin"
    apt:
      name: <package name>
      allow_unauthenticated: no(default) / yes
      autoclean: no(default) / yes
      autoremove: no(default) / yes
      cache_valid_time: 0(default)
      deb: < debian package path >
      default_release: < distribution >
      dpkg_options: force-confdef,force-confold(default)
      force: no(default) / yes
      force_apt_get: no(default) / yes
      install_recommends: no / yes
      only_upgrade: no(default) / yes
      purge: no(default) / yes
      state: present(default) / absent / build-dep / latest
      update_cache: no(default) / yes
      upgrade: no(default) / dist / full / safe / yes
- allow_unauthenticated

aptコマンドでいう「--allow-unauthenticated」オプション。
paramterを「yes」にするとapt実行時に当該オプションを付与される。
意味はパッケージを確認できない場合に無視し、それについて質問しません
あまり意識して使った覚えがないな(==;

- autoclean

意味はclean と同様に、autoclean は取得したパッケージのローカルリポジトリを掃除します。
「/var/cache/apt/archive」配下を綺麗にすると思ったけどそれとは違った。
また、install/remove/purge時に付与してもオプションとして付与される類ではないので使用には注意
というより用途が知りたい(ーー;

- cache_valid_time: 0(default)

Ansibleでのaptキャッシュの更新を行う。

最新のrepository情報の維持をしたい!けど毎パッケージインストール毎にアップデートしたくない!って時に使いそう。

- deb

ネットワーク上、もしくはローカルに指定のdebファイルを指定してインストールする。
実際に実行してみた結果としてaptのhistoryのログに残ってないのでaptではなくdpkgコマンドで実際は導入していると思われる。

- default_release

aptコマンドの「-t」オプション相当。
特定のディストリビューション(trusty,xenial等)からパッケージを検索させてインストールすることができる。(無論当該ディストリビュートのリポジトリが参照することが前提条件)
やるとしたら自distよりも新しいdistの何かしらのパッケージをインストールしたい時に使う。
逆だと自distのパッケージが新しすぎて依存関係でエラーになる場合がある。(あった)
指定方法は以下の様にディストリビューション名を指定する。

default_release: xenial
- dpkg_options

aptコマンドの「-o」オプション相当。
デフォルトで「force-confdef,force-confold」が付けられている
オプションはコンマ区切りリストとして指定する必要がある
以下の様にコマンドオプションとして最終的には付与される(されている)

-o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold
- force

aptコマンドの「--force-yes」相当。
どのような処理であってもプロンプトを発生させず非対話的に処理が進められる。
(依存関係無視してインストールするオプションって勝手に勘違いしてた(ーー;

- force_apt_get

パッケージインストール時に「apt」ではなく、「apt-get」を用いる。
「/var/log/apt/history.log」見ればよく判る。

- install_recommends

aptコマンドの「--no-install-recommends」相当。
ざっくりいうと推奨パッケージも一緒にインストールするかしないかを選択出来る。

- only_upgrade

aptコマンドの「--only-upgrade」相当。
パッケージが既にインストールされている場合にのみアップグレードする。
(使い所さんが思いつかなかった。冪等性考えるとアップグレードonlyの処理のパターンが思いつかなかった。(install時にstate: latestではアカンのか。。。?)
旧バージョンがインストールされている状態で且つ新バージョンがインストール出来る状態でこのオプションを指定しても動かない場合がある。

これはstateを定義していない場合、デフォルト設定がpresentであるため発生する。[state: latest]との併用が必要

- state

パッケージ操作後の状態を規定する。

  • absent : アンインストール時に指定する。(autoremove併用はお好みで)
  • latest : 最新版となっている。(最新版をインストールする)
  • present : パッケージがインストールされている。
    • ( (旧バージョンでも)既にインストールされている場合は、インストールしない。)
  • build-dep : 「apt build-dep」相当。ソースファイルからインストールする。
- upgrade

「apt upgrade」相当。オプションは以下の通り。
- no : 何もしない
- yes or safe : safe-upgrade(パッケージ構成を変えない範囲でアップグレードする)
- dist : dist-upgrade (インストールされてるカーネルの更新(Ubuntu)/ディストリビューションの更新)
- full : full-upgrade 前述以外もupgrade(パッケージを削除しないと更新できないパッケージも処理)

safeの場合は、kernel,distの場合はkernel & distribution, fullの場合は他のパッケージも含めて。って意味なのかな?
(いずれ調べたい。運用上、このオプションって使われてるのかな。あんまイメージ湧かない。)

結論

どちらかというとaptの勉強になった気がする。
dep-buildなんて知らなんだ。
なるほどなー