Raspberry PiをAnsibleで管理する

コンピュータ関連のことを、出来る時に、出来ることだけ。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Raspberry Piをセットアップしていきますが、闇雲にやると訳が分からなくなるのは目に見えているので、最近よく聞くようになった構成管理ツールを試してみます。Chefの本を買って細々と読んでいたのですが、偉い人が「オレはAnsibleだと思うんだよね!」を言っていたのを小耳に挟んだので、長いものに巻かれてAnsibleをやってみます。

やり方は以下のサイトを参考にさせて頂きました。
http://yteraoka.github.io/ansible-tutorial/
http://demand-side-science.jp/blog/2014/ansible-in-wonderland-01/

本家サイトも大事ですね。
http://docs.ansible.com/intro_getting_started.html

1.Ansibleサーバを用意する
ドキュメントを見るとWindowsへはインストールできない※ようなので、VagrantでLinuxサーバを立ち上げて、そこにAnsibleをインストールします。
※Windowsマシンを管理することはできるようです。

1-1.Ansible用に新規でboxファイルをインストール
VagrantとVirtualBoxのインストールは割愛します。

Windows端末でPoworShellを起動して、適当なフォルダにboxをインストールします。このサイトから、CentOS6.5の最小構成版をインストールしました。
> vagrant box add ansible <boxファイルのURL>

インストールできたら、CentOSを起動します。
> vagrant up

起動後、TeraTermでlocalhost:2222にssh接続します。
ユーザ名とパスワードはvagrantです。

1-2.CentOSにAnsibleをインストール
AnsibleをインストールするためEPELリポジトリを追加します。

$ su -
# yum install epel-release

Package epel-release-6-8.noarch already installed and latest version
Nothing to do


今回導入したCentOSには既にEPELがインストールされていたので、already installedと出てきました。
次にansibleをインストールします。

# yum -y install ansible
~省略~
Complete!
[root@vagrant-centos65 ~]#

特に問題なくインストールできました。

1-3.管理用ユーザの作成
必須ではないですが、Ansibleはデフォルトでは現在のユーザで管理対象サーバに接続するので、Ansible用のユーザを作成しておきます。

# useradd -g users ansible
# passwd ansible
# su - ansible
$



1-4.ssh鍵ペアを作成
Ansibleは管理対象サーバに対しssh接続できる必要がありますが、鍵認証が推奨されているので、鍵ペアを作成しておきます。

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ansible/.ssh/id_rsa):<デフォルトのままEnter>
Enter passphrase (empty for no passphrase):<パスフレーズを入力しEnter>
Enter same passphrase again:<パスフレーズを再入力しEnter>
Your identification has been saved in /home/ansible/.ssh/id_rsa.
Your public key has been saved in /home/ansible/.ssh/id_rsa.pub.
~略~
$ cd ~/.ssh
$ ls -l


※公開鍵id_rsa.pubと秘密鍵id_rsaが生成されています。

ここで一度ハマったのですが、PIDORA(Raspberry Pi)上で作成すると、鍵が「AES-128-CBC」形式で作成されてしまい、ansibleコマンドを発行した時に以下のメッセージが表示されてしまいます。回避のためAnsibleサーバ上で作成しました。
FAILED: Unknown private key cipher "AES-128-CBC"

作成した公開鍵は、管理対象サーバ(Raspberry Pi)にコピーしておきます。
※Raspberry PiのIPアドレスを「192.168.0.1」としています。

$ scp ~/.ssh/id_rsa.pub root@192.168.0.1:~/



2.Raspberry Pi側の準備
管理対象サーバ側でも多少設定が必要です。以降はRaspberry Piにログインして作業しています。

2-1.作業用のユーザを作成
作業用のユーザを作成します。
※作成するユーザ名を「ansible」としています。

# useradd -g users ansible
# passwd ansible



2-2.sudo権限を付与

# visudo
※以下の記述を追加して上書き保存
--------------
ansible ALL=(ALL) ALL
--------------



2-3.公開鍵ファイルの配置
1.4でコピーしておいた公開鍵を、管理ユーザのauthorized_keysファイルに追記します。

# su - ansible
$ pwd
/home/ansible
$ mkdir .ssh
$ cd .ssh
$ sudo cat /root/id_rsa.pub >> authorized_keys


authorized_keysの権限を変更します。

$ chmod 600 authorized_keys



3.Ansibleサーバ側から接続確認
Ansibleサーバから、管理対象サーバへansibleで接続できるか確認します。

3-1.ping実行

$ ansible 192.168.1.5 -m ping --private-key ~/.ssh/id_rsa -k
SSH password: ※パスフレーズを入力しEnter
192.168.1.5 | success >> {
"changed": false,
"ping": "pong"
}



「"ping": "pong」の表示があれば接続成功です!

3-2.パスフレーズの付与
毎回秘密鍵とパスフレーズを入力するのが面倒な場合は、sshエージェントを起動して秘密鍵にパスフレーズを付与します。

$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/ansible/.ssh/id_rsa:  ※パスフレーズを入力しEnter
Identity added: /home/ansible/.ssh/id_rsa (/home/ansible/.ssh/id_rsa)
$
$ ansible 192.168.1.5 -m ping
192.168.1.5 | success >> {
"changed": false,
"ping": "pong"
}



管理対象サーバ側でやったことは、ユーザ作成、sudo設定、鍵設定だけで10行未満のコマンドでできたので、やり方さえ押さえてれば確かに簡単ですね。次はPlaybookを書いてみます。
スポンサーサイト
この記事へのコメント
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
この記事のトラックバックURL
http://fukushimaya2.blog103.fc2.com/tb.php/31-b186bd13
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック

 | Copyright © ふたごパパのサーバ構築日記 All rights reserved. | 

 / Template by 無料ブログ テンプレート カスタマイズ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。