微妙にハマったのでメモ
結論
- name: Enable to install NGINX.
shell: "amazon-linux-extras enable nginx1"
become: yes
をyumの前に入れる。yumはそのまま使う。
【注意】以前、この記事ではnginx1.12を使用していましたが、現在では古くなっているので、nginx1(現在では1.18が入る)を使ってください
とりあえずインストールをするためのシンプルなymlは以下のとおり。
---
- name: Install openssl
yum: name=openssl-devel
- name: Enable to install NGINX.
shell: "amazon-linux-extras enable nginx1"
become: yes
- name: Install NGINX.
yum: name=nginx
- command: chkconfig nginx on
- command: service nginx restart
従来のtask
---
- name: Install openssl
yum: name=openssl-devel
- name: Install NGINX.
yum: name=nginx
- command: chkconfig nginx on
- command: service nginx restart
これを実行するとエラー。
fatal: [epapp01]: FAILED! => {"changed": false, "msg": "No package matching 'nginx' found available, installed or updated", "rc": 126, "results": ["No package matching 'nginx' found available, installed or updated"]}
トラブルシューティング
このメッセージでは何もわからないので、直接yumを叩いてみる。
$ sudo yum install nginx
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
パッケージ nginx は利用できません。
エラー: 何もしません
nginx is available in Amazon Linux Extra topic "nginx1.12"
To use, run
# sudo amazon-linux-extras install nginx1.12
Learn more at
https://aws.amazon.com/amazon-linux-2/faqs/#Amazon_Linux_Extras
なるほど?
amazon-linux-extras install nginx1.12
という未知のコマンドを実行しろと言われるので、enableではなくinstallを使ってansibleで実行してみる。(正解は後述の通りenableなので、installでは動かない)
※注意:このメッセージは記事を書いた時点でのものですが、現在はnginx1を使用するようにしてください
---
- name: Install openssl
yum: name=openssl-devel
- name: Enable to install NGINX.
shell: "amazon-linux-extras install nginx1.12"
become: yes
- command: chkconfig nginx on
- command: service nginx restart
...10分ぐらい反応がない。
仕方がないので、ちょっとプロセスとかを見てみる。
$ ps -ef
ec2-user 10844 10834 0 15:41 ? 00:00:00 sshd: ec2-user@pts/1
ec2-user 10845 10844 0 15:41 pts/1 00:00:00 /bin/sh -c sudo -H -S -n -u root /bin/sh -c 'echo BECOME-SUCCESS-hnxarzgysfonogwhauwudlqaqqqwgpyd; /usr/bin/python /home/ec2-user/.ansible/tmp/a
root 10862 10845 0 15:41 pts/1 00:00:00 sudo -H -S -n -u root /bin/sh -c echo BECOME-SUCCESS-hnxarzgysfonogwhauwudlqaqqqwgpyd; /usr/bin/python /home/ec2-user/.ansible/tmp/ansible-tmp-1
root 10863 10862 0 15:41 pts/1 00:00:00 /bin/sh -c echo BECOME-SUCCESS-hnxarzgysfonogwhauwudlqaqqqwgpyd; /usr/bin/python /home/ec2-user/.ansible/tmp/ansible-tmp-1549899685.433528-97384
root 10864 10863 0 15:41 pts/1 00:00:00 /usr/bin/python /home/ec2-user/.ansible/tmp/ansible-tmp-1549899685.433528-9738494689918/AnsiballZ_command.py
root 10865 10864 0 15:41 pts/1 00:00:00 python -m amazon_linux_extras install nginx1.12
root 10868 10865 0 15:41 pts/1 00:00:02 /usr/bin/python /bin/yum install nginx
結局yumなんかーい!
しかし、yumの実行途中で止まっているような挙動に見える。y/Nとかで止まってるのかな…とか思って、直接ansibleを通さずにyumを実行すると、なぜかすんなりと動きそうになっている。
$ sudo yum install nginx
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
amzn2-core | 2.4 kB 00:00:00
amzn2extra-docker | 1.3 kB 00:00:00
amzn2extra-nginx1.12 | 1.3 kB 00:00:00
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ nginx.x86_64 1:1.12.2-2.amzn2.0.1 を インストール
--> 依存性の処理をしています: nginx-filesystem = 1:1.12.2-2.amzn2.0.1 のパッケージ: 1:nginx-1.12.2-2.amzn2.0.1.x86_64
--> 依存性の処理をしています: nginx-all-modules = 1:1.12.2-2.amzn2.0.1 のパッケージ: 1:nginx-1.12.2-2.amzn2.0.1.x86_64
--> 依存性の処理をしています: nginx-filesystem のパッケージ: 1:nginx-1.12.2-2.amzn2.0.1.x86_64
--> 依存性の処理をしています: libprofiler.so.0()(64bit) のパッケージ: 1:nginx-1.12.2-2.amzn2.0.1.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ gperftools-libs.x86_64 0:2.6.1-1.amzn2 を インストール
---> パッケージ nginx-all-modules.noarch 1:1.12.2-2.amzn2.0.1 を インストール
--> 依存性の処理をしています: nginx-mod-stream = 1:1.12.2-2.amzn2.0.1 のパッケージ: 1:nginx-all-modules-1.12.2-2.amzn2.0.1.noarch
--> 依存性の処理をしています: nginx-mod-mail = 1:1.12.2-2.amzn2.0.1 のパッケージ: 1:nginx-all-modules-1.12.2-2.amzn2.0.1.noarch
--> 依存性の処理をしています: nginx-mod-http-xslt-filter = 1:1.12.2-2.amzn2.0.1 のパッケージ: 1:nginx-all-modules-1.12.2-2.amzn2.0.1.noarch
--> 依存性の処理をしています: nginx-mod-http-perl = 1:1.12.2-2.amzn2.0.1 のパッケージ: 1:nginx-all-modules-1.12.2-2.amzn2.0.1.noarch
--> 依存性の処理をしています: nginx-mod-http-image-filter = 1:1.12.2-2.amzn2.0.1 のパッケージ: 1:nginx-all-modules-1.12.2-2.amzn2.0.1.noarch
--> 依存性の処理をしています: nginx-mod-http-geoip = 1:1.12.2-2.amzn2.0.1 のパッケージ: 1:nginx-all-modules-1.12.2-2.amzn2.0.1.noarch
---> パッケージ nginx-filesystem.noarch 1:1.12.2-2.amzn2.0.1 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ nginx-mod-http-geoip.x86_64 1:1.12.2-2.amzn2.0.1 を インストール
---> パッケージ nginx-mod-http-image-filter.x86_64 1:1.12.2-2.amzn2.0.1 を インストール
--> 依存性の処理をしています: gd のパッケージ: 1:nginx-mod-http-image-filter-1.12.2-2.amzn2.0.1.x86_64
--> 依存性の処理をしています: libgd.so.2()(64bit) のパッケージ: 1:nginx-mod-http-image-filter-1.12.2-2.amzn2.0.1.x86_64
---> パッケージ nginx-mod-http-perl.x86_64 1:1.12.2-2.amzn2.0.1 を インストール
---> パッケージ nginx-mod-http-xslt-filter.x86_64 1:1.12.2-2.amzn2.0.1 を インストール
--> 依存性の処理をしています: libxslt.so.1(LIBXML2_1.0.18)(64bit) のパッケージ: 1:nginx-mod-http-xslt-filter-1.12.2-2.amzn2.0.1.x86_64
--> 依存性の処理をしています: libxslt.so.1(LIBXML2_1.0.11)(64bit) のパッケージ: 1:nginx-mod-http-xslt-filter-1.12.2-2.amzn2.0.1.x86_64
--> 依存性の処理をしています: libxslt.so.1()(64bit) のパッケージ: 1:nginx-mod-http-xslt-filter-1.12.2-2.amzn2.0.1.x86_64
--> 依存性の処理をしています: libexslt.so.0()(64bit) のパッケージ: 1:nginx-mod-http-xslt-filter-1.12.2-2.amzn2.0.1.x86_64
---> パッケージ nginx-mod-mail.x86_64 1:1.12.2-2.amzn2.0.1 を インストール
---> パッケージ nginx-mod-stream.x86_64 1:1.12.2-2.amzn2.0.1 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ gd.x86_64 0:2.0.35-26.amzn2.0.2 を インストール
--> 依存性の処理をしています: libpng15.so.15(PNG15_0)(64bit) のパッケージ: gd-2.0.35-26.amzn2.0.2.x86_64
--> 依存性の処理をしています: libpng15.so.15()(64bit) のパッケージ: gd-2.0.35-26.amzn2.0.2.x86_64
--> 依存性の処理をしています: libfontconfig.so.1()(64bit) のパッケージ: gd-2.0.35-26.amzn2.0.2.x86_64
--> 依存性の処理をしています: libXpm.so.4()(64bit) のパッケージ: gd-2.0.35-26.amzn2.0.2.x86_64
--> 依存性の処理をしています: libX11.so.6()(64bit) のパッケージ: gd-2.0.35-26.amzn2.0.2.x86_64
---> パッケージ libxslt.x86_64 0:1.1.28-5.amzn2.0.2 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ fontconfig.x86_64 0:2.10.95-11.amzn2.0.2 を インストール
--> 依存性の処理をしています: fontpackages-filesystem のパッケージ: fontconfig-2.10.95-11.amzn2.0.2.x86_64
--> 依存性の処理をしています: font(:lang=en) のパッケージ: fontconfig-2.10.95-11.amzn2.0.2.x86_64
---> パッケージ libX11.x86_64 0:1.6.5-1.amzn2.0.2 を インストール
--> 依存性の処理をしています: libX11-common >= 1.6.5-1.amzn2.0.2 のパッケージ: libX11-1.6.5-1.amzn2.0.2.x86_64
--> 依存性の処理をしています: libxcb.so.1()(64bit) のパッケージ: libX11-1.6.5-1.amzn2.0.2.x86_64
---> パッケージ libXpm.x86_64 0:3.5.12-1.amzn2.0.2 を インストール
---> パッケージ libpng.x86_64 2:1.5.13-7.amzn2.0.2 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ fontpackages-filesystem.noarch 0:1.44-8.amzn2 を インストール
---> パッケージ libX11-common.noarch 0:1.6.5-1.amzn2.0.2 を インストール
---> パッケージ libxcb.x86_64 0:1.12-1.amzn2.0.2 を インストール
--> 依存性の処理をしています: libXau.so.6()(64bit) のパッケージ: libxcb-1.12-1.amzn2.0.2.x86_64
---> パッケージ stix-fonts.noarch 0:1.1.0-5.amzn2 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ libXau.x86_64 0:1.0.8-2.1.amzn2.0.2 を インストール
--> 依存性解決を終了しました。
依存性を解決しました
================================================================================================================================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
================================================================================================================================================================================================
インストール中:
nginx x86_64 1:1.12.2-2.amzn2.0.1 amzn2extra-nginx1.12 532 k
依存性関連でのインストールをします:
fontconfig x86_64 2.10.95-11.amzn2.0.2 amzn2-core 231 k
fontpackages-filesystem noarch 1.44-8.amzn2 amzn2-core 10 k
gd x86_64 2.0.35-26.amzn2.0.2 amzn2-core 147 k
gperftools-libs x86_64 2.6.1-1.amzn2 amzn2-core 274 k
libX11 x86_64 1.6.5-1.amzn2.0.2 amzn2-core 614 k
libX11-common noarch 1.6.5-1.amzn2.0.2 amzn2-core 164 k
libXau x86_64 1.0.8-2.1.amzn2.0.2 amzn2-core 29 k
libXpm x86_64 3.5.12-1.amzn2.0.2 amzn2-core 57 k
libpng x86_64 2:1.5.13-7.amzn2.0.2 amzn2-core 214 k
libxcb x86_64 1.12-1.amzn2.0.2 amzn2-core 216 k
libxslt x86_64 1.1.28-5.amzn2.0.2 amzn2-core 243 k
nginx-all-modules noarch 1:1.12.2-2.amzn2.0.1 amzn2extra-nginx1.12 17 k
nginx-filesystem noarch 1:1.12.2-2.amzn2.0.1 amzn2extra-nginx1.12 17 k
nginx-mod-http-geoip x86_64 1:1.12.2-2.amzn2.0.1 amzn2extra-nginx1.12 23 k
nginx-mod-http-image-filter x86_64 1:1.12.2-2.amzn2.0.1 amzn2extra-nginx1.12 27 k
nginx-mod-http-perl x86_64 1:1.12.2-2.amzn2.0.1 amzn2extra-nginx1.12 36 k
nginx-mod-http-xslt-filter x86_64 1:1.12.2-2.amzn2.0.1 amzn2extra-nginx1.12 26 k
nginx-mod-mail x86_64 1:1.12.2-2.amzn2.0.1 amzn2extra-nginx1.12 55 k
nginx-mod-stream x86_64 1:1.12.2-2.amzn2.0.1 amzn2extra-nginx1.12 76 k
stix-fonts noarch 1.1.0-5.amzn2 amzn2-core 1.3 M
トランザクションの要約
================================================================================================================================================================================================
インストール 1 パッケージ (+20 個の依存関係のパッケージ)
総ダウンロード容量: 4.2 M
インストール容量: 11 M
Is this ok [y/d/N]: N
Exiting on user command
ナンデ!YUMナンデ!
ここで
https://www.reddit.com/r/aws/comments/8ug8y5/scripting_amazonlinuxextras/
とかを見てみると、enableというものを使っている。
installがenbale + yumなのかな?という推測のもとで、enableで書き直すと、普通に動くようになった。結果は冒頭のとおり。
つらい。