LoginSignup
25

More than 5 years have passed since last update.

Ansible を使って AWS 環境をセットアップする

Posted at

環境

Amazon Linux

Ansible 実行環境の準備

Vagrant で CentOS 6.5 環境を構築

  config.vm.box = "chef/centos-6.5"

を指定した Vagrantfile を用意して vagrant up を実行する。Vagrant の内容は割愛。

EPEL を有効にする

$ sudo rpm -ivh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/i386/epel-release-6-8.noarch.rpm

Ansible をインストール

$ sudo yum install ansible -y

EC2 インスタンスと疎通確認

$ ansible -i <hosts ファイルのパス> --private-key=<秘密鍵のパス> -u ec2-user -m ping <EC2インスタンスのIP>

<EC2インスタンスのIP> | success >> {
    "changed": false,
    "ping": "pong"
}

-i オプションで指定する hosts ファイルには、ansible を実行する対象のホスト名またはIPを指定する。
デフォルトは /etc/ansible/hosts なので、こちらにホスト名を追記している場合はこのオプションは不要となる。

MySQL をインストールする

playbook を作成する

MySQL をインストールし、初期DB・ユーザーを登録する playbook を作成してみた。
MySQL-python は mysql_db, mysql_user といったモジュールを利用するために必要だった。
各項目の詳細は参考サイトを参照すべし。

- hosts: <EC2インスタンスのIP>
  remote_user: ec2-user
  sudo: yes
  gather_facts: no
  vars:
    db:
      - name: <DB名>
        user: <DBユーザー>
        pass: <DBユーザーパスワード>
  tasks:
    - name: install mysql 
      yum: name={{ item }} state=latest
      with_items:
        - mysql
        - mysql-devel
        - mysql-server
        - MySQL-python

    - name: run mysqld
      service: name=mysqld state=running enabled=yes

    - name: create database
      mysql_db: db={{ item.name }} state=present encoding=utf8
      with_items: db

    - name: create database user
      mysql_user: name={{ item.user }} password="{{ item.pass }}" priv={{ item.name }}.*:ALL state=present
      with_items: db

playbook を実行する

$ ansible-playbook --private-key=<秘密鍵のパス> ./playbook-mysql.yml

参考サイト

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25