いままで、このブログには自分が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を管理するも流行ってる?
- https://github.com/RaymiiOrg/ansible
- https://github.com/francisbesset/ansible-playbooks
- https://github.com/sheldonh/dotfiles-ansible
- https://github.com/ahtik/dotdotbox/
dotfilesと同じように、少しずつ自分の成長過程をプレーンテキストで管理して記録していく。
BookMarks
公式Doc
日本語訳
チュートリアル
- Ansible チュートリアル | Ansible Tutorial in Japanese
- 構成管理ツール Ansible について - apatheia.info
- vagrant - Ansible コトハジメ - Qiita
- 不思議の国のAnsible – 第1話 – DSS Tech Blog
- ansibleを使ってみる — そこはかとなく書くよん。
- pacman - Manage packages with pacman — Ansible Documentation
- Ansible の Playbook を使ってみる - akishin999の日記
- はじめてAnsibleを使う人が知っておきたい7つのモジュール
ローカルで利用する。
Ansibleの哲学・アーキ。
ansible bestpractice.