Ansibleをやっていきたい
- ここをみながら進めていく
Vagrant を使ってサーバーを準備する
言葉があってるかわからないけど、なにやらサーバ側からクライアント側へpushして構成を作成するものらしいので、サーバとクライアントの2つを作成する
ansibletestとかいうフォルダを作成してそこをカレントにしてinitしてVagrantfileを以下のように変更した
config.vm.define :server do |node| node.vm.box = "centos6" node.vm.network :forwarded_port, guest: 22, host: 2001, id: "ssh" node.vm.network :private_network, ip: "192.168.33.11" end config.vm.define :client do |node| node.vm.box = "centos6" node.vm.network :forwarded_port, guest: 22, host: 2002, id: "ssh" node.vm.network :forwarded_port, guest: 80, host: 8000, id: "http" node.vm.network :private_network, ip: "192.168.33.12" end
こうすることで2つ立ち上がるらしい
やってみる
vagrant up
Bringing machine 'server' up with 'virtualbox' provider...
Bringing machine 'client' up with 'virtualbox' provider...
[server] Importing base box 'centos6'...
[server] Matching MAC address for NAT networking...
[server] Setting the name of the VM...
[server] Clearing any previously set forwarded ports...
[server] Creating shared folders metadata...
[server] Clearing any previously set network interfaces...
[server] Preparing network interfaces based on configuration...
[server] Forwarding ports...
[server] -- 22 => 2001 (adapter 1)
[server] Booting VM...
[server] Waiting for VM to boot. This can take a few minutes.
[server] VM booted and ready for use!
[server] Configuring and enabling network interfaces...
[server] Mounting shared folders...
[server] -- /vagrant
[client] Importing base box 'centos6'...
[client] Matching MAC address for NAT networking...
[client] Setting the name of the VM...
[client] Clearing any previously set forwarded ports...
Vagrant cannot forward the specified ports on this VM, since they
would collide with some other application that is already listening
on these ports. The forwarded port to 2002 is already in use
on the host machine.
To fix this, modify your current projects Vagrantfile to use another
port. Example, where '1234' would be replaced by a unique host port:
config.vm.network :forwarded_port, guest: 22, host: 1234
Sometimes, Vagrant will attempt to auto-correct this for you. In this
case, Vagrant was unable to. This is usually because the guest machine
is in a state which doesn't allow modifying port forwarding.まじ2つ立ち上げにいってる、すごい
ただポートが使われてるって出たのでhaltして両方適当なのに変えて再度チャレンジ
vagrant up
Bringing machine 'server' up with 'virtualbox' provider...
Bringing machine 'client' up with 'virtualbox' provider...
[server] Setting the name of the VM...
[server] Clearing any previously set forwarded ports...
[server] Creating shared folders metadata...
[server] Clearing any previously set network interfaces...
[server] Preparing network interfaces based on configuration...
[server] Forwarding ports...
[server] -- 22 => 3001 (adapter 1)
[server] Booting VM...
[server] Waiting for VM to boot. This can take a few minutes.
[server] VM booted and ready for use!
[server] Configuring and enabling network interfaces...
[server] Mounting shared folders...
[server] -- /vagrant
[client] Setting the name of the VM...
[client] Clearing any previously set forwarded ports...
[client] Creating shared folders metadata...
[client] Clearing any previously set network interfaces...
[client] Preparing network interfaces based on configuration...
[client] Forwarding ports...
[client] -- 22 => 3002 (adapter 1)
[client] -- 80 => 8000 (adapter 1)
[client] Booting VM...
[client] Waiting for VM to boot. This can take a few minutes.
[client] VM booted and ready for use!
[client] Configuring and enabling network interfaces...
[client] Mounting shared folders...
[client] -- /vagrant今度は立ち上がった
statusを確認してみる
vagrant status
Current machine states:
server running (virtualbox)
client running (virtualbox)動いてる、まじすごいなこれ…
"起動後、Ansible で node1 から node2 へ ssh するため、Vagrant 用の秘密鍵をコピーする"
って書いてあるんでやってみようと思ったんだけど、scp入れてない上にWindowsでやってるからsshはPuTTYなんだけどこの先大丈夫なんだろうか…
とりあえずファイルは作っておく
vagrant ssh-config server > ssh_config
vagrant ssh-config client >> ssh_configこれでカレントにssh_configができてログイン情報が書き込まれる
先で詰まるのもいやなので、winscp入れてserverのほうに秘密鍵をid_rsaにrenameして入れておく
Ansible をインストールする
serverにsshでログインしてAnsibleをインストールする
書いてあるとおりに写経する
[vagrant@localhost ~]$ sudo rpm -ivh http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
Retrieving http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
warning: /var/tmp/rpm-tmp.S9CzbY: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Preparing... ########################################### [100%]
1:epel-release ########################################### [100%]
[vagrant@localhost ~]$ sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
[vagrant@localhost ~]$ sudo yum -y install ansible
Loaded plugins: fastestmirror
Determining fastest mirrors
epel/metalink | 5.6 kB 00:00
* base: www.ftp.ne.jp
* epel: ftp.riken.jp
* extras: www.ftp.ne.jp
* updates: www.ftp.ne.jp
base | 3.7 kB 00:00
base/primary_db | 4.4 MB 00:00
epel | 4.2 kB 00:00
epel/primary_db | 5.4 MB 00:02
extras | 3.4 kB 00:00
extras/primary_db | 18 kB 00:00
updates | 3.4 kB 00:00
updates/primary_db | 3.8 MB 00:00
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package ansible.noarch 0:1.2.2-1.el6 will be installed
--> Processing Dependency: python-paramiko for package: ansible-1.2.2-1.el6.noarch
--> Processing Dependency: python-jinja2 for package: ansible-1.2.2-1.el6.noarch
--> Processing Dependency: PyYAML for package: ansible-1.2.2-1.el6.noarch
--> Running transaction check
---> Package PyYAML.x86_64 0:3.10-3.el6 will be installed
--> Processing Dependency: libyaml-0.so.2()(64bit) for package: PyYAML-3.10-3.el6.x86_64
---> Package python-jinja2.x86_64 0:2.2.1-1.el6 will be installed
--> Processing Dependency: python-babel >= 0.8 for package: python-jinja2-2.2.1-1.el6.x86_64
---> Package python-paramiko.noarch 0:1.7.5-2.1.el6 will be installed
--> Processing Dependency: python-crypto >= 1.9 for package: python-paramiko-1.7.5-2.1.el6.noarch
--> Running transaction check
---> Package libyaml.x86_64 0:0.1.3-1.el6 will be installed
---> Package python-babel.noarch 0:0.9.4-5.1.el6 will be installed
---> Package python-crypto.x86_64 0:2.0.1-22.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
ansible noarch 1.2.2-1.el6 epel 520 k
Installing for dependencies:
PyYAML x86_64 3.10-3.el6 epel 157 k
libyaml x86_64 0.1.3-1.el6 epel 52 k
python-babel noarch 0.9.4-5.1.el6 base 1.4 M
python-crypto x86_64 2.0.1-22.el6 base 159 k
python-jinja2 x86_64 2.2.1-1.el6 base 465 k
python-paramiko noarch 1.7.5-2.1.el6 base 728 k
Transaction Summary
================================================================================
Install 7 Package(s)
Total download size: 3.5 M
Installed size: 18 M
Downloading Packages:
(1/7): PyYAML-3.10-3.el6.x86_64.rpm | 157 kB 00:00
(2/7): ansible-1.2.2-1.el6.noarch.rpm | 520 kB 00:00
(3/7): libyaml-0.1.3-1.el6.x86_64.rpm | 52 kB 00:00
(4/7): python-babel-0.9.4-5.1.el6.noarch.rpm | 1.4 MB 00:00
(5/7): python-crypto-2.0.1-22.el6.x86_64.rpm | 159 kB 00:00
(6/7): python-jinja2-2.2.1-1.el6.x86_64.rpm | 465 kB 00:00
(7/7): python-paramiko-1.7.5-2.1.el6.noarch.rpm | 728 kB 00:00
--------------------------------------------------------------------------------
Total 1.6 MB/s | 3.5 MB 00:02
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
Installing : python-crypto-2.0.1-22.el6.x86_64 1/7
Installing : python-paramiko-1.7.5-2.1.el6.noarch 2/7
Installing : libyaml-0.1.3-1.el6.x86_64 3/7
Installing : PyYAML-3.10-3.el6.x86_64 4/7
Installing : python-babel-0.9.4-5.1.el6.noarch 5/7
Installing : python-jinja2-2.2.1-1.el6.x86_64 6/7
Installing : ansible-1.2.2-1.el6.noarch 7/7
Verifying : python-babel-0.9.4-5.1.el6.noarch 1/7
Verifying : python-jinja2-2.2.1-1.el6.x86_64 2/7
Verifying : PyYAML-3.10-3.el6.x86_64 3/7
Verifying : libyaml-0.1.3-1.el6.x86_64 4/7
Verifying : python-crypto-2.0.1-22.el6.x86_64 5/7
Verifying : python-paramiko-1.7.5-2.1.el6.noarch 6/7
Verifying : ansible-1.2.2-1.el6.noarch 7/7
Installed:
ansible.noarch 0:1.2.2-1.el6
Dependency Installed:
PyYAML.x86_64 0:3.10-3.el6 libyaml.x86_64 0:0.1.3-1.el6
python-babel.noarch 0:0.9.4-5.1.el6 python-crypto.x86_64 0:2.0.1-22.el6
python-jinja2.x86_64 0:2.2.1-1.el6 python-paramiko.noarch 0:1.7.5-2.1.el6
Complete!成功した気がする
Ansible の疎通確認
写経する
[vagrant@localhost ~]$ ansible 192.168.33.12 -m ping
No hosts matched
[vagrant@localhost ~]$ echo 192.168.33.12 > hosts
[vagrant@localhost ~]$ ansible -i hosts 192.168.33.12 -m ping
paramiko: The authenticity of host '192.168.33.12' can't be established.
The ssh-rsa key fingerprint is f03f045136b591c7fa475a49bcfdfe40.
Are you sure you want to continue connecting (yes/no)?
y
192.168.33.12 | success >> {
"changed": false,
"ping": "pong"
}うごいた、すごい
[vagrant@localhost ~]$ ansible -i hosts 192.168.33.12 -a 'uname -r'
192.168.33.12 | success | rc=0 >>
2.6.32-358.el6.x86_64動いてます
rubyを入れる
とりあえずrubyだけ入れた環境だけほしいので、この状態でcommitしておきたい
lsとかのaliasを.bashrcに突っ込んでcommitする
alias la='ls -La'
alias lal='ls -Lal'これだけとりあえず入れてsandbox onしてcommitしておく
"8.1. Ruby のインストール"をベースにやっていく
Ruby のコンパイルに必要なものをインストール
[vagrant@localhost ~]$ sudo yum -y install git gcc gcc-c++ make patch readline-devel zlib-devel libyaml-devel
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: www.ftp.ne.jp
* epel: ftp.riken.jp
* extras: www.ftp.ne.jp
* updates: www.ftp.ne.jp
Setting up Install Process
Package gcc-4.4.7-3.el6.x86_64 already installed and latest version
Package gcc-c++-4.4.7-3.el6.x86_64 already installed and latest version
Package 1:make-3.81-20.el6.x86_64 already installed and latest version
Package readline-devel-6.0-4.el6.x86_64 already installed and latest version
Package zlib-devel-1.2.3-29.el6.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package git.x86_64 0:1.7.1-3.el6_4.1 will be installed
--> Processing Dependency: perl-Git = 1.7.1-3.el6_4.1 for package: git-1.7.1-3.el6_4.1.x86_64
--> Processing Dependency: rsync for package: git-1.7.1-3.el6_4.1.x86_64
--> Processing Dependency: perl(Git) for package: git-1.7.1-3.el6_4.1.x86_64
--> Processing Dependency: perl(Error) for package: git-1.7.1-3.el6_4.1.x86_64
---> Package libyaml-devel.x86_64 0:0.1.3-1.el6 will be installed
---> Package patch.x86_64 0:2.6-6.el6 will be installed
--> Running transaction check
---> Package perl-Error.noarch 1:0.17015-4.el6 will be installed
---> Package perl-Git.noarch 0:1.7.1-3.el6_4.1 will be installed
---> Package rsync.x86_64 0:3.0.6-9.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
git x86_64 1.7.1-3.el6_4.1 updates 4.6 M
libyaml-devel x86_64 0.1.3-1.el6 epel 84 k
patch x86_64 2.6-6.el6 base 90 k
Installing for dependencies:
perl-Error noarch 1:0.17015-4.el6 base 29 k
perl-Git noarch 1.7.1-3.el6_4.1 updates 28 k
rsync x86_64 3.0.6-9.el6 base 334 k
Transaction Summary
================================================================================
Install 6 Package(s)
Total download size: 5.2 M
Installed size: 16 M
Downloading Packages:
(1/6): git-1.7.1-3.el6_4.1.x86_64.rpm | 4.6 MB 00:01
(2/6): libyaml-devel-0.1.3-1.el6.x86_64.rpm | 84 kB 00:00
(3/6): patch-2.6-6.el6.x86_64.rpm | 90 kB 00:00
(4/6): perl-Error-0.17015-4.el6.noarch.rpm | 29 kB 00:00
(5/6): perl-Git-1.7.1-3.el6_4.1.noarch.rpm | 28 kB 00:00
(6/6): rsync-3.0.6-9.el6.x86_64.rpm | 334 kB 00:00
--------------------------------------------------------------------------------
Total 309 kB/s | 5.2 MB 00:17
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : 1:perl-Error-0.17015-4.el6.noarch 1/6
Installing : rsync-3.0.6-9.el6.x86_64 2/6
Installing : perl-Git-1.7.1-3.el6_4.1.noarch 3/6
Installing : git-1.7.1-3.el6_4.1.x86_64 4/6
Installing : patch-2.6-6.el6.x86_64 5/6
Installing : libyaml-devel-0.1.3-1.el6.x86_64 6/6
Verifying : 1:perl-Error-0.17015-4.el6.noarch 1/6
Verifying : libyaml-devel-0.1.3-1.el6.x86_64 2/6
Verifying : perl-Git-1.7.1-3.el6_4.1.noarch 3/6
Verifying : rsync-3.0.6-9.el6.x86_64 4/6
Verifying : patch-2.6-6.el6.x86_64 5/6
Verifying : git-1.7.1-3.el6_4.1.x86_64 6/6
Installed:
git.x86_64 0:1.7.1-3.el6_4.1 libyaml-devel.x86_64 0:0.1.3-1.el6
patch.x86_64 0:2.6-6.el6
Dependency Installed:
perl-Error.noarch 1:0.17015-4.el6 perl-Git.noarch 0:1.7.1-3.el6_4.1
rsync.x86_64 0:3.0.6-9.el6
Complete!
ruby-buildのインストール
[vagrant@localhost ~]$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
Initialized empty Git repository in /home/vagrant/.rbenv/plugins/ruby-build/.git/
remote: Counting objects: 2004, done.
remote: Compressing objects: 100% (1181/1181), done.
remote: Total 2004 (delta 834), reused 1792 (delta 639)
Receiving objects: 100% (2004/2004), 275.78 KiB | 20 KiB/s, done.
Resolving deltas: 100% (834/834), done.
[vagrant@localhost ruby-build]$ cd ~/.rbenv/plugins/ruby-build
[vagrant@localhost ruby-build]$ sudo ./install.sh
Installed ruby-build at /usr/local
rbenvのインストール
[vagrant@localhost ~]$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
fatal: destination path '/home/vagrant/.rbenv' already exists and is not an empty directory.もしかしてruby-buildってrbenvのpluginだから先にrbenv入れないとダメなんじゃ…
こういうときのためのsandboxなのでrollbackしてrbenvから先に入れていく
今度はrbenvから先にインストール
[vagrant@localhost ~]$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
Initialized empty Git repository in /home/vagrant/.rbenv/.git/
remote: Counting objects: 1642, done.
remote: Compressing objects: 100% (673/673), done.
remote: Total 1642 (delta 1054), reused 1462 (delta 937)
Receiving objects: 100% (1642/1642), 238.83 KiB | 133 KiB/s, done.
Resolving deltas: 100% (1054/1054), done.
[vagrant@localhost ~]$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
[vagrant@localhost ~]$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
[vagrant@localhost ~]$ source ~/.bash_profile
[vagrant@localhost ~]$ rbenv -h
rbenv 0.4.0-52-g1cc7536
Usage: rbenv <command> [<args>]
Some useful rbenv commands are:
commands List all available rbenv commands
local Set or show the local application-specific Ruby version
global Set or show the global Ruby version
shell Set or show the shell-specific Ruby version
rehash Rehash rbenv shims (run this after installing executables)
version Show the current Ruby version and its origin
versions List all Ruby versions available to rbenv
which Display the full path to an executable
whence List all Ruby versions that contain the given executable
See `rbenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/sstephenson/rbenv#readme
ここまでOK
再度ruby-buildのインストール
[vagrant@localhost ~]$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
Initialized empty Git repository in /home/vagrant/.rbenv/plugins/ruby-build/.git/
remote: Counting objects: 2004, done.
remote: Compressing objects: 100% (1181/1181), done.
remote: Total 2004 (delta 834), reused 1792 (delta 639)
Receiving objects: 100% (2004/2004), 275.78 KiB | 20 KiB/s, done.
Resolving deltas: 100% (834/834), done.
[vagrant@localhost ~]$ cd ~/.rbenv/plugins/ruby-build
[vagrant@localhost ruby-build]$ sudo ./install.sh
Installed ruby-build at /usr/localOKだと思う…
ruby2.0を入れる
listみると2.0.0-p247が最新っぽいのでそれを入れる
[vagrant@localhost ruby-build]$ rbenv install -l
Available versions:
2.0.0-dev
2.0.0-p0
2.0.0-p195
2.0.0-p247
2.0.0-preview1
2.0.0-preview2
2.0.0-rc1
2.0.0-rc2
2.1.0-dev
[vagrant@localhost ruby-build]$ rbenv install 2.0.0-p247
Downloading ruby-2.0.0-p247.tar.gz...
-> ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p247.tar.gz
Installing ruby-2.0.0-p247...
Installed ruby-2.0.0-p247 to /home/vagrant/.rbenv/versions/2.0.0-p247
[vagrant@localhost ruby-build]$ rbenv rehash
[vagrant@localhost ruby-build]$ rbenv versions
* system (set by /home/vagrant/.rbenv/version)
2.0.0-p247
[vagrant@localhost ruby-build]$ ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
[vagrant@localhost ruby-build]$ rbenv global 2.0.0-p247
[vagrant@localhost ruby-build]$ ruby -v
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
[vagrant@localhost ruby-build]$ rbenv versions
system
* 2.0.0-p247 (set by /home/vagrant/.rbenv/version)OK、できた
gemをupdateしてbundler入れてcommitしておく
[vagrant@localhost ruby-build]$ gem -v
2.0.3
[vagrant@localhost ruby-build]$ gem update --system
~
[vagrant@localhost ruby-build]$ gem -v
2.0.6
[vagrant@localhost ruby-build]$ gem install bundler
Fetching: bundler-1.3.5.gem (100%)
Successfully installed bundler-1.3.5
Parsing documentation for bundler-1.3.5
Installing ri documentation for bundler-1.3.5
1 gem installed