Ansibleの操作

Ansibleをインストールし環境準備が出来たところで簡単に利用してみます。

Ansibleは実際にPlaybookを実行したい環境がローカルでない限りは対象サーバに対してはSSHで接続を行います。 事前に対象サーバと実行環境間でSSH接続ができるよう事前準備を行っておく必要があります。 まず対象サーバの登録と疎通を確認してみます。


実行対象の定義


ansibleを利用して構築する対象サーバ情報を書いていきます。

# vim hosts/develop
[develop]
192.168.151.1

“[]”にてグループ名を定義、直後にグループに所属する疎通したいサーバを記述します。
ssh通信を利用するので、一回sshで接続し対象サーバをknownhostsに登録しておく必要があります。

ansibleの疎通コマンドを実行。

# ansible -i /etc/ansible/hosts develop -u {ssh_user} -m ping -k -c paramiko

paramikoとはPythonのSSHライブラリになります。
デフォルトで利用されるためOpenSSHを利用したい場合は別途定義する必要があります。
「-u」指定されるユーザーを省略した場合Ansible実行ユーザーでログインしようとします。
疎通に成功すると下記のようなメッセージが表示されます。

SSH password:********
192.168.151.1 | success >> {
    "changed": false,
    "ping": "pong"
}

これでansibleの実行環境から構築対象サーバへansibleを利用して繋がるようになりました
以上のことからansibleは対象サーバに対してsshで接続し、スクリプトを実行するツールという事が分かります。


プレイブックの実行


ansible実行環境、構築対象サーバの用意、疎通準備も行えたので
簡単なプレイブックを作成しプロビジョニングを実行してみます。

例としてApacheをインストールする簡単なプレイブックを作成してみます
ansibleのプロジェクトフォルダにてプレイブックを作成していきましょう.

# vim apache.yml
- hosts: develop
  tasks:
    - name: install apache
      yum: name=httpd state=present

上記の例では developと定義したグループホストに対して、httpdをインストールするというプレイブックになります。

構文チェック

# ansible-playbook -i /etc/ansible/hosts apache.yml --syntax-check
playbook: httpd.yml

エラーが出力されなければ構文上問題ないので、実行してみます。
※例では対象サーバにはrootでsshしています。

ansibleのプレイブック実行コマンドに引数-iで対象サーバが記載されたhosts定義ファイルを指定し、
次に作成したプレイブック、対象サーバに接続するsshユーザー情報などを指定しています。

# ansible-playbook -i /etc/ansible/hosts apache.yml -u root -k -c paramiko
SSH password:********

PLAY [test] *******************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.151.1]
TASK: [install apache] ********************************************************
changed: [192.168.151.1]
PLAY RECAP ********************************************************************
192.168.151.1               : ok=2    changed=1    unreachable=0    failed=0

成功すると対象サーバにhttpdがインストールされているでしょう。
ansibleのチュートリアルは以上です。

簡単ですが、ある程度利用の流れが見えたと思います。
構築対象サーバ、構築指示プレイブックスクリプト、
それらを組み合わせてansibleを実行する事でプロビジョニングを行います。

results matching ""

    No results matching ""