VagrantでUbuntu 20.04にAnsibleでWineを入れるplaybook

環境

Vagrantを使って、Ubuntu 20.04の仮想環境を作ります。

> vagrant --version
Vagrant 2.3.0

Vagrantfileの作成

今回はUbuntu 20.04のボックスを使い、VirtualBoxで立ち上げます。プロビジョニングはAnsibleを使います。

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

Vagrant.configure("2") do |config|
    # Base

    config.vm.box = "ubuntu/focal64"
    config.vm.synced_folder ".", "/vagrant"

    # Provider
    config.vm.provider "virtualbox" do |vb|
        vb.name = "wine"
        vb.memory = 10240
        vb.cpus = 2
    end

    # Network
    config.vm.hostname = "wine"
    config.vm.network "private_network", ip: "192.168.56.2"

    # Setup
    config.vm.provision "ansible_local" do |ansible|
        ansible.playbook = "playbook.yml"
        ansible.install_mode = "default"
        ansible.version = "latest"
    end
end

プロビジョニング用のAnsible playbook

プロビジョニングにはAnsibleを使うため、playbook.ymlを作成します。

- hosts: default
  become: yes
  tasks:
    - name: Update apt
      apt:
        state: latest
        update_cache: yes
    - name: Setup WineHQ
      import_tasks: tasks/wine.yml

デスクトップ環境のインストール

tasks/wine.ymlに記述していきます。

まず、仮想環境を構築た際にデスクトップ環境がインストールされていなかったので、インストールしておきます。

- name: Install Desktop
  apt:
    name: ubuntu-desktop
    state: latest

Wineのインストール

続いてWineをインストールしていきます。

Wineのインストールは、下記に記載されているので、これをAnsible用に書き換えます。

Ubuntu - WineHQ Wiki

- name: Enable 32 bit architecture
  command: dpkg --add-architecture i386
- name: Download and add the repository key
  command: wget -nc -O /usr/share/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
- name: Add the repository
  command: wget -nc -P /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/focal/winehq-focal.sources
- name: Update packages
  apt:
    update_cache: yes
- name: Install WineHQ
  apt:
    name: winehq-stable
    install_recommends: yes

プロビジョニング

tasks/wine.ymlを保存したら、Vagrantでプロビジョニングします。

> vagrant provision

完了したら、vagrant sshでUbuntuに接続し、Wineがインストールされたことを確認します。

$ wine --version
wine-7.0

See Also

ln

ハードリンク・シンボリックリンクを作成する

zip

ファイルを圧縮する

cron

コマンドの定期実行

mv

ファイルやディレクトリを移動する