[Ansible] 参考情報諸々

これは本当に備忘録です

はい、小ネタというか、完全なる備忘録であります。なのでなんの脈絡もなく他だひたすら並べています。予めご了承を。

Windowsモジュール

Windowsモジュールは結構多彩です。自分も全体は把握できてませんので、ここのリファレンス情報とにらめっこしながらPlaybookを書いてみてるところです。

レジストリを用いた環境設定例

管理用RDPを有効にする手段を探したところ、ここの情報が凄く参考になりました。元々グループポリシーなんかもレジストリ設定の塊みたいなもんですからね。そうしたところをキチンと覚えていくというのは、設定自動化において必須事項と言えるのかもしれません。

レジストリを変更したときのAnsible側の詳細ログ

ちゃんとWindows環境に併せて「¥」を「¥¥」に変更してくれるようだ。ありがたい。

changed: [192.168.120.11] => (item={'key': 'HKLM:\SYSTEM\CurrentControlSet\Control\Remote Assistance', 'value': 'fAllowToGetHelp', 'data': 0}) => {
    "ansible_loop_var": "item",
    "changed": true,
    "data_changed": false,
    "data_type_changed": false,
    "invocation": {
        "module_args": {
            "data": "0",
            "datatype": "dword",
            "delete_key": true,
            "hive": null,
            "key": "HKLM:\SYSTEM\CurrentControlSet\Control\Remote Assistance",
            "name": "fAllowToGetHelp",
            "path": "HKLM:\SYSTEM\CurrentControlSet\Control\Remote Assistance",
            "state": "present",
            "type": "dword",
            "value": "fAllowToGetHelp"
        }
    },
    "item": {
        "data": 0,
        "key": "HKLM:\SYSTEM\CurrentControlSet\Control\Remote Assistance",
        "value": "fAllowToGetHelp"
    }
}

ドメイン参加も出来るようだ

  - name: Promote to member
    win_domain_membership:
      dns_domain_name: example.local
      domain_admin_user: adminsitrator@example.local
      domain_admin_password: ********
      state: domain
    register: domain_state

  - name: Reboot after joining
    win_reboot:
      msg: "Joining domain. Rebooting..."
    when: domain_state.reboot_required

Kerberos認証を使おう

Windowsに対してドメインアカウントが絡むような操作をする場合、Ansibleサーバ側でKerberos認証に対応させる必要がある模様。Linuxサーバ側としてはクライアント機能の実装が必要そうです。

以下コンポーネントを導入します。

yum -y install krb5-devel krb5-libs krb5-workstation

/etc/krb5.conf を編集します。自身の環境に合わせて以下のように設定します。

# To opt out of the system crypto-policies configuration of krb5, remove the
# symlink at /etc/krb5.conf.d/crypto-policies which will not be recreated.
includedir /etc/krb5.conf.d/

[logging]
    default = FILE:/var/log/krb5libs.log
    kdc = FILE:/var/log/krb5kdc.log
    admin_server = FILE:/var/log/kadmind.log

[libdefaults]
    dns_lookup_realm = false
    ticket_lifetime = 24h
    renew_lifetime = 7d
    forwardable = true
    rdns = false
    default_realm = BLUECORE.NET
    #default_ccache_name = KEYRING:persistent:%{uid}

[realms]
 BLUECORE.NET = {
     kdc = sagara.bluecore.net
     admin_server = sagara.bluecore.net
     default_domain = sagara.bluecore.net
 }

[domain_realm]
 .bluecore.net = BLUECORE.NET
 bluecore.net = BLUECORE.NET

kinitコマンドでKerberosチケットをドメインコントローラに要求します。
パスワードを聞かれますので、ドメインパスワードを入力します。特にエラーメッセージなくプロンプト応答があればKerberosチケットが入手できています。

klistコマンドを実行することにより、現在所有しているKerberosチケットに関する情報を参照することが出来ます。

# kinit administrator@BLUECORE.NET
Password for administrator@BLUECORE.NET:
# klist
Ticket cache: KCM:0
Default principal: administrator@BLUECORE.NET

Valid starting       Expires              Service principal
2020-11-15T20:59:13  2020-11-16T06:59:13  krbtgt/BLUECORE.NET@BLUECORE.NET
        renew until 2020-11-22T20:59:10

多分Ansibleって何が一番嬉しいかというと、その冪等性であり、くり返し実行しても環境に変化が及びにくいことじゃないかなぁと思いました。逆に例外を設定すると引き戻されてしまうんですけどね(´∀`*)ウフフ