AnsibleはゲストOSにエージェントを構築しなくともSSHさえ繋がるなら設定とかをごにょごにょ自動化してくれる優れもの。
ということで、vagrantで構築したゲストOSに対して設定をしたい場合の書き方を備忘録として残す。
今回はWildflyをAnsible Galaxyを利用して構築してみる。
コマンド
brew install python
pip3 install pipenv
mkdir ansible-wildfly
cd ansible-wildfly
pipenv install ansible
pipenv shell
vagrant box add centos/7
vagrant init centos/7
mkdir data #今回関係ないが共有フォルダに使用する
Ansibleはpipから入れることにする。
ホスト環境に直接入れちゃうより入れたり消したりが楽なため。
そのあと以下のファイルを準備する。
準備するもの
Inventory
hosts
192.168.33.10 ansible_connection=ssh ansible_ssh_port=22 ansible_ssh_user=vagrant ansible_ssh_private_key_file=.vagrant/machines/default/virtualbox/private_key
ansible_connectionはデフォルトでSSHなので不要、ポートも通常は22なのでいらないかも。
Playbook
main.yml
- hosts: wildfly
sudo: yes
roles:{ role: inkatze:wildfly }
今回はWildflyで出てきたinkatze:wildflyを利用してみる
Vagrantfile
Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
config.vm.network "forwarded_port", guest: 8080, host: 8080
config.vm.network "private_network", ip: "192.168.33.10"
config.vm.synced_folder "./data", "/vagrant_data"
config.vm.provider "virtualbox" do |vb|
vb.memory = "4096"
vb.cpus = 2
end
end
ポート8080はWildflyが使うデフォルトポート。メモリーは通常の1ギガだとおそらく実行可能要件を満たさないので4ギガほどにあげる。
実行
vagrant up
ansible-playbook -i hosts main.yml
なお、一度環境を潰して二回目を行おうとするとエラーとなる。エラーの原因は一度建ててしまったSSHのフィンガープリントが~/.ssh/known_hostsに保存されているからである。
対象のホストをknown_hostsから削除すればうまくいく。