経緯など
エラーが出たので確認したところそもそもCentOS7からパッケージグループ名が変わっててbaseとかcoreとか存在しないっぽい。
個人的にgroup名のスペースや言語設定で名前変わることに納得いかなかったのでgroupidつかってました。groupidはgrouplistのとき-vつけるとカッコ()内に表示されてるやつ。(ansibleのyumモジュールだとgroupidは@^groupidという表現をする)
ここ↓みると--setopt=group_package_types=mandatory,default,optional
つけると元通りのgroup、groupid名でいけますと書いてある
https://access.redhat.com/solutions/1310043
インストールはできたが、grouplistでもとのgroup、groupid名を引くことができない。
で、どうするかというと、# yum groups mark convert
を打つと現在入ってるパッケージをもとにパッケージグループをupgrade対象のホワイトリストに割り当てる?インストール済みとしてmarkする?というような。manと動確でそんな感じでよさそうな気がした。
そうすると、変更後前後のインストール済みgroup、groupid名は以下のかんじになる
Ansibleのyumモジュールではsetoptオプションの対応がないっぽいのでcommandモジュールかなんかつかうしかなさそう。
- name: base packages group install
#yum:
command: yum -y groupinstall "{{ item }}" --setopt=group_package_types=mandatory,default,optional
# name: "@^{{ item }}"
# state: present
# conf: /etc/yum.conf
with_items:
- core
- base
- development
- compat-libraries
- console-internet
- perl-runtime
このタスクでインストールしたあとに、yum groups mark convert
打つ前後の確認すると以下のように★のとこが増えてる
# yum grouplist -v
Installed Groups:
Compatibility Libraries (compat-libraries)
Console Internet Tools (console-internet)
Development Tools (development)
↓
Installed Groups:
Compatibility Libraries (compat-libraries)
Console Internet Tools (console-internet)
Development Tools (development)
Legacy UNIX Compatibility (legacy-unix)★
Security Tools (security-tools)★
System Administration Tools (system-admin-tools)★
yum groups mark convert
で増えてたlegacy-unixなどでgrouplistでチェックタスクつくるといいのと入れる時もこの名前にしたほうがいいのかも?
と思いきや実際にyum groupinstall legacy-unix security-tools system-admin-tools --setopt=group_package_types=mandatory,default,optional
で表示されたパッケージとyum groupinstall core base perl-runtime --setopt=group_package_types=mandatory,default,optional
で表示されたものは結構違ってました。
それとAnsibleにしたときは@^じゃなくて@で動いたりはしたのですが、他のあとからのタスクでバージョン指定で入れてたりexcludeしてたりすると1回目の後からタスクの時と2回動かしたグループインストールの時にパッケージ競合でエラーで止まるので冪等とはなんだったのかという感じになったりなど。
対策としては
・groupinstallしない
・1回いれたら2回目はリポジトリを無効化しpriorityはなし
・rpm -qaのリストを食わせてカスタムリポジトリからインストールする(environmentごとにdiffって差分を別のリストから入れる)
というくらいがよさそうなんじゃないでしょうか。updateする場合は個別にタスク生成して実行などで。
パッケージ管理は統合する話もなんとなくちら聞きしましたがいつになるのか等よくわからず願望なだけかもしれなくて眉唾なんですかね。
と思ったらYumの後継としてDNFというのがある模様でした。(めんどうだからaptと統合しないかなとか思ってしまったけど、エディタとOSと同様に統合するわけなくて用途にあわせて好きに使えばいい話ですかね)
https://ja.wikipedia.org/wiki/DNF_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2)
さんこう
man 8 yum
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/sec-working_with_package_groups