解惑

解己之惑,解人之惑

标签:Service

Puppet运行脚本失败

puppet运行一个shell的脚本,如果是puppet的agent定期执行的,就是不成功,但是puppet agent -t运行就可以,开始以为是用户身份的问题,加了调试命令打出来的用户身份没有问题,脚本里面原来也有reboot也是不好使,但是加了sudo在前面就解决,就在那个命令前面也加了sudo,还是不好使,改成su再执行,依然不行,百思不得其解。

后来灵光一现,打印了命令行执行时的env,然后在脚本里面也把env输出了出来,通过puppet的service跑的时候果然env里面少了很多东西,仔细想想也了然,因为puppet的service的启动顺序是早于系统的那个profile的初始化的,所以很多环境变量没有被设置。

把在控制台直接跑的时候的env的结果保存下来并在脚本里面import进去再运行,果然没有问题。

这个很妖异的问题就这么解决了,命令行直接执行脚本以及puppet agent -t直接运行都没有问题,但是puppet的service自动触发的就是不行,源于service的启动早于系统的完全初始化。

远程控制Service

刚刚还说要写powershell去远程控制service,结果google了下就发现有现成的命令SC:

sc \\targetServer start IISAdmin

唯一的问题就是权限了,运行sc的用户需要有远程机器的高级权限,最好是Administrator,所以最好用域的Administrator

更新:
关于权限的,前面说了用Administrator,但是有些东西不受你自己控制,例如我们,用的Teamcity,虽然我修改了TeamCity和Agent的用户身份,但是很抱歉,不好使。最后只能按照微软的KB修改安全策略,使用的是Security Templates,把IIS相关的三个服务(IISAdmin, HTTPFilter, W3SVC)的Full Control权限分配给了EveryOne。

再更新:
按照微软的KB修改安全策略修改时需要很小心,在打开Database的时候,如果是新的,会提示你选择Security Template,如果你选择的Template不对,那么修改后应用的时候可能会覆盖其他的安全策略,目前我也没有发现正确的应该是什么。所以,请慎用!

最后更新:
知道应该怎么修改当前的安全策略了,把C:\WINDOWS\security\Database\secedit.sdb复制一份,然后打开Database的打开复制的那个,原始的那个不能直接打开。再次鄙视一下微软,这个KB写得实在不怎么样,连提醒都不提醒,另外,Configure Computer Now的时候,应该可以只应用修改的某些项,没有修改的就不要动。

还是SaaS吗

今天和美国的架构师以及美国那边负责UI的consultant的头开会,从结果来看,感觉我们已经不是SaaS了,因为从他们考虑我们的Service的角度看,我们的Service基本上是in process的调用,都不太关注远程调用或者web service调用的可能性了,虽然架构师在我的提示下要求考虑这种远程调用的可能性,但是in process调用还是被优先实现。当然,我们的服务对外当然是SaaS的,因为用户不会关注我们的内部实现是否可以远程调用,但是这样的架构让我感觉不到SaaS的精髓。

可能是我对项目的期望太高,亦或者我们项目还在起步阶段,很多东西还没有最终确定,但是目前的情况让我还是有些不快和不安。

© 2020 解惑

本主题由Anders Noren提供向上 ↑