Ansibleを使用したコマンドのインストール

PHPプログラマーの松永です。

今回は、Ansibleを使用したコマンドのインストールをご紹介します。

Ansibleの導入の参考になれば幸いです。

目次

Ansibleとは

公式サイト: Ansible is Simple IT Automation

多数のサーバに対して、設定ファイルに記載した構成でサーバー構築を行うことができる構成管理ツールです。
設定ファイルはPlaybookと呼ばれ、YAML形式で記述します。

社内エンジニアのローカル環境構築にAnsibleを導入することで、 サーバー構成が統一されたローカルサーバーがすぐにでき、環境構築の時間を少なくすることができます。

Ansible実行環境

Ansibleを実行する環境は大きく2つあります。

  • Ansibleサーバーから構築サーバーへ実行
  • 構築サーバー内(Localhost)から実行

どちらでも実行することができますので、環境に合わせて選択することができます。

Ansibleサーバーから構築サーバーへ実行

こちらの場合は

  • 自社環境
  • テスト環境
  • ステージング環境
  • 本番環境

など、大規模なサーバー構築に適しています。

構築サーバー内(Localhost)から実行

こちらの場合は

  • ローカルサーバー環境
  • 自社環境

など、小規模なサーバー構築に適しています。

インストール

今回は「構築サーバー内(Localhost)から実行」の方法のご説明をいたします。

環境

AWS EC2(Amazon Linux)を使用します。

pythonバージョン確認

Pythonのバージョンが2.6以下の場合、エラーになりますので、2.6以上になるように再インストールしてください。

今回は2.7.12がインストール済みでした。

python -V
Python 2.7.12

pipバージョン確認

pip -V
pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)

pipのアップグレード

pipが古い場合、エラーになります。

エラーになった場合は、pipのアップグレードを行ってみてください。

エラーにならない場合は、アップデートを行う必要はありませんので、「ansibleのインストール」まで読み飛ばしてください。

ルートユーザーへ変更

sudo su -

pipのアップグレード

pip install --upgrade pip

pipのパスの確認

which pip
/usr/local/bin/pip

pipのパスを設定

vim .bash_profile
#PATH=$PATH:$HOME/bin
PATH=$PATH:$HOME/bin:/usr/local/bin/pip

.bash_profileの再読込

source .bash_profile

Ansibleのインストール

pip install ansible

Successfullyが表示されるとインストール成功です。

Successfully installed ansible-2.4.2.0 .........

Ansibleバージョン確認

ansible --version
ansible 2.4.2.0

ここまででAnsibleを実行する環境が整いました。

続いてPlaybookを作成いたします。

Playbookの作成

カレントディレクトリはユーザーのホームディレクトリを想定しております。

cd ~/

ansibleディレクトリの作成

mkdir ~/ansible

hostsファイルの作成

cd ansible
touch hosts

hostsに下記を記述いたします。

[ajike-developersblog-andible]
localhost

YAMLファイルの作成

先程追加したhosts内に記述したajike-developersblog-andibleと追加するYAMLファイルのファイル名を一致させる必要があります。

touch ajike-developersblog-andible.yml

ajike-developersblog-andible.ymlに下記を記述いたします。

- name: アジケエンジニアブログAnsible
  hosts: ajike-developersblog-andible
    connection: local
      roles:
          - execute

rolesディレクトリの作成

mkdir roles
cd roles
rolesディレクトリ配下にmain.ymlの作成
pwd
/home/ec2-user/ansible/roles

先程追加したajike-developersblog-andible.yml内に記述したexecuteと追加するディレクトリ名を一致させる必要があります。

※taskディレクトリ、main.ymlに関してはユニークにする必要はありません。

mkdir execute
cd execute
mkdir tasks
cd tasks
touch main.yml
pwd
/home/ec2-user/ansible/roles/execute/tasks

main.ymlに下記を記述いたします。

# ===============================================
# slコマンドのインストール
# ===============================================
- name: slコマンドのインストール
  become: true
    yum:
        name: ""
            state: installed
              with_items:
                  - sl

実行

作成したansibleディレクトリに移動します。

cd ~/ansible

実行するYAMLはajike-developersblog-andible.ymlを指定します。

ansible-playbook -i hosts ajike-developersblog-andible.yml -v

実行結果

[ec2-user@ip-172-30-1-132 ansible]$ ansible-playbook -i hosts ajike-developersblog-andible.yml -v
No config file found; using defaults

PLAY [アジケエンジニアブログAnsible] ******************************************************************************************************************************************************************************************************************

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

TASK [execute : slコマンドのインストール] *************************************************************************************************************************************************************************************************************
changed: [localhost] => (item=[u'sl']) => {"changed": true, "item": ["sl"], "msg": "", "rc": 0, "results": ["Loaded plugins: priorities, update-motd, upgrade-helper\nResolving Dependencies\n--> Running transaction check\n---> Package sl.x86_64 0:5.02-1.6.amzn1 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package     Arch            Version                   Repository          Size\n================================================================================\nInstalling:\n sl          x86_64          5.02-1.6.amzn1            amzn-main           13 k\n\nTransaction Summary\n================================================================================\nInstall  1 Package\n\nTotal download size: 13 k\nInstalled size: 15 k\nDownloading packages:\nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Installing : sl-5.02-1.6.amzn1.x86_64                                     1/1 \n  Verifying  : sl-5.02-1.6.amzn1.x86_64                                     1/1 \n\nInstalled:\n  sl.x86_64 0:5.02-1.6.amzn1                                                    \n\nComplete!\n"]}

PLAY RECAP *********************************************************************************************************************************************************************************************************************************
localhost                  : ok=2    changed=1    unreachable=0    failed=0

確認

今回はslコマンドをインストールしたのでslコマンドを実行し、確認します。

sl

SLが表示されていれば成功です!

まとめ

今回は1つのみのインストールでしたが、サーバー時刻設定、yumよるLAMP環境構築、各ミドルウェアのini設定など、サーバーを1つ構築するだけでも多くのコマンドを使用します。

その多くのコマンドがAnsibleを使用することでワンライナーで完結できるというのはとても便利だと感じています。

今回の記事を通じてAnsibleを導入するお手伝いができれば幸いです。

Ansibleを使用した構成管理に着手してみては如何でしょうか。

この記事を書いた人 matsunaga 自宅に音楽スタジオがあるとこを夢見るPHPエンジニア
TOP