PHPプログラマーの松永です。
今回は、Ansibleを使用したコマンドのインストールをご紹介します。
Ansibleの導入の参考になれば幸いです。
目次
Ansibleとは
多数のサーバに対して、設定ファイルに記載した構成でサーバー構築を行うことができる構成管理ツールです。
設定ファイルは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を使用した構成管理に着手してみては如何でしょうか。