Help us understand the problem. What is going on with this article?

Amazon Linux 2でAnsibleを使ってnginxを入れる

More than 1 year has passed since last update.

微妙にハマったのでメモ

結論

- name: Enable to install NGINX.
  shell: "amazon-linux-extras enable nginx1.12"
  become: yes

yumの前に入れる。yumはそのまま使う。

とりあえずインストールをするためのシンプルなymlは以下のとおり。

---
- name: Install openssl
  yum: name=openssl-devel

- name: Enable to install NGINX.
  shell: "amazon-linux-extras enable nginx1.12"
  become: yes

- name: Install NGINX.
  yum: name=nginx

- command: chkconfig nginx on
- command: service nginx restart

従来のtask

main.yml
---
- 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では動かない)

動かない.yml
---
- 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を実行すると、なぜかすんなりと動きそうになっている。

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で書き直すと、普通に動くようになった。結果は冒頭のとおり。
つらい。

sasanquaneuf
座敷わらしになれる日を夢見て日々過ごしている一児の父です。 画像は「R」的なアレにインスパイアされて手書きで書いた「いぬ」です。 中学生の頃はVBなど。大学生の頃はC++ / Haskell / mathematica など。SIer時代はQlik Sense / R / C# / Java / PHP / JavaScript など。 最近は Python / TypeScript など。
https://qiitadon.com/@sasanquaneuf
uniaim
心と歴史を動かす。Tabレジ、Event Manager+、Point Manager、PREORDER、CASHIER等のサービス提供と、端末レンタル・イベント運営などを行っています。
https://uniaim.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away