Ansibleを使ってVagrant上にmssqlserverを構築する

Ansibleを使ってVagrant上にmssqlserverを構築する。
基本、ここのサイトをもとに勉強していますが、GuestAdditionsの競合回避のため、CentoOSは最新の7.8を使いました。
勉強もとのサイトのサンプルコードと異なる箇所のみ記載していきます。
大きな違いは、サンプルコードは、python3.7をインストールしていますが、CentOS7.8ではすでにインストール済であることです。

事前準備

プラグインのインストール

vagrant-vbguestは、ホストOSとゲストOSのGuestAdditionsのバージョンを自動で合わせてくれるVagrantのプラグインです。

ホストとゲスト間でフォルダー共有するには「Guest Additions」が必要です。

今回は、競合しないよう最新のViertualBoxとCentoOSを使いますが一応入れておく。

$ vagrant plugin install vagrant-vbguest
※不要な場合はVagrantfileでconfig.vbguest.auto_update = falseすること。

今回は、CentOSの最新版

  • config.vm.box = "bento/centos-7"

  • config.vm.box_version = "202006.16.0"

を使うことでhost側と差異がでないようにした。

(vagrant cloud centos7)

vagrant up後のバージョン確認
$ cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)

 

ansible構成作成

Vagrantファイル作成

# ansibleインストール用shell
$ansible_install = < /dev/null 2>&1; then
    yum install -y python3
    pip3 install virtualenv  
    # vagrantユーザとしてvirtualenvとansibleをインストール
    su -c "source /vagrant/provision/bash/install_ansible.sh" vagrant
  fi
SHELL

Vagrant.configure("2") do |config|
  config.vm.box = "bento/centos-7"
  config.vm.box_version = "202006.16.0"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.provider "virtualbox" do |vm|
    # メモリを設定
    vm.memory = 8184
    # Linked Cloneでbase coreを作成し、nodeを作っていく。nodeが増えると容量節約となる(今回はあまり意味ない)
    vm.linked_clone = true
    vm.customize [ "modifyvm", :id, "--cpus", "4", "--ioapic", "on"]
    # vbguestは共有フォルダを作るために必要
    config.vbguest.auto_update = true
  end
  # ansible vaultのためにパーミッションを指定
  config.vm.synced_folder "./provision", "/provision", id: "ansible", owner: "vagrant", group: "vagrant", mount_options: ["dmode=775,fmode=664"]
  # ansibleをインストール
  config.vm.provision "shell", inline: $ansible_install
  # ansibleを実行
  config.vm.provision "shell", inline: &lt&lt-SHELL
    # timezoneを日本に変更
    timedatectl set-timezone Asia/Tokyo
    # localeを日本に変更
    localectl set-locale LANG=ja_JP.UTF-8
    # virtualenv起動(install_ansible.shで実行しているので不要?)
    source /home/vagrant/venv/bin/activate
    # provision 実行→ここが難しい。
    DEFAULT_VAULT_PASSWORD_FILE=ANSIBLE_CONFIG=/provision/.ansible.cfg ansible-playbook -i /provision/playbooks/inventory/hosts /provision/playbooks/play.yml -c local -v --vault-password-file /provision/playbooks/.passwd
  SHELL
end

/vagrant/provision/bash/install_ansible.sh

このスクリプトは、以下を実行する。

  • virtualenvのインストールとvenvの生成

  • pip でansibleのインストール


#!/bin/bash
# $ curl -kL "https://bootstrap.pypa.io/get-pip.py" | sudo /usr/bin/python3
$ cd $HOME
$ /usr/local/bin/virtualenv venv
$ source $HOME/venv/bin/activate
$ pip install ansible
$ ansible --version
これでCentOS7.8でVagrantUPできます。

参考;


コメント

このブログの人気の投稿

ソリューション構成ごとにconfigファイルを作成する

C++の古いプロジェクトのビルドでerror MIDL2311 : statements outside library block are illegal in mktyplib compatability mode

web.config debug/releaseの内容を変換構文を使って切り替える