5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Ansible入門① インストールからansible-playbookコマンドの実行

Last updated at Posted at 2020-08-11

#Ansibleの良いところ

  • 構成を管理する対象のサーバー側にソフトウェアのインストールが不要でエージェントレス
  • 設定ファイルがYAMLでの表記で、可読性が非常にメンテナンスコストも低い
  • YAMLは学習コストが非常に低い

YAML

#キーワード
厳密な説明ではないですが、ざっくりイメージを掴むために最低限必要なものだけ列挙しています。
###ノード
サーバーやクライアント等のことです。
###インベントリ
INI形式もしくはYAML形式でターゲットノード(構成を管理する対象のサーバー)の接続情報
1つまたは複数のノードの管理に利用し、グループ化することも可能です。
###モジュール
Ansibleがリモートマシンに送信する作業の単位です。
標準で提供されているモジュールがあり、基本はそのモジュールを組み合わせで構成管理を行います。
Linuxのコマンドに近いイメージのモジュールもたくさんあります。
独自でモジュールを作成することも可能です。
###タスク
実行するモジュールや、モジュール実行時に必要な引数などを纏めた処理の定義情報または処理そのものをさします。
###プレイブック
タスクを纏めたものです。

#検証環境(Ansibleのインストール先のサーバー)

CentOS Linux release 7.8.2003 (Core)

#ansible.cfg
Ansibleそのものの設定ファイルで、yumでインストールした場合は、
/etc/ansible/ansible.cfgが自動で作成される
そのため、手っ取り早く動作を検証したい場合は、yumでのインストールをお勧めします。

#インストール
下記の方法が最も簡単ですが、その他にもpipを利用したインストル方法やソースからのインストール方法等があります。
Ansible のインストール

epel リポジトリを追加
# yum install epel-release
インストール
# yum install ansible

#バージョン確認

[root@localhost ansible]# ansible --version
ansible 2.9.10
  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 = /bin/ansible
  python version = 2.7.5 (default, Apr  2 2020, 13:16:51) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]

#鍵認証用の設定
Ansibleでの管理対象のサーバーへ鍵認証の設定を事前に行っておく必要があります。
接続元サーバー(今回の場合はAnsibleをインストールするサーバー)で鍵を作成します。
作成したサーバーの公開鍵を管理対象のサーバーに設定します。
ssh公開鍵認証を実装する

#ansibleコマンド
ansible -i インベントリファイル -m 利用するモジュール

[root@localhost ansible]# cat /etc/ansible/test_inventory
[test_servers]
192.168.11.21

[root@localhost ansible]# ansible -i test_inventory test_servers -m ping
192.168.11.21 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
}

#ansible-playbookコマンド
ansible-playbook -i インベントリファイル プレイブックファイル

#/opt/tmpディレクトリの作成と/etc/ansible/test_inventoryファイルのコピーを実施する
[root@localhost ansible]# cat test_playbook.yml
- hosts: test_servers
  tasks:
  - name: create direvtory
    file:
       path: /opt/tmp
       state: directory
       owner: ansible
       mode: 0755

  - name: copy file
    copy:
       src: /etc/ansible/test_inventory
       dest: /home/ansible/tmp/test_inventory
       owner: ansible
       mode: 0644


#Taskが成功し、ディレクトリの作成とファイルのコピーが成功しているので、ok=3    changed=2となっている 
[root@localhost ansible]# ansible-playbook -i ./test_inventory ./test_playbook.yml

PLAY [test_servers] ***************************************************************************************************************************

TASK [Gathering Facts] ************************************************************************************************************************
ok: [192.168.11.21]

TASK [create direvtory] ***********************************************************************************************************************
changed: [192.168.11.21]

TASK [copy file] ******************************************************************************************************************************
changed: [192.168.11.21]

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


#test_playbook.ymlを連続して実行した場合は、状態に変化ないのでchanged=0となっている
[root@localhost ansible]# ansible-playbook -i ./test_inventory ./test_playbook.yml

PLAY [test_servers] ***************************************************************************************************************************

TASK [Gathering Facts] ************************************************************************************************************************
ok: [192.168.11.21]

TASK [create direvtory] ***********************************************************************************************************************
ok: [192.168.11.21]

TASK [copy file] ******************************************************************************************************************************
ok: [192.168.11.21]

PLAY RECAP ************************************************************************************************************************************
192.168.11.21              : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
5
6
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
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?