1
0

More than 1 year has passed since last update.

vagrant で postgresql+jdk の環境を準備する

Posted at

Vagrantfile

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "centos/stream8"
  config.vm.network "private_network", ip: "192.168.56.10"
  config.vm.synced_folder ".", "/vagrant", type:"virtualbox"
  config.vm.provider "virtualbox" do |vb|
    #   vb.gui = true
    vb.memory = "1024"
  end
  #if Vagrant.has_plugin?("vagrant-vbguest")
  #  config.vbguest.auto_update = false  
  #end  
  config.omnibus.chef_version = :latest
  config.vm.provision "chef_zero" do |chef|
    chef.install = false
    chef.cookbooks_path = ["chef-repo/cookbooks", "chef-repo/site-cookbooks"]
    chef.nodes_path = ["chef-repo/nodes"]
    chef.node_name = "server"
    chef.arguments = "--chef-license accept"
  end

end

ポートフォワーディングはフォワード先を考えるのが面倒くさいのでやらない。プライベートネットワークは hostonlyアダプターに設定されたネットワークアドレス内のアドレスを設定する

最近のchef がライセンス許諾必要らしいので chef.arguments = "--chef-license accept" を追加する。

レシピ postgresql

chef-repo/Berksfile

cookbook 'postgresql', '~> 10.0.1', :supermarket

Berksfile に書いたレシピを取り込む

> cd chef-repo
>  berks vendor cookbooks

インストール用レシピを作成する

> mkdir site-cookbooks
> cd site-cookbooks
> chef generate cookbook pgsql

berkshelf の postgresql を参照する

chef-repo/site-cookbooks/pgsql/metadata.rm

name 'pgsql'
maintainer 'The Authors'
maintainer_email 'you@example.com'
license 'All Rights Reserved'
description 'Installs/Configures pgsql'
long_description 'Installs/Configures pgsql'
version '0.1.0'
chef_version '>= 14.0'

depends 'postgresql'

レシピ編集

chef-repo/site-cookbooks/pgsql/recipes/default.rb

#
# Cookbook:: pgsql
# Recipe:: default
#
# Copyright:: 2022, The Authors, All Rights Reserved.

postgresql_client_install 'My PostgreSQL Client install' do
    version '10'
    action :install
end

postgresql_server_install 'My PostgreSQL Server install' do
    version '10'
    initdb_locale 'ja_JP.UTF-8'
    initdb_encoding 'UTF8'
    action [:install, :create]
end

postgresql_server_conf 'PostgreSQL Config' do
    additional_config({
        :listen_addresses => '*'
    }) 
    notifies :reload, 'service[postgresql]'
end
postgresql_access 'postgresql access' do
    access_type       'host'
    access_db         'all'
    access_user       'all'
    access_addr       '192.168.56.0/24'
    access_method     'password'
    notifies :reload, 'service[postgresql]'
end

postgresql_database 'postgresql database' do
    database          'testdb2'
    encoding          'UTF8'
    template          'template0'
    locale            'ja_JP.UTF-8'
end

postgresql_user 'postgresql user' do
    create_user       'testuser'
    password          'password'
end

service 'postgresql' do
    service_name 'postgresql-10'
    supports restart: true, status: true, reload: true, enable: true
    action [:enable, :reload]
end

レシピ jdk

デフォルトのパッケージリポジトリに openjdk があるので使う

インストール用レシピを作成する

> mkdir site-cookbooks
> cd site-cookbooks
> chef generate cookbook jdk

レシピ編集

chef-repo/site-cookbooks/jdk/recipes/default.rb

package "java-1.8.0-openjdk" do
    action [ :install, :upgrade ]
end
package "java-1.8.0-openjdk-devel" do
    action [ :install, :upgrade ]
end

*-devel がないと javac できない

レシピ その他一般

centos/stream8 とか、日本語ロケールがインストールされてないので追加する

インストール用レシピを作成する

> mkdir site-cookbooks
> cd site-cookbooks
> chef generate cookbook init

レシピ編集

chef-repo/site-cookbooks/init/recipes/default.rb

execute "install-locale-ja" do
    command "yum -y install glibc-langpack-ja"
end
execute "set-locale-ja" do
    command "localectl set-locale LANG=ja_JP.utf8"
end

run list

chef-repo/nodes/server.json

{
  "name": "server",
  "normal": {
    "tags": [

    ]
  },
 "run_list": [
    "recipe[init]",
    "recipe[pgsql]",
    "recipe[jdk]"
  ]
}

起動

vagrant up --provider virtualbox

vagrant のバージョンと vitualbox のバージョンによっては vboxguestadditions がインストールに失敗する場合があるので、その場合 kernel をアップデートしてからリロードする

> vagrant ssh
... ここから VM内
$ sudo dnf install -y wget
$ sudo dnf install -y epel-release
$ sudo dnf -y update
$ exit
... ここからホスト側
> vagrant reload --provision

その他

postgresql を使うだけ(のこりは Windowsにインストールしたものでまかなうとか) なら docker の方が簡単。springとかでも同じ。

今回は jdkでなにかビルドして動かすコンソールアプリを意図しているのでvagrantでやる。

1
0
0

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
1
0