ansible制御windowsの公式翻訳

11131 ワード

Ansible制御windows
1、Windowsでの作業方法
ansibleでlinuxを制御するときはssh方式でwindowsではpower shellを使用し、クライアントマシンにもクライアントを装着する必要はありません.
Windowsマシンを制御する際に使用するモジュールは「winrm」です.
2、制御機に取り付ける
linux制御マシンにモジュールwinrmをインストールします.
pip install "pywinrm>=0.1.1" 
3、ダイナミックディレクトリのサポート
ダイナミックディレクトリのdomainアカウントに接続する場合は、python-kerberosモジュールをコントローラにインストールし、MIT krb 5ライブラリをインストールする必要があります.また、ダイナミックディレクトリで正しいアカウントを構成する必要があります.
3.1 python-kerberosのインストール依存
# Via Yum
yum -y install python-devel krb5-devel krb5-libs krb5-workstation
 
# Via Apt (Ubuntu)
sudo apt-get install python-dev libkrb5-dev
 
# Via Portage (Gentoo)
emerge -av app-crypt/mit-krb5
emerge -av dev-python/setuptools
 
# Via pkg (FreeBSD)
sudo pkg install security/krb5
 
# Via OpenCSW (Solaris)
pkgadd -d http://get.opencsw.org/now
/opt/csw/bin/pkgutil -U
/opt/csw/bin/pkgutil -y -i libkrb5_3
 
# Via Pacman (Arch Linux)
pacman -S krb5
 
 
3.2 python-kerberosのインストール
インストール時に次のコマンドを実行します.
pip install kerberos
 
 
3.3 kerberosの構成
プロファイル/etc/krb 5を編集します.confは、接続したいdomainごとに次の情報を追加します.
次の最初のセクションを見つけます.
[realms]
 
domainのフルネームを追加し、次の例のように、プライマリおよびセカンダリのダイナミックディレクトリドメインのフルネームを追加します.
[realms]
 
 MY.DOMAIN.COM = {
  kdc = domain-controller1.my.domain.com
  kdc = domain-controller2.my.domain.com
 }
 
接続するドメインを「domain_realm」セクションに追加します.
[domain_realm]
    .my.domain.com = MY.DOMAIN.COM
 
3.4 kerberos接続のテスト
krb 5-workstation(yum)またはkrb 5-user(apt_get)がインストールされている場合は、ドメインコントローラによって許可されているかどうかを次のコマンドでテストできます.
kinit [email protected]
 
ドメインの部分はフルネームで、すべて大文字でなければなりません.
取得したticketsを表示します.コマンドは次のとおりです.
klist
 
3.5 kerberos接続の問題の解決
kerberosを使用して接続できない場合は、次の問題を確認します.
 
順方向と逆方向のDNSがドメイン内で正常に解析できることを確保し、この解析を行うときは、まずpingサーバの名前、それからnslookupサーバのipアドレス、サーバの名前を返します
返されたサーバ名とpingのサーバ名が一致しない場合、ダイナミックディレクトリのDNNSScavengingがオンであり、DNSとDHCPが互いに更新されていることを確認します.
 
ansibleコントローラがdomainでアカウント属性を構成していることを確認します.
ドメインコントローラでansibleコントローラがクロック非同期であることを確認し、kerberosは時間に敏感であり、少しの時間のばらつきがticketsの失効を招く.
 
ドメインのフルネームが使用されていることを確認し、次のコマンドを使用して確認します.
kinit -C [email protected]
klist
 
異なるドメイン名名を取得する場合は、プロファイルkrb 5を更新する必要があります.confは、ドメインのフルネームを使用します.
4、    inventory
ansibleのwindowsに対するサポートは、ユーザー名、パスワード、接続タイプ(windows)を表すいくつかの一般的な変数に依存し、以下に示す.
[windows]
winserver1.example.com
winserver2.example.com
 
 
グループでvars/windows.ymlでは、次のinventory変数を定義します.
# it is suggested that these be encrypted with ansible-vault:
# ansible-vault edit group_vars/windows.yml
 
ansible_user: Administrator
ansible_password: SecretPasswordGoesHere
ansible_port: 5986
ansible_connection: winrm
# The following is necessary for Python 2.7.9+ when using default WinRM self-signed certificates:
ansible_winrm_server_cert_validation: ignore
 
5、Powershellバージョンについて
Powershellは3.0以降で、windows 7 sp 1、windows server 2008 sp 1、以降のバージョンのみサポートされています.
6、利用可能なモジュール
Windowsでサポートされているモジュールは、次のWebサイトで入手できます.
http://docs.ansible.com/ansible/list_of_windows_modules.html
Powershellスクリプトを実行するにはscriptモジュールを使用するか、playbookで次のように使用します.
- hosts: windows
  tasks:
    - script: foo.ps1 --argument --other-argument
 
注意一部のモジュールはwinで始まるのではなく、以下のようにします.
“slurp”, “raw”, and “setup” 
7、windowsのfactを得る
ansible winhost.example.com -m setup
 
8、Windowsのプレイブックの例
次の例では、Powershellスクリプトをプッシュおよび実行する例を示します.
- name: test script module
  hosts: windows
  tasks:
    - name: run test script
      script: files/test_script.ps1
 
 
単一のコマンドを実行する場合はrawモジュールを使用し、linuxではcommandまたはshellモジュールを使用します.
- name: test raw module
  hosts: windows
  tasks:
    - name: run ipconfig
      raw: ipconfig
      register: ipconfig
    - debug: var=ipconfig
 
DOSコマンドを実行するときは、CMD/Cの先頭を使用し、次のように二重引用符で含めることができます.
- name: another raw module example
  hosts: windows
  tasks:
     - name: Move file on remote Windows Server from one location to another
       raw: CMD /C "MOVE /Y C:\teststuff\myfile.conf C:\builds\smtp.conf"
 
 
最後の例はwin_statモジュールはファイルが存在するかどうかをテストします.返される日付はlinuxと少し違います.
- name: test stat module
  hosts: windows
  tasks:
    - name: test stat module on file
      win_stat: path="C:/Windows/win.ini"
      register: stat_file
 
    - debug: var=stat_file
 
    - name: check stat_file result
      assert:
          that:
             - "stat_file.stat.exists"
             - "notstat_file.stat.isdir"
             - "stat_file.stat.size>0"
             - "stat_file.stat.md5"
 
 
転載先:https://www.cnblogs.com/kellyseeme/p/5525074.html