使用Puppet构建Rails应用环境
立即解锁
发布时间: 2025-08-20 02:35:31 阅读量: 1 订阅数: 3 

# 使用 Puppet 构建 Rails 应用环境
## 1. 启动 VM 并验证 Apache
当虚拟机(VM)启动后,我们可以在主机上打开一个网页浏览器,在地址栏中输入 `http://localhost:4567`,此时会看到一个基本的 Apache 网页,显示 “It works!”。在继续之前,我们需要将所有更改提交到 Git 仓库:
```bash
app $ git add .
app $ git commit -m "More Apache"
```
## 2. 配置 MySQL
### 2.1 创建 MySQL 模块目录
首先,我们要为 MySQL 创建一个新的模块目录:
```bash
app $ mkdir -p modules/mysql/files modules/mysql/manifests
```
### 2.2 编写 `init.pp` 文件
我们在 `modules/mysql/manifests/init.pp` 中使用与 Apache 模块相同的包 - 文件 - 服务模式来配置 MySQL,同时添加两个 `exec` 资源,用于设置 MySQL 根密码和创建 `massiveapp_production` 数据库:
```puppet
class mysql {
package {
"mysql-server":
ensure => installed,
before => File["/etc/mysql/my.cnf"]
}
file {
"/etc/mysql/my.cnf":
owner => root,
group => root,
mode => 644,
source => "puppet:///modules/mysql/my.cnf"
}
service {
"mysql":
ensure => running,
subscribe => File["/etc/mysql/my.cnf"]
}
exec {
"mysql_password":
unless => "mysqladmin -uroot -proot status",
command => "mysqladmin -uroot password root",
require => Service[mysql];
"massiveapp_db":
unless => "mysql -uroot -proot massiveapp_production",
command => "mysql -uroot -proot -e 'create database massiveapp_production'",
require => Exec["mysql_password"]
}
}
```
### 2.3 获取 `my.cnf` 文件
由于目前我们没有对 `my.cnf` 进行任何配置更改,但为了未来的扩展,我们需要添加默认的 MySQL 配置文件内容。我们可以手动安装 MySQL 包,然后复制配置文件到 Puppet 仓库:
```bash
app $ sudo apt-get install mysql-server -y # 提示时输入 'root'
app $ cp /etc/mysql/my.cnf modules/mysql/files/
```
### 2.4 加载 MySQL 模块
将 MySQL 模块添加到 `manifests/site.pp` 文件中:
```puppet
Exec {
path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
}
include apache2
include mysql
```
### 2.5 运行 Puppet 并验证
运行 Puppet 以确保 MySQL 安装、配置并启动,同时创建 `massiveapp_production` 数据库:
```bash
app $ sudo puppet apply --verbose manifests/site.pp
```
我们可以通过访问 MySQL 控制台来验证 MySQL 是否启动以及 `massiveapp_production` 数据库是否存在:
```bash
app $ mysql -uroot -proot
mysql> show databases;
```
### 2.6 提交更改
```bash
app $ git add .
app $ git commit -m "Support for MySQL"
```
## 3. 创建 MassiveApp Rails 目录树
### 3.1 创建 MassiveApp 模块目录
```bash
app $ mkdir -p modules/massiveapp/files modules/massiveapp/manifests
```
### 3.2 编写 `init.pp` 文件
在 `modules/massiveapp/manifests/init.pp` 中创建 Rails 子目录:
```puppet
class massiveapp {
file {
["/var/massiveapp/",
"/var/massiveapp/shared/",
"/var/massiveapp/shared/config/"]:
ensure => directory,
owner => vagrant,
group => vagrant,
mode => 775
}
}
```
### 3.3 包含 MassiveApp 模块
将 MassiveApp 模块添加到 `site.pp` 文件中:
```puppet
Exec {
path => "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
}
include apache2
include massiveapp
include mysql
```
### 3.4 运行 Puppet
```bash
app $ sudo puppet apply --verbose manifests/site.pp
```
### 3.5 添加 `database.yml` 文件
在 `modules/massiveapp/files/database.yml` 中添加数据库配置:
```yaml
production:
adapter: mysql2
encoding: utf8
reconnect: true
database: massiveapp_production
username: root
password: root
```
并在 `init.pp` 中添加相应的文件资源:
```puppet
class massiveapp {
file {
["/var/massiveapp/",
"/var/massiveapp/shared/",
```
0
0
复制全文
相关推荐










