Ansibleで、vagrantで作成したVMに対してansible
コマンドを実行するための設定例です。
Vagrantfile
まずは、vagrant側の設定ファイルであるVagrantfile
を作成します。
今回の例ではCentOS8.0を指定していますが別のOSでも問題ありません。CentOS8.0ではデフォルトでpythonが入らないのでconfig.vm.provisionでpythonコマンドをインストールしています。また、AnsibleからsshログインさせやすいようにIPアドレスを指定しています。
Vagrant.configure("2") do |config|
config.vm.box = "generic/centos8"
config.vm.box_version = "2.0.6"
config.vm.network "private_network", ip: "192.168.33.90"
config.vm.provision "shell", inline: <<-SHELL
dnf -y install python36
SHELL
end
vmの作成
作成したVagrantfileでVMを起動します。
$ vagrant up
起動したVMへのログインできるssh keyfileの場所を確認します。
$ vagrant ssh-config | grep IdentityFile
IdentityFile ..../.vagrant/machines/default/virtualbox/private_key
作ったサーバにvagrant ssh
ではなく、ssh
コマンドで接続できることを確認します
$ ssh vagrant@192.168.33.90 -p 22 -i .vagrant/machines/default/virtualbox/private_key
Last login: Sun Mar 15 09:06:22 2020 from 192.168.33.1
[vagrant@centos8 ~]$
Ansibleのhosts設定
ansibleのhostsファイルを作成します。HOSTNAME:vars
でvagrantへの接続設定を記載します。
[vagrant]
192.168.33.90
[vagrant:vars]
ansible_ssh_host=192.168.33.90
ansible_ssh_port=22
ansible_ssh_user=vagrant
ansible_ssh_private_key_file=PATH_TO_VAGRANT/.vagrant/machines/default/virtualbox/private_key
接続確認
Ansibleのpingモジュールで接続できることを確認します。
$ ansible vagrant -m ping
192.168.33.90 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
こちらもおススメ