VagrantのCentOS7の仮想環境で、ansibleがデフォルトの状態では動かなかった
仮想環境の構成管理をchefからansibleに乗り換えようと決意したものの、 デフォルトだとansible -m ping
すら出来ない状況に。
以下の様なエラーが出ていた。
$ ansible development -m ping -i hosts -vvvv -c ssh <192.168.33.10> ESTABLISH CONNECTION FOR USER: vagrant <192.168.33.10> REMOTE_MODULE ping <192.168.33.10> EXEC ssh -C -tt -vvv -o ControlMaster=auto -o ControlPersist=60s -o ControlPath="/Users/jun_hashimoto/.ansible/cp/ansible-ssh-%h-%p-%r" -o Port=22 -o IdentityFile="/Users/jun_hashimoto/.ssh/vagrant_id_rsa" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=vagrant -o ConnectTimeout=10 192.168.33.10 /bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1446302545.64-29176121780452 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1446302545.64-29176121780452 && echo $HOME/.ansible/tmp/ansible-tmp-1446302545.64-29176121780452' <192.168.33.10> PUT /var/folders/b1/xvrmxy3x5q144lzzrxg081jr0000gn/T/tmp8Y12_A TO /home/vagrant/.ansible/tmp/ansible-tmp-1446302545.64-29176121780452/ping 192.168.33.10 | FAILED => failed to transfer file to /home/vagrant/.ansible/tmp/ansible-tmp-1446302545.64-29176121780452/ping: Connection closed
イメージには puppetlabs/centos-7.0-64-puppet
を利用していたのだが、調べているとCentOS5, 6ではSFTPが無効になっているらしい。
立ち上げた仮想環境の /etc/ssh/sshd_config
の中身を見ると以下のように、sftpに関する記述があった。
# File is managed by Puppet AcceptEnv LANG LC_* ChallengeResponseAuthentication no GSSAPIAuthentication no PermitRootLogin yes PrintMotd no Subsystem sftp /usr/lib/openssh/sftp-server UseDNS no UsePAM yes X11Forwarding yes
記述があるにも関わらずpingが通らないのはおかしい、sftpのPATHはどうなってるのかと思って調べてみると、configに記載されているpathがなんと間違えていた。。
$ sudo find / -type f -name sftp-server /usr/libexec/openssh/sftp-server
lib
から libexec
に修正し、sshdを再起動したらping通った。
$ ansible development -m ping -i hosts -vvvv <192.168.33.10> ESTABLISH CONNECTION FOR USER: vagrant <192.168.33.10> REMOTE_MODULE ping <192.168.33.10> EXEC ssh -C -tt -vvv -o ControlMaster=auto -o ControlPersist=60s -o ControlPath="/Users/jun_hashimoto/.ansible/cp/ansible-ssh-%h-%p-%r" -o IdentityFile="/Users/jun_hashimoto/.ssh/vagrant_id_rsa" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=vagrant -o ConnectTimeout=10 192.168.33.10 /bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1446303504.31-126139414242133 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1446303504.31-126139414242133 && echo $HOME/.ansible/tmp/ansible-tmp-1446303504.31-126139414242133' <192.168.33.10> PUT /var/folders/b1/xvrmxy3x5q144lzzrxg081jr0000gn/T/tmpjtkKIl TO /home/vagrant/.ansible/tmp/ansible-tmp-1446303504.31-126139414242133/ping <192.168.33.10> EXEC ssh -C -tt -vvv -o ControlMaster=auto -o ControlPersist=60s -o ControlPath="/Users/jun_hashimoto/.ansible/cp/ansible-ssh-%h-%p-%r" -o IdentityFile="/Users/jun_hashimoto/.ssh/vagrant_id_rsa" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=vagrant -o ConnectTimeout=10 192.168.33.10 /bin/sh -c 'LANG=en_US.UTF-8 LC_CTYPE=en_US.UTF-8 /usr/bin/python /home/vagrant/.ansible/tmp/ansible-tmp-1446303504.31-126139414242133/ping; rm -rf /home/vagrant/.ansible/tmp/ansible-tmp-1446303504.31-126139414242133/ >/dev/null 2>&1' 192.168.33.10 | success >> { "changed": false, "ping": "pong" }
んもー…