From 85574b43eeb62682cb20892d21d6c7ab93a64f7d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=90=B4=E5=B0=8F=E7=99=BD?= <296015668@qq.com>
Date: Wed, 26 Oct 2022 19:25:34 +0800
Subject: [PATCH] perf: update playbook.yml

---
 .../deploy_applet_host/playbook.yml           | 176 +++++++++++++-----
 1 file changed, 130 insertions(+), 46 deletions(-)

diff --git a/apps/terminal/automations/deploy_applet_host/playbook.yml b/apps/terminal/automations/deploy_applet_host/playbook.yml
index 17016328d..ffb748b63 100644
--- a/apps/terminal/automations/deploy_applet_host/playbook.yml
+++ b/apps/terminal/automations/deploy_applet_host/playbook.yml
@@ -1,56 +1,140 @@
 ---
+
 - hosts: windows
   vars:
     - DownloadHost: https://demo.jumpserver.org/download
     - RDS_Licensing: enabled
     - RDS_LicenseServer: 127.0.0.1
     - RDS_LicensingMode: 4
-    - RDS_fSingleSessionPerUser: 0
+    - RDS_fSingleSessionPerUser: 1
     - RDS_MaxDisconnectionTime: 60000
     - RDS_RemoteAppLogoffTimeLimit: 0
+
   tasks:
-    - name: Install RDS-Licensing (RDS)
-      ansible.windows.win_feature:
-        name: RDS-Licensing
-        state: present
-        include_management_tools: yes
-      when: RDS_Licensing == "enabled"
-    - name: Install RDS-RD-Server (RDS)
-      ansible.windows.win_feature:
-        name: RDS-RD-Server
-        state: present
-        include_management_tools: yes
-      register: win_feature
-    - name: Reboot if installing RDS feature requires it
-      ansible.windows.win_reboot:
-      when: win_feature.reboot_required
-    - name: Set RDS LicenseServer (regedit)
-      ansible.windows.win_regedit:
-        path: HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services
-        name: LicenseServers
-        data: "{{ RDS_LicenseServer }}"
-        type: string
-    - name: Set RDS LicensingMode (regedit)
-      ansible.windows.win_regedit:
-        path: HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services
-        name: LicensingMode
-        data: "{{ RDS_LicensingMode }}"
-        type: dword
-    - name: Set RDS fSingleSessionPerUser (regedit)
-      ansible.windows.win_regedit:
-        path: HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services
-        name: fSingleSessionPerUser
-        data: "{{ RDS_fSingleSessionPerUser }}"
-        type: dword
-    - name: Set RDS MaxDisconnectionTime (regedit)
-      ansible.windows.win_regedit:
-        path: HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services
-        name: MaxDisconnectionTime
-        data: "{{ RDS_MaxDisconnectionTime }}"
-        type: dword
-      when: RDS_MaxDisconnectionTime >= 60000
-    - name: Set RDS RemoteAppLogoffTimeLimit (regedit)
-      ansible.windows.win_regedit:
-        path: HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services
-        name: RemoteAppLogoffTimeLimit
-        data: "{{ RDS_RemoteAppLogoffTime }}"
+  - name: Install RDS-Licensing (RDS)
+    ansible.windows.win_feature:
+      name: RDS-Licensing
+      state: present
+      include_management_tools: yes
+    when: RDS_Licensing == "enabled"
+
+  - name: Install RDS-RD-Server (RDS)
+    ansible.windows.win_feature:
+      name: RDS-RD-Server
+      state: present
+      include_management_tools: yes
+    register: rds_install
+
+  - name: Reboot if installing RDS feature requires it
+    ansible.windows.win_reboot:
+      post_reboot_delay: 10
+      test_command: whoami
+    when: rds_install.reboot_required
+
+  - name: Set RDS LicenseServer (regedit)
+    ansible.windows.win_regedit:
+      path: HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services
+      name: LicenseServers
+      data: "{{ RDS_LicenseServer }}"
+      type: string
+
+  - name: Set RDS LicensingMode (regedit)
+    ansible.windows.win_regedit:
+      path: HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services
+      name: LicensingMode
+      data: "{{ RDS_LicensingMode }}"
+      type: dword
+
+  - name: Set RDS fSingleSessionPerUser (regedit)
+    ansible.windows.win_regedit:
+      path: HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services
+      name: fSingleSessionPerUser
+      data: "{{ RDS_fSingleSessionPerUser }}"
+      type: dword
+
+  - name: Set RDS MaxDisconnectionTime (regedit)
+    ansible.windows.win_regedit:
+      path: HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services
+      name: MaxDisconnectionTime
+      data: "{{ RDS_MaxDisconnectionTime }}"
+      type: dword
+    when: RDS_MaxDisconnectionTime >= 60000
+
+  - name: Set RDS RemoteAppLogoffTimeLimit (regedit)
+    ansible.windows.win_regedit:
+      path: HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services
+      name: RemoteAppLogoffTimeLimit
+      data: "{{ RDS_RemoteAppLogoffTimeLimit }}"
+      type: dword
+
+  - name: Download Jmservisor (jumpserver)
+    ansible.windows.win_get_url:
+      url: "{{ DownloadHost }}/Jmservisor.msi"
+      dest: "{{ ansible_env.TEMP }}\\Jmservisor.msi"
+
+  - name: Install the Jmservisor (jumpserver)
+    ansible.windows.win_package:
+      path: "{{ ansible_env.TEMP }}\\Jmservisor.msi"
+      state: present
+
+  - name: Download python-3.10.8
+    ansible.windows.win_get_url:
+      url: "{{ DownloadHost }}/python-3.10.8-amd64.exe"
+      dest: "{{ ansible_env.TEMP }}\\python-3.10.8-amd64.exe"
+
+  - name: Install the python-3.10.8
+    ansible.windows.win_package:
+      path: "{{ ansible_env.TEMP }}\\python-3.10.8-amd64.exe"
+      product_id: '{371d0d73-d418-4ffe-b280-58c3e7987525}'
+      arguments:
+      - /quiet
+      - InstallAllUsers=1
+      - PrependPath=1
+      - Include_test=0
+      - Include_launcher=0
+      state: present
+    register: win_install_python
+
+  - name: Reboot if installing Python package requires it
+    ansible.windows.win_reboot:
+    when: win_install_python.reboot_required
+
+  - name: Download pip packages
+    ansible.windows.win_get_url:
+      url: "{{ DownloadHost }}/pip_packages_v0.0.1.zip"
+      dest: "{{ ansible_env.TEMP }}\\pip_packages_v0.0.1.zip"
+
+  - name: Unzip pip_packages
+    community.windows.win_unzip:
+      src: "{{ ansible_env.TEMP }}\\pip_packages_v0.0.1.zip"
+      dest: "{{ ansible_env.TEMP }}"
+
+  - name: Install python requirements offline
+    ansible.windows.win_shell: pip install -r "{{ ansible_env.TEMP }}\pip_packages_v0.0.1\requirements.txt" --no-index --find-links="{{ ansible_env.TEMP }}\pip_packages_v0.0.1"
+
+  - name: Download chromedriver (chrome)
+    ansible.windows.win_get_url:
+      url: "{{ DownloadHost }}/chromedriver_win32.106.zip"
+      dest: "{{ ansible_env.TEMP }}\\chromedriver_win32.106.zip"
+
+  - name: Unzip chromedriver (chrome)
+    community.windows.win_unzip:
+      src: "{{ ansible_env.TEMP }}\\chromedriver_win32.106.zip"
+      dest: C:\Program Files\JumpServer\drivers
+
+  - name: Set chromedriver on the global system path (chrome)
+    ansible.windows.win_path:
+      elements:
+      - 'C:\Program Files\JumpServer\drivers'
+
+  - name: Download chrome msi package (chrome)
+    ansible.windows.win_get_url:
+      url: "{{ DownloadHost }}/googlechromestandaloneenterprise64.msi"
+      dest: "{{ ansible_env.TEMP }}\\googlechromestandaloneenterprise64.msi"
+
+  - name: Install chrome (chrome)
+    ansible.windows.win_package:
+      path: "{{ ansible_env.TEMP }}\\googlechromestandaloneenterprise64.msi"
+      state: present
+      arguments:
+      - /quiet