31歳ほぼ未経験からIT業界へ転職。備忘録と勉強になればと思いサイトを立ち上げました。

IT技術のあれこれ

Ansible

VirtualBox上のCentOSにAnsibleをインストール

投稿日:

Ansibleを目にする機会が増えてきたので、VirtualBox上のCentOSにAnsibleをインストールして、学習してみようと思い環境を構築しました。

いくつかハマったところもあるので、備忘録として残していきます。

 

VirtualBox上のCentOSにAnsibleをインストール

 

環境

CentOS:CentOS7 ホスト名:centos701 Ansible用(192.168.11.a)
CentOS:CentOS7 ホスト名:centos702 配布用サーバ1(192.168.11.b)
CentOS:CentOS7 ホスト名:centos703 配布用サーバ2(192.168.11.c)
※IPの末尾をa、b、cにしてます。

VirtualBoxのネットワークは、「ブリッジアダプター」にして、外部ネットワークと内部のサーバ同士でssh接続できるようにしてあります。

Ansibleでは、ssh接続できる必要があるようです。

 

ホスト名の設定

まずはホスト名の設定をします。

hostnamectl set-hostname centos701
hostnamectl set-hostname centos702
hostnamectl set-hostname centos703

設定をした後は、サーバを再起動します。

shutdown -r now

 

Ansibleのインストール

ansibleをインストールしようとしたところ、「パッケージ ansible は利用できません。」のエラーメッセージが出力されました。

yum install ansible

 

epel-releaseをインストールする必要があるので、先にインストールします。

epel-releaseはサポート対象外となるため、商業用でインストールする際に検討する必要があるのかなと思いました。

 

epel-releaseをインストールします。

yum install epel-release

 

epel-releaseのインストールが完了したので、再度ansibleをインストールしてみます。

yum install ansible

 

今後は上手くインストールできたので、バージョン確認してみます。

ansible --version

 

バージョン情報が表示されました。

[root@centos701 ~]# ansible --version
ansible 2.9.27
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/site-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.5 (default, Jun 28 2022, 15:30:04) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
[root@centos701 ~]#

 

ssh認証の設定

SSHによる認証が必要なため、「ssh-keygen」で鍵を作成して、copy-idで配布します。

ssh-keygen -t rsa

 

ssh-copy-idで配布します。

ssh-copy-id root@192.168.11.b
ssh-copy-id root@192.168.11.c

 

ansibleのhostsファイルを作成します。

mkdir ansible
cd ansible
mkdir inventory
cd inventory
vi hosts

 

ファイルの中身を配布先のIPにします。

[targets]
192.168.11.b
192.168.11.c

 

まずは、ansibleコマンドでpingを実行して疎通できるか確認します。

コマンドは以下のようになっているみたいです。
※詳細については調査中です。

ansible [pattern] -m [module] -a [module options]

 

まずは、1台目のサーバに実行してみます。

ansible 192.168.11.15 -m ping

 

エラーメッセージが出力されました。

hostがちがっているというようなメッセージが出力されました。

[WARNING]: provided hosts list is empty, only localhost is available. Note that
the implicit localhost does not match 'all'
[WARNING]: Could not match supplied host pattern, ignoring: 192.168.11.15

 

ここでかなりつまづいたのですが、実行時に読み込むファイルを指定している場所があり、そこの参照が間違っているようでした。

/etc/ansible/配下に色々設定されている「ansible.cfg」がありました。

catで中身を見てみると、「#inventory = /etc/ansible/hosts」の記述があり、hostsファイルを参照しにいってないように見えました。

[defaults]

# some basic default values...

#inventory = /etc/ansible/hosts
#library = /usr/share/my_modules/
#module_utils = /usr/share/my_module_utils/
#remote_tmp = ~/.ansible/tmp
#local_tmp = ~/.ansible/tmp
#plugin_filters_cfg = /etc/ansible/plugin_filters.yml
#forks = 5
#poll_interval = 15
#sudo_user = root
#ask_sudo_pass = True
#ask_pass = True
#transport = smart
#remote_port = 22
#module_lang = C
#module_set_locale = False

 

hostsファイルの参照先を作成したhostsファイルを参照しにいくように修正してみました。

#inventory = /etc/ansible/hosts
inventory = /root/ansible/inventory/hosts
#library = /usr/share/my_modules/

 

hostsの参照先を変更して、再度pingを実行してみます。

今度は「SUCCESS」が帰ってきて、成功したようです。

root@centos701 ansible]# ansible 192.168.11.b -m ping
192.168.11.15 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
[root@centos701 ansible]#

 

 

 

-Ansible

Copyright© IT技術のあれこれ , 2024 AllRights Reserved.