職場でAnsibleをキャッチアップする機会をもらい、その際にやったことを残していこうと思います。
まだキャッチアップ間もないのでビジバシ突っ込んでいただけると…
環境
- ホスト PC: Mac
- Ubuntu ver: 16.04.4
- 仮想環境: VirtualBox
- Vagrant: 2.0.3
- ansible: 2.5.0
Ansibleってなんだ?
- 構成管理ツール
サーバーのOSやミドルウェアに対して、あるべき姿を定義したり定例的な作業を登録しておくことで作業を効率化・短時間化したり、人的ミスが起きるリスクを減らしたりすることを目的としたツール。
[公式ドキュメント]
http://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html
vagrantで仮想環境を作ってみる
- vagrantとは?
仮想マシンの作成と環境構築をまとめて実行できるようにしたツールのこと
[公式ドキュメント]
https://www.vagrantup.com/docs/
Ubuntu 16.04のBoxをダウンロードする
ダウンロードするBoxを探した時に参考にしたサイトはこちら
http://www.vagrantbox.es/
# Boxを取得する
$vagrant box add ubuntu-16.04 https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-vagrant.box
取得できているか確認します
$vagrant box list
ubuntu-16.04 (virtualbox, 0)
できてるーっ
次にVagrantを初期化します
このコマンドを打つことによってVagrantfile
という設定ファイルが作成されます
$vagrant init ubuntu-16.04
# ubuntu-16.04はBoxの名前になります
- vagrantを実行
$vagrant up
- vagrantで立てたサーバーに対して sshで接続
$vagrant ssh
Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.4.0-116-generic x86_64)
vagrantで立てたサーバーに対してssh接続できました!
Ansibleを使ってみる
vagrantを使い仮想環境を作り上げることが出来たので、実際にAnsibleを使っていきたいと思います
Vagrantfileを編集し、仮想環境上にサーバーを2つたてる
- vagrantfileを以下のように設定し、仮想環境上にサーバーを2つたてます
VAGRANTFILE_API_VERSION = '2'
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu-16.04"
# VM
config.vm.define :'host1' do |host|
host.vm.hostname = 'host1'
host.vm.network :forwarded_port, guest: 22, host: 2001, id: "ssh"
host.vm.network :private_network, ip: "192.168.100.11"
end
config.vm.define :'host2' do |host|
host.vm.hostname = 'host2'
host.vm.network :forwarded_port, guest: 22, host: 2002, id: "ssh"
host.vm.network :forwarded_port, guest: 80, host: 8000, id: "http"
host.vm.network :private_network, ip: "192.168.100.12"
end
config.vbguest.auto_update = false
end
Vagrantfileを編集後に
$vagrant up
Ansibleサーバーをhost1
,Ansibleに制御されるサーバーをhost2
とします。
Ansible はエージェントインストールの必要がないのでSSH でログインできる環境であれば、ただそれだけで構成管理の対象にすることができます
起動後にAnsibleでhost1からhost2にsshするために秘密鍵をコピーします
$ vagrant ssh-config host1 > ssh_config
$ scp -F ssh_config .vagrant/machines/host2/virtualbox/private_key host1:.ssh/id_rsa
host1からhost2にssh接続できるかを確認します
$vagrant ssh host1
$vagrant ssh host2
いよいよAnsibleをインストールします
host1
にAnsibleをインストール
# host1にsshで接続
$vagrant ssh host1
# Ansibleをインストール
$sudo apt-get update
$sudo apt-get install software-properties-common
$sudo apt-add-repository ppa:ansible/ansible
$sudo apt-get update
$sudo apt-get install ansible
vagrant@host1:~$ ansible --version
ansible 2.5.0
Ansibleをインストールすることが出来ました!
Ansibleは安全のために、あらかじめ指定したサーバー以外は接続しないようになっているので/etc/ansible/hosts
ファイルに接続先のIPを追加しましょう
/etc/ansible/hosts
192.168.100.12
疎通確認を行います
$ansible 192.168.100.12 -m ping
192.168.100.12 | SUCCESS => {
"changed": false,
"ping": "pong"
}
無事成功しました!
一旦は疎通確認が成功したところまでまとめました。
次回はplaybookについてまとめていこうと思います!
ありがとうございました!