概要
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)]