この記事の目次
chevron_right
前提
chevron_right
Vagrantの仮想環境を変更
chevron_right
Vagrantfileファイルを作成
chevron_right
サーバを立ち上げる
chevron_right
controller側の環境に接続
chevron_right
Pythonのバージョン確認
chevron_right
Ansibleのインストール
chevron_right
Ansibleがちゃんと入ったかの確認
chevron_right
target環境に鍵を押し付ける
chevron_right
Ansibleの接続情報を設定
chevron_right
Ansibleから接続できるかの確認
chevron_right
target環境に環境構築を行う準備
chevron_right
環境構築を開始
chevron_right
文法チェック
chevron_right
(たぶん)Dry run みたいなの
chevron_right
実行
chevron_right
インストール後
前提
Vagrant事始めの続きなので、
Vagrantの環境が利用できる。
Vagrantの仮想環境を変更
Ansibleで操る環境と、Ansibleで操られる環境を準備。
細かいのはVagrant事始めを読んでくだせえ。
Vagrantfile
ファイルを作成
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.define "controller" do |node|
node.vm.box = "opscode-centos7.2"
node.vm.network "private_network", ip: "192.168.33.10"
node.vm.hostname = "controller"
node.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2210
end
config.vm.define "target" do |node|
node.vm.box = "opscode-centos7.2"
node.vm.network "private_network", ip: "192.168.33.20"
node.vm.hostname = "target"
node.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2220
end
end
サーバを立ち上げる
vagrant up
controller側の環境に接続
Ansibleで操る側のサーバね
ssh vagrant@192.168.33.10
# passwordはvagrant
Pythonのバージョン確認
python -v
Ansibleを入れるサーバのPythonのバージョンは2.6以上じゃないとだめ
Ansibleのインストール
sudo yum install -y ansible
Controller側のサーバにAnsibleを入れ、そのAnsibleでtarget側のサーバをいじくり回す
Ansibleがちゃんと入ったかの確認
ansible --version
バージョンが表示されればOK
target環境に鍵を押し付ける
Controllerサーバ → targetサーバへの接続に利用する鍵を作成し、
鍵をtargetサーバに付与します
# 鍵を作る
ssh-keygen -t rsa
# 鍵を押し付ける
ssh-copy-id vagrant@192.168.33.20
# ssh接続できるか試してみる
ssh vagrant@192.168.33.20
# target環境から抜ける
logout
Ansibleの接続情報を設定
# Ansibleの構築用フォルダを作成
mkdir -p ./ansible/inventory
cd ansible
接続先情報をAnsibleにわたす
# 接続先ホストの設定
vi inventory/hosts
↓
[targets]
192.168.33.20:22
# ansibleコマンドでデフォルトの接続先情報を設定
vi ansible.cfg
↓
[defaults]
inventory = ./inventory
Ansibleから接続できるかの確認
ansible targets -m ping
↓こんなのが出たらOK
192.168.33.20 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
target環境に環境構築を行う準備
playbook.yml
を作成
Ansibleのplaybookには沿ってないけど、とりあえずこの名前で作成。
ymlの中身はLAMP環境の準備。
- hosts: targets
become: true
tasks:
- name: install httpd
yum: name=httpd state=latest
- name: apache start / enable
service: name=httpd state=started enabled=yes
- name: install mysql repository
yum: name=http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm state=present
- name: install mysql
yum: name=mysql-server state=latest
- name: mysql start / enable
service: name=mysqld state=started enabled=yes
- name: install remi-release-7.rpm
yum: name=https://rpms.remirepo.net/enterprise/remi-release-7.rpm state=present
- name: install epal
yum: name=https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm state=present
- name: install php:remi-7.4
yum: name={{item}} state=latest enablerepo=remi,remi-php74
with_items:
- php
- php-devel
- php-mbstring
- php-mysql
- php-gd
- php-process
- php-simplexml
- php-common
- php-zip
- php-intl
notify:
- httpd restart
handlers:
- name: httpd restart
service: name=httpd state=restarted
環境構築を開始
文法チェック
ansible-playbook playbook.yml --syntax-check
(たぶん)Dry run みたいなの
Dry run ... 試しに実行する的なやつ
ansible-playbook playbook.yml --ask-become-pass --check
実行
ansible-playbook playbook.yml --ask-become-pass
※接続パスワードはvagrant
インストール後
http://192.168.33.20
にアクセスしたら、CentOS × Apache
のページが表示されるはず。
それで正常完了。
この記事を書いた人
Nな人(えぬなひと)。
Nは本名から取っています。
Laravelが大好きなPHPerで、WEBを作るときはLaravelを技術スタックに絶対推すマン。
PHP、Pythonと、昔はperlを書いていたP言語エンジニア。
最近はNimを書いたりしています。
Nは本名から取っています。
Laravelが大好きなPHPerで、WEBを作るときはLaravelを技術スタックに絶対推すマン。
PHP、Pythonと、昔はperlを書いていたP言語エンジニア。
最近はNimを書いたりしています。