Ansibleについて、色々調べてみたけれど、やはりとにもかくにも動かしてみないと理解ができん。(読んだだけで理解できる人になりたいw)
というわけで、新しく作成したインスタンスに、Ansibleをインストールして、まずは動かしてみたいと思う。
今回の構成は、AMIの中にEC2を2つ作成し、一方をA(コントロールノード)・もう片方をB(ターゲットノード)とする。
Ansibleはコントロールノード側だけに入っていればいいので、インスタンスAにAnsibleをインストールする。
ローカルPCから、コントロールノードとなるインスタンスAにSSH接続した状態からスタート!
Python3をインストールする
現在、EC2にインストールされているPythonのバージョンを確認する
[ec2-user@ip-172-16-16-180 ~]$ python --version Python 2.7.18 [ec2-user@ip-172-16-16-180 ~]$ python3 --version -bash: python3: command not found
2.7.18がインストールされているようなので、Python3系をインストールする
pipが入っているか確認する。
[ec2-user@ip-172-16-30-122 ~]$ pip -V -bash: pip: command not found [ec2-user@ip-172-16-30-122 ~]$ pip3 -V -bash: pip3: command not found
pip(Pip Installs Packages / Pip Inastalls Python)とは、Pythonのパッケージ管理システムのこと。
Ansibleをインストールするときに使う。(AnsibleはPythonでできている)
[ec2-user@ip-172-16-16-180 ~]$ sudo yum install python3 === 省略 === Installed: python3.x86_64 0:3.7.9-1.amzn2.0.2 Dependency Installed: python3-libs.x86_64 0:3.7.9-1.amzn2.0.2 python3-pip.noarch 0:9.0.3-1.amzn2.0.2 python3-setuptools.noarch 0:38.4.0-3.amzn2.0.6 Complete!
pipも同時に入った模様。
バージョン確認
[ec2-user@ip-172-16-16-180 ~]$ python3 --version Python 3.7.9 [ec2-user@ip-172-16-30-122 ~]$ pip -V -bash: pip: command not found [ec2-user@ip-172-16-30-122 ~]$ pip3 -V pip 9.0.3 from /usr/lib/python3.7/site-packages (python 3.7)
Pythonは3.7.9がインストールされた。
pipは9.0.3がインストールされたらしい。ただし、pip3として認識されているようなので、Ansibleをインストールする際は、pip3を使うことにする。
pipとは?
先ほども少し触れたが、pipはPythonのパッケージ管理システムである。
Python公式パッケージのインストールやアンインストールができる。
Python公式パッケージは、Pypl(Python Package Index)で管理されている。
pipは、Rubyで言うところのgemで、PyplがRubyGemsと言ったところか。
少し調べてみたところ、Python2系とPython3系が同居している場合は、pipは2系、pip3が3系に紐づくようだ。(そして、pip3はPython3をインストールすると勝手に入るが、pipの方は意図して入れないと入らないらしい)
紐づけを変える方法もありそうだったが、pip3が使えるならそれでいいw(ホントは良くないけど、先に進みたいw)
Ansibleをインストールする
先ほど書いた通り、pipは使えないので、pip3を使ってAnsibleをインストールする
pip3 install ansible
やや!エラーが出た
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-bk2kzpkf/cryptography/
DEBUG ASSISTANCEのメッセージを見てみると、pipをアップデートしなさいよ、と書いてあるようだ。
Complete output from command python setup.py egg_info: =============================DEBUG ASSISTANCE========================== If you are seeing an error here please try the following to successfully install cryptography: Upgrade to the latest pip and try again. This will fix errors for most users. See: https://pip.pypa.io/en/stable/installing/#upgrading-pip =============================DEBUG ASSISTANCE========================== Traceback (most recent call last): File "<string>", line 1, in <module> File "/tmp/pip-build-bk2kzpkf/cryptography/setup.py", line 14, in <module> from setuptools_rust import RustExtension ModuleNotFoundError: No module named 'setuptools_rust'
素直に指示に従って、記載のURLを見に行く
アップデートしたいのはpip3なので、pip3に対してアップデートさせる
[ec2-user@ip-172-16-30-122 ~]$ sudo pip3 install -U pip === 省略 === Installing collected packages: pip Found existing installation: pip 9.0.3 Uninstalling pip-9.0.3: Successfully uninstalled pip-9.0.3 Successfully installed pip-21.0.1
pipが21.0.1まで上がった
[ec2-user@ip-172-16-30-122 ~]$ pip3 install ansible -bash: /usr/bin/pip3: No such file or directory [ec2-user@ip-172-16-30-122 ~]$ pip3 -V -bash: /usr/bin/pip3: No such file or directory
む。なぜpip3がないと言われるのだ。さっきまであったはずなのに。
キャッシュをクリアしてみる
[ec2-user@ip-172-16-30-122 ~]$ hash -r [ec2-user@ip-172-16-30-122 ~]$ pip3 -V pip 21.0.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
無事にpip3が復活した
気を取り直して、再度Ansibleをインストール
[ec2-user@ip-172-16-30-122 ~]$ pip3 install ansible === 省略 === Successfully installed MarkupSafe-1.1.1 PyYAML-5.4.1 ansible-3.2.0 ansible-base-2.10.8 cffi-1.14.5 cryptography-3.4.7 jinja2-2.11.3 packaging-20.9 pycparser-2.20 pyparsing-2.4.7
今度は上手くいったらしい
Ansibleのバージョンを確認する
[ec2-user@ip-172-16-30-122 ~]$ ansible --version ansible 2.10.8 config file = None configured module search path = ['/home/ec2-user/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /home/ec2-user/.local/lib/python3.7/site-packages/ansible executable location = /home/ec2-user/.local/bin/ansible python version = 3.7.9 (default, Feb 18 2021, 03:10:35) [GCC 7.3.1 20180712 (Red Hat 7.3.1-12)]
OK