19
10

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-02-11

微妙にハマったのでメモ

結論

- 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

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では動かない)
※注意:このメッセージは記事を書いた時点でのものですが、現在はnginx1を使用するようにしてください

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

19
10
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
19
10