ansible 中关于通过 win_shell

问题描述

我有一个用于将 MS sql 2014 安装到 Windows Server 2016 的 powershell 脚本(手动测试并确认工作正常)。

powershell 脚本缩写:

$sqlInstanceName = {{ sqlInstance }}
$localAdminPword = {{ localAdminPword }}
### Some more variables here declared the same as above

echo [OPTIONS] > $sqlServerInstallerPath\sqlServerConfigurationFile
### more echo lines like the above.

& $sqlServerInstallerPath\setup /SAPWD=$localAdminPword /ConfigurationFile=$sqlServerInstallerPath\sqlServerConfigurationFile

我的剧本很简单,只有目标主机的主机和两个任务,我只是使用 win_template 生成脚本,然后使用 win_shell 执行它。类似:

---
- name: Install sql
  hosts: "{{ newhost }}"

  tasks:
  - name: generate script
    win_template:
      src: "scriptName"
      dest: "{{ path }}//scriptName.ps1"
  - name: run script
    win_shell: ./scriptName.ps1
    args:
      chdir: "{{ path }}"

以下是场景的概要:

场景 1:

我使用 Ansible Tower 运行针对使用 vRealize Automation 新调配的服务器的作业。

输出显示成功,没有问题。

登录到新服务器,发现没有安装 MS sql,powershell 脚本不起作用......很奇怪,

所以我注销了服务器并再次运行相同的作业,没有更改,只需重新运行即可。 再次登录服务器,这次MS sql安装正确。

场景 2:

我完全重复了场景 1,一切都一样,这一次,我连续运行了两次作业。 我登录服务器,看到没有安装 MS sql。 注销,然后再次运行作业,登录,看到安装了 MS sql

场景 3:

我配置了一个新服务器,与之前的场景完全相同,但这次我登录它只是看桌面,看看开始菜单,然后注销。

我现在在我配置的这台新服务器上再次运行相同的作业。

作业成功完成后,我登录到服务器并正确安装了 MS sql

它似乎不起作用,除非我在运行此作业之前先登录到新服务器。这违背了自动化的目的......有没有人对此有想法?我应该研究某种设置或标志吗? (注意:服务器没有“首次登录时更改密码”的东西,据我所知,我没有在该服务器上指定任何首次登录的东西。)我需要这个工作而不做第一次登录

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)