プロジェクト

全般

プロフィール

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


ほぼ8年前に更新