作成日:2021/12/10 更新日:2022/01/02

概要

ansibleのインストール方法を解説します。

動作確認環境

  • コントロールノード(ansibleコマンドを実行する側):centos8
  • ターゲットノード(コントロールノードから処理を実行される側):centos8

前提

  • ansibleが利用するpythonのメジャーバージョン(2.x or 3.x)がターゲットノードでも一致していること
  • コントロールノードからターゲットノードへ公開鍵認証でssh接続可能な状態であること

    • ユーザ:opc
    • サーバIP:138.3.220.137
    • 秘密鍵:id_rsa

である場合以下のコマンドでターゲットノードに接続できる状態である必要があります。

ssh opc@138.3.220.137 -i id_rsa

ansibleのインストール(コントロールノードで実行)

#yumでOSパッケージからインストール
sudo yum install ansible
#ansibleコマンドが存在しているか確認
ansible --version

稼働確認1

pingモジュールで「127.0.0.1」のIPのサーバへ「opc」というユーザで接続できるか確認確認(ssh接続ができないとpingコマンドが疎通していてもエラーになる)

ansible 127.0.0.1 -i hosts  -u opc -m ping
実行ログ
$ ansible 127.0.0.1  -u opc -m ping
[WARNING]: Unable to parse /home/opc/hosts as an inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available
127.0.0.1 | SUCCESS => {
    "changed": false,
    "ping": "pong"

稼働確認2

カレントディレクトリに「0_HelloWorld.yml」「hosts」「id_rsa」の3つのファイルをおき、以下を実行する。

  • 0_HelloWorld.yml:ansibleで処理したい内容を記述したスクリプトファイル(プレイブックと呼ばれる)。以下の内容は「Hello world!」というメッセージを出すだけのもの
  • hosts:はインベントリと呼ばれるノードの情報やパラメータを定義するもの
  • id_rsa:ターゲットノードの秘密鍵。※id_rsaはパーミッションを「600」(他ユーザが参照、更新不可)にすること
ansible-playbook -i hosts  --private-key="./id_rsa" 0_HelloWorld.yml
関連ファイル
├── 0_HelloWorld.yml
├── hosts
├── id_rsa
0_HelloWorld.yml
- hosts: servers
  remote_user: opc
  tasks:
    - name: Test ansible-playbook
      debug: msg="Hello world!"
hosts
[servers]
127.0.0.1
id_rsa
-----BEGIN RSA PRIVATE KEY-----
<<<サーバの秘密鍵情報>>>
-----END RSA PRIVATE KEY-----
実行ログ
[opc@instance-20211210-1113 ansible]$ ansible-playbook -i hosts  --private-key="./id_rsa" 0_HelloWorld.yml

PLAY [servers] ************************************************************************************************************************************************************

TASK [Gathering Facts] ****************************************************************************************************************************************************
[DEPRECATION WARNING]: Distribution centos 8.5.2111 on host localhost should use /usr/libexec/platform-python, but is using /usr/bin/python for backward compatibility
with prior Ansible releases. A future Ansible release will default to using the discovered platform python for this host. See
https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information. This feature will be removed in version 2.12. Deprecation
warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.
ok: [localhost]

TASK [Test ansible-playbook] **********************************************************************************************************************************************
ok: [localhost] => {
    "msg": "Hello world!"
}

PLAY RECAP ****************************************************************************************************************************************************************
localhost                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

[参考]yumのインストールログ

[opc@instance-20211210-1113 ~]$ sudo yum install ansible
Failed loading plugin "osmsplugin": No module named 'librepo'
CentOS Linux 8 - AppStream                                                                                                                 5.4 MB/s | 8.2 MB     00:01
CentOS Linux 8 - BaseOS                                                                                                                    4.9 MB/s | 3.5 MB     00:00
CentOS Linux 8 - Extras                                                                                                                     20 kB/s |  10 kB     00:00
Extra Packages for Enterprise Linux 8 - x86_64                                                                                             2.0 MB/s |  11 MB     00:05
Extra Packages for Enterprise Linux Modular 8 - x86_64                                                                                     273 kB/s | 980 kB     00:03
Dependencies resolved.
===========================================================================================================================================================================
 Package                                       Architecture                        Version                                    Repository                              Size
===========================================================================================================================================================================
Installing:
 ansible                                       noarch                              2.9.27-1.el8                               epel                                    17 M
Installing dependencies:
 libsodium                                     x86_64                              1.0.18-2.el8                               epel                                   162 k
 python3-bcrypt                                x86_64                              3.1.6-2.el8.1                              epel                                    44 k
 python3-jmespath                              noarch                              0.9.0-11.el8                               appstream                               45 k
 python3-pyasn1                                noarch                              0.3.7-6.el8                                appstream                              126 k
 python3-pynacl                                x86_64                              1.3.0-5.el8                                epel                                   100 k
 sshpass                                       x86_64                              1.06-9.el8                                 epel                                    27 k
Installing weak dependencies:
 python3-paramiko                              noarch                              2.4.3-1.el8                                epel                                   289 k

Transaction Summary
===========================================================================================================================================================================
Install  8 Packages

Total download size: 18 M
Installed size: 99 M
Is this ok [y/N]: y
Downloading Packages:
(1/8): python3-jmespath-0.9.0-11.el8.noarch.rpm                                                                                            764 kB/s |  45 kB     00:00
(2/8): python3-pyasn1-0.3.7-6.el8.noarch.rpm                                                                                               1.5 MB/s | 126 kB     00:00
(3/8): python3-bcrypt-3.1.6-2.el8.1.x86_64.rpm                                                                                              25 kB/s |  44 kB     00:01
(4/8): libsodium-1.0.18-2.el8.x86_64.rpm                                                                                                    78 kB/s | 162 kB     00:02
(5/8): python3-pynacl-1.3.0-5.el8.x86_64.rpm                                                                                               282 kB/s | 100 kB     00:00
(6/8): python3-paramiko-2.4.3-1.el8.noarch.rpm                                                                                             231 kB/s | 289 kB     00:01
(7/8): sshpass-1.06-9.el8.x86_64.rpm                                                                                                        46 kB/s |  27 kB     00:00
(8/8): ansible-2.9.27-1.el8.noarch.rpm                                                                                                     2.9 MB/s |  17 MB     00:05
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                      2.5 MB/s |  18 MB     00:06
Extra Packages for Enterprise Linux 8 - x86_64                                                                                             1.6 MB/s | 1.6 kB     00:00
Importing GPG key 0x2F86D6A1:
 Userid     : "Fedora EPEL (8) <epel@fedoraproject.org>"
 Fingerprint: 94E2 79EB 8D8F 25B2 1810 ADF1 21EA 45AB 2F86 D6A1
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
Is this ok [y/N]: y
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                   1/1
  Installing       : sshpass-1.06-9.el8.x86_64                                                                                                                         1/8
  Installing       : python3-bcrypt-3.1.6-2.el8.1.x86_64                                                                                                               2/8
  Installing       : libsodium-1.0.18-2.el8.x86_64                                                                                                                     3/8
  Installing       : python3-pynacl-1.3.0-5.el8.x86_64                                                                                                                 4/8
  Installing       : python3-pyasn1-0.3.7-6.el8.noarch                                                                                                                 5/8
  Installing       : python3-paramiko-2.4.3-1.el8.noarch                                                                                                               6/8
  Installing       : python3-jmespath-0.9.0-11.el8.noarch                                                                                                              7/8
  Installing       : ansible-2.9.27-1.el8.noarch                                                                                                                       8/8
  Running scriptlet: ansible-2.9.27-1.el8.noarch                                                                                                                       8/8
  Verifying        : python3-jmespath-0.9.0-11.el8.noarch                                                                                                              1/8
  Verifying        : python3-pyasn1-0.3.7-6.el8.noarch                                                                                                                 2/8
  Verifying        : ansible-2.9.27-1.el8.noarch                                                                                                                       3/8
  Verifying        : libsodium-1.0.18-2.el8.x86_64                                                                                                                     4/8
  Verifying        : python3-bcrypt-3.1.6-2.el8.1.x86_64                                                                                                               5/8
  Verifying        : python3-paramiko-2.4.3-1.el8.noarch                                                                                                               6/8
  Verifying        : python3-pynacl-1.3.0-5.el8.x86_64                                                                                                                 7/8
  Verifying        : sshpass-1.06-9.el8.x86_64                                                                                                                         8/8

Installed:
  ansible-2.9.27-1.el8.noarch               libsodium-1.0.18-2.el8.x86_64           python3-bcrypt-3.1.6-2.el8.1.x86_64       python3-jmespath-0.9.0-11.el8.noarch
  python3-paramiko-2.4.3-1.el8.noarch       python3-pyasn1-0.3.7-6.el8.noarch       python3-pynacl-1.3.0-5.el8.x86_64         sshpass-1.06-9.el8.x86_64

Complete!

[opc@instance-20211210-1113 ~]$ ansible --version
ansible 2.9.27
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/opc/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.6/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.6.8 (default, Sep 10 2021, 09:13:53) [GCC 8.5.0 20210514 (Red Hat 8.5.0-3)]
★ORACLE案件承ります