自分のデスクトップ環境の歴史を記録する!ansibleで設定ファイルをクラウド管理する方法

はじめに

いままで、このブログには自分がPCで実施した設定を技術メモとして書いてきた。

自宅でためした内容を会社でも実施することがかなりある。 どうせならば、ブログとして残すとともに、実行可能なスクリプトとして残したい。

ということで、構成管理ツールである、Ansibleを試すことにした。

今回は、ローカルマシン(ArchLinux)の設定を目的にして試してみます。

ちなみに、関連記事は以下。

Environment

  • Arch Linux
  • Python 3.5

Ansibleのインストール

Ansibleとは、いわゆる構成管理ツール。サーバの設定を自動化することができる。

sudo pacman -S ansible

ちなみに、以下の方法ではbuildでエラーした。なんでかな?

# pip
sudo pacman -S python-pip
sudo pip install ansible
# easy_install
sudo pacman -S python-setuptools
sudo easy_install ansible

Ansibleをつかってみる

ping

pingコマンドというのがあり、これでインストール後の疎通確認ができる。

mkdir ansible
cd ansible
echo 'localhost' > host
ansible localhost -m ping -i hosts

hostsというのはインベントリファイルという。 インベントリファイルに登録されたホストにのみansibleは実行可能。

localで利用する

公式Docによると2つの方法がある。

# コマンドラインから --connection=localを設定
ansible-playbook playbook.yml --connection=local

playbookに以下を記述

  • hosts: 127.0.0.1 connection: local

gitを入れてみる

以下の記事を参考に、gitをインストールしてみる。

---

  • hosts: localhost user: tsu-nera tasks:

    • name: “git” pacman: name=git sudo: yes

  • コマンドラインから実行。-K オブションでパスワードを聞かれる。

    ansible-playbook site.yml -i hosts -K
    

    -i hostsは環境変数を設定することで省略可能。

    export ANSIBLE_HOSTS=~/.ansible/hosts
    

    /etc/sudoersで以下の一行を追加することで、-Kも書略できる。

    # visudo
    username ALL=(ALL) NOPASSWD:ALL
    

    NTPの設定をしてみる

    実施手順

    # ntpのインストール
    pacman -S ntp
    # ntpサーバへの接続設定
    cp ntp.conf /etc/ntp.conf
    

    /etc/ntp.confの内容は以下。

    # With the default settings below, ntpd will only synchronize your clock.
    #
    # For details, see:
    # - the ntp.conf man page
    # - https://support.ntp.org/bin/view/Support/GettingStarted
    # - https://wiki.archlinux.org/index.php/Network_Time_Protocol_daemon
    

    Associate to public NTP pool servers; see https://www.pool.ntp.org/

    server -4 ntp.nict.jp server -4 ntp1.jst.mfeed.ad.jp server -4 ntp2.jst.mfeed.ad.jp server -4 ntp3.jst.mfeed.ad.jp

    Only allow read-only access from localhost

    restrict default nomodify nopeer noquery restrict 127.0.0.1 restrict ::1

    driftfile /var/lib/ntp/ntp.drift logfile /var/log/ntp.log

    こうなった。以下を参考にしたけれども、途中でわからなくなった。 すみませんが、リンク先参照ということで。

    ---
    - hosts: localhost
      sudo: yes
      tasks:
        - name: Install NTP
          pacman: name=ntp
    
    - name: Copy over the NTP configuration
      copy: src=files/ntp.conf dest=/etc/ntp.conf owner=root group=root mode=0644

    ArchLinuxの設定を書いてみる

    ArchLinuxで利用するツールをyamlファイルで管理。

    ---
    - hosts: localhost
      sudo: yes
      tasks:
        - name: install IM
          pacman: name=ibus-anthy
    
    - <span style="color: #fd971f;">name</span>: install utilities
      <span style="color: #fd971f;">pacman</span>: name=curl,wget,openssh
    
    - <span style="color: #fd971f;">name</span>: install login manager
      <span style="color: #fd971f;">pacman</span>: name=slim,archlinux-themes-slim,slim-themes
    
    - <span style="color: #fd971f;">name</span>: window manager
      <span style="color: #fd971f;">pacman</span>: name=xmonad,xmonad-contrib,dmenu,xmobar,xorg-xev
    
    - <span style="color: #fd971f;">name</span>: Install NTP
      <span style="color: #fd971f;">pacman</span>: name=ntp
    
    - <span style="color: #fd971f;">name</span>: Copy over the NTP configuration
      <span style="color: #fd971f;">copy</span>: src=files/ntp.conf dest=/etc/ntp.conf owner=root group=root mode=0644
    
    - <span style="color: #fd971f;">name</span>: Install multimedia
      <span style="color: #fd971f;">pacman</span>: name=flashplugin,alsa-utils

    まとめ

    デスクトップをプレーンテキストでバージョン管理したい。

    dotfilesで設定を管理することを、一歩おしすすめて、OS自体を管理したい。

    調べながらなので、今回の設定は時間がかかり、またpacmanくらいしかつかいこなせていない。 けれども、これからこのdotansiblesも成長させていく。 ansibleはとてもシンプルな仕様なので、覚えるのも時間がかからないはずだ。

    調べてみると、dotfilesを管理するようにansibleでdesktopを管理するも流行ってる?

    dotfilesと同じように、少しずつ自分の成長過程をプレーンテキストで管理して記録していく。