いままで、このブログには自分が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の設定を自動化してみる。

実施手順

# 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

    - name: install utilities
      pacman: name=curl,wget,openssh

    - name: install login manager
      pacman: name=slim,archlinux-themes-slim,slim-themes

    - name: window manager
      pacman: name=xmonad,xmonad-contrib,dmenu,xmobar,xorg-xev

    - 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

    - name: Install multimedia
      pacman: name=flashplugin,alsa-utils

まとめ

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

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

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

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

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

BookMarks

公式Doc

日本語訳

チュートリアル

ローカルで利用する。

Ansibleの哲学・アーキ。

ansible bestpractice.

その他