AnsibleをProxy環境下で利用する
Ansibleをなんで存在してるのかよくわからない仕事の邪魔にしかならないようなProxy環境下で利用する際のメモ書きです。
- 作者: 若山史郎
- 発売日: 2014/07/30
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
Proxy環境内の実行マシンからAWSなどのProxy環境外のサーバに対して操作を行う場合を想定しています。 対象のOSはCentOS6で、Vagrantを利用して下記のBoxからイメージを立ち上げ、Ansibleのインストール、実行を行いました。
CentoOS6.4 https://github.com/2creatives/vagrant-centos/releases/download/v6.4.2/centos64-x86_64-20140116.box
目次
- Proxy環境下でのAnsibleのインストール
- Proxy環境下でのAnsible実行
- Proxy環境下のCentOS6でAnsibleを実行
Proxy環境下でのAnsibleのインストール
下ごしらえ
まずはAnsibleのインストールを行います。 とりあえず、一通りhttp, https, ftpに対してProxyを通すように設定しておきます。 インストール自体にはこの設定は不要かもしれませんが、どうせProxy環境から出れない以上は必要なので最初にやってしまいます。
echo "export http_proxy=<PROXY_HOST>:<PROXY_PORT>" >> ~/.bash_profile
echo "export https_proxy=<PROXY_HOST>:<PROXY_PORT>" >> ~/.bash_profile
echo "export ftp_proxy=<PROXY_HOST>:<PROXY_PORT>" >> ~/.bash_profile
source ~/.bash_profile
yumコマンドもProxyを通すように設定します。
sudo sh -c 'echo "proxy=https://<PROXY_HOST>:<PROXY_PORT>/" >> /etc/yum.conf'
インストール
ここまで出来たら、Ansibleのインストール作業に入ります。
まずは、rpmの取得から。 rpmコマンドの実行時にプロキシを通すように指定します。
sudo rpm --httpproxy <PROXY_HOST> --httpport <PROXY_PORT> -ivh http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpmが取得出来たら、yumコマンドを使ってAnsibleとそのた必要なものをインストール/アップデートします。
sudo yum install -y ansible sshpass
sudo yum update -y openssh
これでAnsibleはインストール出来たはずです。
Proxy環境下でのAnsible実行
Ansibleのインストールが出来てもそのままでは、Ansibleの実行ができません。 なぜなら、AnsbileがSSHでリモートマシンに接続するときにProxyを通らないから。
というわけで、corkscrewでProxyを通してSSHが実行出来るようにします。 まずは、corkscrewのインストール
cd /tmp
curl -o corkscrew-2.0.tar.gz http://www.agroman.net/corkscrew/corkscrew-2.0.tar.gz
tar -xzf corkscrew-2.0.tar.gz
cd corkscrew-2.0
./configure
make && sudo make install
corkscrewがインストールできたら、ssh_configに設定を追記します。
sudo cp /etc/ssh/ssh_config /etc/ssh/ssh_config.back # 一応バックアップしておく
sudo sh -c 'echo "ProxyCommand /usr/local/bin/corkscrew <PROXY_HOST> <PROXY_PORT> %h %p" >> /etc/ssh/ssh_config'
これで、SSHもProxy経由で実行出来るようになります。
Proxy環境下のCentOS6でAnsibleを実行
どうもCentOS6は癖があるようで、ここまでの手順を完了していてもAnsibleをきちんと実行する事が出来ません。 (参考 https://groups.google.com/d/msg/ansible-project/ExWKdVE7mwQ/ZtycBhQ4mt4J
というわけで、Ansibleの実行時に -c ssh
とオプションに指定してやる必要があります。
毎回、-c
オプションをつけるのが面倒な場合は、 ansible.cfg
ファイルにtransport = smart
を追記してやれば良さそうです。
-c
オプションできちんと動作する事は確認しました。
ansible -m setup -u <USER> -k -c ssh