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"
を定義する