手本にした記事
Ansible初心者がLAMP環境の構築を自動化する方法 | 株式会社LIG
Ansible チュートリアル | Ansible Tutorial in Japanese
前準備
- VirtualBox、Vagruntのインストール
- Ansibleのインストール
$ brew install ansible
手順
ホスト=>仮想サーバで行う場合 ※実行環境MacOS X
- Vagrantで仮想サーバをたてる
- ssh鍵の作成と登録
- sshを使ってVagrant仮想サーバにログインしてみる
- playbookの作成
- ansible-playbookの実行
完成!
詰まった点
ssh鍵の作成と登録
※追記 Vagrantを使う場合 $vagrant ssh-config --host web >> ~/.ssh/config を使ったほうが楽です。要は仮想サーバへ通常のsshでログイン出来れば良いので。。
仮想サーバにSSH接続をするため鍵を作成し、接続側・接続先に登録する。
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/CRD129/.ssh/id_rsa): ※とりあえずEnter
Enter passphrase (empty for no passphrase): ※とりあえずEnter
Enter same passphrase again: ※とりあえずEnter
Your identification has been saved in /Users/hoge/.ssh/id_rsa.
Your public key has been saved in /Users/hoge/.ssh/id_rsa.pub.
公開鍵(.pubのほう)を接続先サーバにsshなりftpなりscpしてとにかく送る。
送れたら接続先サーバの~/.sshに移動、authorized_keysに追加する。
$ mv id_rsa.pub ~/.ssh/
$ cd ~/.ssh/
$ cat id_rsa.pub >> authorized_keys
sshを使ってVagrant仮想サーバにログインしてみる
仮想サーバ側のauthorized_keysのパーミッション変更。
hostsの設定。
~/.ssh/config内に記載
Host web #ここで設定した名前を↓
HostName 192.168.59.34
Port 22
User vagrant
IdentityFile ~/.ssh/id_rsa
~/hosts内に記載
[web]
web #ここで設定します
※ここに気づかずssh接続エラーを解決するのに時間がかかった;;
エラー内容が'FAILED => SSH encountered an unknown error.'でホストのssh設定をしていないためsshのログインユーザが'vagrant'にならず接続が失敗していたよう。
$ ansible web -i ~/hosts -m ping
web | success >> {
"changed": false,
"ping": "pong"
}
これで接続はOK!
最終的に出来たコマンドの流れ
$ vagrant init chef/centos-6.5-i386
$ vi Vagrantfile
Vagrantfile~
~省略
#config.vm.box = "chef/centos-6.5"
config.vm.define "web" do |node|
node.vm.box = "chef/centos-6.5"
node.vm.hostname = "web"
node.vm.network :private_network, ip: "192.168.59.34"
end
~省略
$ vagrant up
$ ssh-keygen -t rsa
$ scp ~/.ssh/id_rsa.pub vagrant@192.168.59.34:~/
$ ssh vagrant@192.168.59.34
[vagrant@web]$ mv id_rsa.pub ~/.ssh/
[vagrant@web]$ cd ~/.ssh/
[vagrant@web]$ cat id_rsa.pub >> authorized_keys
[vagrant@web]$ rm id_rsa.pub
[vagrant@web]$ chmod 600 authorized_keys
[vagrant@web]$ exit
$ vi ~/hosts
hosts~
[web]
web
$ vi ~/.ssh/config
config~
Host web
HostName 192.168.59.34
Port 22
User vagrant
IdentityFile ~/.ssh/id_rsa
$ ansible web -i ~/hosts -m ping
web | success >> {
"changed": false,
"ping": "pong"
}
$ sudo ansible-playbook ~/playbook.yml -i ~/hosts
以上でVagrantにLAMP環境を作ることが出来ました。
playbookの内容はとりあえずAnsible初心者がLAMP環境の構築を自動化する方法 | 株式会社LIGさんからそのまま頂いたのでこれから少しづつ自分で作れるようにする予定。
あとsshの基本ぐらいちゃんと知ろうと思います。。