Ansible事始め

前提

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のページが表示されるはず。
それで正常完了。

[PR] おすすめの本
この記事を書いた人
Nな人(えぬなひと)。
Nは本名から取っています。
Laravelが大好きなPHPerで、WEBを作るときはLaravelを技術スタックに絶対推すマン。
PHP、Pythonと、昔はperlを書いていたP言語エンジニア。
最近はNimを書いたりしています。