AnsibleをWindows上のCygwinにインストール¶
入手とインストール¶
Cygwinのモジュールにansibleがあるので、これをインストールして使います。
2016-07-18現在、ありませんねぇ・・・。これを書いたときはどうしたのでしょう? 調査中
Windows管理ノードへ接続¶
Windows管理ノードへの接続には、WinRM接続を使用します。これには、Pythonモジュールのpywinrmを使用します。
また、WinRM接続の認証アカウントとしてActive Directoryドメインのアカウントを使用するには、Kerberos認証が必要となります。
Kerberosの設定(未完成)¶
Active DirectoryをKerberos認証サーバーとして使用する設定を行います。
Cygwinのsetupを実行して、次のパッケージをインストールします。
- krb5-workstation
- libkrb5-devel
Cygwinのパッケージにはpython-kerberosはないので、pythonのモジュールインストーラ(pip)でkerberosをインストールします。
~$ pip install kerberos
設定は/etc/krb5.confに記述します。初期状態では/etc/krb5.confはないので新規作成します。
以下は、Active Directoryドメインがbravo.localの場合で、Kerberosのレルム名がBRAVO.LOCAL(レルム名は大文字)で、ドメインコントローラのDNSがdc.bravo.localで参照できる場合の例です。
[libdefaults]
default_realm = BRAVO.LOCAL
forwardable = true
[realms]
BRAVO.LOCAL = {
kdc = dc.bravo.local
default_domain = bravo.local
}
[domain_realm]
.bravo.local = BRAVO.LOCAL
bravo.local = BRAVO.LOCAL
これで、kinitでチケットを取得できるようになりましたが、Ansibleでkerberos接続がなぜかできていません。
原因調査中
問題と対処¶
SSH接続のエラー(CygwinのOpenSSH)¶
Windows/Cygwinでは、OpenSSHを使ったansibleコマンドの実行がエラーになります。
$ ansible -m command -a "uptime" all
bigoncia | FAILED => SSH Error: Failed to connect to new control master
while connecting to 192.168.1.15:22
It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.
- 回避策1 OpenSSHではなくPythonモジュールのParamikoを使ってSSH接続する
ansibleコマンドオプション-c paramikoを指定する - 回避策2 OpenSSHのControlMasterを無効にする
環境変数ANSIBLE_SSH_ARGS="-o ControlMaster=no"を定義する