はじめに
最近Ansibleを始めたので、導入からテスト実行までを簡単にまとめてみました。
実行環境
・CentOS7.5
・Python 2.7.5(デフォルト)
Ansibleの導入
用意するもの
・Ansibleを導入するサーバー(コントローラ)
・Ansibleで変更を加えるサーバー(管理ノード)
導入作業
作業は全て「コントローラー」側のサーバーで実施します。
###1.Ansibleのインストール
AnsibleコントローラーとなるサーバーにてAnsibleをインストールする。
yum install ansible
依存関係で色々とインストールされると思いますがそのまま実行。
###2.作業用のディレクトリを作成
ansibleのファイルを保管するディレクトリを作成。
今回は、ホームディレクトリの直下に作成します。
mkdir ~/ansible
###3.SSHキーの準備
コントローラと管理ノード間のSSH通信を行うため、SSHの公開鍵を作成します。
ssh-keygen
passphraseを求められますが、空エンターで進めます。
[root@localhost ansible]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
###4.SSH公開鍵を管理ノードに送付
作成したSSH公開鍵を管理ノードに送付します。
ssh-copy-id [ユーザー名@管理ノードのIP]
[root@localhost ansible]# ssh-copy-id root@192.168.242.134
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.242.134 (192.168.242.134)' can't be established.
~省略~
Are you sure you want to continue connecting (yes/no)? yes
これで導入作業は完了です。
##Playbookの作成
PlaybookとはAnsibleで実行する内容を記述したファイルです。
###1.実行ファイルの編集
作業ディレクトリの配下に、実行ファイルとなるPlaybookを作成します。
今回はyumでhttpdをインストールするPlaybookを作成するため、
viで以下の内容のファイルを記述します。
- hosts: all
tasks:
- name: install packages from yum
yum: name=httpd
##2.Playbookの実行
全ての準備が完了したので、いよいよPlaybookを実行してみます。
ansible-playbook -i 管理ノードのIP, [実行するPlaybook]
[root@localhost ansible]# ansible-playbook -i 192.168.242.134, test.yml
PLAY [all] *********************************************************************
TASK [Gathering Facts] *********************************************************
ok: [192.168.242.134]
TASK [install packages from yum] ***********************************************
changed: [192.168.242.134] ←httpdのインストールを行ったログ
PLAY RECAP *********************************************************************
192.168.242.134 : ok=2 changed=1 unreachable=0 failed=0
[root@localhost ansible]#
管理ノード側でHTTPDがインストールされている事が確認できました。
[root@test01 ~]# yum info httpd
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* extras: ftp.iij.ad.jp
* updates: ftp.iij.ad.jp
インストール済みパッケージ
名前 : httpd
アーキテクチャー : x86_64
バージョン : 2.4.6
リリース : 80.el7.centos.1
容量 : 9.4 M
リポジトリー : installed
提供元リポジトリー : updates
要約 : Apache HTTP Server
URL : http://httpd.apache.org/
ライセンス : ASL 2.0
説明 : The Apache HTTP Server is a powerful, efficient, and
: extensible web server.
[root@test01 ~]#
以上
おまけ:よく使うモジュール一覧
よく使うモジュールを簡単にまとめました。使用方法は公式を参考にしてください。
タスク名 | 内容 |
---|---|
command | 管理ノード上でコマンドを実行する |
copy | ファイルを管理ノードにコピーする |
debug | 変数をメッセージとして出力する |
linefile | ファイルの変更を行う |
sytemd | サービスの起動/停止の他に有効化/無効化も可能 |
yum | yumによるインストール |