使用Ansible配置AWS环境
环境
亚马逊 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"
}
在执行ansible时,通过-i选项指定hosts文件,该文件用于指定要执行ansible的目标主机名或IP地址。
默认情况下,使用/etc/ansible/hosts作为主机文件,如果在该文件中追加了主机名,则不需要使用该选项。
安装 MySQL
创建一个《playbook》
我创建了一个playbook来安装MySQL并注册初始数据库和用户。
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
请参考以下网站
-
- Ansible: http://docs.ansible.com/
Ansible 入門: http://qiita.com/ArimaRyunosuke/items/1f9d840311584d8160bc
Ansible Tutorial: http://yteraoka.github.io/ansible-tutorial/