使用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/

广告
将在 10 秒后关闭
bannerAds